﻿var custValidationErrors = {};
var custValidationMessages = {
    voorletters_required: "Vul hier uw persoonlijke gegevens in",
    achternaam_required: "Vul hier uw persoonlijke gegevens in",
    email_email: "Incorrect E-mailadres",
    email_required: "E-mailadres is verplicht",
    phone_phone: "Incorrect telefoonnummer",
    phone1_phone: "Incorrect telefoonnummer",
    phone_required: "Telefoonnummer is verplicht",
    houseNumber_housenumber: "Incorrect huisnummer",
    houseNumber_required: "Huisnummer is verplicht",
    postcodePart1_postcodepart1: "Incorrect postcode",
    postcodePart1_required: "Postcode is verplicht",
    postcodePart2_postcodepart2: "Incorrect postcode",
    postcodePart2_required: "Postcode toevoeging is verplicht",
    houseNumber1_housenumber: "Incorrect huisnummer",
    houseNumber1_required: "Huisnummer is verplicht",
    postcode1Part1_postcodepart1: "Incorrect postcode",
    postcode1Part1_required: "Postcode is verplicht",
    postcode1Part2_postcodepart2: "Incorrect postcode",
    postcode1Part2_required: "Postcode toevoeging is verplicht",
    houseNumber2_housenumber: "Incorrect huisnummer",
    houseNumber2_required: "Huisnummer is verplicht",
    postcode2Part1_postcodepart1: "Incorrect postcode",
    postcode2Part1_required: "Postcode is verplicht",
    postcode2Part2_postcodepart2: "Incorrect postcode",
    postcode2Part2_required: "Postcode toevoeging is verplicht",
    klantnummer_klantnummer: "Incorrect klantnummer",
    klantnummer_klantnummer9: "Klantnummer niet correct, 9 cijfers verplicht",
    bankNumber_giro: "Incorrect banknummer",
    bankNumber_bank: "Incorrect banknummer",
    bankNumber_required: "Rekeningnummer is verplicht",
    morethanTen: "Nieuw voorschotbedrag mag maximaal 10% lager zijn dan huidig voorschotbedrag",
    verifycodetext: "De verificatiecode is incorrect",
    tellfriendverifycodetext: "De verificatiecode is incorrect",
    energyType_required: "Huidig contract met E.ON is verplicht",
    kenmerkbrief_kenmerkbrief: "Incorrect kenmerkbrief",
    kenmerkbrief_required: "Kenmerkbrief is verplicht"
};


function setErrorStyle(obj, valid, typ) {
    if (!valid) {
        if (obj.is(":checkbox,:radio")) {
            //obj.next().addClass("errorTxtInput");
        }
        else {
            obj.addClass("errorTxtInput");
        }
        obj.parent("td").prev().addClass("errorInputItemTitle");

    } else {

        var i = 0;

        for (var err in custValidationErrors) {
            if (err.indexOf(obj.attr("name") + "_") == 0 && err != (obj.attr("name") + "_" + typ))
                i++;
        }
        if (i < 1) {
            if (obj.is(":checkbox,:radio")) {
                //obj.next().removeClass("errorTxtInput");
            }
            else {
                obj.removeClass("errorTxtInput");
            }
            obj.parent("td").prev().removeClass("errorInputItemTitle");
        }

    }
}

function checkByRegex(obj, regex, typ) {
    var result = regex.test(obj.val());
    setErrorStyle(obj, result, typ);
    return result;
}

