var gIntMonth = 0;
var gIntDate = 0;
var gIntYear = 0;

var gSourceField = null;
var gSourceFieldValue = "";

function gCFD(sDate, sOff) {
	var dDate = new Date(sDate);
	if(isNaN(dDate)) {
		dDate = new Date();
	}
	var sOff = String(sOff);
	var aO = sOff.split("/");
	var iMO = parseInt(aO[0]);
	var iDO = parseInt(aO[1]);
	var iYO = parseInt(aO[2]);
	var dNew = new Date(dDate);
	dNew.setDate(dNew.getDate() + iDO);
	dNew.setMonth(dNew.getMonth() + iMO);
	dNew.setYear(dNew.getFullYear() + iYO);
	var sFD = String(dNew.getMonth() + 1) + "/" + String(dNew.getDate()) + "/" + String(dNew.getFullYear());
	return(sFD);
}

function updateDependentDate(oBox2,sDate1,sOffset) {
	var d1 = new Date(sDate1);
	var d2 = new Date(oBox2.value);
	if(isNaN(d1)) {
		return;
	}
	var sNew = gCFD(sDate1, sOffset);
	if(isNaN(d2)) {
		oBox2.value = sNew;
		return;
	}
	if(d1 >= d2) {
		oBox2.value = sNew;
		return;
	}
}

function cleanDigits(strDigits) {
	var strResult = "0";
	for(var i = 0; i < strDigits.length; i++){
		var strC = strDigits.charAt(i);
		if(isDigit(strC)) {
			strResult += "" + strC;
		}
	}
	var iResult = parseInt(strResult,10);
	return(iResult);
}

function isDigit(ch) {
	return(ch >= '0' && ch <= '9');
}

function GetDaysInMonth(intMonth, intYear) {
	var arrDaysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var intCount = arrDaysInMonth[intMonth-1];
	if(intMonth == 2) {
		if((intYear%4) == 0 ) {
			intCount++;
		}
	}
	return intCount;
}

function IsValidDate(intDate, intMonth, intYear) {
	if( (intYear > 2050) || (intYear < 1900) ) {return false;}
	if( (intMonth > 12) || (intMonth < 1) ) {return false;}
	if(intDate < 1) {return false;}
	var intMaxDate = GetDaysInMonth(intMonth, intYear);
	if(intDate > intMaxDate) {return false;}
	return true;
}

function GetInputDate(strDate){
	var lenDateString = strDate.length;
	if(lenDateString == 0) {return(false);}

	arrDate = strDate.split("/");
	if(arrDate.length < 3) {return(false);}

	var intMonth = cleanDigits(arrDate[0]);
	var intDate = cleanDigits(arrDate[1]);
	var intYear = cleanDigits(arrDate[2]);

	if(IsValidDate(intDate, intMonth, intYear)) {
		gIntMonth = intMonth;
		gIntDate = intDate;
		gIntYear = intYear;
	} else {
		var dToday = new Date();
		gIntMonth = dToday.getMonth() + 1;
		gIntDate = dToday.getDate();
		gIntYear = dToday.getFullYear();
	}
	return(true);
}

