﻿/// <reference path="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4-vsdoc.js"/>

var newCustomer = true;
var termsApproved = false;
var loanAmount = 1000;
var totalCost = 388;
var ignoreChangeSlide = false;
var ignoreInfoBoxHide = false;
var supressErrorBoxes = false;
var wasMinimized = false;
var IE7 = (navigator.appVersion.indexOf("MSIE 7.") == -1) ? false : true;

var sliderObj;


function ebConversionTracker(conv) {
    var ebConversionImg = new Image();
    var ebConversionURL = "HTTPs://bs.serving-sys.com/BurstingPipe/ActivityServer.bs?";
    ebConversionURL += "cn=as&ActivityID=" + conv + "&ns=1";
    ebConversionImg.src = ebConversionURL;
}

function adxConversionTracker(befintlig) {
    var ny = 1;
    var ater = 0;
    if (befintlig) {
        ny = 0;
        ater = 1;
    }
    var adxConversionImg = new Image();
    var adxConversionURL = "https://delivery.adxsearch.com/conversion/?trackerID=1120&cb=" + Math.floor(Math.random() * 100000) + "&Ny_Kund=" + ny + "&Gammal_Kund=" + ater + "&ordervalue=1";
    adxConversionImg.src = adxConversionURL;
}


function toggleNewExistingCustomer() {

    if (newCustomer)
        newCustomer = false;
    else
        newCustomer = true;

    if (newCustomer && loanAmount > 3000) {
        sliderObj.slider("value", 3000);
    }

    if (!newCustomer && loanAmount < 5000) {
        sliderObj.slider("value", 5000);
    }

    toggleCheckBox($("#ApplyFormExistingCustomerCheckBox"));
    toggleCheckBox($("#ApplyFormNewCustomerCheckBox"));

    $("#ApplyFormContainer").toggleClass('existingCustomer');

    OnCustomerClicked();

}


function OnCustomerClicked() {
    if (!newCustomer) {
        $('.new-customer').hide();
        $('.new-customer :input').attr('disabled', true);
    }
    else {
        $('.new-customer :input').removeAttr('disabled');
        $('.new-customer').show();
    }
}

function OnApproveTermsClicked() {
    if (termsApproved)
        termsApproved = false
    else
        termsApproved = true;

    $("#apply-villkor").attr('checked', termsApproved);

    if (termsApproved) {
        $("#ApplyFormTermsUnit").removeClass("error");
        $("#ApplyFormsTermsText").text('Jag godkänner');
    }

}

function toggleCheckBox(div) {
    $(div).toggleClass("checked");
}

function resetMainMenu() {

    $("#MainMenu img.menuItemBullet").each(function () {

        var src = $(this).attr('src');
        src = src.replace('header-bullet-active.png', 'header-bullet.png');

        $(this).attr('src', src);
    });

}

function roundAccuracy(num, acc) {
    if (acc < 0) {
        num *= acc;
        num = Math.round(num);
        num /= acc;
        return num;
    } else {
        num /= acc;
        num = Math.round(num);
        num *= acc;
        return num;
    }
}