function checkRequired(obj) {
    var val = obj.val();
    if (obj.is(":checkbox"))
        val = obj.attr("checked") ? "checked" : "";

    if (obj.is(":radio")) {
        val = obj.parents("form").find("input:radio:checked[name='" + obj.attr("name") + "']").val();
        if (!val)
            val = "";
    }

    var result = (jQuery.trim(val) != "");
    setErrorStyle(obj, result, 'required');

    if (!result) {
        var errMsg = custValidationMessages[obj.attr("name") + "_required"];

        if (obj.is(":radio"))
            errMsg = "Het maken van een keuze is vereist. Kiest u uit een van de antwoordmogelijkheden.";

        if (!errMsg) {
            var objname = obj.attr('name');
            if (obj.attr('objname') != null)
                objname = obj.attr('objname');
            errMsg = "Het veld \"" + objname + "\" is verplicht."

            switch (objname) {
                case "accepterenDelivery":
                    errMsg = 'Het accepteren van de leveringsvoorwaarden is verplicht.';  
                    break;
                case "accepterenMail":
                    errMsg = 'Het acceptatie van de voorwaarden is verplicht.'
                    break;
                case "chkAgree2":
                    errMsg = 'Het acceptatie van de algemene voorwaarden is verplicht.'
                    break;
                case "Huisnummer2":
                    objname = 'Huisnummer';
                    errMsg = "Het veld \"" + objname + "\" is verplicht."
                    break;
                case "postcodePart11":
                    objname = 'postcodePart1';
                    errMsg = "Het veld \"" + objname + "\" is verplicht."
                    break;
                case "postcodePart22":
                    objname = 'postcodePart2';
                    errMsg = "Het veld \"" + objname + "\" is verplicht."
                    break;
                case "Straat2":
                    objname = 'Straat';
                    errMsg = "Het veld \"" + objname + "\" is verplicht."
                    break;
                case "Woonplaats2":
                    objname = 'Woonplaats';
                    errMsg = "Het veld \"" + objname + "\" is verplicht."
                    break;
             }
           
          
        };
        if (obj.parent().find("p.requiredErrMsg").length == 0)
            obj.parent().append("<p class='requiredErrMsg'>" + errMsg + "</p>");
        custValidationErrors[obj.attr("name") + "_required"] = errMsg;
    }
    else {
        obj.parent().find("p.requiredErrMsg").remove();
        delete custValidationErrors[obj.attr("name") + "_required"];
    }

    return result;
}

/// <summary> 
/// Check if at least one check box in the checkbox group is checked.
/// The 'name' attribute of the checkboxes should be same.
/// Only one checkbox in the checkbox group can have the css class name 'required-checkbox-group'.
/// <param name='checkboxName'> The value of the 'name' attribute of the checkboxes. </param>
function checkRequiredCheckboxGroup(checkboxName) {
    var checkboxes = $(":checkbox:visible[@name='" + checkboxName + "']");

    var atLeastOneChecked = false;
    for (var i = 0; i < checkboxes.length; i++) {
        if ($(checkboxes[i]).attr("checked")) {
            atLeastOneChecked = true;
        }
    }

    if (!atLeastOneChecked && custValidationMessages[checkboxName + "_required"]) {
        custValidationErrors[checkboxName + "_required"] = custValidationMessages[checkboxName + "_required"];
        var chk = $(":checkbox:visible[@name='" + checkboxName + "']");
        chk.parent().append("<p class='requiredErrMsg'>" + chk.parent().prev().text() + " is verplicht. </p>");
        chk.parent().prev().addClass("errorInputItemTitle");
    }
    else {
        delete custValidationErrors[checkboxName + "_required"];
        var chk = $(":checkbox:visible[@name='" + checkboxName + "']");
        chk.parent().find("p.requiredErrMsg").remove();
        chk.parent().prev().removeClass("errorInputItemTitle");
    }

    return atLeastOneChecked;
}

function checkEmail(obj) {
    var regex = /^(([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})+)?$/;
    var result = checkByRegex(obj, regex, 'email');

//    if (!result && custValidationMessages[obj.attr("name") + "_email"])
//        custValidationErrors[obj.attr("name") + "_email"] = custValidationMessages[obj.attr("name") + "_email"];
//    else
    //        delete custValidationErrors[obj.attr("name") + "_email"];

    if (!result) {
        var errMsg = custValidationMessages[obj.attr("name") + "_email"];
        if (!errMsg)
            errMsg = "Het veld \"" + obj.attr('name') + "\" is incorrect."

        if (obj.parent().find("p.requiredErrMsg").length == 0)
            obj.parent().append("<p class='requiredErrMsg'>" + errMsg + "</p>");

        custValidationErrors[obj.attr("name") + "_email"] = errMsg;
    }
    else {
        obj.parent().find("p.requiredErrMsg").remove();
        delete custValidationErrors[obj.attr("name") + "_email"];
    }

    return result;
}

function checkNLCurrency(obj) {
    var regex = /^(€?(([1-9]\d*)|0)(,\d{0,2})?)?$/;
    var result = checkByRegex(obj, regex, 'nlcurrency');
    if (!result && custValidationMessages[obj.attr("name") + "_nlcurrency"])
        custValidationErrors[obj.attr("name") + "_nlcurrency"] = custValidationMessages[obj.attr("name") + "_nlcurrency"];
    else
        delete custValidationErrors[obj.attr("name") + "_nlcurrency"];

    return result;
}

