﻿var gembse = {

    init: function () {
        this.renderGenericMode();
    },

    renderGenericMode: function () {
        // add hover effect 
        $('#primary-navigation li').hover(function () { $(this).addClass('hover'); }, function () { $(this).removeClass('hover'); });

        // init accordion
        $(".accordion-div").accordion({ collapsible: true, navigation: false, animated: 'easeslide', active: false });

        // trigger selected accordion
        setTimeout(function () { if (location.hash) { window.scrollTo(0, 0); var hash = window.location.hash; var thash = hash.substring(hash.lastIndexOf('#'), hash.length); var selectedTab = 0; $('.accordion-div').find('a[href*=' + thash + ']').closest('h3').trigger('click'); } }, 1);

        // init tabs
        $nav = $("#tabs").tabs({});

        // get selected tab from hash
        $nav.tabs('select', document.location.hash.slice(2));

        // stripe table row
        $('table tr:odd').addClass('odd');

        // show/hide login layer
        $('#login').live('mouseover mouseout', function (event) { if (event.type == 'mouseover') { var position = $('#login').position(); $(this).addClass('login-on'); $("#loginlinkswrapper").css({ 'left': position.left, 'top': position.top - 60, 'display': 'block' }); } });

        // show/hide loginlinkswrapper
        $('#loginlinkswrapper').live('mouseover mouseout', function (event) { if (event.type == 'mouseover') { $("#loginlinkswrapper").css({ 'display': 'block' }); } else { $("#loginlinkswrapper").css({ 'display': 'none' }); } });

        // set file extension as css
        $('.downloadlist li a').each(function () { var ext = $(this).attr('href').split('.').pop().split('?').shift().toLowerCase(); $(this).addClass(ext); });

        // add css class to last item
        $('#primary-navigation li:last').addClass("is-last");

        // set watermark on search
        $("#txtSearch").watermark("Sök");

        // init custom selectbox
        $(".applicationarea select").sb({ ddCtx: function () { return jQuery(this).closest("form"); } });

        $(".applicationarea select").triggerHandler("reload");

        $(".module-ask-question select").sb({ ddCtx: function () { return jQuery(this).closest("form"); } });

        $(".contactform select").sb({ ddCtx: function () { return jQuery(this).closest("form"); } });

        // set css class on focus
        $('.applicationarea input', '.contactform input').focus(function () { $(this).addClass('focus'); });

        // remove css class on blur
        $('.applicationarea input', '.contactform input').blur(function () { $(this).removeClass('focus'); });

        // validate dropdown selected
        $('.applicationarea div.display').blur(function () { if ($(this).parent().parent().find("select").attr("selectedIndex") === 0) { $(this).addClass('invalid') } });

        $('.contactform input').blur(function () { gembse.validateField($(this)); });

        // replace content in table cells
        $('.compare td').each(function () { if ($(this).text().indexOf('xxx') > 0) { $(this).addClass('check'); $(this).text(''); } if ($(this).text().indexOf('---') > 0) { $(this).addClass('uncheck'); $(this).text(''); } });

        // add css class on external links 
        $('#maincontent a').filter(function () { return !this.href.match(/^mailto\:/) && (this.hostname.replace(/^(www\.)?/, '') != location.hostname.replace(/^(www\.)?/, '')) && !this.href.match(/javascript\:/) && !$(this).hasClass('awesome'); }).addClass('external');

        // send slider value to form
        $("a.gotoform").click(function () { $.cookie('the_amount', null); $.cookie('the_time', null); $.cookie('the_insurance', null); var amount = $('#hdnAmount').val(); var time = $('#hdnTime').val(); var insurance = $('#chkInsurance').is(':checked'); if (amount !== "" && time != "") { var date = new Date(); date.setTime(date.getTime() + (2 * 60 * 1000)); $.cookie('the_amount', amount, { expires: date, path: '/' }); $.cookie('the_time', time, { expires: date, path: '/' }); $.cookie('the_insurance', insurance, { expires: date, path: '/' }); } });

        // modal click
        $('a.modalbox').live('click', function (evt) { evt.preventDefault(); $(this).nyroModalManual({ minWidth: 550 }); });

        // modal post load behaviour
        $(function () { $.fn.nyroModal.settings.endShowContent = function (elt, settings) { $('.contactform input, .contactform textarea').focus(function () { $(this).addClass('focus'); }); $('.contactform input, .contactform textarea').blur(function () { $(this).removeClass('focus'); gembse.validateField($(this)); }); $(".contactform input, .contactform textarea").blur(function () { gembse.validateField($(this)); }); }; });

        // compare card slider
        $("#content-slider").slider({ animate: true, change: handleSliderChange, slide: handleSliderSlide });
    },
    validateField: function (obj) {
        if (obj.hasClass('text')) {
            if (/^.+$/i.test(obj.val())) {
                gembse.checkItem($(obj));
                return true;
            }
            else {
                gembse.uncheckItem($(obj));
                return false;
            }
        }
        if (obj.hasClass('phone')) {
            if (/^[0-9\s\-]+$/i.test(obj.val())) {
                gembse.checkItem($(obj));
                return true;
            }
            else {
                gembse.uncheckItem($(obj));
                return false;
            }
        }
        if (obj.hasClass('email')) {
            if (validateEmail(obj.val())) {
                gembse.checkItem($(obj));
                return true;
            }
            else {
                gembse.uncheckItem($(obj));
                return false;
            }
        }

        if (obj.hasClass('question')) {
            if (obj.val() != '') {
                gembse.checkItem($(obj));
                return true;
            }
            else {
                gembse.uncheckItem($(obj));
                return false;
            }
        }
    },
    filterContent: function (obj) {
        var str = gembse.filterCreditCardNumber($(obj).val());
        $(obj).val(str);
    },
    filterCreditCardNumber: function (str) {
        var re = new RegExp(/\b(?:\d[ -]*?){16}\b/g);
        if (re.test(str)) {
            var arr = str.match(re);
            for (i = 0; i < arr.length; i++) {
                str = str.replace(arr[i], gembse.getReplaceNumber(arr[i]));
            }
        }
        return str;
    },
    getReplaceNumber: function (str) {
        var re = new RegExp(/\s/g);
        var newval = str.replace(re, "");
        return newval.substr(0, 4) + " xxxx xxxx x" + newval.substr(13, 15)
    },
    submitContactForm: function (pageid) {
        var question = $('#txtQuestion').val();
        if (gembse.validateContactForm()) {
            var subject = $('#ddlTopic option:selected').text();
            var name = $('#txtName').val();
            var email = $('#txtEmail').val();
            var phone = $('#txtPhone').val();
            var dataString = "subject=" + subject + "&question=" + question + "&name=" + name + "&email=" + email + "&phone=" + phone + "&pageid=" + pageid;
            jQuery.ajax({
                type: "POST",
                beforeSend: function () { $('#contactform1').hide(); $('#wait').show(); },
                complete: function () { $('#wait').hide(); $('#contactform1').show(); },
                url: "/Templates/Main/Pages/Services/SendMail.aspx",
                data: dataString,
                error: function () {
                    $('#contactform1').html(loader());
                    $('#contactform1').load('/Templates/Main/Pages/Services/Messages.aspx?messageType=mailError');
                },
                success: function () {
                    $('#contactform1').html(loader());
                    $('#contactform1').load('/Templates/Main/Pages/Services/Messages.aspx?messageType=mailSuccsess');
                }
            });
        }
    },
    validateContactForm: function () {
        var isvalid = true;
        $('.contactform input').each(function () {
            if (!gembse.validateField($(this))) {
                $(this).addClass('invalid');
                $(this).parent().find('span.alert').css({ 'visibility': 'visible', 'display': 'block' });
                isvalid = false;
            }
        });
        $('.contactform select').each(function () {
            if ($(this).val() == 0) {
                $(this).addClass('invalid');
                $(this).parent().find('span.alert').css({ 'visibility': 'visible', 'display': 'block' });
                isvalid = false;
            }
            else {
                $(this).removeClass('invalid');
                $(this).parent().find('span.alert').css({ 'visibility': 'hidden', 'display': 'none' });
            }
        });
        $('.contactform textarea').each(function () {
            if (!gembse.validateField($(this))) {
                $(this).addClass('invalid');
                $(this).parent().find('span.alert').css({ 'visibility': 'visible', 'display': 'block' });
                isvalid = false;
            }
            else {
                $(this).removeClass('invalid');
                $(this).parent().find('span.alert').css({ 'visibility': 'hidden', 'display': 'none' });
            }
        });
        return isvalid;
    },
    checkItem: function (obj) {
        $(obj).removeClass('invalid').addClass('checked').removeClass('focus');
        $(obj).closest('div.itemrow').find('span.alert').css({ 'visibility': 'hidden', 'display': 'none' });
    },
    uncheckItem: function (obj) {
        $(obj).addClass('invalid').removeClass('checked');
        $(obj).closest('div.itemrow').find('span.alert').css({ 'visibility': 'visible', 'display': 'block' });
    },
    initAmount: function () {
        var $amount = $('#txtAmount');
        var $hdnAmount = $('#hdnAmount');
        var $ddl = $("#ddlPeriod");
        var val = $amount.val();
        var hdnVal = $hdnAmount.val();
        $amount.val(gembse.formatLoanAmount(val));
        if (parseInt(hdnVal) >= parseInt($hdnAmount.attr('min')) || parseInt(hdnVal) <= parseInt($hdnAmount.attr('max')) || hdnVal != "") {
            gembse.checkItem($amount);
        }
        if ($ddl.attr("selectedIndex") > 0) {
            $ddl.prev().parent().find('div.display').removeClass('invalid').addClass('selectboxchecked');
        }
        else {
            $ddl.prev().parent().find('div.display').removeClass('selectboxchecked');
        }
    },
    initFormatting: function () {
        $(".applicationarea input").keyup(function () {
            if (this.prevValue != $(this).val()) {
                formatField($(this));
                this.prevValue = $(this).val();
            }
        });
    },

    initValidation: function () {
        var check = function (method) {
            return function (value, element) {
                var isValid = method(value, element);

                if (!gemb.silentValidation) {
                    if (element.tagName === 'SELECT') {
                        if (isValid) {
                            $(element).prev().parent().find('div.display').removeClass('invalid').addClass('selectboxchecked');
                        } else {
                            $(element).prev().parent().find('div.display').removeClass('selectboxchecked').addClass('invalid');
                        }
                    } else {
                        if (isValid) {
                            gembse.checkItem($(element));
                        } else {
                            gembse.uncheckItem($(element))
                        }
                    }
                }
                return isValid;
            };
        };

        // Define custom validation methods
        jQuery.validator.addMethod("required", check(function (value, element) {

            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {

                if (element.type == "checkbox") {
                    return element.checked;
                } else {
                    return /^.+$/i.test(value);
                }
            } else {
                return true;
            }

        }));

        jQuery.validator.addMethod("ssn", check(function (value, element) {
            return validateSSN(value);
        }));

        jQuery.validator.addMethod("text", check(function (value, element) {
            return /^[a-zA-ZæøåäöÆØÅÄÖ\-\s]+$/i.test(value);
        }));

        jQuery.validator.addMethod("zip", check(function (value, element) {
            return /^\d{3}[ ]\d{2}|\d{5}$/i.test(value);
        }));

        jQuery.validator.addMethod("city", check(function (value, element) {
            return /^[a-zA-ZæøåäöÆØÅÄÖ\s]+$/i.test(value);
        }));

        jQuery.validator.addMethod("phone", check(function (value, element) {
            return /^[0-9\s\-]+$/i.test(value);
        }));

        jQuery.validator.addMethod("numeric", check(function (value, element) {
            return /^[0-9\s\-]+$/i.test(value);
        }));

        //Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
        jQuery.validator.addMethod("onlyNumeric", check(function (value, element) {
            return /^[0-9]+$/i.test(value);
        }));
        //End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website

        jQuery.validator.addMethod("email", check(function (value, element) {
            return validateEmail(value);
        }));

        jQuery.validator.addMethod("income", check(function (value, element) {
            return /^(\d{1,3}\s?(\d{3}\s?)*\d{3}|\d{1,3})$/i.test(value);
        }));

        jQuery.validator.addMethod("employmentdate", check(function (value, element) {
            //swati
            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {
                return /^(\d{2})((0[1-9])|(1[0-2]))$/i.test(value);
            }
            else {
                return true;
            }

        }));

        jQuery.validator.addMethod("range", check(function (value, element) {
            return parseInt($(element).attr('min')) <= parseInt(value) && parseInt(value) <= parseInt($(element).attr('max'));
        }));

        jQuery.validator.addMethod("accountnumber", check(function (value, element) {

            //Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
            //var validChars = '0123456789- ';
            var validChars = '0123456789';
            var pieces = value.split('');

            if (pieces.length < 5 || pieces.length > 16) {
                return false;
            }

            for (var i = 0; i < pieces.length; i++) {
                if (validChars.indexOf(pieces[i]) < 0) {
                    return false;
                }
            }

            /*var validChars = '0123456789';
            var pieces = value.length;
            if (pieces < 5 || pieces > 16) {
            return false;
            }
            for (var i = 0; i < pieces; i++) {
            if (!(validChars.indexOf(value[i]) < 0)) {
            return false;
            }
            }*/

            //End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
            return true;
        }));


        //Start,Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
        jQuery.validator.addMethod("employmentYear", check(function (value, element) {
            if (($(element).attr('disabled') === false) && ($(element).is(":visible"))) {
                if (/^[0-9]{4}$/i.test(value)) {
                    var currentYear = (new Date).getFullYear();
                    var start = 1900;
                    if (value >= start && value <= currentYear)
                        return true;
                }
                return false;
            }
            else {
                return true;
            }
        }));
        jQuery.validator.addMethod("employmentToYear", check(function (value, element) {
            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {
                if (/^[0-9]{4}$/i.test(value)) {
                    var start = 1900;
                    var end = 3000;
                    if (value >= start && value < end)
                        return true;
                }
                return false;
            }
            else {
                return true;
            }
        }));
        jQuery.validator.addMethod("employmentMonth", check(function (value, element) {
            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {
                if (/^[0-9]{2}$/i.test(value)) {
                    if (value == 0 || value > 12)
                        return false;

                    var year = (document.getElementById("txtEmployedYear")).value;
                    if (year == (new Date).getFullYear()) {
                        var month = ((new Date).getMonth())+1;
                        if (month < value)
                        { return false; }
                        else
                            return true;
                    }
                    else
                        return true;
                }
                return false;
            }
            else {
                return true;
            }
        }));
        jQuery.validator.addMethod("employmentToMonth", check(function (value, element) {
            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {
                if (/^[0-9]{2}$/i.test(value)) {
                    if (value == 0 || value > 12)
                        return false;
                    else
                        return true;
                }
                return false;
            }
            else {
                return true;
            }
        }));
        jQuery.validator.addMethod("employmentMonth2", check(function (value, element) {
            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {
                if (/^[0-9]{2}$/i.test(value)) {
                    if (value == 0 || value > 12)
                        return false;

                    var year = (document.getElementById("txtEmployedYear2")).value;
                    if (year == (new Date).getFullYear()) {
                        var month = ((new Date).getMonth())+1;
                        if (month < value)
                        { return false; }
                        else
                            return true;
                    }
                    else
                        return true;
                }
                return false;
            }
            else {
                return true;
            }
        }));
        jQuery.validator.addMethod("employmentToMonth2", check(function (value, element) {
            if ($(element).attr('disabled') === false && ($(element).is(":visible"))) {
                if (/^[0-9]{2}$/i.test(value)) {
                    if (value == 0 || value > 12)
                        return false;
                    else
                        return true;
                }
                return false;
            }
            else {
                return true;
            }
        }));
        //End,Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website

        // Register rules as css classes
        jQuery.validator.addClassRules({
            required: { required: true },
            ssn: { ssn: true },
            text: { text: true },
            zip: { zip: true },
            city: { city: true },
            phone: { phone: true },
            numeric: { numeric: true },
            email: { email: true },
            income: { income: true },
            employmentdate: { employmentdate: true },
            cost: { cost: true },
            range: { range: true },
            accountnumber: { accountnumber: true },
            onlyNumeric: { onlyNumeric: true }, //Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
            employmentYear: { employmentYear: true }, //Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website 
            employmentToYear: { employmentToYear: true }, //Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website            
            employmentMonth: { employmentMonth: true }, //Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
            employmentToMonth: { employmentToMonth: true }, //Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
            employmentMonth2: { employmentMonth2: true }, //Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
            employmentToMonth2: { employmentToMonth2: true} //Gopal,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
        });

        //Start,Swati,201-10-12,3552,,S082511_4798849-1,Validation applicationforum on website
        //validateOccupation($('#ddlOccupation'), $('#employTo'));
        validateOccupation($('#ddlOccupation'), $('#employTo'), $('#employedYear'), $('#employerTo'));
        //End,Swati,201-10-12,3552,,S082511_4798849-1,Validation applicationforum on website
        updateApplicant($('.addapplicant'), false);
        $('#employTo').hide();
        $('#employTo2').hide();
    },
    validateThis: function (obj) {
        var $hdn = $('#hdnAmount');
        var value = $hdn.val();
        if (parseInt(value) < parseInt($hdn.attr('min')) || parseInt(value) > parseInt($hdn.attr('max')) || value === "") {
            gembse.uncheckItem($(obj));
        }
        else {
            gembse.checkItem($(obj));
        }
    },
    formatLoanAmount: function (number) {
        var s = number.replace(/ /g, '');
        $('#hdnAmount').val(s);
        var decimals = "";
        if (s.indexOf(".") >= 0) {
            decimals = s.split(".")[1];
            s = s.split(".")[0];
        }
        var re = new RegExp(/(\d+)(\d{3})/);
        while (re.test(s)) {
            s = s.replace(re, "$1 $2");
        }
        if (decimals != "") {
            s += "." + decimals;
        }
        return s;
    },
    getLevel: function (val) {
        var arrLength = arrAmountTime.length;
        for (var i = 0; i < arrLength; i++) {
            if (val <= arrAmountTime[i][0]) {
                return i;
            }
            if (val > arrAmountTime[arrLength - 1][0]) {
                return arrAmountTime.length - 1;
            }
        }
    }
}

