var monthId = 'birthdayMonth';
var dayId = 'birthdayDay';
var yearId = 'birthdayYear';
var emptyDayText = 'Day';

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(emptyDayText, '');
    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(yearId);
    var month = document.getElementById(monthId);
    var day = document.getElementById(dayId);
    setDayDrop(year, month, day);
}

if (yearId && monthId) {
    document.getElementById(yearId).onchange = setDay;
    document.getElementById(monthId).onchange = setDay;
}