function checkKlantnummer(obj) {
    var regex = /^(\d{5,15})?$/;
    var result = checkByRegex(obj, regex, 'klantnummer');

    if (!result && custValidationMessages[obj.attr("name") + "_klantnummer"])
        custValidationErrors[obj.attr("name") + "_klantnummer"] = custValidationMessages[obj.attr("name") + "_klantnummer"];
    else
        delete custValidationErrors[obj.attr("name") + "_klantnummer"];

    return result;
}

function check9Klant(obj) {
    var regex = /^(\d{9})?$/;
    var result = checkByRegex(obj, regex, 'klantnummer9');

    if (!result && custValidationMessages[obj.attr("name") + "_klantnummer9"])
        custValidationErrors[obj.attr("name") + "_klantnummer9"] = custValidationMessages[obj.attr("name") + "_klantnummer9"];
    else
        delete custValidationErrors[obj.attr("name") + "_klantnummer9"];

    return result;
}

function checkHousenumber(obj) {
    var regex = /^\d{0,6}$/;
    var result = checkByRegex(obj, regex, 'housenumber');

//    if (!result && custValidationMessages[obj.attr("name") + "_housenumber"])
//        custValidationErrors[obj.attr("name") + "_housenumber"] = custValidationMessages[obj.attr("name") + "_housenumber"];
//    else
    //        delete custValidationErrors[obj.attr("name") + "_housenumber"];

    if (!result) {
        var objname = obj.attr("name");
        var errMsg = custValidationMessages[objname + "_housenumber"];
        if (!errMsg) {
            if (obj.attr('name') == 'Huisnummer2') objname = 'Huisnummer';
            errMsg = "Het veld \"" + objname + "\" is incorrect."
            
        }

        if (obj.parent().find("p.requiredErrMsg").length == 0)
            obj.parent().append("<p class='requiredErrMsg'>" + errMsg + "</p>");

        custValidationErrors[obj.attr("name") + "_housenumber"] = errMsg;
    }
    else {
        obj.parent().find("p.requiredErrMsg").remove();
        delete custValidationErrors[obj.attr("name") + "_housenumber"];
    }


    return result;
}
function checkNumber(obj) {
    var regex = /^\d+$/;
    var result = checkByRegex(obj, regex, 'number');
    //if (obj.val() == '') result = true;
  
    if (!result) {
        var errMsg = custValidationMessages[obj.attr("name") + "_number"];
        if (!errMsg) {
            errMsg = "Het veld \"" + obj.attr('name') + "\" is incorrect."
            if(obj.attr('objname')!=null)
                errMsg = "Het veld \"" + obj.attr('objname') + "\" is incorrect."
              
        }
        if (obj.parent().find("p.requiredErrMsg").length == 0)
            obj.parent().append("<p class='requiredErrMsg'>" + errMsg + "</p>");
            
        custValidationErrors[obj.attr("name") + "_number"] = errMsg;
    }
    else {
        obj.parent().find("p.requiredErrMsg").remove();
        delete custValidationErrors[obj.attr("name") + "_number"];
    }

    return result;
}

function checkMoreThanTen(obj1, obj2) {
    var result;

    var val1 = parseFloat(obj1.val().replace(',', '.'));
    var val2 = parseFloat(obj2.val().replace(',', '.'));

    //    if (val2 < val1 * 0.1)
    //        result = false;
    //    else
    //        result = true;

    // New Rule
    result = (val2 >= val1 * 0.9) && (val2 <= val1 * 10);

    if (!result && custValidationMessages["morethanTen"]) {
        custValidationErrors[obj2.attr("name") + "_nieuwVoorshotbedrag"] = custValidationMessages["morethanTen"];
        obj2.addClass("errorTxtInput");
    }
    else {
        delete custValidationErrors[obj2.attr("name") + "_nieuwVoorshotbedrag"];
        obj2.removeClass("errorTxtInput");
    }

    return result;
}