function handleSliderChange(e, ui) {
    var maxScroll = $("#content-scroll").attr("scrollWidth") - $("#content-scroll").width();
    $("#content-scroll").animate({ scrollLeft: ui.value * (maxScroll / 100) }, 1000);
}

function handleSliderSlide(e, ui) {
    var maxScroll = $("#content-scroll").attr("scrollWidth") - $("#content-scroll").width();
    $("#content-scroll").attr({ scrollLeft: ui.value * (maxScroll / 100) });
}

function setMinYearLimit(val, slider) {
    var $slideritem = $('#slider-time');
    var time = parseInt($slideritem.slider('value'));
    var selectedValue = 5;
    var level = gembse.getLevel(val);
    var maxYear = arrAmountTime[level][2];
    var minYear = arrAmountTime[level][1];

    selectedValue = time >= maxYear ? maxYear : time;
    $slideritem.slider({ max: maxYear, min: minYear });
    $('#time').text(selectedValue + ' år');
    $slideritem.slider({ value: selectedValue });

    $("#hdnAmount").val(val);
    $("#hdnTime").val(selectedValue);
    doSum();
}

function triggerClick(obj) {
    s.tl(obj, 'o', 'Exit:' + $(obj).attr('title'))
}

function AskQuestion(email, category, caller) {
}

