var constMaxNumberPassengers		= 9;
var constMaxFieldLength			= 100;

var msgOutboundBeforeReturn		= "Le vol du retour ne peut pas être avant le vol du départ!";
var msgEnterDifferentDest		= "Please enter a different destination to the airport you wish to depart from";
var msgSelectDest			= "Please select cities of origin and destination.";
var msgTooManyPeople            	= "You can only book tickets for up to " + constMaxNumberPassengers  + " seats online. Please make multiple online bookings or phone the Call Center if you wish to book more tickets.";
var msgInvalidAge			= "Please enter an age for the infant";
var msgAcceptTerms			= "Please tick the box to indicate that you have accepted the terms and conditions for the booking";
var msgInvalidExpiryDate		= "Please enter a valid expiry date";
var msgInvalidNames			= "Please fill out the names of all passengers flying.";
var msgInvalidPhone			= "Please enter a valid phone number.";
var msgInvalidEmail			= "Please fill in a valid Email address.";

var msgGenericInvalidStart		= "Please enter a valid ";
var msgGenericInvalidEnd		= "";

var glbOriginAirportName		= "from";
var glbDestinationAirportName		= "to";

// LFF
var glbOutboundDayNameLFF              	= "idDAY";
var glbOutboundMonthYearNameLFF  	= "idMONTHYEAR";
var glbReturnDayNameLFF                 = "idRDAY";
var glbReturnMonthYearNameLFF           = "idRMONTHYEAR";

// otherwise
var glbOutboundDayName                  = "outbound_day";
var glbOutboundMonthYearName		= "outbound_month_and_year";
var glbReturnDayName                    = "return_day";
var glbReturnMonthYearName              = "return_month_and_year";

var glbAdultsName			= "idNumAdults";
var glbChildrenName			= "idNumKids";
var glbInfantsName			= "idNumKInfants";

var glbTotalPaymentDisplayName		= "total_payment_display";
var glbCardTypeName			= "card_type";
var glbCardNameName			= "card_name";
var glbCardNumberName			= "card_number";
var glbCardExpiryMonthName		= "card_expiry_month";
var glbCardExpiryYearName		= "card_expiry_year";
var glbCardCVVNumberName		= "card_cvv_number";
var glbBillEmailName			= "bill_email";
var glbBillTermsName			= "bill_terms";


var isNS4 = (document.layers) ? true : false;
var isIE4 = (document.all && !document.getElementById) ? true : false;
var isIE5 = (document.all && document.getElementById) ? true : false;
var isNS6 = (!document.all && document.getElementById) ? true : false;
var browserVersion = navigator.appVersion;
var browserVnum = browserVersion.substring(1,0);
var regExMac = /Macintosh/;
var strVersion = navigator.appVersion;
if (strVersion.search(regExMac) == -1)
{
	var isMac = false;
}
else 
{
	var isMac = true;
}


function dateReturnChange() {

	if (glbGetElementById(glbOutboundMonthYearNameLFF)) {
		var objReturnMonthYear			= glbGetElementById(glbReturnMonthYearNameLFF);
		var objReturnDay			= glbGetElementById(glbReturnDayNameLFF);	
	}
	else {
		var objReturnMonthYear			= glbGetElementById(glbReturnMonthYearName);
		var objReturnDay			= glbGetElementById(glbReturnDayName);
	
}
	var strReturnDayValue		= "";
	var strReturnMonthYearValue 	= "";
	
	strReturnDayValue = getFieldValue(objReturnDay);
	strReturnMonthYearValue = getFieldValue(objReturnMonthYear);

	if (this == objReturnDay) {					//==	Day object change event fired
		if (strReturnDayValue == -1) {				//==	Day is set to "no"
			objReturnMonthYear.selectedIndex = 0;		//==	Set month to "just one way"
		} else { 
			if (strReturnMonthYearValue == -1) {
				objReturnMonthYear.selectedIndex = 1;
			}
		}
	} else {							//==	Month object change event fired
		if (strReturnMonthYearValue == -1) {			//==	Month is set to "just one way"
			objReturnDay.selectedIndex = 0;			//==	Set day to "no"
		} else { 
			if (strReturnDayValue == -1) {
				objReturnDay.selectedIndex = 1;
			}
		}
	}
}

