function preloadImages() {
	var d=document; if(d.images){ if(!d.p) d.p=new Array();
	var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
	if(a[i].indexOf('#')!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
}

function LoadSuggest(item,iata,lang,img,sendFunc){
	InstallAC(document.forms[0], item, GetItemById(iata), LANG_ROOT_PATH + 'AJAX/SuggestResult.aspx', lang, GetItemById(img), sendFunc);
}

function ShowHidePanel(object) {
	var ctrl = GetItemById(object);

	if(ctrl.style.display == 'none')
		ctrl.style.display = '';
	else
		ctrl.style.display = 'none';
}

function toggleControl(object, displayState) {
	if(displayState == 'show')
		GetItemById(object).style.display = '';
	else
		GetItemById(object).style.display = 'none';
}

function ExpandPanel(id, imgID, onImg, offImg, id2, imgID2) {
	var panel, image, panel2, image2;
	
	try{
		panel = GetItemById(id);
		image = GetItemById(imgID);

		if(panel.style.display == 'none'){
			panel.style.display = '';
			image.src = offImg;
			
			if(id2){
				GetItemById(id2).style.display = 'none';
				GetItemById(imgID2).src = onImg;
			}
			return true;
		}
		else{
			panel.style.display = 'none';
			image.src = onImg;
			return false;
		}
	}
	catch(e){}
}

function ShowPanel(id, imgID, offImg) {
	var panel = GetItemById(id);
	var image = GetItemById(imgID);

	panel.style.display = '';
	image.src = offImg;
}

function parse_monthyear(monthyear){
	var strs = monthyear.split("-");
	var dateObj = new Object();
	dateObj.year = strs[0];
	dateObj.month = strs[1];
	return dateObj;
}

function parse_date(dt){
	var dateNow = new Date();
	var strs = dt.split("-");
	var dateObj = new Object();
	dateObj.year = (strs.length > 0 ? parseInt(strs[0], 10) : dateNow.getFullYear());
	dateObj.month = (strs.length > 1 ? parseInt(strs[1], 10) : (dateNow.getMonth() + 1));
	dateObj.day = (strs.length > 2 ? parseInt(strs[2], 10) : dateNow.getDate());
	return dateObj;
}

function searchDateChanged(){
	calendarChanged('ddDepartDay', 'ddDepartMonth', 'dtDepart', 'ddReturnDay', 'ddReturnMonth', 'dtReturn')
}

function byPriceDateChanged(){
	calendarChanged('ddMinDay', 'ddMinMonth', 'dtMinDate', 'ddMaxDay', 'ddMaxMonth', 'dtMaxDate')
}

function calendarChanged(depDayId, depMonthId, depDateId, retDayId, retMonthId, retDateId){
	var depDateObj = parse_date(GetItemById(depDateId).value);
	var retDateObj = parse_date(GetItemById(retDateId).value);
	var depDate = new Date(depDateObj.year, depDateObj.month - 1, depDateObj.day);
	var retDate = new Date(retDateObj.year, retDateObj.month - 1, retDateObj.day);

	var today = new Date();
	if(depDate < today){
		depDate = today;
		GetItemById(depDayId).value = depDate.getDate();
		GetItemById(depMonthId).value = depDate.getFullYear() + '-' + (depDate.getMonth() + 1);
		GetItemById(depDateId).value = depDate.getFullYear() + '-' + (depDate.getMonth() + 1) + '-' + depDate.getDate();
	}

	if(retDate < depDate){
		retDate = depDate;
		GetItemById(retDayId).value = retDate.getDate();
		GetItemById(retMonthId).value = retDate.getFullYear() + '-' + (retDate.getMonth() + 1);
		GetItemById(retDateId).value = retDate.getFullYear() + '-' + (retDate.getMonth() + 1) + '-' + retDate.getDate();
	}
}

function dateDropdownChanged(depDayId, depMonthId, depDateId, retDayId, retMonthId, retDateId){
	var depDay = GetItemById(depDayId).value;
	var depYM = GetItemById(depMonthId).value
	var depMonthYear = new parse_monthyear(depYM);
	var depDate = new Date(depMonthYear.year, depMonthYear.month - 1, depDay);
	GetItemById(depDateId).value = depDate.getFullYear() + '-' + (depDate.getMonth() + 1) + '-' + depDate.getDate();

	var retDay = GetItemById(retDayId).value;
	var retYM = GetItemById(retMonthId).value
	var retMonthYear = new parse_monthyear(retYM);
	var retDate = new Date(retMonthYear.year, retMonthYear.month - 1, retDay);
	GetItemById(retDateId).value = retDate.getFullYear() + '-' + (retDate.getMonth() + 1) + '-' + retDate.getDate();

	var today = new Date();
	if(depDate < today){
		depDate = today;
	}
	GetItemById(depDayId).value = depDate.getDate();
	GetItemById(depMonthId).value = depDate.getFullYear() + '-' + (depDate.getMonth() + 1);
	GetItemById(depDateId).value = depDate.getFullYear() + '-' + (depDate.getMonth() + 1) + '-' + depDate.getDate();

	if(retDate < depDate){
		retDate = depDate;
	}
	GetItemById(retDayId).value = retDate.getDate();
	GetItemById(retMonthId).value = retDate.getFullYear() + '-' + (retDate.getMonth() + 1);
	GetItemById(retDateId).value = retDate.getFullYear() + '-' + (retDate.getMonth() + 1) + '-' + retDate.getDate();
}

function formFields(){
	this.ErrDepId = '';
	this.ErrDestId = '';
	this.ErrDateId = '';
	this.DepCityId = '';
	this.DestCityId = '';
	this.DepIataId = '';
	this.DestIataId = '';
	this.TrainCheckId = '';
	this.FlightCheckId = '';
	this.BusCheckId = '';
	this.FerryCheckId = '';
	this.DepartDateId = '';
	this.ReturnDateId = '';
	this.OnewayRadioId = '';
	this.AdultsId = '';
	this.ChildrenId = '';
	this.InfantsId = '';
	this.CurrencyId = '';
	this.BusinessCheckId = '';
}

// FORM VALIDATION
function validateForm(){
	var p = new formFields();
	p.ErrDepId = 'errAptDep'; p.ErrDestId = 'errAptDest'; p.ErrDateId = 'errDateReturn';
	p.DepCityId = 'tbAptDep'; p.DestCityId = 'tbAptDest'; p.DepIataId = 'tbDepIata'; p.DestIataId = 'tbDestIata';
	p.TrainCheckId = 'chkTrain'; p.FlightCheckId = 'chkFlight'; p.BusCheckId = 'chkBus'; p.FerryCheckId = 'chkFerry';
	p.DepartDateId = 'dtDepart'; p.ReturnDateId = 'dtReturn'; p.OnewayRadioId = 'optOneWay';
	p.AdultsId = 'ddAdults'; p.ChildrenId = 'ddChildren'; p.InfantsId = 'ddInfants';
	p.CurrencyId = 'ddCurrency'; p.BusinessCheckId = 'cbBusinessClass';
	
	submitSearchForm(p);
}

function submitSearchForm(fields){
	if(abortSuggest){ abortSuggest(); }

	var errAptDep = GetItemById(fields.ErrDepId);
	var errAptDest = GetItemById(fields.ErrDestId);
	var errDateReturn = GetItemById(fields.ErrDateId);

	var depField = GetItemById(fields.DepCityId);
	var destField = GetItemById(fields.DestCityId);
	var depIATAField = GetItemById(fields.DepIataId);
	var destIATAField = GetItemById(fields.DestIataId);

	var chkFlightField = GetItemById(fields.FlightCheckId);
	var chkTrainField = GetItemById(fields.TrainCheckId);
	var chkBusField = GetItemById(fields.BusCheckId);
	var chkFerryField = GetItemById(fields.FerryCheckId);
	var chkBusinessClassField = GetItemById(fields.BusinessCheckId);
	var currency = GetItemById(fields.CurrencyId);

	var isError = false;

	if(trim(depField.value) == ''){
		errAptDep.innerHTML = '<font color=red>X</font>';
		isError = true;
		FocusItem(depField);
		alert(TXT_NO_DEP_ERROR);
	}
	else{ errAptDep.innerHTML = ''; }

	if(trim(destField.value) == ''){
		errAptDest.innerHTML= '<font color=red>X</font>';
		isError = true;
		FocusItem(destField);
		alert(TXT_NO_DEST_ERROR);
	}
	else{ errAptDest.innerHTML = ''; }

	if((depIATAField.value != '' && depIATAField.value == destIATAField.value) || 
		trim(destField.value).toLowerCase() == trim(depField.value).toLowerCase()){
		errAptDest.innerHTML= '<font color=red>X</font>';
		isError = true;
		FocusItem(destField);
		alert(TXT_SAME_DEP_DEST_ERROR);
	}
	else if(!isError){ errAptDest.innerHTML = ''; }

	var depDateElems = GetItemById(fields.DepartDateId).value.split('-');
	var retDateElems = GetItemById(fields.ReturnDateId).value.split('-');
	var blnOneWay = GetItemById(fields.OnewayRadioId).checked;

	try{
		var dtDepart = new Date(depDateElems[0], depDateElems[1], depDateElems[2]);
		var dtReturn = new Date(retDateElems[0], retDateElems[1], retDateElems[2]);
		if(!blnOneWay && dtDepart > dtReturn){
			errDateReturn.innerHTML = '<font color=red>X</font>';
			isError = true;
		}
		else{ errDateReturn.innerHTML = ''; }
	}
	catch(e){
		errDateReturn.innerHTML = '<font color=red>X</font>';
		isError = true;
	}

	if(chkFlightField && chkTrainField && chkBusField && chkFerryField){
		var hasTransport = chkFlightField.checked || chkTrainField.checked || chkBusField.checked || chkFerryField.checked;
		if(!hasTransport){
			isError = true;
			alert(TXT_NO_TRANSPORT);
		}
	}

	if(isError){ return false; }

	var depIATA = GetItemById(fields.DepIataId).value;
	var destIATA = GetItemById(fields.DestIataId).value;

	var URL = FLIGHTS_FOLDER + (depIATA.length == 0 || destIATA.length == 0 ? 'preflysearch.aspx' : 'flysearch.aspx');
	URL += '?depcity=' + encodeURIComponent(GetItemById(fields.DepCityId).value);
	URL += '&destcity=' + encodeURIComponent(GetItemById(fields.DestCityId).value);
	URL += '&depIATA=' + depIATA;
	URL += '&destIATA=' + destIATA;
	URL += '&depart=' + GetItemById(fields.DepartDateId).value;
	URL += '&return=' + (blnOneWay ? '' : GetItemById(fields.ReturnDateId).value);
	URL += '&adults=' + GetItemById(fields.AdultsId).value;
	URL += '&children=' + GetItemById(fields.ChildrenId).value;
	URL += '&infants=' + GetItemById(fields.InfantsId).value;
	URL += '&currency=' + currency.value;
	URL += '&flway=' + (blnOneWay ? 'True' : 'False');
	URL += '&flight=' + (chkFlightField ? chkFlightField.checked : 'true');

	if(chkTrainField && chkTrainField.checked)
		URL += '&train=true';

	if(chkBusField && chkBusField.checked)
		URL += '&bus=true';
		
	if(chkFerryField && chkFerryField.checked)
		URL += '&ferry=true';
		
	if (chkBusinessClassField && chkBusinessClassField.checked)
        URL += '&BusinessClass=true';

    var lang = '';
    try{ lang = LANG_CODE; }catch(e){}
	URL += '&lang=' + lang;
	
	// Add parameters for ALL Airport search
	if (depField.value.indexOf(TXT_ALL_AIRPORTS)!=-1)
    {
        URL += '&DepAll=1'
    }

	// Add parameters for ALL Airport search
	if (destField.value.indexOf(TXT_ALL_AIRPORTS)!=-1)
    {
        URL += '&DestAll=1'
    }
	
	if(currency && currency.value.length > 0){
		document.cookie = 'Currency=' + currency.value + '; path=/;';
	}

	// break out of frame
	if(typeof top != 'undefined' && top.location){ top.location.href = URL; }
	else { window.location.href = URL; }

	return false;
}

// FORM VALIDATION
function validateDirForm()
{
	var errAptDep = GetItemById('errAptDep2');
	var errAptDest = GetItemById('errAptDest2');

	var depField = GetItemById('tbAptDep2');
	var destField = GetItemById('tbAptDest2');

	var depIATAField = GetItemById('tbDepIata2');
	var destIATAField = GetItemById('tbDestIata2');
	var currency = GetItemById('ddCurrency2');

	var isError = false;

	if(trim(depField.value) == ''){
		errAptDep.innerHTML = '<font color=red>X</font>';
		isError = true;
		FocusItem(depField);
		alert(TXT_NO_DEP_ERROR);
	}
	else{ errAptDep.innerHTML = ''; }

	if(trim(destField.value) == ''){
		errAptDest.innerHTML= '<font color=red>X</font>';
		isError = true;
		FocusItem(destField);
		alert(TXT_NO_DEST_ERROR);
	}
	else{ errAptDest.innerHTML = ''; }

	if( (depIATAField.value != '' && depIATAField.value == destIATAField.value) || 
		trim(destField.value).toLowerCase() == trim(depField.value).toLowerCase()){
		errAptDest.innerHTML= '<font color=red>X</font>';
		isError = true;
		FocusItem(destField);
		alert(TXT_SAME_DEP_DEST_ERROR);
	}
	else if(!isError){ errAptDest.innerHTML = ''; }

	var monthField = GetItemById('ddDirectoryMonth');
	var blnOneWay = GetItemById('optOneWay2').checked;

	if(isError){ return false; }

	var URL;

	if(depIATAField.value.length == 3 && destIATAField.value.length == 3)
	{
		var depCity = depField.value.replace(TXT_ALL_AIRPORTS,'');
		depCity = trim(depCity.replace(',',' ').replace('  ',' '));
		var destCity = destField.value.replace(TXT_ALL_AIRPORTS,'');
		destCity = trim(destCity.replace(',',' ').replace('  ',' '));
		var regex = /\s+/g;
		var fileName = TXT_RESULTS_NAME;
		fileName = fileName.replace('{0}', depCity);
		fileName = fileName.replace('{1}', destCity);
		fileName = fileName.replace(regex, '-');

		URL = FLIGHTS_FOLDER;
		if(blnOneWay){ URL += TXT_ONEWAY.replace(regex, '-') + "/"; }
		URL += depIATAField.value + "/";
		URL += destIATAField.value + "/";
		if(monthField.value != '0'){ URL += monthField.value + '/'; }
		URL += fileName + '.htm';
	}
	else
	{
		URL = FLIGHTS_FOLDER + 'directoryresults.aspx';
		URL += '?aptDep=' + depIATAField.value;
		URL += '&aptDest=' + destIATAField.value;
		URL += '&depcity=' + encodeURIComponent(depField.value);
		URL += '&destcity=' + encodeURIComponent(destField.value);

		if(monthField.value != '0')
			URL += '&month=' + monthField.value;

		URL += '&currency=' + currency.value;
		URL += '&way=' + (blnOneWay ? '1' : '2');
	}
	
	if(currency && currency.value.length > 0){
		document.cookie = 'Currency=' + currency.value + '; path=/;';
	}

	window.location.href = URL;

	return false;
}

function SetItemDisabled(id, disabled){
	try{
		var elem = GetItemById(id);
		if(elem){
			elem.disabled = disabled;
			for(var i = 0; i < elem.childNodes.length; i++){
				if(elem.childNodes[i].disabled != null){
					elem.childNodes[i].disabled = disabled;
				}
			}
		}
	}
	catch(e){}
}

function LogSearch(count){
	var url = LANG_ROOT_PATH + 'AJAX/Statistics.asmx/SaveSearch2';
	if(typeof jxRequest != 'undefined'){
		var settings = GetItemById('LogSettings');
		var key = GetItemById('LogKey');
		var lang = ((typeof LANG_CODE != 'undefined') ? LANG_CODE : '');
		var isCached = ((typeof fromCache != 'undefined') ? fromCache : false);
		if (settings && key) {
			var content = 'logSettings=' + encodeURIComponent(settings.value) +
				'&logKey=' + encodeURIComponent(key.value) + '&lang=' + encodeURIComponent(lang) +
				'&count=' + count + '&isCached=' + (isCached ? 'true' : 'false');
			jxRequest.Request(url, null, 'POST', content);
		}
	}
}

function FocusItem(elem){
	elem.focus();
	elem.select();
}

function GetItemById(id){
	return (document.all ? document.all[id] : document.getElementById(id));
}

function trim(str){ return str.replace(/^\s+/, "").replace(/\s+$/, ""); };