function getCategoryItems(obj) {
    var $list = $("#CategoryListArea");
    var pageId = $(obj).val();
    if ($(obj).val() != "0") {
        $list.html(loader());
        $list.load("/Templates/Main/Pages/Services/FaqCategoryService.aspx?pageid=" + pageId + "&selectedIndex=" + obj.selectedIndex);
    }
    else {
        $list.html("");
    }
}

function validateddl(obj) {
    if (obj.selectedIndex == 0) {
        $(obj).prev().parent().find('div.display').removeClass('selectboxchecked');
    }

    else {
        $(obj).prev().parent().find('div.display').removeClass('invalid').addClass('selectboxchecked');
        $(obj).closest('div.itemrow').find('span.alert').css({ visibility: '' });

        if (obj.selectedIndex == "V" || obj.selectedIndex == "F") {
            $('#mandatory1').show();
        }
    }
}

function updateApplicant(obj, swap) {
    var add = $(obj).attr('addApplicant');
    var remove = $(obj).attr('removeApplicant');
    if (swap) {
        if ($('#applicant2').is(':visible')) {
            $('#hdnSecondApplicant').val('false');
        } else {
            $('#hdnSecondApplicant').val('true');
        }
    }

    if ($('#hdnSecondApplicant').val() === 'false') {
        $('#applicant2').slideUp('fast');
        $(obj).removeClass('removeapplicant').addClass('addapplicant');
        $(obj).html('<a>' + add + '</a>')
        setApplicant2Enabled(false);
        $('#applicant2 input').each(function () {
            $(this).val('').removeClass('checked');
        });
    } else {
        $('#applicant2').slideDown('fast');
        $(obj).removeClass('addapplicant').addClass('removeapplicant');
        $(obj).html('<a>' + remove + '</a>')
        setApplicant2Enabled(true);
    }
}

