function validateForm()
{


	DatePreformat(document.resForm.arrivaldate);
	
	if (DateFormat(document.resForm.arrivaldate.value) ==0)
	{
		errMsg.innerHTML = "<font color='red'>Your Arrival Date format is incorrect.</font>";
		document.resForm.arrivaldate.focus();
		return false;
	}
	if (isDateCValid(document.resForm.arrivaldate.value) ==0)
	{
		errMsg.innerHTML = "<font color='red'>Your Arrival Date is incorrect.</font>";
		document.resForm.arrivaldate.focus();
		return false;
	}

	if ((DatePosition(document.resForm.arrivaldate.value,document.resForm.originaldate.value)<0))
	{
		errMsg.innerHTML = "<font color='red'>Please enter a valid Arrival Date.</font>";
		document.resForm.arrivaldate.focus();
		return false;
	}


	DatePreformat(document.resForm.returndate);

	if (DateFormat(document.resForm.returndate.value) ==0)
	{
		errMsg.innerHTML = "<font color='red'>Your Return Date format is incorrect.</font>";
		document.resForm.returndate.focus();
		return false;
	}
	if (isDateCValid(document.resForm.returndate.value) ==0)
	{
		errMsg.innerHTML = "<font color='red'>Your Return Date is incorrect.</font>";
		document.resForm.returndate.focus();
		return false;
	}

	if (DatePosition(document.resForm.returndate.value,document.resForm.arrivaldate.value)<0)
	{
		errMsg.innerHTML = "<font color='red'>Please select a valid Return Date.</font>";
		document.resForm.returndate.focus();
		return false;
	}

	 

	if (document.resForm.returndate.value == document.resForm.arrivaldate.value) {



		// Check depart hr after return hour, same day
		var _time_str = new String(document.resForm.ahour.value+ ":" + document.resForm.aminute.value + " " + document.resForm.adt.value);
		var _dtime = Date.parse("01/01/50 " + _time_str);
		var _time_str = new String(document.resForm.rhour.value+ ":" + document.resForm.rminute.value + " " + document.resForm.rdt.value);
		var _rtime = Date.parse("01/01/50 " + _time_str);

		if (_dtime > _rtime) {
			errMsg.innerHTML = "<font color='red'>Cannot depart after your return time.</font>";
			return false;
		}

		if (parseInt(document.resForm.rhour.value,10) == parseInt(document.resForm.ahour.value,10)) {
			if ((parseInt(document.resForm.rminute.value) == parseInt(document.resForm.aminute.value)) || (parseInt(document.resForm.rminute.value) < parseInt(document.resForm.aminute.value))) {
				errMsg.innerHTML = "<font color='red'>Departure and Return minute values are incorrect.</font>";
				return false;
			}
		}

	}
	
		//Duration check
	var stay_length = DurationCalc(document.resForm.arrivaldate.value,document.resForm.returndate.value);
	if ( stay_length > 100 )
	{
		errMsg.innerHTML = "<font color='red'>Your parking stay is too long ("+Math.floor(stay_length)+" days), please check your dates</font>";
		document.resForm.returndate.focus();
		return false;
	}

	var today = new Date();
	var todayStr = (today.getMonth() + 1) + '/' + today.getDate() + '/' + today.getFullYear();
	var daysToDep = DurationCalc(todayStr,document.resForm.arrivaldate.value);
	var daysToRet = DurationCalc(todayStr,document.resForm.returndate.value);
	if (daysToDep > 365) {
		errMsg.innerHTML = "<font color='red'>We only accept reservations up to a year in advance. Please check your dates.</font>";
		document.resForm.arrivaldate.focus();
		return false;
	}
	if (daysToRet > 365) {
		errMsg.innerHTML = "<font color='red'>We only accept reservations up to a year in advance. Please check your dates.</font>";
		document.resForm.returndate.focus();
		return false;
	}

	return true;
}
function initializedate()
{
	var date;

	if (document.resForm.arrivaldate.value == '')
	{
		date = new Date();
		date.setDate(date.getDate()+7);
		document.resForm.arrivaldate.value = dt2dtstr(date);
		if (document.resForm.returndate.value == '')
		{
			date.setDate(date.getDate()+6);
			document.resForm.returndate.value = dt2dtstr(date);
		}	
		
	}

	var refID = getReqParam("refID");

}
function setSelectTo(sfield,sval) 
{
	for (var i = 0; i < sfield.options.length; i++)
	{		
		if ( sfield.options[i].value == sval)
		{
			 sfield.selectedIndex =  i;
			return 1;
		}
	}
	return 0;
}

function getReqParam(param) 
{
	var val = "";
	var s_end = "";
	var qstring = window.location.search;
	var s_start = qstring.indexOf(param);

	if (s_start != -1) {
		s_start += param.length + 1;
		var s_end = qstring.indexOf("&", s_start);
		if (s_end == -1) {
			s_end = qstring.length
		}
		val = qstring.substring(s_start,s_end);
	}
return val;
}

