var noPickupAddress="(If pick up is not from an airport)";
var noReturnAddress="(If drop off is not at an airport)";
var bookingForm=false;

/*
validateBooking() checks for obvious errors in the booking/quotation form
Returns true if OK, or false to prevent submission if errors are present
*/
function validateBooking()
{
	valid=true;
	err="Error Completing Form\r\n\r\n";

	clearHighlights();

	contactName=document.bookingForm.contactName.value;
	passengerName=document.bookingForm.passengerName.value;
	telephone=document.bookingForm.telephone.value;
	mobile=document.bookingForm.mobile.value;
	email=document.bookingForm.email.value;

	pickupDateDay=document.bookingForm.pickupDateDay.value;
	pickupDateMonth=document.bookingForm.pickupDateMonth.value;
	pickupTime=document.bookingForm.pickupTime.value;
	pickupTimeampm=document.bookingForm.pickupTimeampm.value;
	pickupFlight=document.bookingForm.pickupFlight.value;
	pickupAirport=document.bookingForm.pickupAirport.value;
	pickupAddress=document.bookingForm.pickupAddress.value;
	numPax=document.bookingForm.numPax.value;
	numBags=document.bookingForm.numBags.value;
	destination=document.bookingForm.destination.value;
	returnTime=document.bookingForm.returnTime.value;
	returnTimeampm=document.bookingForm.returnTimeampm.value;

	returnAddress=document.bookingForm.returnAddress.value;

	replyBy=document.bookingForm.reply.value;
	requestType=document.bookingForm.request.value;
	
	//regular expressions define valid data formats
	reTelephone = /^\+{0,1}\d{2,12}\s{0,1}\({0,1}\d{0,1}\){0,1}\s{0,1}\d{0,12}(\s{0,1}\d{0,12}){0,3}$/
	reEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/

	if(contactName=="" && passengerName=="")
	{
		valid=false;
		err+="Please enter your name\r\n";
		highlightField(document.bookingForm.contactName);
	}

	if(replyBy=="")
	{
		valid=false;
		err+="Please select a preferred method of reply\r\n";
		highlightField(document.bookingForm.reply);
	}
	else if(replyBy=="Telephone")
	{
		if(telephone=='')
		{
			valid=false;
			err+="Telephone number is required for our reply\r\n";
			highlightField(document.bookingForm.telephone);
		}
		else if (telephone.search(reTelephone)==-1)
		{
			valid=false;
			err+="Telephone number is not in a valid format\r\n";
			highlightField(document.bookingForm.telephone);
		}
	}
	else if(replyBy=="Mobile")
	{
		if(mobile=='')
		{
			valid=false;
			err+="Mobile number is required for our reply\r\n";
			highlightField(document.bookingForm.mobile);
		}
		else if (mobile.search(reTelephone)==-1)
		{
			valid=false;
			err+="Mobile number is not in a valid format\r\n";
			highlightField(document.bookingForm.mobile);
		}
	}
	else if(replyBy=="E-Mail")
	{
		if(email=='')
		{
			valid=false;
			err+="E-mail address is required for our reply\r\n";
			highlightField(document.bookingForm.email);
		}
		else if (email.search(reEmail)==-1)
		{
			valid=false;
			err+="E-mail address is not in a valid format\r\n";
			highlightField(document.bookingForm.email);
		}
	}

	if(requestType=="")
	{
		valid=false;
		err+="Please indicate the nature of your request\r\n";
		highlightField(document.bookingForm.request);
	}
	else if(requestType=="Booking" || requestType=="Quotation")		//allow blank fields in information-only requests
	{
		if(pickupDateDay=="")
		{
			valid=false;
			err+="Please enter day of pick up date\r\n";
			highlightField(document.bookingForm.pickupDateDay);
		}
		if(pickupDateMonth=="")
		{
			err+="Please select month of pick up date\r\n";
			highlightField(document.bookingForm.pickupDateMonth);
		}
		if(pickupTime=="")
		{
			valid=false;
			err+="Please enter pick up time\r\n";
			highlightField(document.bookingForm.pickupTime);
		}
		if(pickupTimeampm=="")
		{
			valid=false;
			err+="Please specify am or pm for pickup time\r\n";
			highlightField(document.bookingForm.pickupTimeampm);
		}
		if(pickupAirport=="")
		{
			if(pickupAddress=="" || pickupAddress==noPickupAddress)
			{
				valid=false;
				err+="Please enter an airport or an address\r\n";
				highlightField(document.bookingForm.pickupAirport);
				highlightField(document.bookingForm.pickupAddress);
			}
		}
		else if(pickupFlight=="" && requestType=="Booking")		//not required for quotation, needed for flight tracking when placing booking
		{
			valid=false;
			err+="Please enter flight number\r\n";
			highlightField(document.bookingForm.pickupFlight);
		}
		if(numPax=="")
		{
			valid=false;
			err+="Please enter number of passengers\r\n";
			highlightField(document.bookingForm.numPax);
		}
		if(numBags=="" && requestType=="Booking")		//don't insist on this for quotations
		{
			valid=false;
			err+="Please enter number of bags\r\n";
			highlightField(document.bookingForm.numBags);
		}
		if(destination=="")
		{
			valid=false;
			err+="Please enter your destination\r\n";
			highlightField(document.bookingForm.destination);
		}
	}

	if(returnTime!="" && returnTimeampm=="")
	{
		valid=false;
		err+="Please specify am or pm for return time\r\n";
		highlightField(document.bookingForm.returnTimeampm);
	}

	if(!valid)
	{
		alert(err);
	}
	else
	{
		if(pickupAddress==noPickupAddress)
		{
			document.bookingForm.pickupAddress.value="";
		}
		if(returnAddress==noReturnAddress)
		{
			document.bookingForm.returnAddress.value="";
		}
	}

	return valid;
}