function wireMainMenu() {

    if (document.location.pathname == '' || document.location.pathname == '\/')
        return;

    var currentPath = document.location.pathname.substring(1);
    currentPath = currentPath.toLowerCase();
    currentPath = currentPath.replace('kredit365se\/', '');

    var parts = currentPath.split(/\//);
    currentPath = parts[0];

    $("#MainMenu div.menuItem a").each(function () {

        var current = $(this);
        var menuPath = current.attr("href");

        menuPath = menuPath.toLowerCase();
        menuPath = menuPath.replace('\/kredit365se', '');
        parts = menuPath.substring(1).split(/\//);
        menuPath = parts[0];

        if (menuPath != '' && currentPath.indexOf(menuPath) != -1) {
            resetMainMenu();
            var src = $('img', this).attr('src');
            src = src.replace('header-bullet.png', 'header-bullet-active.png');
            $('img', this).attr('src', src);
            return false;
        }
    });

}

function setLoanAmounts(value) {

    loanAmount = value;

    $("#ApplyFormLoanAmount").val(loanAmount + ' kr');

    switch (loanAmount) {
        case 1000:
            if (newCustomer)
                totalCost = 193;
            else
                totalCost = 568;
            break;
        case 2000:
            if (newCustomer)
                totalCost = 291;
            else
                totalCost = 666;
            break;
        case 3000:
            if (newCustomer)
                totalCost = 388;
            else
                totalCost = 763;
            break;
        case 4000:
            totalCost = 861;
            break;
        case 5000:
            totalCost = 959;
            break;
    }

    $("#ApplyFormTotalCost").val(totalCost + ' kr');

}

function slide(event, ui) {

    var roundedAmount = roundAccuracy(ui.value, 1000);

    setLoanAmounts(roundedAmount);

}

function ebConversionTracker(conv) {
    var ebConversionImg = new Image();
    var ebConversionURL = "HTTPs://bs.serving-sys.com/BurstingPipe/ActivityServer.bs?";
    ebConversionURL += "cn=as&ActivityID=" + conv + "&ns=1";
    ebConversionImg.src = ebConversionURL;
}

function adxConversionTracker(befintlig) {
    var ny = 1;
    var ater = 0;
    if (befintlig) {
        ny = 0;
        ater = 1;
    }
    var adxConversionImg = new Image();
    var adxConversionURL = "https://delivery.adxsearch.com/conversion/?trackerID=1120&cb=" + Math.floor(Math.random() * 100000) + "&Ny_Kund=" + ny + "&Gammal_Kund=" + ater + "&ordervalue=1";
    adxConversionImg.src = adxConversionURL;
}

function stopSlide(event, ui) {

    var roundedAmount = roundAccuracy(ui.value, 1000);

    if (newCustomer) {
        if (ui.value > 3000) {
            ShowHideInfoBox('InfoBox_ApplyFormCost');
            sliderObj.slider("value", 3000);
            return;
        }
    }

    if (ui.value != roundedAmount) {
        sliderObj.slider("value", roundedAmount);
    }

}

function changeSlide(event, ui) {

    if (ignoreChangeSlide) {
        ignoreChangeSlide = false;
        return;
    }

    var roundedAmount = roundAccuracy(ui.value, 1000);

    setLoanAmounts(roundedAmount);
}

function textFieldOnFocus(field) {

    var theField = $(field);

    var current = theField.val();
    var title = theField.attr('title');

    if (current == title)
        theField.val('');

    hideAllInfoBoxes();
    ShowHideInfoBox('InfoBox_' + theField.attr('id'));

}

function textFieldOnBlur(field) {

    var theField = $(field);

    var current = theField.val();
    var title = theField.attr('title');

    if (current == '')
        theField.val(title);

}

function customerData() {

    this.produkt = 'K365';
    this.belopp = loanAmount;
    this.nyKund = newCustomer;
    this.pNr = $("#ApplyFormPnr").val() + $("#ApplyFormPnr2").val();
    this.ePost = $("#ApplyFormEmail").val();
    this.mobilNr = $("#ApplyFormMobileNumber").val();

    var tel = $("#ApplyFormTelephone").val();

    if ($("#ApplyFormTelephone").attr('title') == tel)
        tel = '';

    this.telefonNr = tel;
    this.clearingNr = $("#ApplyFormClearingNr").val();
    this.kontoNr = $("#ApplyFormAccountNo").val();

    var kamp = $("#ApplyFormCampaignCode").val();

    if ($("#ApplyFormCampaignCode").attr('title') == kamp)
        kamp = '';

    this.kampanj = kamp;

    if (!newCustomer) {

        this.clearingNr = '';
        this.kontoNr = '';
        this.telefonNr = '';
        this.ePost = '';

    }
}

function startAjaxLoader(loaderTxt) {
    $('#ajax-loader-txt').text(loaderTxt);
    $('.applyForm').hide();
    $('.ajax-loader').show();
}

function ajaxApply(cData, loaderTxt) {
    startAjaxLoader(loaderTxt);
    $.ajax({
        url: "/Services/FolklanService.asmx/RegistreraAnsokan",
        contentType: "application/json; charset=utf-8",
        type: "POST",
        dataType: "json",
        data: '{"produkt": "' + cData.produkt + '", "belopp": ' + cData.belopp + ', "loptid": 30, "nyKund": ' + cData.nyKund + ', "personnummer": "' + cData.pNr + '", "epost": "' + cData.ePost + '", "mobilnummer": "' + cData.mobilNr + '", "telefonnummer": "' + cData.telefonNr + '", "clearingnummer": "' + cData.clearingNr + '", "kontonummer": "' + cData.kontoNr + '", "kampanj": "' + cData.kampanj + '"}',
        success: function (data) {
            $('#ajax-loader-txt').text('Laddar svar...');

            if (data.d.PageKey == 'null') {
                data.d.PageKey = 'tech-problem';
            }

            switch (data.d.PageKey) {
                case 'success':
                    if (newCustomer) {
                        _gaq.push(['_trackPageview', '/Mikrolan/New-Success']);
                        ebConversionTracker('106752');
                        adxConversionTracker(false);
                    }
                    else {
                        _gaq.push(['_trackPageview', '/Mikrolan/Ater-Success']);
                        ebConversionTracker('106753');
                        adxConversionTracker(true);
                    }
                    break;
                case 'success-lower':
                    if (newCustomer) {
                        _gaq.push(['_trackPageview', '/Mikrolan/New-Lower']);
                    }
                    else {
                        _gaq.push(['_trackPageview', '/Mikrolan/Ater-Lower']);
                    }
                    break;
                case 'denied':
                    if (newCustomer) {
                        _gaq.push(['_trackPageview', '/Mikrolan/New-Denied']);
                    }
                    else {
                        _gaq.push(['_trackPageview', '/Mikrolan/Ater-Denied']);
                    }
                    break;
            }

            if (data.d.TrackingScript != null) {
                var imgel = document.createElement("img");
                imgel.src = data.d.TrackingScript;

                $("body").append(imgel);
            }

            $.get("/Templates/Ydog/PartialContent/form-" + data.d.PageKey + ".aspx", function (data2) {
                $('#ApplyFormContent').html(data2);
                $('.ajax-loader').hide();
                $('.applyForm').show();
                if (data.d.PageKey == 'success-lower')
                    submitHandleLower(cData, data.d.MaxBelopp);
            });
        }
    });
}

function submitValidForm() {
    loaderTxt = 'Behandlar din ansökan...';
    var cData = new customerData();
    ajaxApply(cData, loaderTxt);
}

function submitHandleLower(cData, maxBelopp) {

    var button = $('#apply-button-lower-' + maxBelopp);
    button.show();

    $("#ApplyFormReplyDeniedAmount").text(cData.belopp);
    $("#ApplyFormReplyApprovedAmount").text(maxBelopp);

    button.click(function () {
        $(this).unbind('click');
        cData.belopp = maxBelopp;
        loaderTxt = 'Ansöker med lägre belopp...';
        ajaxApply(cData, loaderTxt);
    });

    $('#apply-button-lower-nothanks').click(function () {
        if (newCustomer) {
            _gaq.push(['_trackPageview', '/Mikrolan/New-Lower-No']);
        }
        else {
            _gaq.push(['_trackPageview', '/Mikrolan/Ater-Lower-No']);
        }
        location.reload();
    });
}

function validatePnr(value) {

    // Remove dash
    value = value.replace("-", "");
    var check = parseInt(value.substr(9, 1), 10);

    // Remove century and check number  
    if (value.length == 12) {
        value = value.substr(2, 9);
    } else if (value.length == 10) {
        value = value.substr(0, 9);
    } else {
        return false;
    }

    var result = 0;

    // Calculate check number
    for (var i = 0; i < value.length; i++) {

        var tmp = parseInt(value.substr(i, 1), 10);

        if ((i % 2) == 0) {
            tmp = (tmp * 2);
        }

        if (tmp > 9) {
            result += (1 + (tmp % 10));
        } else {
            result += tmp;
        }
    }

    return (((check + result) % 10) == 0);
}

$(document).ready(function () {

    //IE6 Warning

    var options = {
        enableClosing: true,
        enableQuitBuggingMe: false,
        showToAllBrowsers: false
    };

    sevenUp.plugin.black.test(options);

    //Fix for IE7 z-index bug
    if (IE7) {
        var zIndexNumber = -1000;
        $('#RightContainer div').each(function () {
            $(this).css('zIndex', zIndexNumber);
            zIndexNumber += 1;
        });
    }

    $('#ApplyFormSliderTrack').slider({
        range: "min",
        min: 1000,
        max: 5000,
        value: loanAmount,
        step: 10,
        animate: 1000,
        slide: slide,
        stop: stopSlide,
        change: changeSlide
    });

    sliderObj = $("#ApplyFormSliderTrack");

    $("#ApplyFormPnr").keyup(function () {

        if ($(this).val().length == 6)
            $("#ApplyFormPnr2").focus();

    });


    $("#ApplyFormNewCustomerCheckBox").click(function () {
        toggleNewExistingCustomer(this);
    });

    $("#ApplyFormExistingCustomerCheckBox").click(function () {
        toggleNewExistingCustomer(this);
    });

    $(".infoButton").mouseover(function (ev) {
        hideAllInfoBoxes();

        var infoboxid = $(this).attr('id').toString().replace('InfoButton_', 'InfoBox_');

        var box = $("#" + infoboxid);

        box.show();
        ev.stopPropagation();
    });

    $("#MainContainer, #SiteWrapper").mouseover(function (ev) {
        if (!ignoreInfoBoxHide)
            hideAllInfoBoxes();
    });

    $(".applyFormInfoBox").mouseover(function (ev) {
        ev.stopPropagation();
    });

    $("#ApplyFormTermsCheckBox").click(function () {
        OnApproveTermsClicked(this);
        toggleCheckBox(this);
    });

    $("div.applyForm #ApplyFormMain input").blur(function () {
        textFieldOnBlur(this);
    });

    $("div.applyForm #ApplyFormMain input").focus(function () {
        textFieldOnFocus(this);
    });

    $("#TermsLink").click(function () {
        $("#TermsDialogWrapper").show();
    });

    $("#TermsDialogCloseButton").click(function () {
        $("#TermsDialogWrapper").hide();
    });

    $("#ApplyFormPnr").focus(function () {

        if (!wasMinimized) {

            if (newCustomer) {
                _gaq.push(['_trackPageview', '/Mikrolan/New-Begin-registration']);
            }
            else {
                _gaq.push(['_trackPageview', '/Mikrolan/Ater-Begin-registration']);
            }

        }

    });

    $.validator.prototype.defaultMessage = function (element, method) {
        return "";
    };

    //Validate
    $('#aspnetForm').validate({
        debug: true,
        errorPlacement: function (error, element) {
            return true;
        },
        ignoreTitle: true,
        highlight: function (element, errorClass, validClass) {
            $(element).parent().addClass(errorClass);
            var box = $('#InfoBox_' + $(element).attr('id'));
            box.addClass('errorBox');
            if (!supressErrorBoxes)
                ShowHideInfoBox(box.attr('id'));
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).parent().removeClass(errorClass);
            var box = $('#InfoBox_' + $(element).attr('id'));
            box.removeClass('errorBox')
            if (!supressErrorBoxes)
                box.hide();
        }
    });

    //Pnr validate function
    //    $.validator.addMethod("pNr1", function (value, element) {
    //        
    //        var success = validatePnr($("#ApplyFormPnr").val() + $("#ApplyFormPnr2").val());
    //        return success;

    //    });

    //Pnr validate function

    if (newCustomer) {
        $.validator.addMethod("pNr2", function (value, element) {

            var success = validatePnr($("#ApplyFormPnr").val() + $("#ApplyFormPnr2").val());

            if (!success) {
                $("#ApplyFormPnr").parent().addClass("error");
            }
            else {
                $("#ApplyFormPnr").parent().removeClass("error");
            }

            return success;

        });

        //MobileNr validate function
        $.validator.addMethod("mobileNr", function (value, element) {
            return this.optional(element) || value.match(/^07[0-9]+$/) || value.match(/^01[0-9]+$/);
        });

        //Telephone validate function
        $.validator.addMethod("telephoneNr", function (value, element) {
            var title = $(element).attr('title');
            return value == title || value.match(/^[0-9]+$/);
        });

        //Terms Approved validate
        $.validator.addMethod("villkar", function (value, element) {

            if (!termsApproved) {
                $("#ApplyFormTermsUnit").addClass("error");
                $("#ApplyFormsTermsText").text('Du måste godkänna');
            }
            else {
                $("#ApplyFormTermsUnit").removeClass("error");
                $("#ApplyFormsTermsText").text('Jag godkänner');
            }

            return termsApproved;
        });

        //Firstname validate
        $.validator.addMethod("fName", function (value, element) {

            return $(element).attr('title') != value && /^[^0-9]+$/i.test(value);

        });

        //Lastname validate
        $.validator.addMethod("lName", function (value, element) {

            return $(element).attr('title') != value && /^[^0-9]+$/i.test(value);

        });
    } else {
        $.validator.addMethod("pNr2", function (value, element) {

            var success = validatePnr($("#ApplyFormPnr").val() + $("#ApplyFormPnr2").val());

            if (!success) {
                $("#ApplyFormPnr").parent().addClass("error");
            }
            else {
                $("#ApplyFormPnr").parent().removeClass("error");
            }

            return success;

        });

        //MobileNr validate function
        $.validator.addMethod("mobileNr", function (value, element) {
            return this.optional(element) || value.match(/^07[0-9]+$/) || value.match(/^01[0-9]+$/);
        });

        //Terms Approved validate
        $.validator.addMethod("villkar", function (value, element) {

            if (!termsApproved) {
                $("#ApplyFormTermsUnit").addClass("error");
                $("#ApplyFormsTermsText").text('Du måste godkänna');
            }
            else {
                $("#ApplyFormTermsUnit").removeClass("error");
                $("#ApplyFormsTermsText").text('Jag godkänner');
            }

            return termsApproved;
        });


    }


    //Skicka form
    $('#ApplyFormSubmitButton').click(function (event) {

        var minimized = ($("#ApplyFormContainer .minimized").length == 1)

        if (minimized) {

            if (newCustomer) {
                _gaq.push(['_trackPageview', '/Mikrolan/New-Begin-registration']);
            }
            else {
                _gaq.push(['_trackPageview', '/Mikrolan/Ater-Begin-registration']);
            }

            $(".applyForm").removeClass("minimized");

            wasMinimized = true;

            return;

        }

        supressErrorBoxes = true;

        if (newCustomer) {
            if ($('#ApplyFormContent input').valid() == true) {
                $(this).unbind('click');
                submitValidForm();
            }
        } else {
            if ($('#ApplyFormPnr, #ApplyFormPnr2, #ApplyFormMobileNumber, #apply-villkor').valid() == true) {
                $(this).unbind('click');
                submitValidForm();
            }
        }

        suppressErrorBoxes = false;

    });

    setLoanAmounts(loanAmount);
    setTimeout(initSlider, 500);

});

function initSlider() {

    if (loanAmount != 3000) {
        ignoreChangeSlide = true;
        sliderObj.slider("value", 3000);
        setTimeout('setLoanAmounts(2000)', 300);
        setTimeout('setLoanAmounts(3000)', 800);
    }

}

function hideAllInfoBoxes(id) {
    $(".applyFormInfoBox").hide();
}

function ShowHideInfoBox(id) {
    ignoreInfoBoxHide = true;
    $("#" + id).show();
    HideTimer(id, 3000);
}

function HideTimer(id, time) {
    var fixedId = "#" + id;
    setTimeout('$("' + fixedId + '").hide();ignoreInfoBoxHide = false;', time)
}