function setApplicant2Enabled(enabled) {
    $("#applicant2 input, #applicant2 select").each(function () {
        enable($(this), enabled);
    });
    //Start,Swati,201-10-12,3552,,S082511_4798849-1,Validation applicationforum on website
    //validateOccupation($('#ddlOccupation2'), $('#employTo2'));
    validateOccupation($('#ddlOccupation2'), $('#employTo2'), $('#employedYear2'), $('#employerTo2'));
    //End,Swati,201-10-12,3552,,S082511_4798849-1,Validation applicationforum on website
    validate();
}


function enable(element, enabled) {
    if (enabled) {
        $(element).removeAttr("disabled");
    } else {
        $(element).attr("disabled", true);
    }
}


function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)jQuery)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?jQuery)/i);
    return pattern.test(emailAddress);
}

function IsNotChecked() {
}

function isValidPersonnummer(sText) {
    var pattern = new RegExp(/^([0-9]{2}[0-1][0-9][0-3][0-9]-[0-9]{4})|([1-2][8,9,0][0-9]{2}[0-1][0-9][0-3][0-9]-[0-9]{4})|([0-9]{2}[0-1][0-9][0-3][0-9][0-9]{4})|([1-2][8,9,0][0-9]{2}[0-1][0-9][0-3][0-9][0-9]{4})$/);
    return pattern.test(sText);
}