function checkVerifyCode(obj) {


    var result = false;
    if (obj.val() != "") {
        var arr = document.cookie.match(new RegExp("(^| )" + "checkcode" + "=([^;]*)(;|$)"));
        if (arr != null) {
            if (unescape(arr[2]).toLowerCase() != $('#verifycodetext').val().toLowerCase()) {
                result = false;

            }
            else {
                result = true;

            }
        }

        setErrorStyle(obj, result, 'verifycodetext');

        if (!result && custValidationMessages["verifycodetext"])
            custValidationErrors[obj.attr("name") + "_verifycodetext"] = custValidationMessages["verifycodetext"];
        else
            delete custValidationErrors[obj.attr("name") + "_verifycodetext"];
    }
    else {
        result = true;
    }
    return result;

}

function checkVerifyCodeTellFriend(obj) {


    var result = false;
    if (obj.val() != "") {
        var arr = document.cookie.match(new RegExp("(^| )" + "checkcode" + "=([^;]*)(;|$)"));
        if (arr != null) {
            if (unescape(arr[2]).toLowerCase() != $('#tellfriendverifycodetext').val().toLowerCase()) {
                result = false;

            }
            else {
                result = true;

            }
        }

        setErrorStyle(obj, result, 'tellfriendverifycodetext');

        if (!result && custValidationMessages["tellfriendverifycodetext"])
            custValidationErrors[obj.attr("name") + "_tellfriendverifycodetext"] = custValidationMessages["tellfriendverifycodetext"];
        else
            delete custValidationErrors[obj.attr("name") + "_tellfriendverifycodetext"];
    }
    else {
        result = true;
    }
    return result;

}


function checkPhone(obj) {
    var regex = /^(\+)?([0-9\s\-]{5,12})?$/;

    var result = checkByRegex(obj, regex, 'phone');
//    if (!result && custValidationMessages[obj.attr("name") + "_phone"])
//        custValidationErrors[obj.attr("name") + "_phone"] = custValidationMessages[obj.attr("name") + "_phone"];
//    else
    //        delete custValidationErrors[obj.attr("name") + "_phone"];
    if (!result) {
        var errMsg = custValidationMessages[obj.attr("name") + "_phone"];
        if (!errMsg)
            errMsg = "Het veld \"" + obj.attr('name') + "\" is incorrect."

        if (obj.parent().find("p.requiredErrMsg").length == 0)
            obj.parent().append("<p class='requiredErrMsg'>" + errMsg + "</p>");

        custValidationErrors[obj.attr("name") + "_phone"] = errMsg;
    }
    else {
        obj.parent().find("p.requiredErrMsg").remove();
        delete custValidationErrors[obj.attr("name") + "_phone"];
    }


    return result;
}

function checkPostcodePart1(obj) {
    var regex = /^([0-9]{4})?$/;

    var result = checkByRegex(obj, regex, 'postcodepart1');
    if (!result && custValidationMessages[obj.attr("name") + "_postcodepart1"])
        custValidationErrors[obj.attr("name") + "_postcodepart1"] = custValidationMessages[obj.attr("name") + "_postcodepart1"];
    else
        delete custValidationErrors[obj.attr("name") + "_postcodepart1"];

    return result;
}

function checkPostcodePart2(obj) {
    var regex = /^([a-zA-Z]{2})?$/;
    var result = checkByRegex(obj, regex, 'postcodepart2');
    if (!result && custValidationMessages[obj.attr("name") + "_postcodepart2"])
        custValidationErrors[obj.attr("name") + "_postcodepart2"] = custValidationMessages[obj.attr("name") + "_postcodepart2"];
    else
        delete custValidationErrors[obj.attr("name") + "_postcodepart2"];

    return result;
}

function checkBank(obj) {
    var bn = obj.val();
    var result = true;
    if ($.trim(bn) != "") {
        if (isNaN(bn) || bn.length != 9)
            result = false;
        else {
            var total = 0;
            for (var i = 0; i < 9; i++) {
                total += parseInt(bn.substr(i, 1)) * (9 - i);
            }
            result = ((total % 11) == 0);
        }

        if (!result && custValidationMessages[obj.attr("name") + "_bank"])
            custValidationErrors[obj.attr("name") + "_bank"] = custValidationMessages[obj.attr("name") + "_bank"];
        else
            delete custValidationErrors[obj.attr("name") + "_bank"];

        setErrorStyle(obj, result, 'bank');
    }
    return result;
}

