
/*

arrMonthOptions = [new Option('January',0),new Option('Febuary',1),new Option('March',2),new Option('April',3),new Option('May',4),new Option('June',5),new Option('July',6),new Option('August',7),new Option('September',8),new Option('October',9),new Option('November',10),new Option('December',11)];

function constructDropDown(formName,dateName,startYear,endYear){
	dayEl = document.forms[formName][dateName+'_day'];
	monthEl = document.forms[formName][dateName+'_month'];
	yearEl = document.forms[formName][dateName+'_year'];
	// --------------------------------------------------
	dayEl.options.length = 0;
	//alert(dayEl.options.length)
	for(i=0;i<arrDayOptions.length;i++) dayEl.options[i] = arrDayOptions[i];
	monthEl.options.length = 0;
	for(i=0;i<arrMonthOptions.length;i++) monthEl.options[i] = arrMonthOptions[i];
	yearEl.options.length = 0;
	arrYearOptions = new Array();
	for(i=endYear;i>=startYear;i--) arrYearOptions[arrYearOptions.length] = new Option(i,i);
	for(i=0;i<arrYearOptions.length;i++) yearEl.options[i] = arrYearOptions[i];
}

*/



function toggleFieldStatus(formName,dateName,status)
{
	dayEl = document.forms[formName][dateName+'_day'];
	dayEl.disabled = status;
	
	monthEl = document.forms[formName][dateName+'_month'];
	monthEl.disabled= status;
	yearEl = document.forms[formName][dateName+'_year'];
	yearEl.disabled = status;
	hourEl = document.forms[formName][dateName+'_hour'];
	if (hourEl) hourEl.disabled=status;
	minuteEl = document.forms[formName][dateName+'_minute'];
	if (minuteEl) minuteEl.disabled = status;
	
}


function toggleDateDisplay(formName,dateName)
{

	dateEl = document.forms[formName][dateName];

	if (dateEl.value == "")
	{
		
		updateHiddenDateField(formName,dateName);
		toggleFieldStatus(formName,dateName,false);
	}
	else
	{
		dateEl.value = "";
		toggleFieldStatus(formName,dateName,true);
	}
	
}

function updateHiddenDateField(formName,dateName){

	
	dateEl = document.forms[formName][dateName];
	
	//hiddenEl = document.forms[formName][dateName+"_js"];
	dayEl = document.forms[formName][dateName+'_day'];
	monthEl = document.forms[formName][dateName+'_month'];
	yearEl = document.forms[formName][dateName+'_year'];
	hourEl = document.forms[formName][dateName+'_hour'];
	minuteEl = document.forms[formName][dateName+'_minute'];

	// --------------------------------------------------

	day = parseInt(dayEl.options[dayEl.selectedIndex].value);
	month = parseInt(monthEl.selectedIndex);
	year = parseInt(yearEl.options[yearEl.selectedIndex].value);
	if (hourEl)
	hour = hourEl.selectedIndex;
	else hour=0;
	if (minuteEl)
	minute = minuteEl.value;
	else minute=0;
	date = new Date(year,month,day,hour,minute,0,0);
	//hiddenEl.value = date.getTime();
	dateEl.value = encodeDate(day,month,year,hour,minute);

	updateDropDowns(formName,dateName);
}

function decodeDate(strEncoded){
	//alert("decode "+strEncoded);
	parts = strEncoded.split("/");
	month = parts[0]-1;
	day = parts[1];
	year = parseInt(parts[2].substr(0,4));
	if(parts[2].length==4){
		hour = 0;
		minute = 0;
	} else {
		parts = parts[2].substr(5,parts[2].length).split(':');
		hour = parts[0];
		minute = parts[1];
	}
	//alert(year+'/'+month+'/'+day+'/'+hour+'/'+minute);
	return new Date(year,month,day,hour,minute,0,0);
}

function encodeDate(day,month,year,hour,minute){
	if(getMonthLength(month,year)<day) day = getMonthLength(month,year);
	if (hour == 0 && minute == 0)
	return ((parseInt(month)+1)+ '/'+ day +  '/'+year);
	else
	return ( (parseInt(month)+1)+ '/'+ day + '/' + year + " " + hour+":"+minute);
}


function updateDropDowns(formName,dateName){

	dateEl = document.forms[formName][dateName];
	//hiddenEl = document.forms[formName][dateName+"_js"];
	dayEl = document.forms[formName][dateName+'_day'];
	monthEl = document.forms[formName][dateName+'_month'];
	yearEl = document.forms[formName][dateName+'_year'];
	hourEl = document.forms[formName][dateName+'_hour'];
	minuteEl = document.forms[formName][dateName+'_minute'];
	// --------------------------------------------------
	date = (dateEl.value.length>0) ? decodeDate(dateEl.value) : new Date();
	var numDays = getMonthLength((date.getMonth()),date.getYear());
	dayEl.options.length=0;
	//alert(numDays);
	for(i=0;i<numDays;i++) dayEl.options[i] = new Option(i+1,i+1);
	
	dayEl.selectedIndex = date.getDate()-1;
	monthEl.selectedIndex = date.getMonth();
	if (hourEl)
	hourEl.selectedIndex = date.getHours();
	if (minuteEl)		
	minuteEl.selectedIndex = Math.round(date.getMinutes()/5);

	
	year = date.getFullYear();
	if(year<100){ 
		year += (year>50) ? 1900 : 2000;
	}
	for(i=0;i<yearEl.options.length;i++){ 
		if(yearEl.options[i].value==year){ 
			yearEl.options.selectedIndex = i; 
			break;
		}
	}
	
}