function isValidZip(sText) {
    var pattern = new RegExp(/^([0-9]{5})|([0-9]{3} [0-9]{2})$/);
    return pattern.test(sText);
}

function isValidPhone(sText) {
    var pattern = new RegExp(/^([0-9]{4}-[0-9]{6})|([0-9]{3}-[0-9]{3} [0-9]{2} [0-9]{2})|(\+[0-9]{11})|(\\+[0-9]{2}-[0-9]{9})|([0-9]{3} [0-9]{7})|([0-9]{13})|([0-9]{4}-[0-9]{5})|([0-9]{4} [0-9]{5})$/);
    return pattern.test(sText);
}

function IsNumeric(sText) {
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

//Start,Swati,201-10-12,3552,,S082511_4798849-1,Validation applicationforum on website
function IsOnlyNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}
//End,Swati,201-10-12,3552,,S082511_4798849-1,Validation applicationforum on website

function formatnumber(val) {
    $("#hdnAmount").val(val);
    doSum();
    var returnVal = formatCurrency(val);
    return returnVal;
}

function formatyear(val) {
    $("#hdnTime").val(val);
    doSum();
    return val + " år";
}

function doSum() {
    var amount = $("#hdnAmount").val();
    var time = $("#hdnTime").val() == "" ? "2" : $("#hdnTime").val();
    var sum = formatCurrency(calculateRate(amount, time));
    $("#sum").text(sum + " kr")
}