function checkGiro(obj) {
    var regex = /^(\d{2,7})?$/;
    var result = checkByRegex(obj, regex, 'giro');
    if (!result && custValidationMessages[obj.attr("name") + "_giro"])
        custValidationErrors[obj.attr("name") + "_giro"] = custValidationMessages[obj.attr("name") + "_giro"];
    else
        delete custValidationErrors[obj.attr("name") + "_giro"];

    return result;
}

function checkKenmerkbrief(obj) {
    var regex = /^(\d{1,15})?$/;
    var result = checkByRegex(obj, regex, 'kenmerkbrief');
    if (!result && custValidationMessages[obj.attr("name") + "_kenmerkbrief"])
        custValidationErrors[obj.attr("name") + "_kenmerkbrief"] = custValidationMessages[obj.attr("name") + "_kenmerkbrief"];
    else
        delete custValidationErrors[obj.attr("name") + "_kenmerkbrief"];

    return result;
}


function setErrorMsg(container) {

    var errorMsg = "";
    for (var err in custValidationErrors) {
        if (jQuery(container).find("[name='" + err.substr(0, err.indexOf('_')) + "']").length > 0
        && errorMsg.indexOf(custValidationErrors[err])<0)
            errorMsg += custValidationErrors[err] + '<br />';
    }

    if (errorMsg != "") {
        $(container + " div.validationErrorSummary").html(errorMsg);
        $(container + " div.validationErrorSummary").show();
        return false;
    } else {
        $(container + " div.validationErrorSummary").hide();
        return true;
    }
}

function bindAllValidation(container) {
    $(container + " *.required:visible").bind("blur", function() { checkRequired($(this)); });
    $(container + " input.required:radio:visible").prevAll('input:radio').bind("blur", function() { checkRequired($(this)); });
    $(container + " *.email:visible").bind("blur", function() { checkEmail($(this)); setErrorMsg(container); });
    $(container + " *.phone:visible").bind("blur", function() { checkPhone($(this)); setErrorMsg(container); });
    $(container + " *.verifycode:visible").bind("blur", function() { checkVerifyCode($(this)); setErrorMsg(container); });
    $(container + " *.tellfriendverifycodetext:visible").bind("blur", function() { checkVerifyCodeTellFriend($(this)); setErrorMsg(container); });
    $(container + " *.postcodepart1:visible").bind("blur", function() { checkPostcodePart1($(this)); setErrorMsg(container); });
    $(container + " *.postcodepart2:visible").bind("blur", function() { checkPostcodePart2($(this)); setErrorMsg(container); });
    $(container + " *.bank:visible").bind("blur", function() { checkBank($(this)); setErrorMsg(container); });
    $(container + " *.giro:visible").bind("blur", function() { checkGiro($(this)); setErrorMsg(container); });
    $(container + " *.klantnummer:visible").bind("blur", function() { checkKlantnummer($(this)); setErrorMsg(container); });
    $(container + " *.klantnummer9:visible").bind("blur", function() { check9Klant($(this)); setErrorMsg(container); });
    $(container + " *.housenumber:visible").bind("blur", function() { checkHousenumber($(this)); setErrorMsg(container); });
    $(container + " *.number:visible").bind("blur", function() { checkNumber($(this)); setErrorMsg(container); });
    $(container + " *.nlcurrency:visible").bind("blur", function() { checkNLCurrency($(this)); setErrorMsg(container); });

    $(container + " *.required:visible:radio").bind("click", function() { checkRequired($(this)); });
    $(container + " *.kenmerkbrief:visible").bind("blur", function() { checkKenmerkbrief($(this)); });
    $(container + " *.morethantenten:visible").bind("blur", function() { checkMoreThanTen($("#huidig"), $("#nieuwVoorshotbedrag")); setErrorMsg(container); });

    $(container + " *.required-checkbox-group:visible").bind("blur", function() { checkRequiredCheckboxGroup($(this).attr("name")); setErrorMsg(container); });
}

