//-------------------------------------------------------------------------------------------------
	EnsureSecure();
//-------------------------------------------------------------------------------------------------

	function EnsureSecure() {
		var sURL = document.location.href;
		if (sURL.toLowerCase().indexOf("http://secure")>=0) {
			sURL = "https:" + sURL.substr(5);
			window.location.replace(sURL);
		}
	}
//-------------------------------------------------------------------------------------------------

	function CheckKey() {
		return (event.which) ? event.which : event.keyCode;
	}
//-------------------------------------------------------------------------------------------------		

	function CheckEsc(ev) {
		var iRet = 0;
		try {
			iRet = parseInt((ev.which) ? ev.which : ev.keyCode, 10);
		} catch (e) {
			iRet = 0;
		} finally {
			return (iRet==27) ? true : false;
		}
	}
//-------------------------------------------------------------------------------------------------

	function ReloadForNewSession(sPageName) {
		var sParms = "";
		var oCtrl = null;
		var saFld = "SessionID|SessSeqNbr|TransType|Referrer|RefPage|AgentIATA|AgentLogin|WebPrtyCode".split("|");
		for (var i=0; i<saFld.length; i++) {
			oCtrl = document.getElementById(saFld[i]);
			if (i==0) {sParms += "?";} else {sParms += "&";}
			sParms = sParms + saFld[i] + "=" + JSTrim(oCtrl.value.toString());
		}
		var sURL = sPageName + sParms;
		document.location.replace(sURL);
	}
//-------------------------------------------------------------------------------------------------

	function JSTrim(sText) {
		var vTemp = sText;
		var sRet = "";
		if (vTemp==null) {
			sRet = "";
		}
		else {
			sRet = vTemp.toString();
		}
		if (sRet.length > 0) {
			while ((sRet.indexOf(" ")==0) && (sRet.length>1)) {
				sRet = sRet.substr(1);
			}
			while ((sRet.length>1) && (sRet.lastIndexOf(" ")==(sRet.length - 1))) {
				sRet = sRet.substr(0, sRet.length - 1);
			}
			if (sRet==" ") sRet = "";
		}
		return sRet;
	}
//-------------------------------------------------------------------------------------------------

	function IsNumeric(sValue) {
		var sVal = JSTrim(sValue.toString());
		var bHasLen = (sVal.length>0) ? true : false;
		if (bHasLen==true) {
			for (var i=0; i<sVal.length; i++) {
				var sChar = sVal.charAt(i);
				if ((sChar<"0") || (sChar>"9")) return false;
			}
			return true;
		}
		return false;
	}
//-------------------------------------------------------------------------------------------------		

	function ResetUser(sSelUserID, sSelDispName) {
		var i = 0;
		var oElems = null;
		var oCtrl = document.getElementById("UserID");
		if (oCtrl!=null) {
			var sUserID = JSTrim(oCtrl.value.toString());
			if (document.location.href.toLowerCase().indexOf("editusers.asp")>=0) {
				var sURL = "EditUsers.asp?UserID=" + sUserID + "&SelUser=" + sSelUserID;
				document.location.replace(sURL);
			} else {
				if (document.location.href.toLowerCase().indexOf("default.asp")>=0) {
					window.alert("You will need to re-login to the system with your new settings.");
					document.location.replace("AgentLogin.asp");
				}
			}
		}
	}
//-------------------------------------------------------------------------------------------------
	
	function UpdateDateControl(sCtrlName) {
		//Correct the Days for the selected month and year.
		SetDays(sCtrlName);

		//Get the Month, Day and Year
		var oCtrl = document.getElementById(sCtrlName + "Month");
		var sMonth = JSTrim(oCtrl.value.toString());
		while (sMonth.length<2) {
			sMonth = "0" + sMonth;
		}
		oCtrl = document.getElementById(sCtrlName + "Day");
		var sDay = JSTrim(oCtrl.value.toString());
		while (sDay.length<2) {
			sDay = "0" + sDay;
		}
		oCtrl = document.getElementById(sCtrlName + "Year");
		var sYear = JSTrim(oCtrl.value.toString());
		
		//Concat the Date and update the Date control.
		sDate = sYear + sMonth + sDay;
		oCtrl = document.getElementById(sCtrlName + "Date");
		oCtrl.value = sDate;
	}
