// Days per month used for normal years.  Starts and ends with December.
var mdays = new Array( 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

// Returns additional day if leap month
function leapmonth( month, year ) {
	if (month != 2) return 0;
	if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) return 1;
	return 0;
}


function checkyear( year_dropdown_obj ) {
	var idx=year_dropdown_obj.selectedIndex;
	var numentries=year_dropdown_obj.length;
	if (idx==0) {
		startyr = parseInt( year_dropdown_obj.options[0].text ) - 40;
		for (yr=startyr; yr<startyr+50; yr++) {
			year_dropdown_obj.options[yr-startyr] = new Option( yr );
		}
		year_dropdown_obj.options[40].selected = true;
	} // Grow from beginning
	else if (idx>=numentries-1) {
		startyr = parseInt( year_dropdown_obj.options[0].text );
		for (addyr=0; addyr<20; addyr++) {
			year_dropdown_obj.options[addyr+idx+1] = new Option( startyr+numentries+addyr );
		} // add in increments of 10
	} // Grow from end
}

function checkmonth( day_dropdown_obj, month_num, year_num ) {
	//remember the current index
	current_index = day_dropdown_obj.selectedIndex;
	
	//clear all entries
	day_dropdown_obj.options.length = 0;
	
	current_year = parseInt(year_num);
	
	num_days = mdays[month_num] + leapmonth(month_num, current_year);
	
	//populate according to current month
	for (addday = 0; addday < num_days; addday ++) {
		day_dropdown_obj.options[addday] = new Option(addday + 1);
	}
	
	//attempt to keep the same index as before
	if(current_index >= 0 && current_index <= day_dropdown_obj.options.length - 1) {
		day_dropdown_obj.selectedIndex = current_index;
	}
	else {
		day_dropdown_obj.selectedIndex = day_dropdown_obj.options.length - 1;
	}
}

function checkmonthandyear( day_dropdown_obj, month_dropdown_obj, year_dropdown_obj )
{
	checkyear( year_dropdown_obj );
	checkmonth( day_dropdown_obj, month_dropdown_obj.selectedIndex + 1, year_dropdown_obj.options[year_dropdown_obj.selectedIndex].text );
}