function recalculate() {
    doSum();
}

function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals)
    var result2 = Math.round(result1)
    var result3 = result2 / Math.pow(10, decimals)
    return (result3)
}

function calculate_payment(PV, IR, NP) {
    var PMT = (PV * IR) / (1 - Math.pow(1 + IR, -NP))
    return round_decimals(PMT, 5)
}

function formatCurrency(num) {
    num = num.toString().replace(/\jQuery|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + '.' + num.substring(num.length - (4 * i + 3));
    return num;
}

function loader() {
    return '<p class="loader"><img src="/assets/images/icons/ajaxLoader.gif" width="43" height="43" alt="loading" /></p>';
}

function closeModal() {
    parent.jQuery.nyroModalRemove();
}

function load() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

function InitializeRequest(sender, args) {
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'CancelPostBack') {
        prm.abortPostBack();
    }
}

function EndRequestHandler() {
    $(".contactform select").sb({ ddCtx: function () { return $(this).closest("form"); } });
    $('.contactform input').focus(function () {
        $(this).addClass('focus');
        gembse.validateField($(this));
    });

    $('.contactform input').blur(function () {
        $(this).removeClass('focus');
    });

    $(".contactform input").keyup(function () {
        gembse.validateField($(this));
    });

    $(".gsc-webResult").addClass('odd');
}

function alertContentsInit(http_request, tag_target, url) {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            result = http_request.responseText;

            document.getElementById(tag_target).innerHTML = parseScript(result);

        } else {
            alert('There was a problem check the url: ' + url);
        }
    }
}

function formatZip(obj) {
    var val = $(obj).val().replace(/ /g, '');
    if (val.length >= 5) {
        val = val.substr(0, 3) + ' ' + val.substr(3, 2);
        $(obj).val(val);
    }
}

function formatPhone(obj) {
    var val = $(obj).val().replace(/ /i, '');
    val = val.substr(0, 3) + ' ' + val.substr(3, 2);
    $(obj).val(val);
}

//function validateOccupation(occupation, employTo) {
function validateOccupation(occupation, employTo, employedYear, employer) {
    if (occupation.selectedIndex != 0) {
        $(occupation).closest('div.itemrow').find('span.alert').css({ 'visibility': 'hidden', 'display': 'none' });
        $(occupation).prev().parent().find('div.display').removeClass('invalid');
    }
    else {
        $(occupation).prev().parent().find('div.display').removeClass('selectboxchecked').addClass('invalid');
    }
    switch ($(occupation).val()) {
        case "Projekt/Frilans":
        case "Vikarie":
            $(employTo).show();
            enable($(employTo).children('input'), true);
            //Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website 
            $(employedYear).show();
            enable($(employedYear).children('input'), true);
            $(employer).show();
            enable($(employer).children('input'), true);
            //End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website 
            $(occupation).prev().parent().find('div.display').addClass('selectboxchecked');
            break;
        //Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website   
        case "Pensionär":
        case "Arbetslös":
            $(employedYear).hide();
            enable($(employedYear).children('input'), false);
            $(employer).hide();
            enable($(employer).children('input'), false);
            $(employTo).hide();
            enable($(employTo).children('input'), false);
            $(occupation).prev().parent().find('div.display').addClass('selectboxchecked');
            break;
        case "Egen företagare":
            $(employer).hide();
            enable($(employer).children('input'), false);
            $(employedYear).show();
            enable($(employedYear).children('input'), true);
            $(employTo).hide();
            enable($(employTo).children('input'), false);
            $(occupation).prev().parent().find('div.display').addClass('selectboxchecked');
            break;
        //End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website   
	
        default:
            //Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website 
            $(employedYear).show();
            enable($(employedYear).children('input'), true);
            $(employer).show();
            enable($(employer).children('input'), true);
            //End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website 
            $(employTo).hide();
            enable($(employTo).children('input'), false);
            $(occupation).prev().parent().find('div.display').removeClass('selectboxchecked');
    }
}

function formatField(obj) {
    if ($(obj).hasClass('ssn')) {
        formatSSN($(obj));
    }

    if ($(obj).hasClass('zip')) {
        formatZip($(obj));
    }

    if ($(obj).hasClass('phone')) {
        formatPhone($(obj));
    }

    if ($(obj).hasClass('numeric')) {
        formatAmount($(obj));
    }

    if ($(obj).hasClass('loanamount')) {
        var formattedAmount = gembse.formatLoanAmount($(obj).val());
        $(obj).val(formattedAmount);
    }

    if ($(obj).hasClass('accountnumber')) {
        //Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
        //var formattedVal = sText.replace(/[^0-9\- ]/g, $(obj).val());
        RemoveAlphaChars($(obj));
        //End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
    }
}

