function daysInMonth(month, year) {
    var dd = new Date(year, month, 0);
    return dd.getDate();
}
function setDayDrop(dyear, dmonth, dday) {
    var year = dyear.options[dyear.selectedIndex].value;
    var month = months[dmonth.options[dmonth.selectedIndex].value];
    var day = dday.options[dday.selectedIndex].value;
    var days = (year == '' || month == '') ? 31 : daysInMonth(month, year);
    dday.options.length = 0;
    dday.options[dday.options.length] = new Option('Day', '');
    for (var i = 1; i <= days; i++) {
        var dayNum = i < 10 ? '0' + i : i;
        var option = new Option(dayNum, dayNum);
        dday.options[dday.options.length] = option;
        if (i == day) {
            option.selected = true;
        }
    }
}

var months = new Array(13);
months['Jan'] = 1;
months['Feb'] = 2;
months['Mar'] = 3;
months['Apr'] = 4;
months['May'] = 5;
months['Jun'] = 6;
months['Jul'] = 7;
months['Aug'] = 8;
months['Sep'] = 9;
months['Oct'] = 10;
months['Nov'] = 11;
months['Dec'] = 12;
months[''] = '';

function setDay() {
    var year = document.getElementById('birthdayYear');
    var month = document.getElementById('birthdayMonth');
    var day = document.getElementById('birthdayDay');
    setDayDrop(year, month, day);
}

document.getElementById('birthdayYear').onchange = setDay;
document.getElementById('birthdayMonth').onchange = setDay;