function loader() {
	var objReturnDay		= glbGetElementById(glbReturnDayName);
	var objReturnMonthYear		= glbGetElementById(glbReturnMonthYearName);
	
	if (objReturnDay) {
		objReturnDay.onchange = dateReturnChange;
	}
	
	if (objReturnMonthYear) {
		objReturnMonthYear.onchange = dateReturnChange;
	}
	
}


function getElsByTagName(tagName)
{
	if (isIE4)
	{
		return document.all.tags(tagName);
	}
	else
	{
		return document.getElementsByTagName(tagName);
	}

}

function glbGetElementById (strName) {
	var objRetVal;
	var blnUseForm = false;
	if (document.getElementById) {							//==	Check for getElementById method
		objRetVal = document.getElementById(strName);
	} else {
		if (document.all) {							//==	Check for the document.all collection
			objRetVal = document.all[strName];
		} else {								//==	Search document forms for element
			blnUseForm = true;
		}
	}
	
	if (objRetVal) {
		if (objRetVal.type) {							//==	If object is a radio button we need to access it using
			if (objRetVal.type.toLowerCase() == "radio") {			//==	the document.formname.elementname notation to retrive the radioset array
				eval ("objRetVal = document." + objRetVal.form.name + "." + strName);
			}
		}
	}

	if (blnUseForm) {
		for (var lngFormCounter=0; !objRetVal && lngFormCounter < document.forms.length; lngFormCounter++) {
			for (var lngElementCounter=0; !objRetVal && lngElementCounter < document.forms[lngFormCounter].elements.length; lngElementCounter++) {
				var objElement = document.forms[lngFormCounter].elements[lngElementCounter];
				if (objElement.name == strName) {			//==	Found element 
					objRetVal = document.forms[lngFormCounter].elements[strName];
				}
			}
		}			
	}
	return objRetVal;
}

//==	string getFieldValue (object objField) 
//
//==		returns the value of the select element object passed in to
//==		the function. returns an empty string if the object is null, 
//==		not a select or	does not have a value selected.

function getFieldValue(objField) {
	if (objField) {
		if (objField.type) {
			if (objField.type.toLowerCase() == "select-one") {		//==	Field is a select drop-down. Get the selected option value
				if (objField.selectedIndex > -1) {
					return objField.options[objField.options.selectedIndex].value;
				}
			}
			if (objField.type.toLowerCase() == "radio") {			//==	Field is a radio box, but not checked so don't return a value
				if (!objField.checked) {
					return "";
				}
			}
		}
		if (objField.length && objField[0]) {					//==	Field is an radioset array. Find radio button that is checked
			for (var intOption = 0; intOption < objField.length; intOption++) {	
				if (objField[intOption].checked) {
					return objField[intOption];
				}
			}
		}
		if (objField.value) {							//==	Standard field. Use the value property
			return objField.value;
		}
	}
	return "";
}

//==	string formatCurrency (decimal decCurrency) 
//
//==		returns a string formating the decimal decCurrency to two decimal
//==		places.

function formatCurrency(decCurrency) {
	var strCurrency = decCurrency.toString();
	var intDecPosn = strCurrency.indexOf(".");
	if (intDecPosn == -1) {								//==	No decimal point in number. Add the two decimal places.
		strCurrency = strCurrency + ".00";	
	} else {
		if ((strCurrency.length - intDecPosn) < 3) {	//==	Decimal point exists, but not to two decimal places. Pad to correct length
			strCurrency = rightPad(strCurrency, intDecPosn + 3, "0");
		}
	}
	return strCurrency;
}



//==	string leftPad (string str, integer len, string chr)
//
//==		returns the string str left-padded to length len with 
//==		the character chr.

function leftPad(str, len, chr) {
	while (str.length < len) str = chr + str;
	return str;
}



//==	string rightPad (string str, integer len, string chr)
//
//==		returns the string str right-padded to length len with 
//==		the character chr.

function rightPad(str, len, chr) {
	while (str.length < len) str = str + chr;
	return str;
}

function getDateValue(objDay, objMonthYear) {
	var strDayValue = "";
	var strMonthYearValue = "";
	
	if (objDay) {
		strDayValue = getFieldValue(objDay);
	}
	else {
		strDayValue = '01';
	}
	strMonthYearValue = getFieldValue(objMonthYear);

	if (strDayValue == -1 || strMonthYearValue == -1) {			//==	Day field set to "no" or
										//==	Month Year field set to "just one way"
		objDay.selectedIndex		= 0;				//==	Set to "no"
		objMonthYear.selectedIndex	= 0;				//==	Set to "just one way"
		return "";
	}

	return leftPad(strDayValue, 2, "0") + " " + strMonthYearValue.substr(0,3) + " " + strMonthYearValue.substr(3,4);
}