//-------------------------------------------------------------------------------------------------
	
	function SetDays(sCtrlName) {
		var oMonth = document.getElementById(sCtrlName + "Month");
		var oDay = document.getElementById(sCtrlName + "Day");
		var oYear = document.getElementById(sCtrlName + "Year");
		var iMonth = parseInt(oMonth.value, 10);
		var iYear = parseInt(oYear.value, 10);
		var iDay = 0;
		var iLastDay = 31;
		for (iDay=29; iDay<32; iDay++) {
			var sDate = iMonth.toString() + "/" + iDay.toString() + "/" + iYear.toString();
			if (ValidDate(sDate)!=true) {
				iLastDay = iDay - 1;
				break;
			}
		}
		var iDayCnt = oDay.length
		if (iLastDay!=iDayCnt) {
			try {
				if (iLastDay>oDay.length) {
					//Add Days
					var iCurIdx = oDay.selectedIndex;
					for (iDay=iDayCnt+1; iDay<=iLastDay; iDay++) {
						var oNew = document.createElement("OPTION");
						oNew.value = iDay.toString();
						oNew.text = iDay.toString();
						oDay.options[oDay.options.length] = oNew;
					}
					oDay.selectedIndex = iCurIdx;
				} else {
					//Remove Days
					iDay = parseInt(oDay.value, 10);
					iDay = (iDay<1) ? 1 : (iDay > iLastDay) ? iLastDay : iDay;
					oDay.value = iDay.toString();
					for (iDay=iLastDay+1; iDay<=iDayCnt; iDay++) {
						oDay.removeChild(oDay.options[oDay.options.length-1]);
					}
				}
			} catch(e) {
				return false;
			}
		}
	}
//-------------------------------------------------------------------------------------------------
	
	function UpdateTimeControl(sCtrlName) {
		var bFound = false;
		var sField = "";
		var i = 0;
		var oTimeCtrl = document.getElementById(sCtrlName + "Time");
		if (oTimeCtrl!=null) {
			var oCtrl = document.getElementById(sCtrlName + "Hour");
			if (oCtrl!=null) {
				//Normal TimeBox - Get the Hour, Minute and AM/PM
				var iHour = parseInt(JSTrim(oCtrl.value.toString()), 10) + 1;
				if ((iHour==12) || isNaN(iHour)) iHour = 0;
				oCtrl = document.getElementById(sCtrlName + "Minute");
				var iMinute = parseInt(JSTrim(oCtrl.value.toString()), 10);
				if (isNaN(iMinute)) iMinute = 0;
				oCtrl = document.getElementById(sCtrlName + "AmPm");
				var iAmPm = parseInt(JSTrim(oCtrl.value.toString()), 10);
				if (isNaN(iAmPm)) iAmPm = 0;
				iHour += (12 * iAmPm);
				//Concat the Time and update the Time control.
				var sHour = iHour.toString();
				var sMinute = iMinute.toString();
				if (sMinute.length<2) sMinute = "0" + sMinute;
				sTime = sHour + sMinute;
				oTimeCtrl.value = sTime;
			} else {
				//Scheduled Route TimeBox - Get the Time
				bFound = false;
				sField = sCtrlName;
				for (var i=1; i<100; i++) {
					oCtrl = document.getElementById(sField + i.toString() + "Time");
					if (oCtrl!=null) {
						if (oCtrl.style.display.toLowerCase()!="none") {
							bFound = true;
							break;
						}
					}
				}
				if (bFound==true) {
					sTime = oCtrl.value;
					oTimeCtrl.value = sTime;
				}
			}
			var iPos = sCtrlName.toLowerCase().indexOf("flight");
			if (iPos>=0) {
				bFound = false;
				sField = (iPos>0) ? "RetPickup" : "Pickup";
				oCtrl = document.getElementById(sField + "Hour");
				if (oCtrl==null) {
					for (var i=1; i<100; i++) {
						oCtrl = document.getElementById(sField + i.toString() + "Time");
						if (oCtrl!=null) {
							if (oCtrl.style.display.toLowerCase()!="none") {
								bFound = true;
								break;
							}
						}
					}
				} else {
					bFound = true;
				}
				if (bFound==true) SetPickupTime(sField, sTime);
			}
		}
	}
