function onDayChange(dayId , monthId, yearId, hiddenControlId){	
	var month = getSelectedOption(monthId);
	var year = getSelectedOption(yearId);
	var day = getSelectedOption(dayId);
	document.getElementById(hiddenControlId).value = day + "/" + month + "/" + year;
}

function onMonthChange(dayId , monthId, yearId, hiddenControlId){
	onMonthYearChange(dayId , monthId, yearId, hiddenControlId);
}

function onYearChange(dayId , monthId, yearId, hiddenControlId){	
	onMonthYearChange(dayId , monthId, yearId, hiddenControlId);
}

function onMonthYearChange(dayId , monthId, yearId, hiddenControlId){
	var month = getSelectedOption(monthId);
	var year = getSelectedOption(yearId);
	populateDay(dayId, month, isLeap(year));
	var day = getSelectedOption(dayId);
	document.getElementById(hiddenControlId).value = day + "/" + month + "/" + year;
}

function populateDay(dayId, month, leap){
	var dayDD = document.getElementById(dayId);
	var days = getDays(month, leap);
	
	if (days < dayDD.options.length){
		var end = dayDD.options.length;
		var start = days;
		for (i = end-1; i >= days ; i--)
		{
			dayDD.options[i] = null;
		}
	}
	else if (days > dayDD.options.length){
		for (i = dayDD.options.length + 1; i <= days ; i++)
		{
			var newOption = new Option (i,i);
			var insertAt = dayDD.options.length;
		    dayDD.options.length=dayDD.options.length + 1;
		    dayDD.options[insertAt] = newOption;
		}
	}
}

function getSelectedOption(objectID){
	var object = document.getElementById(objectID);
	return object.options[object.selectedIndex].value;	
}

function getDays(month, leap){
	if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 
		|| month == 10 || month == 12)
		return 31;
	else if (month == 2)
		if (leap)
			return 29;
		else
			return 28;
	else
		return 30;
}

function isLeap(year){
	if (year % 400 == 0)
		return true;
	else if (year % 4 == 0 && year % 100 != 0)
		return true;
	else
		return false;
}