function daysInMonth (intMonth, intYear) {
	if (intMonth < 1 || intMonth > 12) {
		return 0;
	}
	if (intMonth == 12) return 31;
	
	var dteDate = new Date ("1 " + monthName (intMonth + 1) + " " + intYear)
	
	if (dteDate) {
		dteDate.setDate(0);
		return dteDate.getDate();
	}
	
	return 0;
}

function monthName (intMonth) {
	var aryMonths = new Array ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	
	if ((intMonth > 0) && (intMonth < 13)) {
		return aryMonths[intMonth - 1];
	}
	
	return "";
}

function checkRequiredField (objField, strTitle, blnRequired, strType) {
	var strValue = getFieldValue(objField);

	if (objField) {
		if (objField.length && objField[0]) {		//==	Field is an array - likely radioset
			objField = objField[0];			//==	Set field to first item so we can apply focus
		}
	}
	
	if (blnRequired || strValue != "") {			//==	Field is required, or value has been entered so check format
		if (strType == "postcode" && blnRequired) {	//==	Apply postcode validation only if required
			if (!isValidPostcode(strValue)) {
				alert (msgGenericInvalidStart + strTitle + msgGenericInvalidEnd);
				objField.focus();
				return false;
			}
		}
		if (strType == "letter") {
			if (!isValidLetter(strValue)) {		//==	Apply number validation
				alert (msgGenericInvalidStart + strTitle + msgGenericInvalidEnd);
				objField.focus();
				return false;
			}
		}
		if (strType == "alphanum") {
			if (!isValidAlphaNum(strValue)) {		//==	Apply number validation
				alert (msgGenericInvalidStart + strTitle + msgGenericInvalidEnd);
				objField.focus();
				return false;
			}
		}
		if (strType == "number") {
			if (!isValidNumber(strValue)) {		//==	Apply number validation
				alert (msgGenericInvalidStart + strTitle + msgGenericInvalidEnd);
				objField.focus();
				return false;
			}
		}
		if (strType == "email") {
			if (!isValidEmail(strValue)) {		//==	Apply email validation 
				alert (msgGenericInvalidStart + strTitle + msgGenericInvalidEnd);
				objField.focus();
				return false;
			}
		}

        // to make sure it contains more than spaces
        var regexp = / /g;
        strCheck = strValue.replace(regexp, "");

		//if (strValue == "" || strValue == -1) {	//==	Value is required but no value present
        if (strCheck == "" || strValue == -1) {     		//==    Value is required but no value present
			alert (msgGenericInvalidStart + strTitle + msgGenericInvalidEnd);
			//objField.focus();
			return false;
		}
	}
	
	if (strValue.length > constMaxFieldLength) {		//==	Length of field is greater than max length
		alert (msgGenericLongStart + strTitle + msgGenericLongEnd);
		objField.focus();
		return false;
	}
	
	return true;						//==	Check successful
}

function isValidNumber(strNumber) {
	var numInput = "+-0123456789(). ";					//==	String containing valid characters
	
	if (strNumber == "") return false;
	
	for(var k = 0; k < strNumber.length; k++) {
		if(numInput.indexOf(strNumber.charAt(k)) == -1)	{
			return false;
		}
	}
	return true;
}

function isValidLetter(strLetter) {
	var alphaInput = "qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";	//==	String containing valid characters
	
	if (strLetter == "") return false;
	
	for(var k = 0; k < strLetter.length; k++) {
		if(alphaInput.indexOf(strLetter.charAt(k)) == -1)	{
			return false;
		}	
	}
	return true;
}

function isValidAlphaNum (strValue) {
	var alphaInput = "qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM+-0123456789(). ";	//==	String containing valid characters
	
	if (strValue == "") return false;
	
	for(var k = 0; k < strValue.length; k++) {
		if(alphaInput.indexOf(strValue.charAt(k)) == -1)	{
			return false;
		}	
	}
	return true;
}

function isValidEmail(strEmail) {
	if (isMac)
	{
		if (strEmail == null || strEmail == "" || strEmail.length < 5 || strEmail.search("@") == -1)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		var regExEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
		return regExEmail.test(strEmail);
	//== above code doesn't work on Macs
	}
}



