var NoOfSearchers = 9;
var aSearchers = new Array(9);
aSearchers[0] = new Array('', 'overtureholidaychoicehowo', true, true, '', '', '');
aSearchers[1] = new Array('', 'overtureholidayshortbreakshowo', true, true, '', '', '');
aSearchers[2] = new Array('', 'overturehotholidayshowo', true, true, '', '', '');
aSearchers[3] = new Array('', 'overturetravelinsuranceholidayshowo', true, true, '', '', '');
aSearchers[4] = new Array('46', 'teletextholidays', true, true, '', '', '');
aSearchers[5] = new Array('51', 'virginholidaysm', true, true, '', '', '');
aSearchers[6] = new Array('150', 'holidaydiscountcentre', true, true, '', '', '');
aSearchers[7] = new Array('162', 'expediawhitelabelholidays', true, true, '', '', '');
aSearchers[8] = new Array('204', 'overturetopofferholidayshowo', true, true, '', '', '');


var MonthNames = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')
var MonthLongNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December')
var TwoDigitMonths = new Array('01','02','03','04','05','06','07','08','09','10','11','12')
var TwoDigitDays = new Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31')



function fFormSubmit(vFormName) {
    bigwin(vFormName);
    document.forms[vFormName].submit();
}

function fGetDateFromDDMMYYY(vDateStr) {
    var lDay   = vDateStr.substring(0,vDateStr.indexOf('-'));
    var lMonth = vDateStr.substring(vDateStr.indexOf('-') + 1, vDateStr.indexOf('-', vDateStr.indexOf('-') + 1));
    var lYear  = vDateStr.substring(vDateStr.indexOf('-', vDateStr.indexOf('-') + 1) + 1);
    
	return new Date(lYear, lMonth - 1, lDay);
}

function fDateAdd(vStartDate, vDaysToAdd) {
    
    var objStartDate = new Date(vStartDate);
    var objEndDate = new Date(objStartDate.getTime() + vDaysToAdd*1000*86400);
    
    //return objEndDate.getDate() + '/' + (objEndDate.getMonth() + 1) + '/' + fGetYear(objEndDate) // + ' ' + objEndDate;
    return objEndDate;
}


function fDateDiff(startDate, endDate) {
    
    var objDate1 = new Date(endDate);
    var objDate2 = new Date(startDate);
    return (objDate1.getTime()-objDate2.getTime())/1000/86400;
}

function fGetYear(vDate) {
/*
	var ua = navigator.userAgent.toLowerCase();
	isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
	isGecko = (ua.indexOf("gecko") != -1);
	isSafari = (ua.indexOf("safari") != -1);
	isKonqueror = (ua.indexOf("konqueror") != -1);
*/	

    if (vDate.getYear() < 1900) {
        return vDate.getYear() + 1900;
    }
    else {
        return vDate.getYear();
    }
	
}

function fOptionText(rSelect) {
    return rSelect.options[rSelect.selectedIndex].text;
}


function fResetSelect(vSelName) {
    var lSelRef = getRefToObject(vSelName)
    var sDefaultDesc = getRefToObject(vSelName).options[0].innerHTML;
    lSelRef.disabled = true;
    lSelRef.options.length = 0;
    lSelRef.options[0] = new Option (sDefaultDesc, -1);
    lSelRef.style.display = 'none';
}


var ms_InfoRequired;
var firstresetlevel1 = true;
var firstresetlevel2 = true;
var firstresetlevel3 = true;


