﻿var constMaxNumberPassengers		= 9;
var constMaxFieldLength			= 100;

var msgOutboundBeforeReturn		= "Il viaggio di ritorno non deve essere antecedente all'andata!";
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		= "Prego inserire un valido ";
var msgGenericInvalidEnd		= "";

var glbOriginAirportName		= "from";
var glbDestinationAirportName		= "to";

// LFF
var glbOutboundDayNameLFF              	= "idDAY";
var glbOutboundMonthYearNameLFF  	= "idMONTHYEAR";
var glbReturnDayNameLFF                 = "idRDAY";
var glbReturnMonthYearNameLFF           = "idRMONTHYEAR";
var glbOriginAirportName		= "from";
var glbDestinationAirportName		= "to";
var glbOutboundDayName                  = "outbound_day";
var glbOutboundMonthYearName		= "outbound_month_and_year";
var glbReturnDayName                    = "return_day";

// 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) {
	decCurrency = parseFloat(decCurrency);
	return (decCurrency).toFixed(2);
//	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 dat enot 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 viennaDate = new Date (2007, 4, 29);
		var milanDate = new Date(2007, 7, 31);
		var torinoDate = new Date(2008, 1, 15);
		var palermoDate = new Date(2008, 10, 31);
		var veronaDate = new Date (2009, 4, 29);


	
	    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 == "MXP") && (strDestinationAirportValue == "FCO")) && ((dteOutbound < milanDate) || (dteReturn < milanDate))){
		alert ("PLEASE NOTE: Flights to and from Milan will resume in September 2007!");
		return false;
		}
	    else if (((strOriginAirportValue == "FCO") && (strDestinationAirportValue == "MXP")) && ((dteOutbound < milanDate) || (dteReturn < milanDate))){
		alert ("PLEASE NOTE: Flights to and from Milan will resume in September 2007!");
		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 : Flight from/To Munich have been cancelled from february 28th to october 27th");
		return false;
	    }
	else if (((strOriginAirportValue == "VIE") || (strDestinationAirportValue == "VIE")) && ((dteOutbound > viennaDate) || (dteReturn > viennaDate))){
		alert ("NOTA : I voli da e per Vienna sono sopesi dal 1 Maggio al 27 ottobre 2007");
		return false;
		}
		else if (((strOriginAirportValue == "PMO") || (strDestinationAirportValue == "PMO")) && ((dteOutbound < palermoDate) || (dteReturn < palermoDate))){
		alert ("I voli da e per Palermo iniziano il 01 Dicembre!");
		return false;
		}
		else if (((strOriginAirportValue == "VRN") || (strDestinationAirportValue == "VRN")) && ((dteOutbound.getMonth() == 6) || (dteReturn.getMonth() == 6))){
		alert ("I voli da/per Verona non sono operati nel mese di Luglio!");
		return false;
		}
		else if (((strOriginAirportValue == "VRN") || (strDestinationAirportValue == "VRN")) && ((dteOutbound.getMonth() == 7) || (dteReturn.getMonth() == 7))){
		alert ("I voli da/per Verona non sono operati nel mese di Agosto!");
		return false;
		}
		else if (((strOriginAirportValue == "OLB") || (strDestinationAirportValue == "OLB")) && ((dteOutbound.getMonth() == 4) || (dteReturn.getMonth() == 4))){
		alert ("I voli da/per Olbia non sono operati nel mese di Maggio!");
		return false;
		}
		else if (((strOriginAirportValue == "OLB") || (strDestinationAirportValue == "OLB")) && ((dteOutbound.getMonth() == 9) || (dteReturn.getMonth() == 9))){
		alert ("I voli da/per Olbia non sono operati nel mese di Ottobre!");
		return false;
		}

	}
	if ((strOriginAirportValue == "BKK") && !strReturnDateValue) {
		alert ("I voli per la Thailandia sono andata/ritorno. \nRicordiamo ai passeggeri che per la destinazione Bangkok sarà sempre necessario recarsi al banco accettazione in possesso di una regolare prenotazione per il volo di ritorno.");
		return false;
	}
		else if ((strDestinationAirportValue == "BKK") && !strReturnDateValue) {
		alert ("I voli per la Thailandia sono andata/ritorno. \nRicordiamo ai passeggeri che per la destinazione Bangkok sarà sempre necessario recarsi al banco accettazione in possesso di una regolare prenotazione per il volo di ritorno.");
		return false;
	}
		else if ((strOriginAirportValue == "HKT") && !strReturnDateValue) {
		alert ("I voli per la Thailandia sono andata/ritorno. \nRicordiamo ai passeggeri che per la destinazione Phuket sarà sempre necessario recarsi al banco accettazione in possesso di una regolare prenotazione per il volo di ritorno.");
		return false;
	}
		else if ((strDestinationAirportValue == "HKT") && !strReturnDateValue) {
		alert ("I voli per la Thailandia sono andata/ritorno. \nRicordiamo ai passeggeri che per la destinazione Phuket sarà sempre necessario recarsi al banco accettazione in possesso di una regolare prenotazione per il volo di ritorno.");
		return false;
	}

		else if ((strOriginAirportValue == "HAV") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nLe offerte tra Roma ed Havana sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strDestinationAirportValue == "HAV") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nLe offerte tra Roma ed Havana sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strOriginAirportValue == "FCO") && (strDestinationAirportValue == "SCU") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nLe offerte tra Roma e Santiago de Cuba sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strOriginAirportValue == "SCU") && (strDestinationAirportValue == "FCO") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nLe offerte tra Roma e Santiago de Cuba sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
				else if ((strOriginAirportValue == "FCO") && (strDestinationAirportValue == "CYO") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nLe offerte tra Roma e Cayo Largo sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strOriginAirportValue == "CYO") && (strDestinationAirportValue == "FCO") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nLe offerte tra Roma ed Havana e tra Roma e Santiago de Cuba sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strOriginAirportValue == "CUR") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nI voli tra Milano e Curacau sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strDestinationAirportValue == "CUR") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nI voli tra Milano e Curacau sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strOriginAirportValue == "LRM") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nI voli tra Milano e La Romana sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
		}
		else if ((strDestinationAirportValue == "LRM") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nI voli tra Milano e La Romana sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		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[0],10);
		obArrive[1] = parseInt(obArrive[1],10);
		
		rtDepart[0] = parseInt(rtDepart[0],10);
		rtDepart[1] = parseInt(rtDepart[1],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("The dates you have chosen are within 2 and a half hours of eachother.  Please select flights that are more than 2 and a half hours apart.");
			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("Please select if you would like to have travel insurance or not for your trip.")
					return false;
				}
		}
	}

	if(document.names.radiobutton[1].checked == false){

		if(objTerms.checked == false){
			alert("Please check the box confirming that you have read the Terms and Conditions in order to continue.");
			return false;
		}

		if(objFiscalCode.value.length !=16 || !isValidAlphaNum(objFiscalCode.value)){
			alert("Please enter a valid Fiscal Code");
			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 DOB fields
		if ((strName == "DOB"))
		{

			
            		if (strCheck == null || strCheck == "" || strCheck.length < 2 || strCheck == "dd/mm/year" || strCheck.length != 10 || strCheck.charAt(2) != "/" || strCheck.charAt(5) != "/")
			{
				alert('Please enter valid Date of Birth for all passengers flying. Correct format is dd/mm/year');
				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 false;
			}
		}

	}

	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 countryBox = document.getElementById("country");
	if(countryBox.value == "-1"){
		alert("Prego selezionare la nazione");
		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);
	obFromTo = obFrom_terms + "_" + obTo_terms;
	var objBillTermsAccept_thai			= glbGetElementById("bill_terms_thai");
	var objBillTermsAccept_cuba			= glbGetElementById("bill_terms_cuba");
	var objBillTermsAccept_meridiana	= glbGetElementById("bill_terms_meridiana");
	var objBillTermsAccept_air			= glbGetElementById("bill_terms_air");

	if (!checkRequiredField(objCardName, "Name for the Card", true, "alphanum")) return false;
	if (objCardType.selectedIndex == 0){
            alert("Please select a Credit Card type");
            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 ((obFromTo == "FCO_BKK") || (obFromTo == "FCO_HKT") || (obFromTo == "BKK_FCO") || (obFromTo == "HKT_FCO") || (obFromTo == "BKK_HKT") || (obFromTo == "HKT_BKK") || (obFromTo == "MXP_HKT") || (obFromTo == "MXP_BKK") || (obFromTo == "HKT_MXP") || (obFromTo == "BKK_MXP")) {
		if (objBillTermsAccept_thai) {
			if (!objBillTermsAccept_thai.checked) { //==	The user has not ticked the Terms box
				alert(msgAcceptTerms);
				objBillTermsAccept_thai.focus();
				return false;
			}
		}
		else if (!objBillTermsAccept.checked) { //==	The user has not ticked the Terms box
					alert(msgAcceptTerms);
					objBillTermsAccept.focus();
					return false;
		}
	}
	else if ((obFromTo == "FCO_HAV") || (obFromTo == "FCO_CYO") || (obFromTo == "HAV_FCO") || (obFromTo == "CYO_FCO") || (obFromTo == "HAV_CYO") || (obFromTo == "CYO_HAV") || (obFromTo == "FCO_SCU") || (obFromTo == "SCU_FCO") || (obFromTo == "MXP_HAV") || (obFromTo == "MXP_CYO") || (obFromTo == "HAV_MXP") || (obFromTo == "CYO_MXP") || (obFromTo == "MXP_SNU") || (obFromTo == "SNU_MXP") || (obFromTo == "MXP_HOG") || (obFromTo == "HOG_MXP")){
			if (objBillTermsAccept_cuba) {
				if (!objBillTermsAccept_cuba.checked) { //==	The user has not ticked the Terms box
					alert(msgAcceptTerms);
					objBillTermsAccept_cuba.focus();
					return false;
				}
			}
			else if (!objBillTermsAccept.checked) { //==	The user has not ticked the Terms box
					alert(msgAcceptTerms);
					objBillTermsAccept.focus();
					return false;
			}
		}
	else if ((obFromTo == "FCO_MAD") || (obFromTo == "MAD_FCO")) {
				if (objBillTermsAccept_air) {
					if (!objBillTermsAccept_air.checked) { //==	The user has not ticked the Terms box
						alert(msgAcceptTerms);
						objBillTermsAccept_air.focus();
						return false;
					}
				}
				else if (!objBillTermsAccept.checked) { //==	The user has not ticked the Terms box
					alert(msgAcceptTerms);
					objBillTermsAccept.focus();
					return false;
				}
			}
	else if ((obFromTo == "FCO_CAG") || (obFromTo == "FCO_VRN") || (obFromTo == "TRN_OLB") || (obFromTo == "OLB_TRN") || (obFromTo == "CAG_FCO") || (obFromTo == "VRN_FCO")) {
			if (objBillTermsAccept_meridiana) {
				if (!objBillTermsAccept_meridiana.checked) { //==	The user has not ticked the Terms box
					alert(msgAcceptTerms);
					objBillTermsAccept_meridiana.focus();
					return false;
				}
			}
			else if (!objBillTermsAccept.checked) { //==	The user has not ticked the Terms box
					alert(msgAcceptTerms);
					objBillTermsAccept.focus();
					return false;
			}
		}
			else {
				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;
	}
	if ((strDestinationAirportValue == "LRM") && !strReturnDateValue) {
		alert ("ATTENZIONE. \nI voli tra Milano e La Romana sono acquistabili esclusivamente come andata e ritorno. \nLa sola andata non e' permessa.");
		return false;
	}


	return true;											// Checks passed sucessfully
}

function checkDebit(){
	var objDebitNum = document.getElementById("debit_number");
	var objPinNum = document.getElementById("pin_code");
	var objEmail = document.getElementById("bill_email");
	
	
	if (!checkRequiredField(objDebitNum, "Debit card number", true, "alphanum")) return false;
	if (!checkRequiredField(objPinNum, "Pin code", true, "number")) return false;
	if (!checkRequiredField(objEmail, "Email address", true, "email")) return false;

	// if no error, disable submit button and return true
	var objSubmitButton =	 glbGetElementById("submitButton");	
	objSubmitButton.disabled = 'true';
	
	return true;
}

function checkFormChange4() {
	var objCardName				= glbGetElementById(glbCardNameName);
	var objCardType             = glbGetElementById(glbCardTypeName);
	var objCardNumber			= glbGetElementById(glbCardNumberName);

	var objCardExpiryMonth		= glbGetElementById(glbCardExpiryMonthName);
	var objCardExpiryYear		= glbGetElementById(glbCardExpiryYearName);
	var objCVVNumber			= glbGetElementById(glbCardCVVNumberName);
//	var objBillHouse			= glbGetElementById(glbBillHouseName);
//	var objBillStreet			= glbGetElementById(glbBillStreetName);
//	var objBillTown				= glbGetElementById(glbBillTownName);
//	var objBillPostcode			= glbGetElementById(glbBillPostcodeName);
//	var objBillCountry			= glbGetElementById(glbBillCountryName);
	var objBillEmail			= glbGetElementById(glbBillEmailName);
//	var objBillTermsAccept		= glbGetElementById(glbBillTermsName);
	
//	var strBillCountry			= getFieldValue(objBillCountry);

//	var blnPostcodeRequired = false;
	
	if (!checkRequiredField(objCardName, "Name for the Card", true, "")) 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")						//==	Remove padded zero	
		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(objBillHouse, "Street address", true, "")) return false;
//	if (!checkRequiredField(objBillStreet, "Street", true, "")) return false;
//	if (!checkRequiredField(objBillTown, "Town", true, "")) return false;
//
//	if (strBillCountry == "UK") {		//==	Require the postcode for UK customers
//		blnPostcodeRequired = true;
//	} else {
//		blnPostcodeRequired = false;
//	}

//	if (!checkRequiredField(objBillPostcode, "Postcode", blnPostcodeRequired, "")) return false;
//	if (!checkRequiredField(objBillCountry, "Country", true, "")) 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;
//	}

	return true;

} 

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
}