function checkFormPage1() {
    if ((navigator.appName == "Netscape") && (browserVnum < 5)) {
        return true;
    }
    else {

	var objOriginAirport			= glbGetElementById(glbOriginAirportName);
	var objDestinationAirport		= glbGetElementById(glbDestinationAirportName);

	if (glbGetElementById(glbOutboundMonthYearNameLFF) != null) {
		var objOutboundMonthYear	= glbGetElementById(glbOutboundMonthYearNameLFF);
		var objReturnMonthYear		= glbGetElementById(glbReturnMonthYearNameLFF);
		var objOutboundDay		= glbGetElementById(glbOutboundDayNameLFF);
		var objReturnDay		= glbGetElementById(glbReturnDayNameLFF);	
	}
	else {
		var objOutboundMonthYear	= glbGetElementById(glbOutboundMonthYearName);
		var objReturnMonthYear		= glbGetElementById(glbReturnMonthYearName);
		var objOutboundDay		= glbGetElementById(glbOutboundDayName);
		var objReturnDay		= glbGetElementById(glbReturnDayName);
	}

	
	var objAdults				= glbGetElementById(glbAdultsName);
	var objChildren				= glbGetElementById(glbChildrenName);
	var objInfants				= glbGetElementById(glbInfantsName);
	var strOriginAirportValue		= getFieldValue(objOriginAirport);
	var strDestinationAirportValue		= getFieldValue(objDestinationAirport);


	var strOutboundDateValue		= getDateValue(objOutboundDay, objOutboundMonthYear);
	var strReturnDateValue			= getDateValue(objReturnDay, objReturnMonthYear);
	var strAdultsValue			= getFieldValue(objAdults);
	var strChildrenValue			= getFieldValue(objChildren);
	var strInfantsValue			= getFieldValue(objInfants);
	var dteOutbound 			= new Date (strOutboundDateValue);
	var dteReturn				= new Date (strReturnDateValue);

	if ((strOriginAirportValue == "-1") || (strOriginAirportValue == strDestinationAirportValue)) {		//==	Origin and Destination the same
		alert(msgSelectDest);	
		return false;
	}
	
	if (strReturnDateValue != "") {							//==	Return date set

		if (dteOutbound > dteReturn) {						//==	Outbound date not before Return date
			alert (msgOutboundBeforeReturn);
			return false;
		}
	}
	
	var intTotalParty = parseInt(strAdultsValue) + parseInt(strChildrenValue);	//==	Add up total party 

	if (intTotalParty > constMaxNumberPassengers) {					//==	Number in party more than Max number set
		alert(msgTooManyPeople);
		return false;
	}
	
	if (parseInt(strAdultsValue) < parseInt(strInfantsValue)) {			//==	More infants than adults
		alert(msgTooManyInfants);
		return false;
	}
	

	    var generalDate = new Date(2005, 11, 15);
	    var bariDate = new Date(2005, 9, 17);
	    var grenobleDate = new Date(2005, 11, 16);
		var monacoDate = new Date (2007, 1, 27);
		var torinoDate = new Date(2008, 1, 15);
	
	    if (((strOriginAirportValue == "BRI") || (strDestinationAirportValue == "BRI")) && ((dteOutbound < bariDate) || (dteReturn < bariDate))){
		alert ("PLEASE NOTE : The start of operation for Bari flights is November 21, 2005.");
		return false;
	    }
	    else if (((strOriginAirportValue == "GNB") || (strDestinationAirportValue == "GNB")) && ((dteOutbound < grenobleDate) || (dteReturn < grenobleDate))){
		alert ("PLEASE NOTE : The start of operation for Grenoble flights is December 16, 2005.");
		return false;
	    }
	    else if (((strOriginAirportValue != "BRI") && (strDestinationAirportValue != "BRI")) && ((dteOutbound < generalDate) || (dteReturn < generalDate))) {
		alert ("PLEASE NOTE : The start of operation for flights is December 15, 2005.");
		return false;
    	    }
		else if (((strOriginAirportValue == "MUC") || (strDestinationAirportValue == "MUC")) && ((dteOutbound > monacoDate) || (dteReturn > monacoDate))){
		alert ("NOTA : Flights from and to Munich are suspended between February 28th and October 26th, 2007");
		return false;
	    }
		else if (((strOriginAirportValue == "TRN") || (strDestinationAirportValue == "TRN")) && ((dteOutbound < torinoDate) || (dteReturn < torinoDate))){
		alert ("The flights from/to Turin start March 30!");
		return false;
		}
		else if (((strOriginAirportValue == "TRN") || (strDestinationAirportValue == "TRN")) && ((dteOutbound.getMonth() == 7) || (dteReturn.getMonth() == 7))){
		alert ("Il n'y a pas de vols Rome Fco - Turin - Rome Fco au mois d'Aout!");
		return false;
		}
	}
	
	if ((strOriginAirportValue == "BKK") && !strReturnDateValue) {
		alert ("Flights to Bangkok must be round-trip. \n We remind all passengers departing to Bangkok that is mandatory to hold a confirmed reservation for the return trip while proceeding to the check in counter.");
		return false;
	}
		else if ((strDestinationAirportValue == "BKK") && !strReturnDateValue) {
		alert ("Flights to Bangkok must be round-trip. \n We remind all passengers departing to Bangkok that is mandatory to hold a confirmed reservation for the return trip while proceeding to the check in counter.");
		return false;
	}
		else if ((strOriginAirportValue == "FCO") && (strDestinationAirportValue == "HAV") && !strReturnDateValue) {
		alert ("WARNING. \nFares between Rome and Havana and between Rome and Santiago de Cuba can be bought only as roundtrip. \nOneway sales are not allowed.");
		return false;
		}
		else if ((strOriginAirportValue == "HAV") && (strDestinationAirportValue == "FCO") && !strReturnDateValue) {
		alert ("WARNING. \nFares between Rome and Havana and between Rome and Santiago de Cuba can be bought only as roundtrip. \nOneway sales are not allowed.");
		return false;
		}
		else if ((strOriginAirportValue == "FCO") && (strDestinationAirportValue == "SCU") && !strReturnDateValue) {
		alert ("WARNING. \nFares between Rome and Havana and between Rome and Santiago de Cuba can be bought only as roundtrip. \nOneway sales are not allowed.");
		return false;
		}
		else if ((strOriginAirportValue == "SCU") && (strDestinationAirportValue == "FCO") && !strReturnDateValue) {
		alert ("WARNING. \nFares between Rome and Havana and between Rome and Santiago de Cuba can be bought only as roundtrip. \nOneway sales are not allowed.");
		return false;
		}

toBox = document.getElementById("to");
	fromBox = document.getElementById("from");
	fromVal = fromBox.value
	toVal = toBox.value;
	setCookie("last_from",fromVal,3);
	setCookie("last_to",toVal,3);
	
    return true;	// Checks passed sucessfully
} 



