var dateIsCompleteAndValid = true;

function GetTheField(fieldName)
{
	var theForm
	if (window.navigator.appName.toLowerCase().indexOf('microsoft') > -1) {
		theForm = document.aspnetForm;
	}
	else {
		theForm = document.forms['aspnetForm'];
	}
	var theField;
	for(i=0;i<theForm.elements.length;i++)
	{
		var aField = theForm.elements.item(i);
		if(aField.name.indexOf(fieldName)>-1)
		{
			theField = aField;
			break;
		}
	}
	return theField;
}

function GetTheMonthName(month)
{
	var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	return months[month];
}
	
function IncidentDateValid(day, month, year, val)
{
	if((day=='dd')&&(month=='MM'))
	{
		dateIsCompleteAndValid = false;
		return true;
	}
	if((day=='dd')||(month=='MM'))
	{
		dateIsCompleteAndValid = false;
		val.errormessage = 'Date only partially complete';
		return false;
	}
	var incidentDate = new Date();
	var currentDate = new Date();
	incidentDate.setFullYear(year, month-1, day);
	if(incidentDate > currentDate)
	{
		dateIsCompleteAndValid = false;
		val.errormessage = 'Incident Date is in the future';
		return false;
	}
	if(incidentDate.getDate()!=day)
	{
		dateIsCompleteAndValid = false;
		val.errormessage = GetTheMonthName(month-1)+ ' cannot have ' + day + ' days';
		return false;
	}
	return true;
}

function ValidateBusDate(val, args)
{
	var dayField = GetTheField('ddlBusIncidentDateDay');
	var monthField = GetTheField('ddlBusIncidentDateMonth');
	var yearField = GetTheField('txtBusIncidentDateYear');
	if((dayField!=null)&&(monthField!=null)&&(yearField!=null))
	{
		var day = dayField.value;
		var month = monthField.value;
		var year = yearField.value;
	}
	else
	{
		args.IsValid = false;
		return;
	}
	if (IncidentDateValid(day, month, year, val))
	{
		args.IsValid = true;
	}
	else
	{
		args.IsValid = false;
	}
}

function ValidateTrainDate(val, args)
{
	var dayField = GetTheField('ddlTrainIncidentDateDay');
	var monthField = GetTheField('ddlTrainIncidentDateMonth');
	var yearField = GetTheField('txtTrainIncidentDateYear');
	if((dayField!=null)&&(monthField!=null)&&(yearField!=null))
	{
		var day = dayField.value;
		var month = monthField.value;
		var year = yearField.value;
	}
	else
	{
		args.IsValid = false;
		return;
	}
	if (IncidentDateValid(day, month, year, val))
	{
		args.IsValid = true;
	}
	else
	{
		args.IsValid = false;
	}
}

function ValidateAssetDate(val, args)
{
	var dayField = GetTheField('ddlAssetIncidentDateDay');
	var monthField = GetTheField('ddlAssetIncidentDateMonth');
	var yearField = GetTheField('txtAssetIncidentDateYear');
	if((dayField!=null)&&(monthField!=null)&&(yearField!=null))
	{
		var day = dayField.value;
		var month = monthField.value;
		var year = yearField.value;
	}
	else
	{
		args.IsValid = false;
		return;
	}
	if (IncidentDateValid(day, month, year, val))
	{
		args.IsValid = true;
	}
	else
	{
		args.IsValid = false;
	}
}