function openOLNewWindow(ol, ooid, siteID, pageUrl) {

    try{    
        var newUrl;
        var clickUrl;
        var newDirectURL;
    
        newDirectURL = ol;
        clickUrl = "/Click/MClick2.asp?PageUrl=" + pageUrl + "&COID=" + ooid + "&SI=" + siteID + "&CPC=0&URL=";

        newUrl = clickUrl + escape(newDirectURL);

        window.open(newUrl,'mywindow','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
    }
    catch(e){}
}


function fPutTitlesIn() {
    for (i=0;i<=NoOfSearchers-1;i++) {
    //alert(getRefToObject('Logo' + aSearchers[i][1]).title)
        aSearchers[i][6] = getRefToObject('Logo' + aSearchers[i][1]).title;
    }    
}

function fGetSearchersDep(vSearcherName) {
    var lDep = -1;
    for (i=0;i<=NoOfSearchers-1;i++) {
        if (aSearchers[i][1] == vSearcherName) {
            lDep = aSearchers[i][4];
        }        
    }
    return lDep;
}

function fGetSearchersArr(vSearcherName) {
    var lArr = -1;
    for (i=0;i<=NoOfSearchers-1;i++) {
        if (aSearchers[i][1] == vSearcherName) {
            lArr = aSearchers[i][5];
        }        
    }
    return lArr;
}

function fResetLogos() {
    for(i=0;i<=NoOfSearchers-1;i++) {
        getRefToObject('Logo' + aSearchers[i][1]).style.display = 'block';
        getRefToObject('GO' + aSearchers[i][1]).src = '/images/go_button.gif';
        getRefToObject('Logo' + aSearchers[i][1]).title = aSearchers[i][6];
    }
}

// MKC20090320 store arrivals to attempt reset if departure changes
var aArrivals = new Array(4)
var lastparents = ''
var here = ''
var there = ''

function fDeparturesOnChange(rThis) {

    getRefToObject('CurrentLevel').value = 1;

    fResetSelect('DestinationL1');
    fResetSelect('DestinationL2');


    getRefToObject('WaitingForDestinationL1').style.display='block';
    if (lastparents != '' && !firstresetlevel1) //return to previously selected arrival point, if possible
        makeRequest('/Includes/Holidays/l.asp?l=1&d=' + rThis.value + '&p=' + '&parents=' + lastparents, getRefToObject('DestinationL1'), 'o')    
    else if (firstresetlevel1) //only auto-select chosen destination first time through
        makeRequest('/Includes/Holidays/l.asp?l=1&d=' + rThis.value + '&p=' + '&parents=250', getRefToObject('DestinationL1'), 'o')
    else
        makeRequest('/Includes/Holidays/l.asp?l=1&d=' + rThis.value + '&p=', getRefToObject('DestinationL1'), 'o')

    if (rThis.value != -1) { 
        makeRequest('/Includes/Holidays/s.asp?d=' + rThis.value + '&a=', aSearchers, 'l');        
    }
    else {
        fResetLogos();
    }
    firstresetlevel1 = false;
     
}

function openFeelingLuckyWindow() {

    try{    
        var newUrl;
        var clickUrl;
        var newDirectURL;
    
        newDirectURL = document.getElementById("YURL").innerHTML;
        clickUrl = "/Click/MClick2.asp?PageUrl=/Travel/Holiday_Search/&COID=52&SI=NETL&CPC=0&URL=";

        newUrl = clickUrl + escape(newDirectURL);

        window.open(newUrl,'mywindow','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
    }
    catch(e){}
}

function fArrivalsL1OnChange(rThis) {

    fResetSelect('DestinationL2');
    fResetSelect('DestinationL3');
    aArrivals[2] = ''
    aArrivals[3] = ''
    getRefToObject('CurrentLevel').value = 2;
    if (rThis.value != -1) {         
        ms_InfoRequired = document.forms['HolidayMetaSearch']['DestinationL2'].options[0].innerHTML.replace(/-/g, '').replace(/ /g, '');
        getRefToObject('WaitingForDestinationL2').style.display='block';
        if (lastparents != '' && !firstresetlevel2) //return to previously selected arrival point, if possible
            makeRequest('/Includes/Holidays/l.asp?l=2&d=' + getRefToObject('DepartFrom').value + '&p=' + rThis.value + '&parents=' + lastparents, getRefToObject('DestinationL2'), 'o')
        else if (firstresetlevel2) //only auto-select chosen destination first time through
            makeRequest('/Includes/Holidays/l.asp?l=2&d=' + getRefToObject('DepartFrom').value + '&p=' + rThis.value + '&parents=250', getRefToObject('DestinationL2'), 'o')
        else
            makeRequest('/Includes/Holidays/l.asp?l=2&d=' + getRefToObject('DepartFrom').value + '&p=' + rThis.value, getRefToObject('DestinationL2'), 'o')
        var t=setTimeout( "makeRequest('/Includes/Holidays/s.asp?d=" + getRefToObject('DepartFrom').value + "&a=" + rThis.value + "', aSearchers, 'l')", 250); 

        aArrivals[1] = rThis.value
        
        here = '|' + rThis.value + '|'
        there = '|' + lastparents + '|'
        if (there.indexOf(here) == -1) 
            lastparents = aArrivals[1]

    }
    else {
        var t=setTimeout( "makeRequest('/Includes/Holidays/s.asp?d=" + getRefToObject('DepartFrom').value + "&a=', aSearchers, 'l')", 250);
    }

    //MKC20090115 Get overture link for level2 location
    getOVurlFlights('cheap holidays to ' + rThis.options[rThis.selectedIndex].text, 'holidays', 307, 1699)

    firstresetlevel2 = false;
}

function fArrivalsL2OnChange(rThis) {
    fResetSelect('DestinationL3');
    aArrivals[3] = ''
    if (rThis.value != -1) { 
        ms_InfoRequired = document.forms['HolidayMetaSearch']['DestinationL3'].options[0].innerHTML.replace(/-/g, '').replace(/ /g, '');
        getRefToObject('WaitingForDestinationL3').style.display='block';

        if (lastparents != '' && !firstresetlevel3) //return to previously selected arrival point, if possible
            makeRequest('/Includes/Holidays/l.asp?l=3&d=' + getRefToObject('DepartFrom').value + '&p=' + rThis.value + '&parents=' + lastparents, getRefToObject('DestinationL3'), 'o')
        else if (firstresetlevel3) //only auto-select chosen destination first time through
            makeRequest('/Includes/Holidays/l.asp?l=3&d=' + getRefToObject('DepartFrom').value + '&p=' + rThis.value + '&parents=250', getRefToObject('DestinationL3'), 'o')
        else
            makeRequest('/Includes/Holidays/l.asp?l=3&d=' + getRefToObject('DepartFrom').value + '&p=' + rThis.value, getRefToObject('DestinationL3'), 'o')
        makeRequest('/Includes/Holidays/s.asp?d=' + getRefToObject('DepartFrom').value + '&a=' + rThis.value, aSearchers, 'l'); 

        aArrivals[2] = rThis.value

        here = '|' + rThis.value + '|'
        there = '|' + lastparents + '|'
        if (there.indexOf(here) == -1) 
            lastparents = aArrivals[1] + '|' + aArrivals[2]
    }
    else {
        makeRequest('/Includes/Holidays/s.asp?d=' + getRefToObject('DepartFrom').value + '&a=' + getRefToObject('DestinationL1').value, aSearchers, 'l'); 
    }
    getRefToObject('CurrentLevel').value = 3;

    firstresetlevel3 = false;

}

function fArrivalsL3OnChange(rThis) {
    if (rThis.value != -1) { 
        makeRequest('/Includes/Holidays/s.asp?d=' + getRefToObject('DepartFrom').value + '&a=' + rThis.value, aSearchers, 'l'); 
        aArrivals[3] = rThis.value
        lastparents = aArrivals[1] + '|' + aArrivals[2] + '|' + aArrivals[3]

    }
    else {
        makeRequest('/Includes/Holidays/s.asp?d=' + getRefToObject('DepartFrom').value + '&a=' + getRefToObject('DestinationL2').value, aSearchers, 'l'); 
    }
}


function TranslateInputs( FormName) {

	var Today = new Date();


    if( getRefToObject('WaitingForDestinationL1').style.display == 'block' || getRefToObject('WaitingForDestinationL2').style.display == 'block' || getRefToObject('WaitingForDestinationL3').style.display == 'block'){
        return false;
    }

    if(!cal_prs_date1(document.forms['HolidayMetaSearch']['DepartDate'].value)) {
        return false;
    }

    
    if (document.forms[FormName].directurl) {
        if (document.forms[FormName].directurl.value.indexOf('infospace.com') > 0) {
            document.forms[FormName].action = document.forms[FormName].action.replace('uknetguide', 'theanswerbank')
            document.forms[FormName].action = document.forms[FormName].action.replace('holidaysworld', 'theanswerbank')
            document.forms[FormName].action = document.forms[FormName].action.replace('flightsnetwork', 'theanswerbank')
            document.forms[FormName].PageURL.value = '/Search/'
        } 
    }
    

    var ms_DepartDate = document.forms['HolidayMetaSearch']['DepartDate'].value
    var ms_DepartDay   = ms_DepartDate.substring(0,ms_DepartDate.indexOf('-'));
    var ms_DepartMonth = ms_DepartDate.substring(ms_DepartDate.indexOf('-') + 1, ms_DepartDate.indexOf('-', ms_DepartDate.indexOf('-') + 1));
    var ms_DepartYear  = ms_DepartDate.substring(ms_DepartDate.indexOf('-', ms_DepartDate.indexOf('-') + 1) + 1);
    
	var DepartDate = new Date(ms_DepartYear, ms_DepartMonth - 1, ms_DepartDay);

    var ReturnDate = fDateAdd(DepartDate, 7);
    
    //var ms_Duration = 7;
    var ms_Duration = document.forms['HolidayMetaSearch']['Duration'].value;

    //var ms_RetYear  = fGetYear(ReturnDate);
    var ms_RetYear  = ReturnDate.getFullYear();
    var ms_RetMonth = ReturnDate.getMonth() + 1;
    var ms_RetDay   = ReturnDate.getDate();

    if (document.forms['HolidayMetaSearch']['DepartFrom'].selectedIndex == 0) {
        alert('Please select a departure location');
        return false;
    }

    if (document.forms['HolidayMetaSearch']['DestinationL1'].selectedIndex == 0) {
        alert('Please select a destination');
        return false;
    }

	if (DepartDate < Today) {
		alert('Please select a departure date after today.');
		return false;
	}


    //ms_Adults
    //ms_Children
    var ms_Adults = document.forms['HolidayMetaSearch']['Adults'].value;
    var ms_Children = document.forms['HolidayMetaSearch']['Children'].value;    
    var ms_Infants = document.forms['HolidayMetaSearch']['Infants'].value;    

    var ms_DepName = fOptionText(document.forms['HolidayMetaSearch']['DepartFrom']);
    var ms_DepIATA = ms_DepName.substring(ms_DepName.indexOf('(') + 1, ms_DepName.indexOf('(') + 4);
    ms_DepName = ms_DepName.substring(0, ms_DepName.length - 6);
    
    var ms_DestName;
    var ms_DestFullName;    
    var ms_Dest1Name = '';
    var ms_Dest2Name = '';
    var ms_Dest3Name = '';

	ms_DestName = fOptionText(document.forms['HolidayMetaSearch']['DestinationL1']);
	ms_DestFullName = ms_DestName;
	ms_Dest1Name = ms_DestName;
	if (document.forms['HolidayMetaSearch']['DestinationL2'].value != -1) {
	    ms_DestName = fOptionText(document.forms['HolidayMetaSearch']['DestinationL2']);
	    ms_Dest2Name = ms_DestName;
	    ms_DestFullName = ms_DestFullName  + ', ' + ms_DestName;
	    if (document.forms['HolidayMetaSearch']['DestinationL3'].value != -1) {
	        ms_DestName = fOptionText(document.forms['HolidayMetaSearch']['DestinationL3']);
	        ms_Dest3Name = ms_DestName;
	        ms_DestFullName = ms_DestFullName  + ', ' + ms_DestName;
	    } else {
	        ms_InfoRequired = fOptionText(document.forms['HolidayMetaSearch']['DestinationL3']);
	    }
	    
	} else {
	    ms_InfoRequired = fOptionText(document.forms['HolidayMetaSearch']['DestinationL2']);
	}
	
	ms_InfoRequired = ms_InfoRequired.replace(/-/g, '').replace(/ /g, '');

    

    	
	document.forms[FormName]['UKNEfrom'].value     = fOptionText(document.forms['HolidayMetaSearch']['DepartFrom']);
	document.forms[FormName]['UKNEto'].value       = ms_DestFullName;
	document.forms[FormName]['UKNEdepdate'].value  = TwoDigitDays[ms_DepartDay - 1] + ' ' + MonthLongNames[ms_DepartMonth - 1] + ' ' + ms_DepartYear;
	document.forms[FormName]['UKNEadults'].value   = document.forms['HolidayMetaSearch']['Adults'].value;
	document.forms[FormName]['UKNEchildren'].value = document.forms['HolidayMetaSearch']['Children'].value;
	//document.forms[FormName]['UKNEinfants'].value  = document.forms['HolidayMetaSearch']['Infants'].value;

	
	RecordTracking()	
	

	if (FormName == 'TeletextHolidays') {


       
        document.forms[FormName]['directurl'].value = fGetSearchersArr('teletextholidays');

        
        if (document.forms[FormName]['directurl'].value == -1) {
            alert('This partner serves holidays in ' + ms_DestFullName + ' but requires ' + ms_InfoRequired + ' to be selected.');
            return false;
        }
        else {


            var Depart = fGetSearchersDep('teletextholidays');
                      
            if (ms_Duration < 3) { ms_Duration = 3}
            else if (ms_Duration > 21) { ms_Duration = 21}

            var depDate = Date.parse(MonthNames[ms_DepartMonth - 1] + ' ' + ms_DepartDay + ' ' + ms_DepartYear)
            
            var URL = '{"id":null,"source":null,"searchId":2,"searchType":"Package_Holidays",'
            URL += '"destinationId":' + document.forms[FormName]['directurl'].value + ','
            URL += '"destinationName":"' + ms_DestName + '",'
            URL += '"skipInt":false,"destinationType":"Label",'
            URL += '"DepartureDate":"\\\/Date(' + depDate + ')\\\/",'
            URL += '"Rolling":0,'
            URL += '"PlusMinusDays":5,'
            URL += '"Duration":' + ms_Duration + ',"allocation":0,'
            URL += '"adults":' + ms_Adults + ','
            URL += '"children":' + ms_Children + ','
            URL += '"infants":' + ms_Infants + ','
            URL += '"departureId":' + Depart + ','
            URL += '"departureName":"",'
            URL += '"IsGatewaySearch":true,"boardTypeId":-1,"boardTypeCode":"Any","rating12":true,"rating3":true,"rating4":true,"rating5":true,"tradingNameId":null,"priceMin":null,"priceMax":null,"orderBy":null}'

            URL = escape(URL)
        
		    document.forms[FormName]['directurl'].value = 'http://www.teletextholidays.co.uk/Holidays/Package_Holidays/Results.aspx?SQ=' + URL + '&ito=254';
        }


        fFormSubmit(FormName);
	}

	if (FormName == 'OvertureTopOfferHolidaysHOWO') {


        fFormSubmit(FormName);
	}

	if (FormName == 'HolidayDiscountCentre') {


        fFormSubmit(FormName);
	}

	if (FormName == 'ExpediaWhiteLabelHolidays') {


        document.forms[FormName]['frairport'].value = fGetSearchersDep('expediawhitelabelholidays');
        document.forms[FormName]['destname'].value = fGetSearchersArr('expediawhitelabelholidays');

        
        if (document.forms[FormName]['destname'].value == -1) {
            alert('This partner serves holidays in ' + ms_DestFullName + ' but requires ' + ms_InfoRequired + ' to be selected.');
            return false;
        }
        else {


		    document.forms[FormName]['fromdate'].value = TwoDigitDays[ms_DepartDay - 1] + '/' + TwoDigitMonths[ms_DepartMonth - 1] + '/' + ms_DepartYear;
		    document.forms[FormName]['todate'].value = TwoDigitDays[ms_RetDay - 1] + '/' + TwoDigitMonths[ms_RetMonth - 1] + '/' + ms_RetYear;

            switch ('HOWO'){
                case 'FLIN':
                  document.forms[FormName]['rfrr'].value = '30004-841.01.183'
                  break;
                case 'HOWO':
                  document.forms[FormName]['rfrr'].value = '30004-841.01.184'
                  break;
            }

		}

        fFormSubmit(FormName);
	}

	if (FormName == 'OvertureHotHolidaysHOWO') {


        fFormSubmit(FormName);
	}

	if (FormName == 'OvertureHolidayShortBreaksHOWO') {


        fFormSubmit(FormName);
	}

	if (FormName == 'OvertureTravelInsuranceHolidaysHOWO') {


        fFormSubmit(FormName);
	}

	if (FormName == 'OvertureHolidayChoiceHOWO') {


        fFormSubmit(FormName);
	}

	if (FormName == 'VirginHolidaysM') {


        document.forms[FormName]['directurl'].value = fGetSearchersArr('virginholidaysm'); 
               
        
        if (document.forms[FormName]['directurl'].value == -1) {
            alert('This partner serves holidays in ' + ms_DestFullName + ' but requires ' + ms_InfoRequired + ' to be selected.');
            return false;
        }
        else {

            document.forms[FormName]['directurl'].value = 'http://being.successfultogether.co.uk/click.asp?ref=273715&site=4099&type=b1&bnb=1&diurl=' + document.forms[FormName]['directurl'].value;
        }

        fFormSubmit(FormName);
	}

}


// GJW20041021 Added client-side validation for Flight search details
function ShowHelp() {

	if (document.forms['HolidayMetaSearch']['DestinationL1'].value == '') {
		alert('Please enter your travel destination, then click on one of our partner links to conduct your search');
		document.forms['HolidayMetaSearch']['DestinationL1'].focus;
		return false; 
	} else {
		alert('Please click on one of our partner links to conduct your search.');
		return false;
	}
}

fPutTitlesIn();
fDeparturesOnChange(document.forms['HolidayMetaSearch'].DepartFrom);