function validateForm(f)
{
	if(f.email_address.value == "")
	{
		alert("Please enter your valid Email Address");
		f.email_address.focus();
		return false;
	}
	if(!isValidEmail(f.email_address.value))
	{
		f.email_address.focus();
		return false;
	}
	else if(f.full_name.value == "")
	{
		alert("Please enter your Full Name");
		f.full_name.focus();
		return false;
	}
	else if(!validatePhone("(" + f.home_number_area.value + ")" + f.home_number_pre.value + "-" + f.home_number_suf.value))
	{
		alert("Please enter your valid Home Phone Number");
		f.home_number_area.focus();
		return false;
	}
	/*else if(!validatePhone("(" + f.work_number_area.value + ")" + f.work_number_pre.value + "-" + f.work_number_suf.value))
	{
		alert("Please enter your valid Work Phone Number");
		f.work_number_area.focus();
		return false;
	}*/
	else if(!validatePhone("(" + f.cell_number_area.value + ")" + f.cell_number_pre.value + "-" + f.cell_number_suf.value))
	{
		alert("Please enter your valid first Cell Phone Number");
		f.cell_number_area.focus();
		return false;
	}
	/*else if(!validatePhone("(" + f.cell_number_area2.value + ")" + f.cell_number_pre2.value + "-" + f.cell_number_suf2.value))
	{
		alert("Please enter your valid second Cell Phone Number");
		f.cell_number_area2.focus();
		return false;
	}*/
	else if(f.passengers.value == "")
	{
		alert("Please enter number of passengers");
		f.passengers.focus();
		return false;
	}
	else if(isNaN(f.passengers.value))
	{
		alert("Only numeric value allowed");
		f.passengers.focus();
		return false;
	}
	else if(f.vehicle_type.value == "")
	{
		alert("Please select a vehicle Type");
		f.vehicle_type.focus();
		return false;
	}
	else if(f.pickup_hour.value == "" || f.pickup_minute.value == "" || f.pickup_am.value == "")
	{
		alert("Please select a valid Pick-Up Time:");
		f.pickup_hour.focus();
		return false;
	}
	
	
	
	// Validating Pickup locations
	if(f.pickup_location.value == "")
	{
		alert("Please select a Pickup Location");
		f.pickup_location.focus();
		return false;
	}
	else if(in_array(f.pickup_location.value, airportIds))
	{
		if(f.pickup_airline_name.value == "")
		{
			alert("Please enter Airline Name");
			f.pickup_airline_name.focus();
			return false;
		}
		else if(f.pickup_airline_flightnum.value == "")
		{
			alert("Please enter Flight Number");
			f.pickup_airline_flightnum.focus();
			return false;
		}
		else if(f.pickup_airline_city.value == "")
		{
			alert("Please enter City");
			f.pickup_airline_city.focus();
			return false;
		}
	}
	else if(in_array(f.pickup_location.value, portIds))
	{
		if(f.pickup_cruiseline_name.value == "")
		{
			alert("Please enter Cruise Line Name");
			f.pickup_cruiseline_name.focus();
			return false;
		}
		else if(f.pickup_ship_name.value == "")
		{
			alert("Please enter Ship Name");
			f.pickup_ship_name.focus();
			return false;
		}
	}
	else if(in_array(f.pickup_location.value, resIds))
	{
		if(f.pickup_res_city.value == "")
		{
			alert("Please enter City");
			f.pickup_res_city.focus();
			return false;
		}
		else if(f.pickup_res_address.value == "")
		{
			alert("Please enter Address");
			f.pickup_res_address.focus();
			return false;
		}
		/*else if(f.pickup_res_apt.value == "")
		{
			alert("Please enter Apt or Suite #");
			f.pickup_res_apt.focus();
			return false;
		}
		else if(f.pickup_res_nameofdev.value == "")
		{
			alert("Please enter Name of development");
			f.pickup_res_nameofdev.focus();
			return false;
		}*/
	}
	else if(in_array(f.pickup_location.value, placeIds))
	{
		if(in_array(f.pickup_location.value, hotelIds))
		{
			if(f.pickup_places_hotel.value == "")
			{
				alert("Please enter Hotel Name");
				f.pickup_places_hotel.focus();
				return false;
			}
		}
		
		if(f.pickup_places_address.value == "")
		{
			alert("Please enter Address");
			f.pickup_places_address.focus();
			return false;
		}
		else if(f.pickup_places_city.value == "")
		{
			alert("Please enter City");
			f.pickup_places_city.focus();
			return false;
		}
	}
	else
	{
		if(f.pickup_business_name.value == "")
		{
			alert("Please enter Name of Business");
			f.pickup_business_name.focus();
			return false;
		}
		else if(f.pickup_business_address.value == "")
		{
			alert("Please enter Address");
			f.pickup_business_address.focus();
			return false;
		}
		else if(f.pickup_business_city.value == "")
		{
			alert("Please enter City");
			f.pickup_business_city.focus();
			return false;
		}
		/*else if(f.pickup_business_suite.value == "")
		{
			alert("Please enter Suite #");
			f.pickup_business_suite.focus();
			return false;
		}*/
	}
	
	
	
	// Validating Destination locations
	if(f.dest_location.value == "")
	{
		alert("Please select a Destination Location");
		f.dest_location.focus();
		return false;
	}
	else if(in_array(f.dest_location.value, airportIds))
	{
		if(f.dest_airline_name.value == "")
		{
			alert("Please enter Airline Name");
			f.dest_airline_name.focus();
			return false;
		}
		else if(f.dest_airline_city.value == "")
		{
			alert("Please enter City");
			f.dest_airline_city.focus();
			return false;
		}
	}
	else if(in_array(f.dest_location.value, portIds))
	{
		if(f.dest_cruiseline_name.value == "")
		{
			alert("Please enter Cruise Line Name");
			f.dest_cruiseline_name.focus();
			return false;
		}
		else if(f.dest_ship_name.value == "")
		{
			alert("Please enter Ship Name");
			f.dest_ship_name.focus();
			return false;
		}
	}
	else if(in_array(f.dest_location.value, resIds))
	{
		if(f.dest_res_city.value == "")
		{
			alert("Please enter City");
			f.dest_res_city.focus();
			return false;
		}
		else if(f.dest_res_address.value == "")
		{
			alert("Please enter Address");
			f.dest_res_address.focus();
			return false;
		}
		/*else if(f.dest_res_apt.value == "")
		{
			alert("Please enter Apt. or Suite #");
			f.dest_res_apt.focus();
			return false;
		}
		else if(f.dest_res_nameofdev.value == "")
		{
			alert("Please enter Name of development");
			f.dest_res_nameofdev.focus();
			return false;
		}*/
	}
	else if(in_array(f.dest_location.value, placeIds))
	{
		if(in_array(f.dest_location.value, hotelIds))
		{
			if(f.dest_places_hotel.value == "")
			{
				alert("Please enter Hotel Name");
				f.dest_places_hotel.focus();
				return false;
			}
		}
		
		if(f.dest_places_address.value == "")
		{
			alert("Please enter Address");
			f.dest_places_address.focus();
			return false;
		}
		else if(f.dest_places_city.value == "")
		{
			alert("Please enter City");
			f.dest_places_city.focus();
			return false;
		}
	}
	else
	{
		if(f.dest_business_name.value == "")
		{
			alert("Please enter Name of Business");
			f.dest_business_name.focus();
			return false;
		}
		else if(f.dest_business_address.value == "")
		{
			alert("Please enter Address");
			f.dest_business_address.focus();
			return false;
		}
		else if(f.dest_business_city.value == "")
		{
			alert("Please enter City");
			f.dest_business_city.focus();
			return false;
		}
		/*else if(f.dest_business_suite.value == "")
		{
			alert("Please enter Suite #");
			f.dest_business_suite.focus();
			return false;
		}*/
	}
	
	
	
	// Validating Return locations
	if(f.considerreturndetails.checked == true)
	{
		if(f.ret_hour.value == "" || f.ret_minute.value == "" || f.ret_am.value == "")
		{
			alert("Please select a valid Return Time");
			f.ret_hour.focus();
			return false;
		}
		
		if(f.ret_location.value == "")
		{
			alert("Please select a Return Location");
			f.ret_location.focus();
			return false;
		}
		else if(in_array(f.ret_location.value, airportIds))
		{
			if(f.ret_airline_name.value == "")
			{
				alert("Please enter Airline Name");
				f.ret_airline_name.focus();
				return false;
			}
			else if(f.ret_airline_city.value == "")
			{
				alert("Please enter City");
				f.ret_airline_city.focus();
				return false;
			}
		}
		else if(in_array(f.ret_location.value, portIds))
		{
			if(f.ret_cruiseline_name.value == "")
			{
				alert("Please enter Cruise Line Name");
				f.ret_cruiseline_name.focus();
				return false;
			}
			else if(f.ret_ship_name.value == "")
			{
				alert("Please enter Ship Name");
				f.ret_ship_name.focus();
				return false;
			}
		}
		else if(in_array(f.ret_location.value, resIds))
		{
			if(f.ret_res_city.value == "")
			{
				alert("Please enter City");
				f.ret_res_city.focus();
				return false;
			}
			else if(f.ret_res_address.value == "")
			{
				alert("Please enter Address");
				f.ret_res_address.focus();
				return false;
			}
			/*else if(f.ret_res_apt.value == "")
			{
				alert("Please enter Apt or Suite #");
				f.ret_res_apt.focus();
				return false;
			}
			else if(f.ret_res_nameofdev.value == "")
			{
				alert("Please enter Name of development");
				f.ret_res_nameofdev.focus();
				return false;
			}*/
		}
		else if(in_array(f.ret_location.value, placeIds))
		{
			if(in_array(f.ret_location.value, hotelIds))
			{
				if(f.ret_places_hotel.value == "")
				{
					alert("Please enter Hotel Name");
					f.ret_places_hotel.focus();
					return false;
				}
			}
			
			if(f.ret_places_address.value == "")
			{
				alert("Please enter Address");
				f.ret_places_address.focus();
				return false;
			}
			else if(f.ret_places_city.value == "")
			{
				alert("Please enter City");
				f.ret_places_city.focus();
				return false;
			}
		}
		else
		{
			if(f.ret_business_name.value == "")
			{
				alert("Please enter Name of Business");
				f.ret_business_name.focus();
				return false;
			}
			else if(f.ret_business_address.value == "")
			{
				alert("Please enter Address");
				f.ret_business_address.focus();
				return false;
			}
			else if(f.ret_business_city.value == "")
			{
				alert("Please enter City");
				f.ret_business_city.focus();
				return false;
			}
			/*else if(f.ret_business_suite.value == "")
			{
				alert("Please enter Suite #");
				f.ret_business_suite.focus();
				return false;
			}*/
		}
	}
	enable();
	return true;
}













