/* Started Sunday January 1, 2006 7:19pm by Oliver Merk */
/* Revised Sunday January 1, 2006 8:43pm by Oliver Merk */
/*
Original: Ben McFarlin (mcfarlin@netscape.net)
Added features by Oliver Merk
	- Re-select day
	- Echo weekday name
*/
var weekDays = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');

function datePop(year, month, day) {
	var timeA = new Date(year.options[year.selectedIndex].text, month.options[month.selectedIndex].value, 1);
	var timeDifference = timeA - 86400000;
	var timeB = new Date(timeDifference);
	var daysInMonth = timeB.getDate();
	var dayselect = day.selectedIndex;
	for (var i = 0; i < day.length; i++) {
		day.options[0] = null;
	}
	var selectHappened = 0;	<!--- In case nothing preselected, highlight last day of month --->
	for (var i = 0; i < daysInMonth; i++) {
		var thisDate = new Date(timeB.getFullYear(), timeB.getMonth(), i+1);
		var dayText = i+1;
		dayText = '' + dayText + ' ' + weekDays[thisDate.getDay()];
		day.options[i] = new Option(dayText, i+1);
		if (i == dayselect) { <!--- Re-select day if possible --->
			day.options[i].selected = true;
			selectHappened = 1;
		}
	}
	if (selectHappened == 0) {
		day.options[i-1].selected = true;
	}
}
function presetDayByOffest (yearField, monthField, dayField, offset){
	/* yearField, monthField and dayField are the form fields, offset is the number of days to add to currentDate */

	var currentDate = new Date(yearField.value, monthField.value-1, dayField.value);

	/* Add offset days */
	currentDate.setDate(currentDate.getDate( ) + offset);

	var thisDay = currentDate.getDate();
	var thisMonth = currentDate.getMonth();
	thisMonth = thisMonth + 1;	/* Starts at 0, so adjust to real month index */
	var thisYear = currentDate.getFullYear();
	
	var daysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (((thisYear % 4) == 0) || ((thisYear % 100) == 0)) {// Leap Year?
		daysInMonth[1] = 29;
	}

	var thisMonthDays = daysInMonth[thisMonth-1];

	dayField.length = null;
	/* Populate each day entry with day number and weekday name */
	for ( var dm=0; dm <= thisMonthDays-1; dm++) {
		var tmpDate = new Date;
		tmpDate = currentDate;
		tmpDate.setDate(dm+1);
		var tmpDayString = weekDays[tmpDate.getDay()];
		var tmpDateString = dm+1;
		tmpDateString = '' + tmpDateString + ' ' + tmpDayString;
		dayField.options[dm] = new Option(tmpDateString, dm+1, 0, 0);
	}
	/* Re-select elements matching new date */
	for (var d=0; d < dayField.length; d++) {
		if (dayField[d].value == thisDay) {
			dayField[d].selected = true;
		}
	}
	for (var m=0; m < monthField.length; m++) {
		if (monthField[m].value == thisMonth) {
			monthField[m].selected = true;
		}
	}
	for (var y=0; y < yearField.length; y++) {
		if (yearField[y].value == thisYear) {
			yearField[y].selected = true;
		}
	}
}

function presetDayByDate (yearField, monthField, dayField, newYear, newMonth, newDay){
	/* yearField, monthField and dayField are the form fields */
	/* newYear, newMonth, newDay are the new date values */
	/* alert('year: ' + newYear + '\nmonth: ' + newMonth + '\nday: ' + newDay); */

	var newDate = new Date(newYear, newMonth-1, newDay);

	var thisDay = newDate.getDate();
	var thisMonth = newDate.getMonth();
	thisMonth = thisMonth + 1;	/* Starts at 0, so adjust to real month index */
	var thisYear = newDate.getFullYear();

	var daysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (((thisYear % 4) == 0) || ((thisYear % 100) == 0)) {// Leap Year?
		daysInMonth[1] = 29;
	}

	var thisMonthDays = daysInMonth[thisMonth-1];

	dayField.length = null;
	/* Populate each day entry with day number and weekday name */
	for (var dm=0; dm <= thisMonthDays-1; dm++) {
		var tmpDate = new Date;
		tmpDate = newDate;
		tmpDate.setDate(dm+1);
		//alert (tmpDate);
		var tmpDayString = weekDays[tmpDate.getDay()];
		var tmpDateString = dm+1;
		tmpDateString = '' + tmpDateString + ' ' + tmpDayString;
		dayField.options[dm] = new Option(tmpDateString, dm+1, 0, 0);
	}
	/* Re-select elements matching new date */
	for (var d=0; d < dayField.length; d++) {
		if (dayField[d].value == thisDay) {
			dayField[d].selected = true;
		}
	}
	for (var m=0; m < monthField.length; m++) {
		if (monthField[m].value == thisMonth) {
			monthField[m].selected = true;
		}
	}
	for (var y=0; y < yearField.length; y++) {
		if (yearField[y].value == thisYear) {
			yearField[y].selected = true;
		}
	}
}