function dt2dtstr(dt_datetime)
{
	var s_year = new String(dt_datetime.getFullYear());
	
	return(new String((iup22cl(dt_datetime.getMonth()+1)) + "/" + iup22cl(dt_datetime.getDate()) + "/" + s_year.substring(2, 4)));
}
function iup22cl(value)
{
	if(value < 10)
	return new String('0' + value);
	return value;
}
// return true if field value eq passed value
	function validateentry(fieldRef,value,message)
{
	if (fieldRef.value == value)
	{
		//alert(message);
		errMsg.innerHTML = "<font color='red'>" + message + "</font>";
		return true;
	}
	return false;
}

function DurationCalc(first_dts,second_dts)
{
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	var date1;
	var date2;
	
	re_date.exec(first_dts);
	if (parseInt(RegExp.$3,10)<100)
	{
		date1 = new Date (parseInt(RegExp.$3,10)+2000, parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}else {
		date1 = new Date(parseInt(RegExp.$3,10), parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}
		
	re_date.exec(second_dts);
	if (parseInt(RegExp.$3,10)<100)
	{
		date2 = new Date (parseInt(RegExp.$3,10)+2000, parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}else {
		date2 = new Date(parseInt(RegExp.$3,10), parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}

	return ((date2-date1)/86400000);	
}


function DatePosition(dateString,orignaldate) 
{
	var now = new Date();
	var today = new Date();
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	re_date.exec(orignaldate);
	if (parseInt(RegExp.$3,10)<100)
	{		   today = new Date (parseInt(RegExp.$3,10)+2000, parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}else {  today = new Date(parseInt(RegExp.$3,10), parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}

	re_date.exec(dateString);
	var date;
	if (parseInt(RegExp.$3,10)<100)
	{
		date = new Date (parseInt(RegExp.$3,10)+2000, parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}else {
		date = new Date(parseInt(RegExp.$3,10), parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}

	if (date < today)
	{   
		return -1;
	}
	else if (date > today)
		{   
			return 1;
	}
	else
	{   
		return 0;
	}

}
function DateNow(dateString) 
{
	var today = new Date();
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	re_date.exec(dateString);
	var date;
	if (parseInt(RegExp.$3,10)<100)
	{
		date = new Date (parseInt(RegExp.$3,10)+2000, parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}else {
		date = new Date(parseInt(RegExp.$3,10), parseInt(RegExp.$1,10)-1, parseInt(RegExp.$2,10));
	}

	if (date < today)
	{   
		return -1;
	}
	else if (date > today)
		{   
			return 1;
	}
	else
	{   
		return 0;
	}

}
function hcoded_mstom (smonth)
{
		var fir = smonth.substr(0,3);
		mtom = fir.toLowerCase();
		if (mtom == 'jan') return '01';
		if (mtom == 'feb') return '02';
		if (mtom == 'mar') return '03';
		if (mtom == 'apr') return '04';
		if (mtom == 'may') return '05';
		if (mtom == 'jun') return '06';
		if (mtom == 'jul') return '07';
		if (mtom == 'aug') return '08';
		if (mtom == 'sep') return '09';
		if (mtom == 'oct') return '10';
		if (mtom == 'nov') return '11';
		if (mtom == 'dec') return '12';
		// oops
		return 0;
}

function DatePreformat(field)
{
	var str_datetime = field.value;
	str_datetime = str_datetime.replace(/\s+/ig,'');
	str_datetime = str_datetime.replace(/\\/ig,'/');
	str_datetime = str_datetime.replace(/-/ig,'/');
	
	var re_date = /^(\d+)\/.*$/;
		if (!re_date.exec(str_datetime))
		{
			re_date = /^(\w+)\/(.*)$/;
			if (!re_date.exec(str_datetime))	
				return (false);
		
		mon = hcoded_mstom(RegExp.$1);
		str_datetime = mon+'/'+RegExp.$2
		}
	 
	field.value = str_datetime;
	return (true)
}

function DateFormat(Datestr) 
{
	var re_date = /^(\d\d)\/(\d\d)\/(\d\d)$/;
	if (!re_date.exec(Datestr))
		return (0);
	return (1);

}

function isDateCValid(dateString)
{
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	re_date.exec(dateString);

	if (parseInt(RegExp.$1,10) > 12 ) return 0;
	if (parseInt(RegExp.$2,10) == 0 ) return 0;
	if (parseInt(RegExp.$2,10) > hcoded_mlength(parseInt(RegExp.$1,10),parseInt(RegExp.$3,10)) ) return 0;	
	
	return 1;		
}

function hcoded_mlength (mtom,yyy)
{
		var yc = 0;
		if (mtom == '1') return '31';
		if (mtom == '2') {
			yc = (yyy<100)?(yyy+2000):yyy;					
			if ((yc%4==0)&&(yc%100!= 0 || yc%400==0))
				return '29';
			else 
				return '28';
		};
		if (mtom == '3') return '31';
		if (mtom == '4') return '30';
		if (mtom == '5') return '31';
		if (mtom == '6') return '30';
		if (mtom == '7') return '31';
		if (mtom == '8') return '31';
		if (mtom == '9') return '30';
		if (mtom == '10') return '31';
		if (mtom == '11') return '30';
		if (mtom == '12') return '31';
		// oops
		return 0;
}