function copyRetVals()
{
	calledViacopyRetVals = true;
	currentOption = document.getElementById("pickup_location").value;
	
	selIndex = document.getElementById("pickup_location").selectedIndex;
	
	document.getElementById("ret_location").selectedIndex = selIndex;
	showLocationParam('ret', currentOption);
	
	
	if(in_array(currentOption, airportIds))
	{
		document.getElementById("ret_airline_name").value = document.getElementById("pickup_airline_name").value;
		document.getElementById("ret_airline_flightnum").value = document.getElementById("pickup_airline_flightnum").value;
		document.getElementById("ret_airline_city").value = document.getElementById("pickup_airline_city").value;
	}
	else if(in_array(currentOption, portIds))
	{
		document.getElementById("ret_cruiseline_name").value = document.getElementById("pickup_cruiseline_name").value;
		document.getElementById("ret_ship_name").value = document.getElementById("pickup_ship_name").value;
	}
	else if(in_array(currentOption, resIds))
	{
		document.getElementById("ret_res_city").value = document.getElementById("pickup_res_city").value;
		document.getElementById("ret_res_address").value = document.getElementById("pickup_res_address").value;
		document.getElementById("ret_res_apt").value = document.getElementById("pickup_res_apt").value;
		document.getElementById("ret_res_gatecode").value = document.getElementById("pickup_res_gatecode").value;
		document.getElementById("ret_res_nameofdev").value = document.getElementById("pickup_res_nameofdev").value;
	}
	else if(in_array(currentOption, placeIds))
	{
		if(in_array(currentOption, hotelIds))
			document.getElementById("ret_places_hotel").value = document.getElementById("pickup_places_hotel").value;
		
		document.getElementById("ret_places_address").value = document.getElementById("pickup_places_address").value;
		document.getElementById("ret_places_city").value = document.getElementById("pickup_places_city").value;
	}
	else
	{
		document.getElementById("ret_business_name").value = document.getElementById("pickup_business_name").value;
		document.getElementById("ret_business_address").value = document.getElementById("pickup_business_address").value;
		document.getElementById("ret_business_city").value = document.getElementById("pickup_business_city").value;
		document.getElementById("ret_business_suite").value = document.getElementById("pickup_business_suite").value;
	}
}


