<!-- Copyright (c) 2000, AirportParkingLots.com, Inc.  All rights reserved. -->

/*
APR form JS
*/
// prepopulate date fields.
function prepopdf()
{
	var date;

	if (document.frmcmain.ddate.value == '')
 	{
		date = new Date();
		date.setDate(date.getDate()+10);
		document.frmcmain.ddate.value = dt2dtstr(date);
		if (document.frmcmain.rdate.value == '')
 		{
			date.setDate(date.getDate()+6);
			document.frmcmain.rdate.value = dt2dtstr(date);
		}	
		
	}
	// originaldate
	if (document.frmcmain.originaldate.value == '')
 	{
		date = new Date();
		document.frmcmain.originaldate.value = dt2dtstr(date);		
	}
		// Set per-refID default time
	var refID = getReqParam("refID");
	
	if (refID == 852) 
	{
		setSelectTo(document.frmcmain.dhour,"10");
		setSelectTo(document.frmcmain.dminute,'30');
		setSelectTo(document.frmcmain.ddt,'am');

		setSelectTo(document.frmcmain.rhour,"4");
		setSelectTo(document.frmcmain.rminute,"30");
		setSelectTo(document.frmcmain.rdt,"pm");
	}
	// end Set per-refID default time
	
}
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 messnfocus_unless_value(fieldRef,value,message)
{
	if (fieldRef.value == value)
	{
		alert(message);
		fieldRef.focus();
		return true;
	}
	return false;
}

	function check()
{

	 if (messnfocus_unless_value(document.frmcmain.airportname,0,"Please select an Airport.") ) return false;
	 if (messnfocus_unless_value(document.frmcmain.ddate,'',"Please enter your Departure Date.") ) return false;

	DatePreformat(document.frmcmain.ddate);
	
	if (DateFormat(document.frmcmain.ddate.value) ==0)
	{
		alert ("Your Departure Date format is incorrect.");
		document.frmcmain.ddate.focus();
		return false;
	}
	if (isDateCValid(document.frmcmain.ddate.value) ==0)
	{
		alert ("Your Departure Date is incorrect.");
		document.frmcmain.ddate.focus();
		return false;
	}

// dva working below 
	//if ((DatePosition(document.frmcmain.ddate.value,document.frmcmain.originaldate.value)<0) || (DateNow(document.frmcmain.ddate.value)<0))
	if ((DatePosition(document.frmcmain.ddate.value,document.frmcmain.originaldate.value)<0))
	{
		alert ("Please enter a valid Departure Date.");
		document.frmcmain.ddate.focus();
		return false;
	}

// dva working above here

	 if (messnfocus_unless_value(document.frmcmain.dhour,0,"Please select expected Departure Hour.") ) return false;
	 if (messnfocus_unless_value(document.frmcmain.dminute,'N',"Please select expected Departure Minute.") ) return false;
	 if (messnfocus_unless_value(document.frmcmain.ddt,0,"Please select expected Departure AM or PM.") ) return false;

	 if (messnfocus_unless_value(document.frmcmain.rdate,'',"Please enter your Return Date.") ) return false;

	DatePreformat(document.frmcmain.rdate);

	if (DateFormat(document.frmcmain.rdate.value) ==0)
	{
		alert ("Your Return Date format is incorrect.");
		document.frmcmain.rdate.focus();
		return false;
	}
	if (isDateCValid(document.frmcmain.rdate.value) ==0)
	{
		alert ("Your Return Date is incorrect.");
		document.frmcmain.rdate.focus();
		return false;
	}

	if (DatePosition(document.frmcmain.rdate.value,document.frmcmain.ddate.value)<0)
	{
		alert ("Please select a valid Return Date.");
		document.frmcmain.rdate.focus();
		return false;
	}

	 if (messnfocus_unless_value(document.frmcmain.rhour,0,"Please select expected Return Hour.") ) return false;
	 if (messnfocus_unless_value(document.frmcmain.rminute,'N',"Please select expected Return Minutes.") ) return false;
	 if (messnfocus_unless_value(document.frmcmain.rdt,0,"Please select expected Return AM or PM.") ) return false;

// DVA & Bob working here 

	// DEPART & RETURN DAYS THE SAME 

	if (document.frmcmain.rdate.value == document.frmcmain.ddate.value) {

		// Check departure in PM when return AM, same day

		if (document.frmcmain.rdt.value < document.frmcmain.ddt.value) {
			alert ("Cannot depart in PM if your return is in AM on the same day.");
			document.frmcmain.rdt.focus();
			return false;
		}

		// Check departure after return (AM & AM or PM & PM)

		if (document.frmcmain.rdt.value == document.frmcmain.ddt.value) {

		// Check depart hr after return hour, same day

		if (parseInt(document.frmcmain.rhour.value,10) < parseInt(document.frmcmain.dhour.value,10)) {
			alert ("Cannot depart after your return time.");
			document.frmcmain.rhour.focus();
			return false;
		}

		// depart hr = return hr 

		if (parseInt(document.frmcmain.rhour.value,10) == parseInt(document.frmcmain.dhour.value,10)) {
			if ((parseInt(document.frmcmain.rminute.value) == parseInt(document.frmcmain.dminute.value)) || (parseInt(document.frmcmain.rminute.value) < parseInt(document.frmcmain.dminute.value))) {
				alert ("Departure and Return minute values are incorrect.");
				document.frmcmain.rminute.focus();
				return false;
			}
		}
	}


	}
		//Stay check
	var stay_length = StayCalc(document.frmcmain.ddate.value,document.frmcmain.rdate.value);
	if ( stay_length > 100 )
	{
		alert ("Your parking stay is too long ("+Math.floor(stay_length)+" days), please check your dates");
		document.frmcmain.rdate.focus();
		return false;
	}

	return true;
}

function StayCalc(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(orignaldate);
	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));
	}

	//var century = parseInt(now.getYear()/100)*100;
	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));
	}
	//alert(date);

	if (date < today)
	{   
		return -1;
	}
	else if (date > today)
		{   
			return 1;
	}
	else
	{   
		return 0;
	}

}
function DateNow(dateString) 
{
	//var now = new Date();
	var today = new Date();
	//var century = parseInt(now.getYear()/100)*100;
	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));
	}
	//alert(date);

	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;
}