//Start,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website
function RemoveAlphaChars(sText) {
    var val = $(sText).val();
    $(sText).val(val.replace(/[^0-9]/g, ''));
}
//End,Swati,201-10-11,3552,,S082511_4798849-1,Validation applicationforum on website

function stripAlphaChars(sText) {
    return sText.replace(/[^0-9]/g, '');
}

function formatAmount(field) {
    var val = $(field).val();
    $(field).val(val.replace(/ /g, '').replace(/\./g, ''));
}

function formatSSN(field) {
    var val = $(field).val();
    val = val.replace(/ /i, '');
    val = val.replace(/\//i, '');
    val = val.replace(/-/i, '');
    val = val.replace(/,/i, '');
    if (val.length == 12) {
        if (val.indexOf('-') == -1) {
            val = val.substr(2, 10);
            val = val.substr(0, 6) + '-' + val.substr(6, 4);
        }
    } else if (val.length == 10) {
        if (val.indexOf('-') == -1) {
            val = val.substr(0, 6) + '-' + val.substr(6, 4);
        }
    }
    $(field).val(val);

}

function formatPhone(field) {
    var val = $(field).val();
    val = val.replace(/ /i, '');
    val = val.replace(/\//i, '');
    val = val.replace(/-/i, '');
    val = val.replace(/\+/i, '00');
    val = val.replace(/\(/i, '');
    $(field).val(val);
}

/*
* jQuery validation
* * */

var gemb = {
    silentValidation: false
};

function validate() {
    return $("#aspnetForm").validate({
        errorPlacement: function (error, element) {
            if (!gemb.silentValidation) {
                $(element).closest('div.itemrow').find('span.alert').css({ 'visibility': 'visible', 'display': 'block' });
            }
        }
    });
}

/*
* SSN validator
* * */
function ssnOnValidate(sender, e) {
    var isValid = validateSSN(e.Value);
    e.IsValid = isValid;
}

function validateSSN(value) {
    var ssn = (value == null || value == undefined ? '' : value).replace(/ /i, '');
    if (ssn.match(/^\d{6}-\d{4}$/i) == null) {
        return false;
    }
    var temp = ssn.substr(0, 6) + ssn.substr(7, 4);
    var month = ssn.substr(2, 2) - 0;
    var day = ssn.substr(4, 2) - 0;
    return IsNumeric(temp) &&
        month > 0 && month < 13 &&
        day > 0 && day < 32 &&
        Modulo10Check(temp);
}

function Modulo10Check(ssn) {

    var sum = 0;
    var tot;
    var s;

    if (IsNumeric(ssn)) {
        s = 2 * ssn.substr(0, 1) - 0;
        sum = sum + Math.floor(s / 10) + s % 10;

        sum = sum + (ssn.substr(1, 1) - 0);

        s = 2 * ssn.substr(2, 1) - 0;
        sum = sum + Math.floor(s / 10) + s % 10;

        sum = sum + (ssn.substr(3, 1) - 0);

        s = 2 * ssn.substr(4, 1) - 0;
        sum = sum + Math.floor(s / 10) + s % 10;

        sum = sum + (ssn.substr(5, 1) - 0);

        s = 2 * ssn.substr(6, 1) - 0;
        sum = sum + Math.floor(s / 10) + s % 10;

        sum = sum + (ssn.substr(7, 1) - 0);

        s = 2 * ssn.substr(8, 1) - 0;
        sum = sum + Math.floor(s / 10) + s % 10;

        tot = Math.floor((sum + 9) / 10) * 10;

        if (tot - sum == (ssn.substr(9, 1) - 0)) {
            return true;
        }
    }

    return false;
}

/*
* EMail validator
* * */

function validateEmail(value) {

    var validUserChar = "abcdefghijklmnopqrstuvwxyz1234567890-._";
    var validDomainChar = "abcdefghijklmnopqrstuvwxyz1234567890-._";
    var validCountryChar = "abcdefghijklmnopqrstuvwxyz";

    var emailAddress = (value == undefined || value == null ? "" : value).toLowerCase();

    // Lenght constraints
    if (emailAddress.length < 6 || emailAddress.length > 256)
        return false;

    // Major syntax errors, begins or ends with . or @
    if (emailAddress.charAt(0) == (".") || emailAddress.charAt(emailAddress.length - 1) == "." || emailAddress.charAt(emailAddress.length - 1) == "@" || emailAddress.charAt(0) == "@") return false;


    var atPos = emailAddress.indexOf("@");

    // Must contain @
    if (atPos == -1)
        return false;

    // Only one @ is allowed
    if (atPos != emailAddress.lastIndexOf("@"))
        return false;

    // @ may not have . directly before or after
    if (emailAddress.charAt(atPos - 1) == '.' || emailAddress.charAt(atPos + 1) == '.')
        return false;

    // . may not be followed by another .
    if (emailAddress.indexOf("..") > 0)
        return false;

    // Constrain the username part to only contain characters defined in validUserChar
    if (!emailAddress.take(atPos).all(function (char) { return validUserChar.indexOf(char) != -1; }))
        return false;

    var countryDotPos = emailAddress.lastIndexOf('.');

    // Constrain the domain part to only contain characters defined in validDomainChar
    if (!emailAddress.skip(atPos + 1).take(countryDotPos - atPos - 1).all(function (char) { return validUserChar.indexOf(char) != -1; }))
        return false;

    var country = emailAddress.substr(countryDotPos + 1, emailAddress.length - countryDotPos - 1);

    // Lenght constraints for the top domain
    if (country.length < 2 || country.length > 7)
        return false;

    // Constrain the top domain part to only contain characters defined in validCountryChar
    if (!country.all(function (char) { return validUserChar.indexOf(char) != -1; }))
        return false;

    return true;
}

String.prototype.skip = function (count) {
    return this.substr(count, this.length - count);
}

String.prototype.take = function (count) {
    return this.substr(0, count);
};

String.prototype.all = function (precicate) {

    for (var i = 0; i < this.length; i++) {
        if (!precicate(this.charAt(i)))
            return false;
    }

    return true;

};



function initCalc(minMaxPeriods,
        initialFee,
        billingFee,
        interestRate,
        insuranceRequired,
        insuranceRate,
        minAnnuityAllowed) {

    var $amount = $('#txtAmount');
    var $period = $('#ddlPeriod');
    var $result = $('#sum');
    var $hdnAmount = $('#hdnAmount');

    var updateResult = function () {
        var cleanamount = $amount.val()
        if (cleanamount != "") {
            cleanamount = cleanamount.replace(/\s/g, '').replace(/\./g, '')
            $hdnAmount.val(cleanamount);
        }
        var amount = parseInt(cleanamount);

        var period = parseInt($period.val());

        var interest_rate = interestRate / 100 / 12;
        var total_amount = (parseInt(amount) + initialFee + billingFee) * (1 + (interest_rate));
        var loan_term = period * 12;
        var monthly_payment = calculate_payment(total_amount, interest_rate, loan_term) + parseInt(billingFee);
        var insuranceRequired = insuranceRequired;
        var betalningsskydd = $('#chkInsurance').is(':checked');
        var insurance_rate = insuranceRate / 100;
        if (betalningsskydd) {
            monthly_payment = monthly_payment * (1 + insurance_rate);
        }

        var result = monthly_payment < parseInt(minAnnuityAllowed) ? parseInt(minAnnuityAllowed) : monthly_payment;


        $result.html(formatCurrency(result) + " kr/mån*");

        $('#sumDisclaimer').show();
    };

    var updatePeriod = function (rule) {
        $period.attr('min', rule[1]);
        $period.attr('max', rule[2]);

        var period = parseInt($period.val());

        if (period < rule[1]) {
            period = rule[1];
        }

        if (period > rule[2]) {
            period = rule[2];
        }

        $period.html('<option value="">Välj</option>');
        for (var i = rule[1]; i <= rule[2]; i++) {
            $period.append('<option value="' + i + '"' + (i === period ? ' selected' : '') + '>' + i + ' år</option>');
        }

        $period.sb({ ddCtx: function () { return jQuery(this).closest("form"); } }).sb("refresh");
    };

    var rule = minMaxPeriods[minMaxPeriods.length - 1];
    updatePeriod(rule);

    $amount.keyup(function () {
        updateAllPeriod();
    });

    $period.change(updateResult);
    $('#chkInsurance').change(updateResult);

    function updateAllPeriod() {
        var cleanamount = $amount.val();
        if (cleanamount != "") {
            cleanamount = cleanamount.replace(/\s/g, '').replace(/\./g, '')
        }
        var amount = parseInt(cleanamount);
        if (amount) {

            var rule = null;
            var arrLength = minMaxPeriods.length;
            for (var i = 0; i < arrLength; i++) {
                if (amount <= minMaxPeriods[i][0]) {
                    rule = minMaxPeriods[i];
                    break;
                }
                if (amount > minMaxPeriods[arrLength - 1][0]) {
                    rule = minMaxPeriods[arrLength - 1];
                    break;
                }
            }
            if (rule)
                updatePeriod(rule);
        }
        updateResult();
    }
    updateAllPeriod();
}


// This hotfix makes older versions of jQuery UI drag-and-drop work in IE9
(function ($) { var a = $.ui.mouse.prototype._mouseMove; $.ui.mouse.prototype._mouseMove = function (b) { if ($.browser.msie && document.documentMode >= 9) { b.button = 1 }; a.apply(this, [b]); } } (jQuery));


$(document).ready(function () {
    gembse.init();
});