function autoFillTo(){
	fromBox = document.getElementById("from");
	toBox = document.getElementById("to");
	if(fromBox.value != "-1"){
		fillBox(fromBox,toBox);
		toVal = getCookie("last_to");
		alert(toVal);
		if(toVal != ""){
			toBox.value = toVal;
		}
	}
}

function autoFillDates(obj){
	var obDay = document.getElementById("idDAY");
	var obMonthYear = document.getElementById("idMONTHYEAR");
	var rtDay = document.getElementById("idRDAY");
	var rtMonthYear = document.getElementById("idRMONTHYEAR");
	var switchedObj = obj;
	
	if (switchedObj == obDay) {
		if (obDay.value != -1) {
			if ((rtMonthYear.selectedIndex < obMonthYear.selectedIndex) && (rtMonthYear.selectedIndex != 0)) {
				rtMonthYear.selectedIndex = obMonthYear.selectedIndex;
			}
			if ((rtMonthYear.selectedIndex == obMonthYear.selectedIndex) && (obMonthYear.selectedIndex != 0)) {
				if (rtDay.selectedIndex <= obDay.selectedIndex) {
					rtDay.selectedIndex = obDay.selectedIndex + 1;
				}
			}
		}
	}
	else if (switchedObj == obMonthYear) {
		if (obMonthYear.value != -1) {
			if ((rtMonthYear.selectedIndex < obMonthYear.selectedIndex) && (rtMonthYear.selectedIndex != 0)) {
				rtMonthYear.selectedIndex = obMonthYear.selectedIndex;
			}
			if ((rtMonthYear.selectedIndex == obMonthYear.selectedIndex) && (obMonthYear.selectedIndex != 0)) {
				if (rtDay.selectedIndex <= obDay.selectedIndex) {
					rtDay.selectedIndex = obDay.selectedIndex + 1;
				}
			}
		}
	}
	else if (switchedObj == rtDay) {
		if (rtDay.value != -1) {
			if (obMonthYear.selectedIndex == 0) {
				obMonthYear.selectedIndex = 1;
			}
			if ((rtMonthYear.selectedIndex < obMonthYear.selectedIndex)) {
				rtMonthYear.selectedIndex = obMonthYear.selectedIndex;
			}
			if (rtMonthYear.selectedIndex == obMonthYear.selectedIndex) {
				if (rtDay.selectedIndex <= obDay.selectedIndex) {
					rtDay.selectedIndex = obDay.selectedIndex + 1;
				}
			}
		}
	}
	else if (switchedObj == rtMonthYear) {
		if (rtMonthYear.value != -1) {
			if (obMonthYear.selectedIndex == 0) {
				obMonthYear.selectedIndex = 1;
			}
			if ((rtMonthYear.selectedIndex < obMonthYear.selectedIndex)) {
				rtMonthYear.selectedIndex = obMonthYear.selectedIndex;
			}
			if (rtMonthYear.selectedIndex == obMonthYear.selectedIndex) {
				if (rtDay.selectedIndex <= obDay.selectedIndex) {
					rtDay.selectedIndex = obDay.selectedIndex + 1;
				}
			}
			if (rtDay.selectedIndex == 0) {
				rtDay.selectedIndex = 1;
			}
		}
	}
}	

