// JavaScript Document

function showDay( inM, inD, boxname ){

	var d = new Date();

	//month dropdown value: mm,yyyy
	d.setFullYear(inM.options[inM.selectedIndex].value.substr(3,4), parseInt(inM.options[inM.selectedIndex].value.substr(0,2)-1), inD.options.selectedIndex);

	var weekday = new Array(7);
	weekday[0] = "Sunday";
	weekday[1] = "Monday";
	weekday[2] = "Tuesday";
	weekday[3] = "Wednesday";
	weekday[4] = "Thursday";
	weekday[5] = "Friday";
	weekday[6] = "Saturday";

	document.getElementById(boxname).value = weekday[d.getDay()];

}

function checkDates( inD, inM, outD, outM ){

	var sDate = new Date();
	var eDate = new Date();
	
	sDate.setFullYear(inM.options[inM.selectedIndex].value.substr(3,4), parseInt(inM.options[inM.selectedIndex].value.substr(0,2)-1), inD.options.selectedIndex);
	eDate.setFullYear(outM.options[outM.selectedIndex].value.substr(3,4), parseInt(outM.options[outM.selectedIndex].value.substr(0,2)-1), outD.options.selectedIndex);

	if((dateDiff("d", sDate, eDate, "", "")) < 0 ){
		return 0;
	}else{
		return 1;
	}
}

function isDate(p_Expression){
	return !isNaN(new Date(p_Expression));		// <<--- this needs checking
}

function dateDiff(p_Interval, p_Date1, p_Date2, p_firstdayofweek, p_firstweekofyear){
	if(!isDate(p_Date1)){return "invalid date: '" + p_Date1 + "'";}
	if(!isDate(p_Date2)){return "invalid date: '" + p_Date2 + "'";}
	var dt1 = new Date(p_Date1);
	var dt2 = new Date(p_Date2);

	// get ms between dates (UTC) and make into "difference" date
	var iDiffMS = dt2.valueOf() - dt1.valueOf();
	var dtDiff = new Date(iDiffMS);

	// calc various diffs
	var nYears  = dt2.getUTCFullYear() - dt1.getUTCFullYear();
	var nMonths = dt2.getUTCMonth() - dt1.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
	var nQuarters = parseInt(nMonths/3);	//<<-- different than VBScript, which watches rollover not completion
	
	var nMilliseconds = iDiffMS;
	var nSeconds = parseInt(iDiffMS/1000);
	var nMinutes = parseInt(nSeconds/60);
	var nHours = parseInt(nMinutes/60);
	var nDays  = parseInt(nHours/24);
	var nWeeks = parseInt(nDays/7);


	// return requested difference
	var iDiff = 0;		
	switch(p_Interval.toLowerCase()){
		case "yyyy": return nYears;
		case "q": return nQuarters;
		case "m": return nMonths;
		case "y": 		// day of year
		case "d": return nDays;
		case "w": return nDays;
		case "ww":return nWeeks;		// week of year	// <-- inaccurate, WW should count calendar weeks (# of sundays) between
		case "h": return nHours;
		case "n": return nMinutes;
		case "s": return nSeconds;
		case "ms":return nMilliseconds;	// millisecond	// <-- extension for JS, NOT available in VBScript
		default: return "invalid interval: '" + p_Interval + "'";
	}
}
