var dateText 	= new Object();
var datePrefs	= new Object();
captureDateText(dateText);
function setDate( dayControlName, monthControlName, date_str )
{
	var mon			= date_str.substr(0,6);
	var day			= date_str.substr(6,2);
	var day_elem	= eval ('document.skylightsForm.' + dayControlName);
	var mon_elem	= eval ('document.skylightsForm.' + monthControlName);
	for (var i=0; i < mon_elem.options.length; i++)
	{
		if ( mon_elem.options[i].value == mon )
		{
			mon_elem.options[i].selected = true;
			break;
		}
	}
	for (var i=0; i < day_elem.options.length; i++)
	{
		if ( day_elem.options[i].value == day )
		{
			day_elem.options[i].selected = true;
			break;
		}
	}
}
function captureDateString( dayControlName, monthControlName )
{
	var dateArray	= captureDateArray( dayControlName, monthControlName );
	var date_string	= new String( dateArray[0] + dateArray[1] + dateArray[2] );
	return date_string;
}
function captureDateArray( dayControlName, monthControlName )
{
	var day_elem	= eval ('document.skylightsForm.' + dayControlName);
	var mon_elem	= eval ('document.skylightsForm.' + monthControlName);
	var dateArray	= [];
	dateArray[0]	= mon_elem.options[ mon_elem.selectedIndex ].value.substr(0,4);
	dateArray[1]	= mon_elem.options[ mon_elem.selectedIndex ].value.substr(4,2);
	dateArray[2]	= day_elem.options[ day_elem.selectedIndex ].value;
	return dateArray;
}
function isLeapYear(year)
{
	return ( year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ) );
}
function numDays(month,year)
{
	var leapYear 	= isLeapYear(year);
	var days		= 31;
	if ( month == 2 && days > 29 && leapYear )
	{
		days		= 29;
	}
	else if ( month == 2 && days > 28 && !leapYear)
	{
		days		= 28;
	}
	else if ( month == 4 || month == 6 || month == 9 || month == 11 )
	{
		days		= 30;
	}
	return days;
}
function isDateValid(day,month,year)
{
	var okay = true;
	var leapYear = isLeapYear(year);
	if (day > numDays(month, year))
	{
		okay = false;
	}
	return okay;
}
function checkCalendarDate(day,month,year,errorMsg)
{
	var okay = true;
	if (!isDateValid(day, month, year))
	{
		if (errorMsg != '')
		{
			alert(errorMsg);
		}
		okay = false;
	}
	return okay;
}
function validateCalendarDate(dayControlName, monthControlName, showError, resetDay)
{
	var okay 			= true;
	var dateArray		= captureDateArray(dayControlName, monthControlName);
	var day				= dateArray[2];
	var month			= dateArray[1];
	var year			= dateArray[0];
	if (!isDateValid(day, month, year))
	{
		var maxDays = numDays(month, year);
		if (showError)
		{
			formattedError = eval( "dateText.invalid" + dayControlName ) +
								dateText.months[month-1] +
								dateText.invalidMonthHasOnly + maxDays +
								dateText.invalidMonthHasOnlyDays;
			alert(formattedError);
		}
		if (resetDay)
		{
			var dayControl	= eval ('document.skylightsForm.' + dayControlName);
			dayControl.selectedIndex = maxDays - 1;
		}
		okay = false;
	}
	return okay;
}
function validateFutureDate(dayControlName, monthControlName, beginDate, showError, resetDay)
{
	var okay 			= true;
	var beginDateString		= new String (beginDate);
	var departDateString	= captureDateString(dayControlName, monthControlName);
	if ( departDateString < beginDateString )
	{
		if (showError)
		{
			alert( dateText.departDatePast );
		}
		if (resetDay)
		{
			setDate( dayControlName, monthControlName, beginDateString );
		}
		okay		= false;
	}
	return okay;
}
function validateSameDate(dayControlName1, monthControlName1, dayControlName2, monthControlName2, showError)
{
	var okay 			= true;
	var firstDateString		= new String (captureDateString(dayControlName1, monthControlName1));
	var secondDateString		= new String (captureDateString(dayControlName2, monthControlName2));
	if ( firstDateString.toString() != secondDateString.toString() )
	{
		if (showError)
		{
			alert( 	dateText.datesNotSameDate );
		}
		okay		= false;
	}
	return okay;
}
function validateFutureTime(timeValue1, timeValue2, showError)
{
	var okay 			= true;	
	if ( timeValue2 <= timeValue1 )
	{
		if (showError)
		{
			alert( 	dateText.datesNotFutureTime );
		}
		okay		= false;
	}
	return okay;
}
function validateDateOverlap(dayControlName1, monthControlName1, dayControlName2, monthControlName2, showError, resetDate)
{
	var okay 			= true;
	var firstDateString		= captureDateString(dayControlName1, monthControlName1);
	var secondDateString	= captureDateString(dayControlName2, monthControlName2);
	if ( firstDateString > secondDateString )
	{
		if (showError)
		{
			alert( 	dateText.datesOverlap1 + dateText.datesOverlapReturn +
					dateText.datesOverlap2 + dateText.datesOverlapDepart +
					dateText.datesOverlap3 + dateText.datesOverlapReturn );
		}
		if (resetDate)
		{
			setDate( dayControlName2, monthControlName2, firstDateString );
		}
		okay		= false;
	}
	return okay;
}
