﻿function CalDays(year, mon) {
    var date = new Date(year, mon, 0);
    return date.getDate();

}

function yearAndMonthChangeEvent(birthdayControl) {
    var year = $("#yearSelector");
    var month = $("#monthSelector");
    var date = $("#dateSelector");
    var selectedDate = date.val();
    date.empty();
    date.append('<option selected="selected" value="0">--Day--</option>');
    var monthNumber = month.val();
    var yearNumber = year.val();
    if (yearNumber == "0") {
        var maxDay = 31;
        if (monthNumber == 4 || monthNumber == 6 || monthNumber == 9 || monthNumber == 11) {
            maxDay = 30;
        }
        else if (monthNumber == 2) {
            maxDay = 29;
        }
        for (var i = 1; i <= maxDay; i++) {
            date.append("<option value='" + i + "'>" + i + "</option>");
        }
    }
    else if (monthNumber != 0) {
        var maxDay = CalDays(yearNumber, monthNumber);
        for (var i = 1; i <= maxDay; i++) {
            date.append("<option value='" + i + "'>" + i + "</option>");
        }
        if (selectedDate > maxDay) {
            selectedDate = maxDay;
        }
    }
    date.val(selectedDate);
    bindBirthdayToHidden(birthdayControl);
}

function bindBirthdayDate(birthdayControl, birthdayDate, isPass) {
    var birthday = $("#" + birthdayControl);
    var year = $("#yearSelector");
    var month = $("#monthSelector");
    var date = $("#dateSelector");
    if (year.get(0).options.length == 1) {
        var beginYear = 1900;
        var endYear = (new Date()).getFullYear();
        if (isPass != null && !isPass) {
            beginYear = endYear - 1;
            endYear = endYear + 10;
        }
        
        for (var i = endYear; i > beginYear; i--) {
            year.append("<option value='" + i + "'>" + i + "</option>");
        }
        for (var i = 1; i < 13; i++) {
            month.append("<option value='" + i + "'>" + i + "</option>");
        }

        month.change(function() {
            yearAndMonthChangeEvent(birthdayControl)
        });

        year.change(function() {
            yearAndMonthChangeEvent(birthdayControl)
        });

        date.change(function() {
            bindBirthdayToHidden(birthdayControl)
        });
    }
    if (null != birthdayDate) {
        var d = new Date(birthdayDate);
        if (parseInt(birthdayDate.substr(0, 4)) == 1) {
            year.val("0001");
        }
        else {
            year.val(d.getFullYear());
        }
        month.val(d.getMonth() + 1);
        month.change();
        date.val(d.getDate());
        var y = year.val();
        var m = month.val();
        var d = date.val();
        birthday.val(m + "/" + d + "/" + y);
    }
}

function bindBirthdayToHidden(birthdayControl) {
    var birthday = $("#" + birthdayControl);
    var year = $("#yearSelector");
    var month = $("#monthSelector");
    var date = $("#dateSelector");
    
    var y = year.val();
    var m = month.val();
    var d = date.val();
//    if (y != "0" && m != "0" && d != "0") {
    if (m != "0" && d != "0") {
        if (m < 10) {
            m = "0" + m;
        }
        if (d < 10) {
            d = "0" + d;
        }
        // Date format is MM/DD/YYYY
        birthday.val(m + "/" + d + "/" + y);
    }
    else {
        birthday.val("");
    }
}

jQuery.fn.bindBirthday = function(birthdayDate, isPass) {
    if (jQuery(this).get(0) != null) {
        bindBirthdayDate(jQuery(this).get(0).getAttribute("id"), birthdayDate, isPass);
    }
}