//-------------------------------------------------------------------------------------------------
	
	function SetPickupTime(sCtrlName, sFlightTime) {
		var i = 0;
		//Get the Transportation Type
		var oCtrl = document.getElementById("TransType");
		if (oCtrl!=null) {
			var sTransType = oCtrl.value.toString().toLowerCase();
		} else {
			var sTransType = "shuttle";
		}
		//Remove the Control Number (for Scheduled Route TimeBoxes)
		var sCtlName = sCtrlName;
		while (!isNaN(sCtlName.substr(sCtlName.length - 1, 1))) {
			sCtlName = sCtlName.substr(0, sCtlName.length - 2);
		}
		//Get the Full Date/Time
		oCtrl = document.getElementById(sCtlName + "Date");
		if (oCtrl!=null) {
			var sTime = JSTrim(sFlightTime.toString());
			while (sTime.length<4) {sTime = "0" + sTime;}
			var sDateTime = JSTrim(oCtrl.value.toString()) + sTime;
			
			oCtrl = document.getElementById("FromLocCode");
			var iFrom = parseInt(oCtrl.value, 10);
			oCtrl = document.getElementById("ToLocCode");
			var iTo = parseInt(oCtrl.value, 10);
			var bRet = (sCtrlName.toLowerCase().indexOf("ret")==0) ? true : false;
			if (((bRet==true) && (iFrom==100)) || ((bRet==false) && (iTo==100))) {
				//Going to Airport - Offset Pickup Time
				var sAirCode = "";
				var iOffset = 0;
				var sName = (bRet==true) ? "RetAirlineCode" : "AirlineCode";
				oCtrl = document.getElementById(sName);
				if (oCtrl!=null) sAirCode = JSTrim(oCtrl.value);
				if (sTransType!="shuttle") {
					iOffset = (IsIntAirCode(sAirCode)==true) ? miLSIntFltOffset : miLSDomFltOffset
				} else {
					iOffset = (IsIntAirCode(sAirCode)==true) ? miShIntFltOffset : miShDomFltOffset
				}
				sDateTime = DateToLong(DateAdd("n", -iOffset, LongToDate(sDateTime))).toString();
			}
			oCtrl = document.getElementById(sCtrlName + "Hour");
			if (oCtrl==null) {
				//Scheduled Route
				var iTime = parseInt(sDateTime.substr(8, 4), 10);
				var iDate = parseInt(sDateTime.substr(0, 8), 10);
				var iEffDate = 0;
				var iCtrlNbr = 0;
				var sTemp = "";
				var oTemp = null;
				for (i=1; i<100; i++) {
					sTemp = "";
					try {sTemp = eval("ms" + sCtlName + i.toString() + "EffDate");} catch(e) {sTemp = "";}
					if (sTemp.length > 0) {
						iEffDate = (isNaN(parseInt(sTemp, 10))) ? 0 : parseInt(sTemp, 10);
						if (iEffDate > iDate) {
							break;
						} else {
							iCtrlNbr = i;
						}
					} else {
						break;
					}
				}
				oCtrl = document.getElementById(sCtlName + iCtrlNbr.toString() + "Time");
				if (oCtrl!=null) {
					var oOpts = oCtrl.options;
					for (i=1; i<oOpts.length; i++) {
						if (parseInt(oOpts[i].value, 10)>iTime) {
							iTime = parseInt(oOpts[i-1].value, 10);
							oCtrl.value = iTime.toString();
							break;
						}
					}
					for (i=1; i<100; i++) {
						if (i!=iCtrlNbr) {
							oTemp = document.getElementById(sCtlName + i.toString() + "Time");
							if (oTemp!=null) {
								oTemp.style.display = "none";
							} else {
								break;
							}
						}
					}
					oCtrl.style.display = "";
					oTemp = document.getElementById(sCtlName + "Time");
					oTemp.value = oCtrl.value;
				}
			} else {
				//Not a Scheduled Route
				var sTime = sDateTime.substr(8, 4);
				
				var iHour = parseInt(sTime.substr(0, 2), 10);
				var iMinute = parseInt(sTime.substr(2, 2), 10);
				var iAmPm = 0;
				if (iHour>=12) {
					iHour -= 12;
					iAmPm = 1;
				}
				iHour -= 1;
				if (iHour<0) iHour = 11;
				oCtrl = document.getElementById(sCtrlName + "Hour");
				oCtrl.value = iHour.toString();
				oCtrl = document.getElementById(sCtrlName + "Minute");
				oCtrl.value = iMinute.toString();
				oCtrl = document.getElementById(sCtrlName + "AmPm");
				oCtrl.value = iAmPm.toString();
				oCtrl = document.getElementById(sCtrlName + "Time");
				oCtrl.value = sTime;
			}
		}
	}