function updateDropDowns(formName,dateName,populateName){

	if (populateName == null) populateName = dateName;
	dateEl = document.forms[formName][populateName];
	//hiddenEl = document.forms[formName][dateName+"_js"];
	dayEl = document.forms[formName][dateName+'_day'];
	monthEl = document.forms[formName][dateName+'_month'];
	yearEl = document.forms[formName][dateName+'_year'];
	hourEl = document.forms[formName][dateName+'_hour'];
	minuteEl = document.forms[formName][dateName+'_minute'];
	// --------------------------------------------------
	date = (dateEl.value.length>0) ? decodeDate(dateEl.value) : new Date();
	var numDays = getMonthLength((date.getMonth()),date.getYear());
	dayEl.options.length=0;
	//alert(numDays);
	for(i=0;i<numDays;i++) dayEl.options[i] = new Option(i+1,i+1);
	
	dayEl.selectedIndex = date.getDate()-1;
	monthEl.selectedIndex = date.getMonth();
	if (hourEl)
	hourEl.selectedIndex = date.getHours();
	if (minuteEl)		
	minuteEl.selectedIndex = Math.round(date.getMinutes()/5);

	
	year = date.getFullYear();
	if(year<100){ 
		year += (year>50) ? 1900 : 2000;
	}
	for(i=0;i<yearEl.options.length;i++){ 
		if(yearEl.options[i].value==year){ 
			yearEl.options.selectedIndex = i; 
			break;
		}
	}
	
}

var arrExecOnReset = new Array();

function addOnResetCode(formName,code){
	arrExecOnReset[arrExecOnReset.length] = new Array(formName,code); 
}


var resetFormName;
function onResetCodeExec(formName){
	resetFormName = formName;
	window.setTimeout('afterOnReset()',100);
}

function afterOnReset(){
	var formName = resetFormName;
	for (var i=0;i<arrExecOnReset.length;i++){
		if(arrExecOnReset[i][0] == formName){	
			eval(arrExecOnReset[i][1]);
		}
	}
	return true;
}


// ummm, i think it will be a THURSDAY!!!

function findNextThreeThursdays(objDate){
	arrThurs = new Array();
	if(objDate.getDay()==4&&objDate.getHours()>17) {
		objDate = rollDate(objDate);
	}
	objDate = rollDateBy(objDate,7);
	while(objDate.getDay()!=4) objDate = rollDate(objDate); 
	arrThurs[0] = objDate;
	objDate=rollDateBy(objDate,7);
	arrThurs[1] = objDate;
	objDate=rollDateBy(objDate,7);
	arrThurs[2] = objDate;
	return arrThurs;
}

function rollDateBy(objDate,intNumDays){
	for(i=0;i<intNumDays;i++) objDate = rollDate(objDate);
	return objDate;
}

function rollDate(objDate){
	intYear = objDate.getFullYear();
	intMonth = objDate.getMonth();
	intDay = objDate.getDate();
	// fix feb leap year prob
	if(intDay==getMonthLength(intMonth,intYear)){
		intMonth = (intMonth==11) ? 0 : intMonth+1;
		intDay = 1;
	}
	else intDay++;
	return new Date(intYear,intMonth,intDay,0,0,0,0);
}

function getMonthLength(month,year) {
	var monthlength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	//alert(month+':'+year)
	if (month==1 && (year/4==Math.floor(year/4) || year/400==Math.floor(year/400))) {
		return 29
	}
	else return monthlength[month]
}

function getFormatedDateString(objDate){
	
	strDay = objDate.getDate();
	switch(strDay){
		case 1:
			strDay = strDay+"st";
			break;
		case 2:
			strDay = strDay+"nd";
			break;
		case 3:
			strDay = strDay+"rd";
			break;
		default:
			strDay = strDay+"th";
			break;
	}
	strMonth = arrMs[objDate.getMonth()];
	strDate = strMonth+" "+strDay+" "+objDate.getFullYear();
	return strDate;
}

arrMs = new Array();
arrMs[arrMs.length] = "January";
arrMs[arrMs.length] = "February";
arrMs[arrMs.length] = "March";
arrMs[arrMs.length] = "April";
arrMs[arrMs.length] = "May";
arrMs[arrMs.length] = "June";
arrMs[arrMs.length] = "July";
arrMs[arrMs.length] = "August";
arrMs[arrMs.length] = "September";
arrMs[arrMs.length] = "October";
arrMs[arrMs.length] = "November";
arrMs[arrMs.length] = "December";

/*  
// test
objDate = new Date(2002,8,5,12,0,0,0);
arrThurs = findNextThreeThursdays(objDate);
for(i=0;i<arrThurs.length;i++) alert(arrThurs[i]);
objDate = new Date(2002,8,5,18,0,0,0);
arrThurs = findNextThreeThursdays(objDate);
for(i=0;i<arrThurs.length;i++) alert(arrThurs[i]);
*/