function checkFormPage2(thisform) {

	var objOutboundMonthYear	= thisform.MONTHYEAR;
	var objReturnMonthYear		= thisform.RMONTHYEAR;
	var objOutboundDay		= thisform.DAY;
	var objReturnDay		= thisform.RDAY;	

	var strOutboundDateValue		= getDateValue(objOutboundDay, objOutboundMonthYear);
	var strReturnDateValue			= getDateValue(objReturnDay, objReturnMonthYear);

	if (!checkRequiredField(objOutboundDay, "departure time", true, "")) return false;
	if (returnInfo.length) {
		if (!checkRequiredField(objReturnDay, "return date", true, "")) return false;
	}

	if (strReturnDateValue != "") {							//==	Return date set
		var dteOutbound = new Date (strOutboundDateValue);
		var dteReturn	= new Date (strReturnDateValue);
		
		if (dteOutbound > dteReturn) {						//==	Outbound date not before Return date
			alert (msgOutboundBeforeReturn);
			return false;
		}
		else if((dteOutbound.getFullYear() == dteReturn.getFullYear()) && (dteOutbound.getMonth() == dteReturn.getMonth()) && (dteOutbound.getDate() == dteReturn.getDate())){
			
		var obArray = outboundInfo[obIndex][5].split('-');
		var rtArray = returnInfo[rtIndex][5].split('-');
		var obArrive = obArray[1].split(':');
		var rtDepart = rtArray[0].split(':');
		
		obArrive[0] = parseInt(obArrive[10]);
		obArrive[1] = parseInt(obArrive[10]);
		
		rtDepart[0] = parseInt(rtDepart[10]);
		rtDepart[1] = parseInt(rtDepart[10]);
		
		var obMin = (obArrive[0] * 60) + obArrive[1];
		var rtMin = (rtDepart[0] * 60) + rtDepart[1];
		
	
		if((rtMin - obMin) <= 0){
			alert (msgOutboundBeforeReturn);
			return false;
		}
		
		else if((rtMin - obMin) <= 150){
			alert("Entre le vol de l'allée et le vol du retour il faut qu'il y aie au moins 2 heures 30 minutes!");
			return false;
		}
		
		
		}
		

		
		
	}
	
	return true;	// Checks passed sucessfully
}

