function cookiesAllowed() {
   setCookie('checkCookie', 'test', 1);
   if (getCookie('checkCookie')) {
      deleteCookie('checkCookie');
      return true;
   }
   return false;
}

function setCookie(name,value,expires, options) {
   if (options===undefined) { options = {}; }
   if ( expires ) {
      var expires_date = new Date();
      expires_date.setDate(expires_date.getDate() + expires)
   }
   document.cookie = name+'='+escape( value ) +
      ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + 
      ( ( options.path ) ? ';path=' + options.path : '' ) +
      ( ( options.domain ) ? ';domain=' + options.domain : '' ) +
      ( ( options.secure ) ? ';secure' : '' );
}

function getCookie( name ) {
   var start = document.cookie.indexOf( name + "=" );
   var len = start + name.length + 1;
   if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
      return null;
   }
   if ( start == -1 ) return null;
   var end = document.cookie.indexOf( ';', len );
   if ( end == -1 ) end = document.cookie.length;
   return unescape( document.cookie.substring( len, end ) );
}

function deleteCookie( name, path, domain ) {
   if ( getCookie( name ) ) document.cookie = name + '=' +
      ( ( path ) ? ';path=' + path : '') +
      ( ( domain ) ? ';domain=' + domain : '' ) +
      ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}


function validateform()
{

	if (document.CriteriaForm.TariffType.value == "") {
		document.CriteriaForm.Band.value= "";
	} else {
		document.CriteriaForm.Band.value = document.CriteriaForm.TariffType.value;
	}
	document.CriteriaForm.Tariff.value = "";

	if (document.CriteriaForm.OneWayFlag.checked) {
		document.CriteriaForm.OneWayFlag.value = "on";
	} else {
		document.CriteriaForm.OneWayFlag.value = "off";
	}
	
	
	// Check that a valid Outward Route is selected
	if(document.CriteriaForm.OutRouteCode[document.CriteriaForm.OutRouteCode.selectedIndex].value=="none")
	{
		alert("Please select an Departure Route");
		document.CriteriaForm.OutRouteCode.focus();
	  	return false;
  	}
	else
	{
	  temp = document.CriteriaForm.OutRouteCode[document.CriteriaForm.OutRouteCode.selectedIndex].value;
	  document.CriteriaForm.OutDepPoint.value=temp.substr(0,temp.indexOf("|"));
 	  document.CriteriaForm.OutArrPoint.value=temp.substr(temp.indexOf("|")+1);
	};

	// Check that a valid Return Route is selected or one way flag is checked
	if((document.CriteriaForm.RetRouteCodeSelect[document.CriteriaForm.RetRouteCodeSelect.selectedIndex].value=="none") && (!(document.CriteriaForm.OneWayFlag.checked)))
	{
		alert("Please select a Return Trip or check the One Way Trip box");
		document.CriteriaForm.RetRouteCodeSelect.focus();
		return false;
	}
	else
	{
	  temp = document.CriteriaForm.RetRouteCodeSelect[document.CriteriaForm.RetRouteCodeSelect.selectedIndex].value;
	  document.CriteriaForm.RetDepPoint.value=temp.substr(0,temp.indexOf("|"));
          document.CriteriaForm.RetArrPoint.value=temp.substr(temp.indexOf("|")+1);
	};

	// Check that Out and Return Route are different
		
	if(document.CriteriaForm.OutRouteCode[document.CriteriaForm.OutRouteCode.selectedIndex].value == document.CriteriaForm.RetRouteCodeSelect[document.CriteriaForm.RetRouteCodeSelect.selectedIndex].value)
	{
		alert("Departure and Return routes must be different, please choose another.");
		document.CriteriaForm.RetRouteCodeSelect.focus();
		return false;
	};

	// Check that the Return Date is after the Outward Date
		
	var OutDate = new Date();
	var outdayTemp = document.CriteriaForm.outdayTemp.value.split("/");
	OutDate.setFullYear(outdayTemp[2],outdayTemp[0]-1,outdayTemp[1]);

	var RetDate = new Date();
	var returndaySelectTemp = document.CriteriaForm.returndaySelectTemp.value.split("/");
	RetDate.setFullYear(returndaySelectTemp[2],returndaySelectTemp[0]-1,returndaySelectTemp[1]);

	var sOutDateShort = (outdayTemp[0] + "/" + outdayTemp[1] + "/" + outdayTemp[2].replace("20",""))
	document.CriteriaForm.OutDepDate.value = sOutDateShort;

	
	if (document.CriteriaForm.OneWayFlag.value == "off") {
		if (OutDate > RetDate) {
			alert("Return date can not be before out date")
			return false;
		}

		var sRetDateShort = (returndaySelectTemp[0] + "/" + returndaySelectTemp[1] + "/" + returndaySelectTemp[2].replace("20",""))
		document.CriteriaForm.RetDepDate.value = sRetDateShort;
	}


	if (!(cookiesAllowed())) {
		alert("You must allow cookies to use the web booking");
		return false;
	}


	// Passengers
	
		
	var paxtotalout = 0;
	var paxtotalret = 0;
	var paxQty;
	var bOutDriverFound = false;
	var bRetDriverFound = false;

	if ((!(document.getElementById("TempVehType").value == document.CriteriaForm.AppFootPassengerCode.value)))
	{	
		bVehicleDriverRequired = true;
	} else {
		bOutDriverFound = true;
		bRetDriverFound = true;
		
		bVehicleDriverRequired = false;		
	}	
	

	for (var i = 0; i < document.CriteriaForm.elements.length; i++) 
	{      
		// Check if vehicle length is choosen

		if (document.CriteriaForm.elements[i].name.match("VehLength") && document.CriteriaForm.elements[i].disabled == false && document.CriteriaForm.elements[i].type != "hidden") {
			if (document.CriteriaForm.elements[i][document.CriteriaForm.elements[i].selectedIndex].value == "0") {
				alert("You must enter vehicle length");
				document.CriteriaForm.elements[i].focus();
				return false;
			}
		}	


		//set vehicle length

		if (document.CriteriaForm.elements[i].name == "TempVehType") {
			if (document.CriteriaForm.elements[i].checked) {
				if (document.CriteriaForm.elements[i].value == "00") {
					document.CriteriaForm.VehType.value = "";
				} else {
					document.CriteriaForm.VehType.value = document.CriteriaForm.elements[i].value;
					if (document.CriteriaForm.OneWayFlag.value == "off") {
						document.CriteriaForm.VehTypeRet.value = document.CriteriaForm.VehType.value;
					}
				}
				var TempName = "VehLength" + document.CriteriaForm.elements[i].value;
				if (document.getElementById(TempName)) {
					document.CriteriaForm.VehLength.value = document.getElementById(TempName).value;
					//document.CriteriaForm.VehLengthRet.value = document.getElementById(TempName).value;
					if (document.CriteriaForm.OneWayFlag.value == "off") {
						document.CriteriaForm.VehLengthRet.value = document.getElementById(TempName).value;
					}
				} else {
					document.CriteriaForm.VehLength.value = 0
					document.CriteriaForm.VehLengthRet.value = 0;
				}
			}
		}

		


		if (document.CriteriaForm.elements[i].name.search("PaxQty0") != -1) 
		{
			if (document.CriteriaForm.elements[i].value != "")
			{
				paxQty = parseInt(document.CriteriaForm.elements[i].value);

				if (isNaN(paxQty))
				{ 
				   alert("Invalid passenger quantity specified");
				   document.CriteriaForm.elements[i].focus();
				   return false;
				}
				else
				{
				   paxtotalout += parseInt(document.CriteriaForm.elements[i].value);
				}
			}
			
		};
		   
		if (document.CriteriaForm.elements[i].name.search("PaxQtyRet") != -1) 
		{         
			if (document.CriteriaForm.elements[i].value != "")
			{
		    paxQty = parseInt(document.CriteriaForm.elements[i].value);
				
		    if (bVehicleDriverRequired==true) {
		    	
		    	if (document.getElementById("PaxCodeRet" + document.CriteriaForm.elements[i].name.substr(document.CriteriaForm.elements[i].name.length-3,document.CriteriaForm.elements[i].name.length)).value == "VD") {
		    		bRetDriverFound = true;
						if (!(isNaN(paxQty))) {
		    			if (paxQty > 1) {
						alert("Only one driver passenger type allowed");
						document.CriteriaForm.elements[i].focus();
						return false;		    				
		    			}
		    		}
		    	}
		    }
		    
		    
		    
				if (isNaN(paxQty))
				{ 
				   alert("Invalid passenger quantity specified");
				   document.CriteriaForm.elements[i].focus();
				   return false;
				}
				else
				{
				   paxtotalret += parseInt(document.CriteriaForm.elements[i].value);
				}
			}
			
		}
	}

	if (paxtotalout == 0)
	{
		alert("At least one passenger must be specified");
		document.CriteriaForm.PaxQty000.focus();
		return false;
	};

	if (paxtotalout >= 10)
	{
		alert("You may only book 9 tickets in total, please modify your selections and try again");
		document.CriteriaForm.PaxQty000.focus();
		return false;
	};
	
		
	return true;


}

