var daysPerMonth = new Array(13); // Array to hold the total days in a month
daysPerMonth[0] = 31;  // for empty value of month
daysPerMonth[1] = 31;
daysPerMonth[2] = 28;
daysPerMonth[3] = 31;
daysPerMonth[4] = 30;
daysPerMonth[5] = 31;
daysPerMonth[6] = 30;
daysPerMonth[7] = 31;
daysPerMonth[8] = 31;
daysPerMonth[9] = 30;
daysPerMonth[10] = 31;
daysPerMonth[11] = 30;
daysPerMonth[12] = 31;

function changeMonth(monthElement, dayElement) 
{
     fillDays(daysPerMonth[monthElement.value], dayElement);
}
function changeYear(yearElement, monthElement, dayElement) 
{
    if(yearElement.value == 0)
        return;
        
    if(isLeapYear(yearElement.value))
    {
        daysPerMonth[2] = 29;
    }
    else
    {
        daysPerMonth[2] = 28;
    }
        
    fillDays(daysPerMonth[monthElement.value], dayElement);
}

function fillDays(numberOfDays, dayElement)
{
    var selectedValue = dayElement.value;
    while (dayElement.options.length > 0) 
    {
        dayElement.options[0] = null;
    }
    dayElement.options[0] = new Option('','0');
    for(var i = 1; i <= numberOfDays; i++)
    {
        dayElement.options[i] = new Option(i,i);
    }
    if(selectedValue >  numberOfDays)
    {
        dayElement.value = numberOfDays;
    }
    if(selectedValue <=  numberOfDays)
    {
        dayElement.value = selectedValue;
    }
}

function isLeapYear(year)
{
    var last2Digits = year % 100;
    var flag = last2Digits == 0 ? year % 400 : year % 4;
    if(flag == 0)
        return true;
    else
        return false;
}