//-------------------------------------------------------------------------------------------------

	function LongToDate(lDate) {
		var sDate = lDate.toString();
		var iYear = parseInt(sDate.substr(0, 4), 10);
		var iMonth = parseInt(sDate.substr(4, 2), 10) - 1;
		var iDay = parseInt(sDate.substr(6, 2), 10);
		var iHours = parseInt(sDate.substr(8, 2), 10);
		var iMins = parseInt(sDate.substr(10, 2), 10);
		return new Date(iYear, iMonth, iDay, iHours, iMins);
	}
//-------------------------------------------------------------------------------------------------

	function DateToLong(tDate) {
		var sYear = tDate.getFullYear().toString();
		var sMonth = (tDate.getMonth() + 1).toString();
		var sDay = tDate.getDate().toString();
		var sHours = tDate.getHours().toString();
		var sMins = tDate.getMinutes().toString();
		if (sMonth.length<2) sMonth = "0" + sMonth;
		if (sDay.length<2) sDay = "0" + sDay;
		if (sHours.length<2) sHours = "0" + sHours;
		if (sMins.length<2) sMins = "0" + sMins;
		return sYear + sMonth + sDay + sHours + sMins;
	}
//-------------------------------------------------------------------------------------------------

	function DateAdd(sInterval, iNumber, tDate) {
		var iYear = tDate.getFullYear();
		var iMonth = tDate.getMonth();
		var iDay = tDate.getDate();
		var iHours = tDate.getHours();
		var iMins = tDate.getMinutes();
		var iSecs = tDate.getSeconds();
		switch (sInterval) {
			case "s" :
				iSecs += iNumber;
				break;
			case "n" :
				iMins += iNumber;
				break;
			case "h" :
				iHours += iNumber;
				break;
			case "d" :
				iDay += iNumber;
				break;
			case "m" :
				iMonth += iNumber;
				break;
			case "y" :
				iYear += iNumber;
				break;
		}
		return new Date(iYear, iMonth, iDay, iHours, iMins, iSecs);
	}