function checkFormPage3() {
	
	var objFiscalCode			= glbGetElementById("ins_fiscal_code");
	var objTerms				= glbGetElementById("checkAgree");
	var insRad = document.names.radiobutton;
	
	
	if(insRad){
		if(insFlag =="yes"){	
			var radioChecked = "false";
				if (insRad.length) {
					for (p = 0; p < insRad.length; p++) {
						if (insRad[p].checked == true) {
							radioChecked = "true";
						}
					}
				}
				else {
					if (insRad.checked == true) {
						radioChecked = "true";
					}
				}
				if(radioChecked == "false"){
					alert("S'il vous plaît choisir si vous voulez faire ou non Assurance Voyage pour votre voyage")
					return false;
				}
		}
	}

	if(document.names.radiobutton[1].checked == false){

		if(objTerms.checked == false){
			alert("S'il vous plaît cocher la case confirmant que vous avez lu les termes et conditions pour continuer");
			return false;
		}

		if(objFiscalCode.value.length !=13 || !isValidAlphaNum(objFiscalCode.value)){
			alert("S'il vous plaît entrer un code fiscal");
			return false;
		}
	}

	return true;
}





function checkFormPage4() {
	var sel = getElsByTagName("select");
	var col = getElsByTagName("input");
	var i;
	var bFirstNameErr,bLastNameErr,bIDErr,bEmailErr,bCarErr,bLegalErr;
	
	bFirstNameErr = bLastNameErr = bIDErr = bEmailErr = bCarErr = bLegalErr = 0;

	for (i = 0;i < col.length;i++)
	{
		var strName = col[i].name;
		strName = strName.substring(0,3);

        	// to make sure it contains more than spaces
        	strCheck = col[i].value;
        	var regexp = / /g;
        	strCheck = strCheck.replace(regexp, "");
		
		// check the First name fields
		if ((strName == "IME") ||(strName == "PRE"))
		{
            		if (strCheck == null || strCheck == "" || strCheck.length < 2 || !isValidAlphaNum(strCheck))
			{
				alert('Please enter valid names for all passengers flying.\n(must be at least 2 alphanumeric characters long)');
				return false;
			}
		}
		
         	// check the PHONE fields 
         	if (strName == "PHO")
         	{

            		if (strCheck == null || strCheck == "" || strCheck.length < 2 || !isValidNumber(strCheck)) 
			{
				alert('Please enter a valid phone number.');
				return false;
			}
         	}
         
		// check the Email field
		if (strName  == "EMA")
		{
			if (col[i].value == null || col[i].value == "" || col[i].value.length < 5 || col[i].value.search("@") == -1)
			{
				alert('Please fill in a valid Email address.');
				return 
			}
		}	
	}

	for (i = 0;i < sel.length;i++)
	{
		var selName = sel[i].name;
		selName = selName.substring(0,3);
		if (selName == "PTC")
		{
			var infantAge = sel[i].selectedIndex
			if (infantAge < '1')
			{
				alert('Please enter an age for the infant');
				return false;
			}
		}
	}

	var objContactEmail = document.getElementById("contact_email");
	var checkEmail = document.getElementById("contact_email2");
	if (!checkRequiredField(objContactEmail, "Email address", true, "email")) return false;

	if (getFieldValue(glbGetElementById('contact_email')) != getFieldValue(glbGetElementById('contact_email2'))) {
		alert("Gli indirizzi email non corrispondono! Siete pregati di controllare di aver inserito correttamente l'indirizzo.");
		return false;
	}
}

