
    function Init()
    {
        Update1();
        SetValue("OutArrAir", GetValue("OutArrAir_Temp"));
        SetValue("RetDepAir", GetValue("RetDepAir_Temp"));

        if (GetValue("OutMonth_Temp") == "") { 
			PreSelectMonth("",7,"OutMonth");
		} else {
			SetValue("OutMonth", GetValue("OutMonth_Temp"));
		}
		if (GetValue("RetMonth_Temp") == "") {
			PreSelectMonth("",14,"RetMonth");
		} else {
			SetValue("RetMonth", GetValue("RetMonth_Temp"));
		}
   }
    
    function Update1()
    {
        Routine1(GetValue("OutDepAir"))
    }
    function Update2()
    {
        Routine2(GetValue("OutArrAir"))
    }
    function Update3()
    {
        Routine3(GetValue("RetDepAir"))
    }
    
    function Routine1(asAirportCode)
    {   
	    var outArrAirports = document.FormSearch.OutArrAir;
	    var retDepAirports = document.FormSearch.RetDepAir;
	    var retArrAirports = document.FormSearch.RetArrAir;
	    
	    outArrAirports.length = 0;
	    retDepAirports.length = 0;
	    retArrAirports.length = 0;

	    outArrAirports.options[0] = new Option("---Please Choose---","");
	    retDepAirports.options[0] = new Option("---Please Choose---","");
	    retArrAirports.options[0] = new Option("---Please Choose---","");
	    
	    outArrAirports.options[0].selected = true;
	    retDepAirports.options[0].selected = true;
	    retArrAirports.options[0].selected = true;

        if(asAirportCode!="")
        {
            BuildAirportList(GetAirportLinkedItem(asAirportCode, OBAirportLinkList), outArrAirports);
            BuildAirportList(GetAirportLinkedItem("ALL", OBAirportLinkList), retDepAirports);
            BuildAirportList(GetAirportLinkedItem("ALL", IBAirportLinkList), retArrAirports);
	    }
	    
	    ReturnAirports();
    }
    
    function Routine2(asAirportCode)
    {
        Routine3(asAirportCode);
	    ReturnAirports();
    }
    
    function Routine3(asAirportCode)
    {        
	    var retArrAirports = document.FormSearch.RetArrAir;
	    
	    retArrAirports.length = 0;

	    retArrAirports.options[0] = new Option("---Please Choose---","");
	    
	    retArrAirports.options[0].selected = true;

        if(asAirportCode!="")
        {
            BuildAirportList(GetAirportLinkedItem(asAirportCode, IBAirportLinkList), retArrAirports);
	    }
    }
    
    function ReturnAirports() //changes the return airports to be the same as the outbound ones
	{
	    SetValue("RetDepAir", GetValue("OutArrAir"));
	    SetValue("RetArrAir", GetValue("OutDepAir"));
	}
    
    function BuildAirportList(aoAirport, aoDropDown)
    {
        var i=0;
        var j=1;
        
        //alert(aoAirport.LinkedCodes);
        
        var tempArr = aoAirport.LinkedCodes.split("-");

		for(i=0; i<tempArr.length; i++)
		{
			aoDropDown.options[j] = new Option(GetAirportDescription(tempArr[i]), tempArr[i]);
    		if(j==0)
    		{
    			aoDropDown.options[j].selected = true;
    		}
    		j++;
		}
    }
    
    function GetAirportLinkedItem(asAirportCode, aoAirportLinkList)
    {
        for(var i=0; i<aoAirportLinkList.length; i++)
        {
	        if(aoAirportLinkList[i].Code==asAirportCode)
	        {
	            return aoAirportLinkList[i];
	        }
        }
    }
    
    function GetAirportDescription(asAirportCode)
    {
        for(var i=0; i<AirportList.length; i++)
	    {
	        if (AirportList[i].Code == asAirportCode)
	        {
	            return AirportList[i].Description;
	        }
	    }
	    return asAirportCode;
    }
    
    function AirportLink(asCode, asLinkedCodes)
    {
	    this.Code = asCode;
	    this.LinkedCodes = asLinkedCodes;
    }
    
    function Airport(asCode, asDescription)
    {
	    this.Code = asCode;
	    this.Description = asDescription;
    }
    
    function AddDays(myDate,days) 
    {
        //alert(myDate);
        return new Date(myDate.getTime() + days*24*60*60*1000);
    }

    function CheckDates()
    {   
        var lsOutDate = GetValue("OutDay") + "-" + GetValue("OutMonth") + "-" + GetValue("OutYear");
        var lsRetDate = GetValue("RetDay") + "-" + GetValue("RetMonth") + "-" + GetValue("RetYear");

        var OutDate = new Date(getDateFromFormat(lsOutDate, "dd-MM-yyyy"));
        var RetDate = new Date(getDateFromFormat(lsRetDate, "dd-MM-yyyy"));
		
		if(RetDate < OutDate)
		{
		    RetDate = AddDays(OutDate, 7);
		    
		    SetValue("RetDay", RetDate.getDate().toString().pad(2,"0",0));
		    SetValue("RetMonth", eval(RetDate.getMonth()+1).toString().pad(2,"0",0));
		    SetValue("RetYear", RetDate.getFullYear());
		}
    }
    
	function CheckData()
	{
		//Get Dates
		var lsOutDate = GetValue("OutDay") + "-" + GetValue("OutMonth") + "-" + GetValue("OutYear");
		var lsRetDate = GetValue("RetDay") + "-" + GetValue("RetMonth") + "-" + GetValue("RetYear");
		
        if(!isDate(lsOutDate, "dd-MM-yyyy"))
        {
            alert("Please enter a valid departure date");
            return false;
        }
        if(!isDate(lsRetDate, "dd-MM-yyyy"))
        {
            alert("Please enter a valid return date");
            return false;
        }
        
        var OutDate = new Date(getDateFromFormat(lsOutDate, "dd-MM-yyyy"));
        var RetDate = new Date(getDateFromFormat(lsRetDate, "dd-MM-yyyy"));
        
		var CurrDate = new Date();

        //And validate
		if(OutDate < CurrDate)
		{
			alert('Departure date must be in the future');
			return false;
		}

		if(IsChecked("ReturnFlight"))
		{
		    if(RetDate < CurrDate)
		    {
			    alert('Return date must be in the future');
			    return false;
		    }

		    if(RetDate < OutDate)
		    {
			    alert('Departure date must be earlier than your return date');
			    return false;
		    }
        }

		//Check that airports have been selected for the outward journey 
		if(GetValue("OutDepAir") == "" || GetValue("OutArrAir") == "")
		{
			alert('You must select airports for your outgoing journey.');
			return false;
		}
		if(IsChecked("ReturnFlight"))
		{
			if(GetValue("RetDepAir") == "" || GetValue("RetArrAir") == "")
			{
				alert('You must select airports for your return journey.');
				return false;
			}
		}

		var NumAdults = eval(GetValue("AdultPax"));
		var NumChi = eval(GetValue("ChildPax"));
		var NumInfants = eval(GetValue("InfantPax"));

		var TotPassengers = NumAdults + NumChi + NumInfants;

		if(NumInfants > NumAdults)
		{
			alert('The number of infants cannot exceed the number of adult passengers.');
			return false;
		}

		if(TotPassengers > 9)
		{
		    //UK Message
			alert('The maximum number of passengers allowed on one booking is 9. Please call our groups department on +44 (0)207 616 9999 to obtain a competitive group quote.');
			return false;
		}

		//----------------------------------------------------
		//- If all form validation is OK, submit the form    -
		//----------------------------------------------------
        SetValue("OutDepDate", GetValue("OutDay") + "-" + GetValue("OutMonth") + "-" + GetValue("OutYear"));
        SetValue("RetDepDate", GetValue("RetDay") + "-" + GetValue("RetMonth") + "-" + GetValue("RetYear"));
        
        SetValue("OutArrAir_Temp", GetValue("OutArrAir"));
        SetValue("RetDepAir_Temp", GetValue("RetDepAir"));
        SetValue("OutMonth_Temp", GetValue("OutMonth"));
        SetValue("RetMonth_Temp", GetValue("RetMonth"));

		return true;
	}