function setVehDriver(code) {
	if (code != "00") {
		document.CriteriaForm.PaxQty000.value = "1"

		for (var i=0;i<document.CriteriaForm.elements.length;i++) {
			if (document.CriteriaForm.elements[i].name.match("PaxCode")) {
				document.CriteriaForm.elements[i].value = document.CriteriaForm.elements[i].value.replace('*','');
			}
		}
	} else {
		document.CriteriaForm.PaxQty000.value = ""
		
		for (var i=0;i<document.CriteriaForm.elements.length;i++) {
			if (document.CriteriaForm.elements[i].name.match("PaxCode")) {
				if (!(document.CriteriaForm.elements[i].value.substring(0,1) == "*")) {
					document.CriteriaForm.elements[i].value = '*' + document.CriteriaForm.elements[i].value;
				}
			}
		}
	}
}

function checkdriver() {
	var novehsel;

	for (var i=0;i<document.CriteriaForm.elements.length;i++) {
		if (document.CriteriaForm.elements[i].name.match('TempVehType')) {
			if (document.CriteriaForm.elements[i].checked) {
				novehsel = document.CriteriaForm.elements[i].value;
			}
		}
	}
	if (novehsel == "00") {
		setVehDriver("00");
	} else {
		setVehDriver(novehsel);
	}
}

