DateDropDown = {};
//set these config values

DateDropDown.daysinmonths = [31,29,31,30,31,30,31,31,30,31,30,31];

DateDropDown.day = "DaySel";
DateDropDown.month = "MonthSel";
DateDropDown.year = "YearSel";
DateDropDown.hiddenField = "user.dateOfBirth";


DateDropDown.isLeapYear = false;


DateDropDown.startYear = "1900";
DateDropDown.endYear = "2000";


DateDropDown.init = function(initDay, initMonth, initYear){
    //init years
    var yearSel = document.getElementById(DateDropDown.year);
    for(var i = DateDropDown.startYear; i < DateDropDown.endYear; i++){
        yearSel.appendChild(DateDropDown.addOption(i, initYear == i));
    }
    yearSel.onchange = function(){
        DateDropDown.checkYear();
        DateDropDown.setHiddenField();
    }

    //init months
    var monthSel = document.getElementById(DateDropDown.month);
    for(var i = 1; i <= 12; i++){
        monthSel.appendChild(DateDropDown.addOption(i < 10 ? "0" + i : i, initMonth == i));
    }
    monthSel.onchange  = function(){
        DateDropDown.checkMonth();
        DateDropDown.setHiddenField();
    }

    //init days
    var daySel = document.getElementById(DateDropDown.day);
    for(var i = 1; i <= 31; i++){
        daySel.appendChild(DateDropDown.addOption(i < 10 ? "0" + i : i, initDay == i));
    }
    daySel.onchange = function(){
        DateDropDown.setHiddenField();
    }

}

/*
only need to check if it is a leap year
*/
DateDropDown.checkYear = function() {
    //if leap year
    var year = document.getElementById(DateDropDown.year).value;
    if(year % 4 == 0){
        DateDropDown.isLeapYear = true;
        var month = document.getElementById(DateDropDown.month).value;
        if(month == 2){
            //if date is greater than 28 set to 28
            var date = document.getElementById(DateDropDown.day).value;
            if(date > 28){
                document.getElementById(DateDropDown.day).value = 28;
            }
        }
    }else{
        DateDropDown.isLeapYear = false;
    }
}

DateDropDown.checkMonth = function() {

    var daySel = document.getElementById(DateDropDown.day);
    var dayValue = daySel.value;
    var monthSel = document.getElementById(DateDropDown.month);
    var maxLength = DateDropDown.daysinmonths[monthSel.value - 1];

    if(DateDropDown.isLeapYear && monthSel == 2){
        maxLength -= 1;
    }
    if(daySel.length < maxLength){
        for(var i=daySel.length; i <= maxLength; i++){
            daySel.appendChild(DateDropDown.addOption(i));
        }
    }else{
        daySel.length = 0;
        for(var i=1; i <= maxLength; i++){
            daySel.appendChild(DateDropDown.addOption(i < 10 ? "0" + i : i,false));
        }
    }
    if(dayValue > maxLength){
        dayValue = maxLength;
    }
    daySel.value = dayValue;
}

DateDropDown.getFullDate = function(){
    var theDate = new Date();
    theDate.setYear(document.getElementById(DateDropDown.year).value);
    theDate.setMonth(document.getElementById(DateDropDown.month).value - 1);
    theDate.setDate(document.getElementById(DateDropDown.day).value);
    theDate.setHours(0);
    theDate.setMinutes(0);
    theDate.setSeconds(0);
    theDate.setMilliseconds(0);

    return theDate;
};

DateDropDown.setHiddenField = function(){
    var input = document.getElementById(DateDropDown.hiddenField);
    input.value =  document.getElementById(DateDropDown.day).value + "/" + document.getElementById(DateDropDown.month).value + "/" + document.getElementById(DateDropDown.year).value;
};

DateDropDown.addOption = function(value, checked){
    var option = document.createElement('option');
    option.value = value;
    option.innerHTML = value;
    option.selected = checked;
    return option;
}