function checkFormPage5() {
	var objCardName				= glbGetElementById(glbCardNameName);
	var objCardType                         = glbGetElementById(glbCardTypeName);
	var objCardNumber			= glbGetElementById(glbCardNumberName);
	var objCVVNumber			= glbGetElementById(glbCardCVVNumberName);
	var objCardExpiryMonth			= glbGetElementById(glbCardExpiryMonthName);
	var objCardExpiryYear			= glbGetElementById(glbCardExpiryYearName);
	var objBillEmail			= glbGetElementById(glbBillEmailName);
	var objBillTermsAccept			= glbGetElementById(glbBillTermsName);

	if (!checkRequiredField(objCardName, "Name for the Card", true, "alphanum")) return false;
	if (!checkRequiredField(objCardType, "Card type", true, "")) return false;
	if (!checkRequiredField(objCardNumber, "Card number", true, "number")) return false;
	if (!checkRequiredField(objCVVNumber, "Card CVV number", true, "number")) return false;
	if (!checkRequiredField(objCardExpiryMonth, "Card expiry month", true, "")) return false;
	if (!checkRequiredField(objCardExpiryYear, "Card expiry year", true, "")) return false;
	
	var strMonth = getFieldValue(objCardExpiryMonth);

	if (strMonth.substr(0,1) == "0") {
		strMonth = strMonth.substr(1,1);
	}
	var intMonth = parseInt(strMonth);
	
	var strYear = getFieldValue(objCardExpiryYear);
	if (strYear.length == 2) strYear = "20" + strYear;
	var intYear = parseInt(strYear);
	
	var intDaysMonth = daysInMonth(intMonth, intYear);
	
	var dteExpiryDate = new Date (intDaysMonth + " " + monthName(intMonth) + " " + intYear);
	var dteNow = new Date();
	
	if (dteNow > dteExpiryDate) {
		alert (msgInvalidExpiryDate);
		objCardExpiryMonth.focus();
		return false;
	}

	if (!checkRequiredField(objBillEmail, "Email address", true, "email")) return false;

	if (!objBillTermsAccept.checked) {	//==	The user has not ticked the Terms box
		alert (msgAcceptTerms);
		objBillTermsAccept.focus();
		return false;
	}

	// if no error, disable submit button and return true
	var objSubmitButton =	 glbGetElementById("submitButton");	
	objSubmitButton.disabled = 'true';
	
	return true;

}

function checkFormLFF(formObj) {
	var objOriginAirport		= glbGetElementById(glbOriginAirportName);
	var objDestinationAirport	= glbGetElementById(glbDestinationAirportName);
	var objInfants			= formObj.INFANTS;

	var objOutboundMonthYear	= glbGetElementById(glbOutboundMonthYearNameLFF);
	var objReturnMonthYear		= glbGetElementById(glbReturnMonthYearNameLFF);

	var objOutboundDay		= glbGetElementById(glbOutboundDayNameLFF);
	var objReturnDay		= glbGetElementById(glbReturnDayNameLFF);
	
	var strOriginAirportValue	= getFieldValue(objOriginAirport);
	var strDestinationAirportValue	= getFieldValue(objDestinationAirport);
	var strOutboundDateValue	= getDateValue(objOutboundDay, objOutboundMonthYear);
	var strReturnDateValue		= getDateValue(objReturnDay, objReturnMonthYear);
	var intInfantsValue		= parseInt(getFieldValue(objInfants));

	if (strOriginAirportValue == "TIP") {
		alert ("Flights from Tripoli are not currently available.");
		return false;
	
		if (getFieldValue(formObj.FARE) == "BUSINESS" && intInfantsValue > 0) {
			alert ("Infants are not permitted in business class on flights to/from Tripoli.");
			return false;
		}
	}

	if (strOriginAirportValue == "LED") {
		alert ("Flights from St. Petersburg are not currently available.");
		return false;
	}

	if ((strDestinationAirportValue == "TIP") && !strReturnDateValue) {
		alert ("Flights to Tripoli must be round-trip.");
		return false;
	}

	if ((strDestinationAirportValue == "BCN") && !strReturnDateValue) {
		alert ("Flights to Barcelona must be round-trip.");
		return false;
	}

	if ((strDestinationAirportValue == "LED") && !strReturnDateValue) {
		alert ("Flights to St. Petersburg must be round-trip.");
		return false;
	}

	if (strDestinationAirportValue == "TIP" && getFieldValue(formObj.FARE) == "BUSINESS" && intInfantsValue > 0) {
		alert ("Infants are not permitted in business class on flights to/from Tripoli.");
		return false;
	}

	return true;											// Checks passed sucessfully
} 