
////client side validation for change or cancel a reservation.


///global variables for reservation validation
var isValid			= true;
var strErrorMsg		= "";


function validateChangeRes(ctrlPrefix, sender, step, intSiteId, strCountryCode)
{
	try
	{
		strErrorMsg = ""
		
		
		switch(step)
		{
			case "PickupDelivery" : 
				///Change Pickup/Delivery
				dateFix(ctrlPrefix, strCountryCode);
				if(strErrorMsg == "")
				{
					validateDateTime(ctrlPrefix, sender, intSiteId);
				}
				else
				{
					alert(strErrorMsg);
				}	
				
			break
			case "ChangeVehicle" : 
				///ChangeVehicle
				validationSum(sender);
				
			break
			case "Options" : 
				///Change Options
				validationSum(sender);
			break
			case "PersonalInformation" : 
				///Change Personal Information
				validationPersonalInformation(ctrlPrefix, strCountryCode);
				
				validationSum(sender);
			break
			case "EmailReservationToFriend" : 
				///Email Reservation to a Friend
				emailReservationToFriend(ctrlPrefix);
				
				validationSum(sender);
			break	
			case "noValidation" : 
				///Change Personal Information
				validationSum(sender);
			break			
		}
		if(strErrorMsg.length)
			return false;
	}
	catch(e)
	{
		//alert(e.message)
	}
}


function validationSum(sender)
{
	try
	{
		if(strErrorMsg.length)
		{
			jAlert(strErrorMsg);
		}
		else
		{				
			if(document.forms.length > 0)
			{
				if(document.getElementById("__EVENTTARGET") == null && document.forms[0].__EVENTTARGET == null)
				{
					var objInput	= document.createElement('input');
						
					objInput.id		= "__EVENTTARGET";
					objInput.name	= "__EVENTTARGET";
					objInput.type	= "hidden";
					document.forms[0].appendChild(objInput);
				}
				
				sender = sender.split("__").join("##");
				
				senderfirstchara = sender.charAt(0);
				
				if (senderfirstchara == "_")
				{
					sendersubstring = sender.substr(1, sender.length);
					sender = senderfirstchara + sendersubstring.split("_").join("$");
				}
				else
				{
					sender = sender.split("_").join("$");
				}
				
				sender = sender.split("##").join("$_");
				
				if(is_ie)
				{
					document.getElementById("__EVENTTARGET").value = sender.split("$").join(":");
				}
				else
				{
					document.forms[0].__EVENTTARGET.value = sender.split("$").join(":");
				}

				///submit form
				document.forms[0].submit();
			}
		}		
	}
	catch(e)
	{
		//alert(e.message)
	}
}

function reservationValidation(ctrlPrefix, sender, step, intSiteId, strCountryCode)
{
	validateChangeRes(ctrlPrefix, sender, 'noValidation', intSiteId, strCountryCode);
}

function dateFix(ctrlPrefix, strCountryCode)
{
	try
	{
		///variables
		var pickupLocationId	=	document.getElementById(ctrlPrefix + "_txtPickUpLocationId").value;
		var returnLocationId	=	document.getElementById(ctrlPrefix + "_txtReturnLocationId").value;
		
		if(pickupLocationId == "")
		{
			if(strCountryCode == "NZ") //#586-24078
			{
				addErrorMsg("Please enter a Pickup location");
			}
			else
			{
				addErrorMsg("Please enter a pick up location");
			}
		}
		
		else if(returnLocationId == "")		
		{
			if(strCountryCode == "NZ") //#586-24078
			{
				addErrorMsg("Please enter a drop off location");
			}
			else
			{
				addErrorMsg("Please enter a drop-off location");
			}
		}
		
		
		
		var pickupDateTime		=	document.getElementById(ctrlPrefix + "_txtPickUpDate").value;
			pickupDateTime		+=	" " + document.getElementById(ctrlPrefix + "_ddlPickUpTime").options[document.getElementById(ctrlPrefix + "_ddlPickUpTime").selectedIndex].value;

		var returnDateTime		=	document.getElementById(ctrlPrefix + "_txtReturnDate").value;
			returnDateTime		+=	" " + document.getElementById(ctrlPrefix + "_ddlReturnTime").options[document.getElementById(ctrlPrefix + "_ddlReturnTime").selectedIndex].value;			

		

		if(!validateSetDateFormat(document.getElementById(ctrlPrefix + "_txtPickUpDate").value))
		{
			addErrorMsg("Please enter a valid pickup date/time");
		}
		
		if(!validateSetDateFormat(document.getElementById(ctrlPrefix + "_txtReturnDate").value))
		{
			addErrorMsg("Please enter a valid return date/time");
		}

		var dtPickupDate = new Date();
		var dtReturnDate = new Date();
		
		var jsDateFormat = "d/M/yyyy H:mm a";
		
		dtPickupDate.setTime(Date.parse(pickupDateTime));
		dtReturnDate.setTime(Date.parse(returnDateTime));
		
		dtPickupDate.setTime(getDateFromFormat(pickupDateTime, jsDateFormat));
		dtReturnDate.setTime(getDateFromFormat(returnDateTime, jsDateFormat));
		
		var strPickupDate = formatDate(dtPickupDate, "yyyy-MM-ddTHH:mm:ss");
		var strReturnDate = formatDate(dtReturnDate, "yyyy-MM-ddTHH:mm:ss");
		
		//set ISO date into hidden fields
		document.getElementById(ctrlPrefix + "_hidPickupDate").value = strPickupDate;
		document.getElementById(ctrlPrefix + "_hidReturnDate").value = strReturnDate;
		

	}
	catch(e)
	{
		//alert("error in dateFix " + e.message)
	}
}