function onewaycheck(checked) {
	if (checked) {
		document.CriteriaForm.RetRouteCodeSelect.disabled = true;
		document.CriteriaForm.returndaySelectTemp.disabled = true;
		document.CriteriaForm.TariffType.disabled = true;
		document.CriteriaForm.TariffType.selectedIndex = 0;
		document.CriteriaForm.RetRouteCodeSelect.selectedIndex = 0;
	} else {
		document.CriteriaForm.RetRouteCodeSelect.disabled = false;
		document.CriteriaForm.returndaySelectTemp.disabled = false;
		
		for (var i=0;i<document.CriteriaForm.TempVehType.length;i++) {
			if (document.CriteriaForm.TempVehType[i].checked && (document.CriteriaForm.TempVehType[i].value == "00")) {
				document.CriteriaForm.TariffType.disabled = false;
			}
		}
	}
}

function lockvehLength(value) {
	tempvalue = "VehLength" + value;
	if (document.getElementById(tempvalue)) {
		document.getElementById(tempvalue).disabled = false;

		for (var i=0;i<document.CriteriaForm.elements.length;i++) {
			if (document.CriteriaForm.elements[i].name.match("VehLength") && document.CriteriaForm.elements[i].name != tempvalue && document.CriteriaForm.elements[i].type != "hidden") {
				document.CriteriaForm.elements[i].disabled = true;
			}
		}
	} else {
		for (var i=0;i<document.CriteriaForm.elements.length;i++) {
			if (document.CriteriaForm.elements[i].name.match("VehLength") && document.CriteriaForm.elements[i].name != tempvalue && document.CriteriaForm.elements[i].type != "hidden") {
				document.CriteriaForm.elements[i].disabled = true;
			}
		}
	}
}

function enableProduct(vehType) {

	if ((vehType == "00") && (document.CriteriaForm.OneWayFlag.checked == false)) {
		document.CriteriaForm.TariffType.disabled = false;
	} else {
		document.CriteriaForm.TariffType.disabled = true;
		document.CriteriaForm.TariffType.selectedIndex = 0;
	}

}