/*
pageLoaded() carries out any script actions on page load - called from event for each page
sets focus to contact name field in booking/quotation request form
*/
function pageLoaded(pageName)
{
	if(pageName=="booking.php")
	{
		if(bookingForm)	//only present if displaying form, not result
		{
			document.bookingForm.contactName.focus();
			if(document.bookingForm.pickupAddress.value=="")
			{
				document.bookingForm.pickupAddress.value=noPickupAddress;
			}
			if(document.bookingForm.returnAddress.value=="")
			{
				document.bookingForm.returnAddress.value=noReturnAddress;
			}
		}
	}
}

/*
highlightField() applies a highlight (from .css file) to a form field which is incorrectly filled in
*/
function highlightField(fieldName)
{
	fieldName.className='dataError';
}

/*
clearHighlights() clears all field highlighting
*/
function clearHighlights()
{
	document.bookingForm.contactName.className='noError';
	document.bookingForm.passengerName.className='noError';
	document.bookingForm.telephone.className='noError';
	document.bookingForm.mobile.className='noError';
	document.bookingForm.email.className='noError';
	document.bookingForm.reply.className='noError';
	document.bookingForm.request.className='noError';
	document.bookingForm.pickupDateDay.className='noError';
	document.bookingForm.pickupDateMonth.className='noError';
	document.bookingForm.pickupTime.className='noError';
	document.bookingForm.pickupTimeampm.className='noError';
	document.bookingForm.pickupFlight.className='noError';
	document.bookingForm.pickupAirport.className='noError';
	document.bookingForm.pickupAddress.className='noError';
	document.bookingForm.numPax.className='noError';
	document.bookingForm.numBags.className='noError';
	document.bookingForm.destination.className='noError';
	document.bookingForm.returnTime.className='noError';
	document.bookingForm.returnTimeampm.className='noError';
}

/*
pickupEntered() and dropoffEntered() clear info text from fields if no data has been entered
*/
function pickupEntered()
{
	txt=document.bookingForm.pickupAddress.value;
	if(txt==noPickupAddress)
	{
		document.bookingForm.pickupAddress.value="";
	}
}
function dropoffEntered()
{
	txt=document.bookingForm.returnAddress.value;
	if(txt==noReturnAddress)
	{
		document.bookingForm.returnAddress.value="";
	}
}

function zoomMercSide()
{
	if(document.picForm.mercside.className=="mercside")
	{
		document.picForm.mercside.className="mercsideZoom";
	}
	else
	{
		document.picForm.mercside.className="mercside";
	}
}

function zoomMercInterior()
{
	if(document.picForm.mercinterior.className=="mercinterior")
	{
		document.picForm.mercinterior.className="mercinteriorZoom";
	}
	else
	{
		document.picForm.mercinterior.className="mercinterior";
	}
}

function zoomMercFront()
{
	if(document.picForm.mercfront.className=="mercfront")
	{
		document.picForm.mercfront.className="mercfrontZoom";
	}
	else
	{
		document.picForm.mercfront.className="mercfront";
	}
}