///validate pickup and return dateTime for a reservation
function validateDateTime(ctrlPrefix, sender, intSiteId)
{

	try
	{				

		//set ISO date into hidden fields
		var pickupLocationId = document.getElementById(ctrlPrefix + "_txtPickUpLocationId").value;
		var returnLocationId = document.getElementById(ctrlPrefix + "_txtReturnLocationId").value;

		
		//set ISO date into hidden fields
		var strPickupDate = document.getElementById(ctrlPrefix + "_hidPickupDate").value;
		var strReturnDate = document.getElementById(ctrlPrefix + "_hidReturnDate").value;
		
	
		var url = "/service/budgetws.asmx/ValidateRentalDateTimePeriod?intPickupLocationId="+ pickupLocationId +"&intReturnLocationId="+ returnLocationId +"&dtPickup="+ strPickupDate +"&dtReturn="+ strReturnDate +"&intSiteId="+ intSiteId +"";
		
	
		var conn = new initHTTPXML();
		var fn_action = function()
		{
			try
			{
				
				//alert(e.srcElement);

				if(conn.getXmlHttp.readyState == conn.ReadyState.Complete)
				{
					if(conn.getXmlHttp.status ==  conn.HttpStatus.OK)
					{
						var XMLdoc		= conn.getXmlHttp.responseXML.documentElement;
						var Messages	= XMLdoc.getElementsByTagName("Message");
						var ErrorMsg	= "";
						for(i=0; i<Messages.length; i++)
						{
							addErrorMsg(Messages[i].firstChild.data);
						}
						
						//validateCouponLocationAndDates(ctrlPrefix);
						
					
						validationSum(sender)
					}
					else
					{
						addErrorMsg("Error : " + conn.getXmlHttp.status + url);
					}
				}
			}
			catch(e)
			{
				//alert(e.message);
			}
		}
		
		///load request
		requestHTTPXML(fn_action, conn.getXmlHttp, url); 
		
	
		
		
		
	}
	catch(e)
	{
		//alert(e.message);
	}
}

function validationPersonalInformation(ctrlPrefix, strCountryCode)
{
	try
	{
		///ddlAirline if it is avalibal
		if(document.getElementById(ctrlPrefix + "_ddlAirline") != null && document.getElementById(ctrlPrefix + "_ddlAirline").selectedIndex > 0)
		{
			var ddlAirline		= document.getElementById(ctrlPrefix + "_ddlAirline");
			var strAirline		= ddlAirline.options[ddlAirline.selectedIndex].value;
			var strFlightNumber = "";

			if(document.getElementById(ctrlPrefix + "_txtFlightNumber") != null)
			{
				var txtFlightNumber		= document.getElementById(ctrlPrefix + "_txtFlightNumber");
				strFlightNumber			= txtFlightNumber.value;
			}
			
			var exp = /^\d{0,4}$/;
					
			if(strFlightNumber.match(exp) == null)
			{
				if (strCountryCode == "NZ")
				{
					addErrorMsg("Your flight number must be between 1 to 4 digits long and consist of numbers only.");
				}
				else
				// if (strCountryCode = "AU")
				{
					addErrorMsg("Your flight number must be between 0 and 9999 and consist of numerical characters only.");
				}
			}
			
		}
	}
	catch(e)
	{
		//alert(e.message)
	}
	
}



function addErrorMsg(p_strErrorMsg)
{
	if(strErrorMsg == "")
	{
		strErrorMsg =	"Sorry, there are some problems with your booking: \n\n"
		strErrorMsg += "* "	+ p_strErrorMsg;
	}
	else
	{
		strErrorMsg += "\n* "	+ p_strErrorMsg;
	}
}


function emailReservationToFriend(ctrlPrefix)
{
	try
	{
		///txtEmailAddress
		if(document.getElementById(ctrlPrefix + "_txtEmailFriend").value.length < 6)
		{
			addErrorMsg("Please enter a valid email address");
		}
		else
		{
			var emailPat = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
			if (!emailPat.test(document.getElementById(ctrlPrefix + "_txtEmailFriend").value))
			{
				addErrorMsg("Please enter a valid email address");
			}
		}
	}
	catch(e)
	{
		//alert(e.message)
	}
}