var calledViacopyRetVals = false;
function showLocationParam(divId, optionId)
{
	if(optionId != "")
	{
		document.getElementById(divId + "_airport").style.display = "none";
		document.getElementById(divId + "_port").style.display = "none";
		document.getElementById(divId + "_address").style.display = "none";
		document.getElementById(divId + "_res").style.display = "none";
		document.getElementById(divId + "_places").style.display = "none";
		
		if(in_array(optionId, airportIds))
		{
			document.getElementById(divId + "_airport").style.display = "block";
		}
		else if(in_array(optionId, portIds))
		{
			document.getElementById(divId + "_port").style.display = "block";
		}
		else if(in_array(optionId, resIds))
		{
			document.getElementById(divId + "_res").style.display = "block";
		}
		else if(in_array(optionId, placeIds))
		{
			document.getElementById(divId + "_places").style.display = "block";
			if(in_array(optionId, hotelIds))
				document.getElementById(divId + "_hotel_div").style.display = "block";
			else
				document.getElementById(divId + "_hotel_div").style.display = "none";
		}
		else
		{
			document.getElementById(divId + "_address").style.display = "block";
		}
		
		if(divId == "ret")
		{
			if(document.getElementById("copyRetVal").checked && !calledViacopyRetVals)
				copyRetVals();
			calledViacopyRetVals = false;
		}
	}
	else
	{
		document.getElementById(divId + "_airport").style.display = "none";
		document.getElementById(divId + "_port").style.display = "none";
		document.getElementById(divId + "_address").style.display = "none";
		document.getElementById(divId + "_res").style.display = "none";
		document.getElementById(divId + "_places").style.display = "none";
	}

}