//-------------------------------------------------------------------------------------------------
	
	function ValidDate(sDate) {
		var iPos1 = sDate.indexOf("/");
		var iPos2 = sDate.lastIndexOf("/");
		var sMonth = sDate.substr(0,iPos1);
		while (sMonth.indexOf("0")==0) {sMonth = sMonth.substr(1);}
		var iMonth = parseInt(sMonth, 10);
		var sDay = sDate.substr(iPos1+1, iPos2-iPos1);
		while (sDay.indexOf("0")==0) {sDay = sDay.substr(1);}
		iDay = parseInt(sDay, 10);
		var sYear = sDate.substr(iPos2+1);
		if (sYear.length<4) sYear = ("2000").substr(0, 4-sYear.length) + sYear;
		var iYear = parseInt(sYear, 10);
		if (iYear==0) {
			return false;
		} else {
			switch (iMonth) {
				case 0:
					return false;
				case 2:
					var bLeap = (((iYear % 4)==0) && (((iYear % 100)!=0) || ((iYear % 400)==0))) ? true : false;
					if (bLeap==true) {
						return ((iDay>0) && (iDay<30)) ? true : false;
					} else {
						return ((iDay>0) && (iDay<29)) ? true : false;
					}
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					return ((iDay>0) && (iDay<31)) ? true : false;
					break;
				default:
					return ((iDay>0) && (iDay<32)) ? true : false;
					break;
			}
		}
	}
//-------------------------------------------------------------------------------------------------
	
	function ValidEmailAddress(sEmailAddress) {
		//Check for "@" symbol.
		var lPos1 = sEmailAddress.indexOf("@");
		if (lPos1>0) {
			//Error if second "@" symbol exists.
			var lPos2 = sEmailAddress.lastIndexOf("@");
			if (lPos2==lPos1) {
				//Check for "."
				lPos2 = sEmailAddress.lastIndexOf(".");
				if (lPos2>lPos1) {
					//OK if "." is after "@"
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		} else {
			return false;
		}
	}
//-------------------------------------------------------------------------------------------------

	function GetCookie(sCookieName) {
		var sName = JSTrim(sCookieName).toLowerCase();
		var saCookie = document.cookie.split("; ");
		for (var i=0; i<saCookie.length; i++) {
			var saPair = saCookie[i].split("=");
			if (JSTrim(saPair[0].toLowerCase())==sName) {
				sRet = ((saPair[1]!=null) && (saPair[1]!="undefined")) ? unescape(saPair[1]) : "";
				return sRet;
			}
		}
		return "";
	}
//-------------------------------------------------------------------------------------------------

	function GetCookieVal(iArgOffset) {
		var iArgEnd = document.cookie.indexOf(";", iArgOffset);
		if(iArgEnd == -1) iArgEnd = document.cookie.length;
		return unescape(document.cookie.substring(iArgOffset, iArgEnd));
	}
//-------------------------------------------------------------------------------------------------

	function SetCookie(sCookieName, sValue) {
		var sVal = "";
		if (sValue!=null) {
			if (sValue.length > 0) sVal = sValue;
		}
		var tExpDate = new Date();
		var sPath = location.pathname;
		var sPath = sPath.substring(0, sPath.lastIndexOf('/')) + '/';
		tExpDate.setTime(tExpDate.getTime() + (365 * 24 * 3600 * 1000));
		SetCookieVal(sCookieName, sValue, tExpDate, sPath);
	}
//-------------------------------------------------------------------------------------------------

	function SetCookieVal(sCookieName, sValue) {
		var sName = JSTrim(sCookieName);
		var sVal = escape(sValue);
		var saArgs = SetCookieVal.arguments;
		var iArgCnt = SetCookieVal.arguments.length;
		var tExp = (iArgCnt > 2) ? saArgs[2].toGMTString() : null;
		var sPath = (iArgCnt > 3) ? saArgs[3] : null;
		var bSecure = (iArgCnt > 4) ? saArgs[4] : false;
		sCookie = sName + "=" + sVal + ((tExp!=null) ? "; expires=" + tExp : "") +
		 ((sPath!=null) ? "; path=" + sPath : "") + ((bSecure==true) ? "; secure" : "");
		document.cookie = sCookie;
	}
//-------------------------------------------------------------------------------------------------