function ShowCalendar(launchButton,dateInputField,datePrevField,strEarliestDate,strLatestDate,strEarliestOffset,strLatestOffset){
	var calDocumentAll=document.all.CalFrame;
	var oCalFrame = window.frames.CalFrame;

	//alert("test 1");
	if(oCalFrame.gblnCalendarLoaded == null || oCalFrame.gblnCalendarLoaded == false){
		alert("Calendar:" + oCalFrame.gblnCalendarLoaded + "\r\nUnable to load popup calendar.\r\nPlease reload the page.");
		return;
	}

	var strStartRange = strEarliestDate;
	var strEndRange = strLatestDate;
	if(datePrevField != null) {
		if(String(dateInputField.value) != "") {
			var sDate = String(datePrevField.value);
			if(strEarliestOffset != "") {
				strStartRange = gCFD(sDate, strEarliestOffset);
			}
			if(strLatestOffset != "") {
				strEndRange = gCFD(sDate, strLatestOffset);
			}
		}
	}
	oCalFrame.SetDateRange(new Date(strStartRange),new Date(strEndRange));


	if(dateInputField == gSourceField && calDocumentAll.style.display == "block"){
		if(gSourceFieldValue != dateInputField.value && GetInputDate(dateInputField.value)){
			oCalFrame.SetInputDate(gIntDate, gIntMonth, gIntYear);
			oCalFrame.SetDate(gIntDate, gIntMonth, gIntYear);
			gSourceFieldValue = dateInputField.value;
		}
		else
			calDocumentAll.style.display = "none";
	}
	else{
		if(GetInputDate(dateInputField.value)){
			dateInputField.value = String(gIntMonth) + "/" + String(gIntDate) + "/" + String(gIntYear);
			oCalFrame.SetInputDate(gIntDate, gIntMonth, gIntYear);
			oCalFrame.SetDate(gIntDate, gIntMonth, gIntYear);
		}
		else if(null != datePrevField && GetInputDate(datePrevField.value)){
			oCalFrame.SetInputDate(gIntDate, gIntMonth, gIntYear);
			oCalFrame.SetDate(gIntDate, gIntMonth, gIntYear);
		}
		else{
			var dDate = new Date(strEarliestDate);
			oCalFrame.SetInputDate(-1, -1, -1);
			oCalFrame.SetDate(dDate.getDate(), dDate.getMonth()+1, dDate.getFullYear());
		}
		var intCalLeft = 0;
		var intCalTop = 0;

		for(var p = launchButton; p && p.tagName!='BODY'; p = p.offsetParent){
			intCalLeft += p.offsetLeft;
			intCalTop += p.offsetTop;
		}
		var intLaunchButtonHeight = launchButton.offsetHeight;
		var intDocHeight = calDocumentAll.style.pixelHeight;
		var intScrollTop = document.body.scrollTop;
		calDocumentAll.style.left = intCalLeft;
		if( (intCalTop - intDocHeight >= intScrollTop) && (intCalTop + intLaunchButtonHeight + intDocHeight > document.body.clientHeight + intScrollTop) )
			calDocumentAll.style.top = intCalTop - intDocHeight;
		else
			calDocumentAll.style.top = intCalTop+intLaunchButtonHeight;
		if(calDocumentAll.style.display == "none")
			calDocumentAll.style.display = "block";
		gSourceField = dateInputField;
		gSourceFieldValue = dateInputField.value;
	}
}

function SetDate(intDate, intMonth, intYear){
	gSourceField.focus();
	gSourceField.value = (intMonth + "/" + intDate + "/" + String(intYear));
	gSourceFieldValue = gSourceField.value;
}

function InitializeCalendar() {
	if (!bHasDHTML) {
		for (var iDx=0; iDx<document.QuickPickRentalCars.elements.length; ++iDx) {
			var eElemName = String(document.QuickPickRentalCars.elements[iDx].name).toUpperCase();
			if (eElemName == "PICKUPMONTH"
				|| eElemName == "DROPOFFMONTH") {
				document.QuickPickRentalCars.elements[iDx].selectedIndex = dLDate.getMonth();
			}
			if (eElemName == "PICKUPDAY"
				|| eElemName == "DROPOFFDAY") {
				document.QuickPickRentalCars.elements[iDx].selectedIndex = dLDate.getDate()-1;
			}
		}
	}
}

function lpad(n, len, ch) {
	var s = new String(n);
	while (s.length < len) s = ch + s;
	return s;
}

function SubmitIt(){
	if (bHasDHTML) {
		oForm			= document.all["QuickPickRentalCars"];
		var	strDate		= new String(oForm["rc_date_pickup_CTL"].value);
		var	arrDate		= safeSplit(strDate,"/");
		oForm["PICKUPMONTH"].value	= lpad(String(arrDate[0]),2,"0");
		oForm["PICKUPDAY"].value	= lpad(String(arrDate[1]),2,"0");
		oForm["PICKUPYEAR"].value	= String(checkTravelYear(arrDate[2]));
		var	strDate = new String(oForm["rc_date_dropoff_CTL"].value);
		var	arrDate = safeSplit(strDate,"/");
		oForm["DROPOFFMONTH"].value	= lpad(String(arrDate[0]),2,"0");
		oForm["DROPOFFDAY"].value	= lpad(String(arrDate[1]),2,"0");
		oForm["DROPOFFYEAR"].value	= String(checkTravelYear(arrDate[2]));
	}
	return true;
}

function safeSplit(str, dlmtr){
	var splitA = new Array();
	for (var i=0; i < str.length+1; i++){
		if (str.indexOf(dlmtr) != -1){
			splitA[i] =str.substring(0,str.indexOf(dlmtr));
			str = str.substring(str.indexOf(dlmtr)+1);
			if (str.length == 0) splitA[i+1] = '';
		}
		else {
			splitA[i] = str;
			return splitA;
		}
	}
	return splitA;
}
	
function checkTravelYear(vYear) {
	var intYear = parseInt("0" + String(vYear),10);
	if(intYear < 100) {intYear += 2000;}
	return(intYear);
}