function IncidentTimeValid(day, month, year, hours, minutes, val)
{
	if ((hours=='HH')&&(minutes=='mm'))
	{
		return true;
	}
	if ((hours=='HH')||(minutes=='mm'))
	{
		val.errormessage = 'Time is incomplete';
		return false;
	}
	if((dateIsCompleteAndValid)&&(hours!='HH')&&(minutes!='mm'))
	{
		var incidentDateTime = new Date();
		var currentDate = new Date();
		incidentDateTime.setFullYear(year, month-1, day);
		incidentDateTime.setHours(hours, minutes);
		if(incidentDateTime > currentDate)
		{
			val.errormessage = 'Time is in the future';
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return true;
	}
	
}

function ValidateBusTime(val, args)
{
	var dayField = GetTheField('ddlBusIncidentDateDay');
	var monthField = GetTheField('ddlBusIncidentDateMonth');
	var yearField = GetTheField('txtBusIncidentDateYear');
	var hourField = GetTheField('ddlBusIncidentTimeHour');
	var minuteField = GetTheField('ddlBusIncidentTimeMinutes');
	if((dayField!=null)&&(monthField!=null)&&(yearField!=null)&&(hourField!=null)&&(minuteField!=null))
	{
		var day = dayField.value;
		var month = monthField.value;
		var year = yearField.value;
		var hours = hourField.value;
		var minutes = minuteField.value;
	}
	else
	{
		args.IsValid = false;
		return;
	}
	if (IncidentTimeValid(day, month, year, hours, minutes, val))
	{
		args.IsValid = true;
	}
	else
	{
		args.IsValid = false;
	}
}

function ValidateTrainTime(val, args)
{
	var dayField = GetTheField('ddlTrainIncidentDateDay');
	var monthField = GetTheField('ddlTrainIncidentDateMonth');
	var yearField = GetTheField('txtTrainIncidentDateYear');
	var hourField = GetTheField('ddlTrainIncidentTimeHour');
	var minuteField = GetTheField('ddlTrainIncidentTimeMinutes');
	if((dayField!=null)&&(monthField!=null)&&(yearField!=null)&&(hourField!=null)&&(minuteField!=null))
	{
		var day = dayField.value;
		var month = monthField.value;
		var year = yearField.value;
		var hours = hourField.value;
		var minutes = minuteField.value;
	}
	else
	{
		args.IsValid = false;
		return;
	}
	if (IncidentTimeValid(day, month, year, hours, minutes, val))
	{
		args.IsValid = true;
	}
	else
	{
		args.IsValid = false;
	}
}

function ValidateAssetTime(val, args)
{
	var dayField = GetTheField('ddlAssetIncidentDateDay');
	var monthField = GetTheField('ddlAssetIncidentDateMonth');
	var yearField = GetTheField('txtAssetIncidentDateYear');
	var hourField = GetTheField('ddlAssetIncidentTimeHour');
	var minuteField = GetTheField('ddlAssetIncidentTimeMinutes');
	if((dayField!=null)&&(monthField!=null)&&(yearField!=null)&&(hourField!=null)&&(minuteField!=null))
	{
		var day = dayField.value;
		var month = monthField.value;
		var year = yearField.value;
		var hours = hourField.value;
		var minutes = minuteField.value;
	}
	else
	{
		args.IsValid = false;
		return;
	}
	if (IncidentTimeValid(day, month, year, hours, minutes, val))
	{
		args.IsValid = true;
	}
	else
	{
		args.IsValid = false;
	}
}

function ConvertToTwoCharString(datepart)
{
	if(datepart < 10)
	{	
		return '0'+datepart;
	}
	else
	{
		return datepart + '';
	}
}

function SetDateFields(dayField, monthField, yearField, todayYesterday)
{				
	var theDateToday = new Date();
	var theDateYesterday = new Date();
	theDateYesterday.setDate(theDateToday.getDate()-1);
	if(todayYesterday=='today')
	{
		dayField.value = ConvertToTwoCharString(theDateToday.getDate());
		monthField.value = ConvertToTwoCharString(theDateToday.getMonth()+1);
		yearField.value = theDateToday.getFullYear();
	}
	else
	{
		dayField.value = ConvertToTwoCharString(theDateYesterday.getDate());
		monthField.value = ConvertToTwoCharString(theDateYesterday.getMonth()+1);
		yearField.value = theDateYesterday.getFullYear();
	}	
}

function SetBusDate(todayYesterday)
{
	var dayField = GetTheField('ddlBusIncidentDateDay')
	var monthField = GetTheField('ddlBusIncidentDateMonth');
	var yearField = GetTheField('txtBusIncidentDate');
	SetDateFields(dayField, monthField, yearField, todayYesterday)
}

function SetTrainDate(todayYesterday)
{
	var dayField = GetTheField('ddlTrainIncidentDateDay')
	var monthField = GetTheField('ddlTrainIncidentDateMonth');
	var yearField = GetTheField('txtTrainIncidentDate');
	SetDateFields(dayField, monthField, yearField, todayYesterday)
}

function SetAssetDate(todayYesterday)
{
	var dayField = GetTheField('ddlAssetIncidentDateDay')
	var monthField = GetTheField('ddlAssetIncidentDateMonth');
	var yearField = GetTheField('txtAssetIncidentDate');
	SetDateFields(dayField, monthField, yearField, todayYesterday)
}

function SetDate(todayYesterday, fieldToChange)
{
	var theForm = document.__aspnetForm;
	var theField;
	for(i=0;i<theForm.elements.length;i++)
	{
		var aField = theForm.elements.item(i);
		if(aField.name.indexOf(fieldToChange)>-1)
		{
			theField = aField;
			break;
		}
	}
	var aDate = new Date();
	if(todayYesterday=='today')
	{
		theField.value = FormatTwoDigits(aDate.getDate()) + '/' + FormatTwoDigits((aDate.getMonth()+1))+ '/' + aDate.getFullYear();
	}
	if(todayYesterday=='yesterday')
	{
		aDate.setTime(aDate.getTime() - (1000*60*60*24));
		theField.value = FormatTwoDigits(aDate.getDate()) + '/' + FormatTwoDigits((aDate.getMonth()+1)) + '/' + aDate.getFullYear(); 
	}
}

function FormatTwoDigits(aValue)
{
	testValue = aValue.toString(10);
	stringLength = testValue.length;
	if(stringLength==2)
	{
		return testValue;
	}
	if(stringLength==1)
	{
		return "0" + testValue;
	}
}
		
function CheckLength(source, arguments)
{
	if (arguments.Value.length>1000)
	{
		arguments.IsValid = false;
	}
	else
	{
		arguments.IsValid = true;
	}	
}