function showReturnDiv()
{
	if(document.getElementById("considerreturndetails").checked)
		document.getElementById("returntrip").style.display = "block";
	else
		document.getElementById("returntrip").style.display = "none";
}

function validatePhone(s)
{
	rePhoneNumber = new RegExp(/^\([0-9]\d{2}\)\s?\d{3}\-\d{4}$/);
	
	if (!rePhoneNumber.test(s))
		return false;
	
	return true;
}

function validateEmail(s)
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(s))
		return (true)
	
	return (false)
}

function in_array(str, arr)
{
	for(i = 0; i < arr.length; i++)
	{
		if(arr[i] == str)
			return true;
	}
	return false;
}

function changeSelectIndex(obj, val)
{
	for(i = 0 ; i < obj.options.length;i++)
	{
		if(obj.options[i].value == val)
		{
			obj.options[i].selected = true;
			break;
		}
	}
}

function changeSelectIndex2(obj, key)
{
	obj.selectedIndex = key;
}

function trim(s)
{
	return s.replace(/^\s+|\s+$/g, '');
}



function makeTab(obj, tablength, nextobj)
{
	if(obj.value.length == tablength)
		nextobj.focus();
}



function FillFormVal(field, val)
{
	document.getElementById(field).value = val;
}
//******************************************************************************************//
//********************* functions  for email-id validation ****************************//
//******************************************************************************************//

function isValidEmail(emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert(" ( "+ emailStr +" ) Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	// Start by checking that only basic ASCII characters are in the strings (0-127).
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert(" ( "+ emailStr +" ) Ths username contains invalid characters.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert(" ( "+ emailStr +" ) Ths domain name contains invalid characters.");
			return false;
		}
	}
	if (user.match(userPat)==null) {
		alert(" ( "+ emailStr +" ) The username doesn't seem to be valid.");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert(" ( "+ emailStr +" ) Destination IP address is invalid!");
				return false;
	   		}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert(" ( "+ emailStr +" ) The domain name does not seem to be valid.");
			return false;
	   }	
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert(" ( "+ emailStr +" ) The address must end in a well-known domain or two letter " + "country.");
		return false;
	}

// Make sure there's a host name preceding the domain.

	if (len<2) {
		alert(" ( "+ emailStr +" ) This address is missing a hostname!");
		return false;
	}	
	return true;
}
function enable()
{ 
	document.getElementById('showReserv').style.display='';
	document.getElementById('showQuotetxt').style.display='none';
}