function validateAll(container) {
    custValidationErrors = {};
    var valid = true;
    $(container + " *.required:visible").each(function() { valid = checkRequired($(this)) && valid; });
    $(container + " input.required:radio:visible").prevAll('input:radio').each(function() { valid = checkRequired($(this)) && valid; });
    $(container + " *.email:visible").each(function() { valid = checkEmail($(this)) && valid; });
    $(container + " *.phone:visible").each(function() { valid = checkPhone($(this)) && valid; });
    $(container + " *.verifycode:visible").each(function() { valid = checkVerifyCode($(this)) && valid; });
    $(container + " *.tellfriendverifycodetext:visible").each(function() { valid = checkVerifyCodeTellFriend($(this)) && valid; });
    $(container + " *.postcodepart1:visible").each(function() { valid = checkPostcodePart1($(this)) && valid; });
    $(container + " *.postcodepart2:visible").each(function() { valid = checkPostcodePart2($(this)) && valid; });
    $(container + " *.bank:visible").each(function() { valid = checkBank($(this)) && valid; });
    $(container + " *.giro:visible").each(function() { valid = checkGiro($(this)) && valid; });
    $(container + " *.klantnummer:visible").each(function() { valid = checkKlantnummer($(this)) && valid; });
    $(container + " *.klantnummer9:visible").each(function() { valid = check9Klant($(this)) && valid; });
    $(container + " *.housenumber:visible").each(function() { valid = checkHousenumber($(this)) && valid; });
    $(container + " *.number:visible").each(function() { valid = checkNumber($(this)) && valid; });
    $(container + " *.nlcurrency:visible").each(function() { valid = checkNLCurrency($(this)) && valid; });
    $(container + " *.kenmerkbrief:visible").each(function() { valid = checkKenmerkbrief($(this)) && valid; });
    $(container + " *.morethantenten:visible").each(function() { valid = checkMoreThanTen($("#huidig"), $("#nieuwVoorshotbedrag")) && valid; });

    $(container + " *.required-checkbox-group:visible").each(function() { valid = checkRequiredCheckboxGroup($(this).attr("name")) && valid; });

    valid = valid;
    var noError = setErrorMsg(container);
    valid = valid && noError;
    return valid;
}

function getAddress(postcode1, postcode2, housenumber, street, city) {
    if (checkPostcodePart1(postcode1) && checkPostcodePart2(postcode2) && checkHousenumber(housenumber)) {


        jQuery.getJSON('/plugin/address/' + postcode1.val() + postcode2.val() + '-' + (housenumber ? housenumber.val() : '1'), function(data) {

            if (street)
                street.val(data.street);
            if (city)
                city.val(data.woonplaats);
            if (data.street == "" || data.woonplaats == "")
                custValidationErrors[postcode1.attr('name')+"_invalidaddress"] = "Het ingevoerde adres is niet correct";
            else
                delete custValidationErrors[postcode1.attr('name') + "_invalidaddress"];
            //setErrorMsg("#" + postcode1.parents("div.formDetail").attr('id'));
        }
      );
    }
}
var questionList = new Array();
function getAnswer(questionNO) {
    var displayid = 'antwoord' + questionNO;
    jQuery("#" + displayid).toggle();
    if (jQuery("#" + displayid).is(':visible')) {
        jQuery("#" + questionNO).attr("class", "geselecteerdeVraag");
        var result = true;
        for (var i = 0; i < questionList.length; i++) {
            if (questionList[i] == questionNO) {
                result = false;
                break;
            }
        }
        if (result) {
            jQuery.getJSON('/plugin/faq/' + questionNO, function(data) {
                jQuery("#" + displayid).html(data.answer);
                questionList.push(questionNO);
            });
        }
    }
    else
        jQuery("#" + questionNO).attr("class", "vraagLink");
}

function ProhibitLetters(e) {
    var keyCode = e.keyCode || e.which;
    if (((keyCode > 47) && (keyCode < 58)) ||
              (keyCode == 8) || (keyCode == 9)) {
        return true;
    } else {
        return false;
    }
}

function AllowLetters(e) {
    var keyCode = e.keyCode || e.which;
    if (((keyCode >= 65) && (keyCode <= 96)) ||
              (keyCode == 8) || (keyCode == 9)) {

        return true;
    } else {
        return false;
    }
}

function Changehref(obj) {
    jQuery('.directBlock a').attr("href", obj.value);
}

function getDaysOfMonth(year, month) {
    var y = parseInt(year);
    var m = parseInt(month);
    var date = new Date();
    date.setFullYear(y, m - 1, 31);
    if (date.getDate() != 31)
        return 31 - date.getDate();
    else
        return 31;
}