function SubmitIntl() {
	if (bHasDHTML) {
		var	strDate		= new String(carform.rc_date_pickup_CTL.value);
		var	arrDate		= safeSplit(strDate,"/");
		carform.pumonth.value	= arrDate[0];
		carform.puday.value		= arrDate[1];
		carform.puyear.value	= String(checkTravelYear(arrDate[2]));
		var	strDate = new String(carform.rc_date_dropoff_CTL.value);
		var	arrDate = safeSplit(strDate,"/");
		carform.domonth.value	= arrDate[0];
		carform.doday.value		= arrDate[1];
		carform.doyear.value	= String(checkTravelYear(arrDate[2]));
	}
	return true;
}

function SubmitIntl_CarTrawler() {
        if (bHasDHTML) {
                var     strDate         = new String(carform.rc_date_pickup_CTL.value);
                var     arrDate         = safeSplit(strDate,"/");
                carform.pickupMonth.value   = String(arrDate[0]);  if ( carform.pickupMonth.value.length < 2 ) { carform.pickupMonth.value = '0' + carform.pickupMonth.value; }
                carform.pickupDate.value	= String(arrDate[1]);  if ( carform.pickupDate.value.length < 2 ) { carform.pickupMonth.value = '0' + carform.pickupDate.value; }
                carform.pickupYear.value    = String(checkTravelYear(arrDate[2]));
                var     strDate = new String(carform.rc_date_dropoff_CTL.value);
                var     arrDate = safeSplit(strDate,"/");
                carform.returnMonth.value   = String(arrDate[0]);  if ( carform.returnMonth.value.length < 2 ) { carform.returnMonth.value = '0' + carform.returnMonth.value; }
                carform.returnDate.value             = String(arrDate[1]);  if ( carform.returnDate.value.length < 2 ) { carform.returnDate.value = '0' + carform.returnDate.value; }
                carform.returnYear.value    = String(checkTravelYear(arrDate[2]));
        }
        return true;
}


function defaultIntlDate() {
	todayDate = new Date();
	twoDate = new Date(todayDate.getTime()+2*24*60*60*1000);
	twoMonth = twoDate.getMonth();
	twoDay = twoDate.getDate();
	twoYear = twoDate.getYear();
	weekDate = new Date(todayDate.getTime()+9*24*60*60*1000);
	weekMonth = weekDate.getMonth();
	weekDay = weekDate.getDate();
	weekYear = weekDate.getYear();

	// subtract 1 to match index values
	twoDay = twoDay - 1;
	weekDay = weekDay - 1;
	weekYear = weekYear - weekYear; // make sure year rollover is caught before modifying today year
	twoYear = twoYear - twoYear; 

	// adjust form values
	if (!bHasDHTML) {
		document.carform.puday.options[twoDay].selected		= true;
		document.carform.pumonth.options[twoMonth].selected	= true;
		document.carform.puyear.options[twoYear].selected	= true;
		document.carform.doday.options[weekDay].selected	= true;
		document.carform.domonth.options[weekMonth].selected= true;
		document.carform.doyear.options[weekYear].selected	= true;
	} else {
		dIntlL = new Date(itFY, itM, itD+2);
		dIntlU = new Date(itFY, itM, itD+9);
		sIntlL = ((dIntlL.getMonth()+1) + "/" + dIntlL.getDate() + "/" + dIntlL.getFullYear());
		sIntlU = ((dIntlU.getMonth()+1) + "/" + dIntlU.getDate() + "/" + dIntlU.getFullYear());
		carform.rc_date_pickup_CTL.value  = sIntlL;
		carform.rc_date_dropoff_CTL.value = sIntlU;
	}
}

function GetCookie() 
{
	var aCookies = document.cookie.split('; ');
	for( var i=0;  i < aCookies.length; i++ )
	{
		var nameValue = aCookies[i].toString();
		if( nameValue.substring(0,3) == 'RC.' )
		{
			nameValue = nameValue.substring(3,nameValue.length);
			var aNameValue = nameValue.split('=');
			if( aNameValue.length == 2 )
			{
			    if( document.QuickPickRentalCars.item(aNameValue[0].toLowerCase()) != null )
			      document.QuickPickRentalCars.item(aNameValue[0].toLowerCase()).value = aNameValue[1];
			}
		}
	}
	return true;
}

var dLDate = new Date(); var itFY = dLDate.getFullYear(); var itM = dLDate.getMonth(); var itD = dLDate.getDate();
var dUDate = new Date(itFY, itM, itD+330);
var dIntlL, dIntlU;
var sLDate = ((itM+1) + "/" + itD + "/" + itFY);
var sUDate = ((dUDate.getMonth()+1) + "/" + dUDate.getDate() + "/" + dUDate.getFullYear());

