
var acListTotal = 0;
var acListCurrent = -1;
var acLanguage = "en";
try {
acLanguage=document.nav_form.language.value;
} catch (e) {
}
$("body").click(function() {
clearAutoComplete();
});
function setAutoComplete(field_id, results_id, get_url, data_type) {
var acSearchId = "#" + field_id;
var acResultsId = "#" + results_id;
var acURL = get_url;
var acSearchField = $(acSearchId);
var acResultsDiv = $(acResultsId);
acResultsDiv.addClass("ajaxResults");
acSearchField.click( function() {
this.select();
if (acSearchField.val().length>2) {
autoComplete(acSearchField.val(),acSearchId,acResultsId,acURL,data_type);
}
});
acSearchField.attr("autocomplete","off");
acSearchField.keyup(function (e) {
var keyCode = e.keyCode || window.event.keyCode;
var lastVal = acSearchField.val();
switch (keyCode) {
case 38:
updownArrow(keyCode,acResultsId);
break;
case 40:
updownArrow(keyCode,acResultsId);
break;
case 9:
break;
case 13:
break;
case 27:
clearAutoComplete();
break;
default:
setTimeout(function () {autoComplete(lastVal,acSearchId,acResultsId,acURL,data_type)}, 200);
}
});
acSearchField.keydown(function (e) {
var keyCode = e.keyCode || window.event.keyCode;
switch (keyCode) {
case 9:
if($(acResultsId + ":visible").size()==1) {
if($(acResultsId + "> select > option:selected").size()>0) {
makeSelection(acSearchId, acResultsId, data_type);
} else {
if ($(acResultsId + "> select > option").size()>0) {
e.preventDefault();
acListCurrent=0;
jumpToSelect(acResultsId);
}
}
}
break;
case 13:
if($(acResultsId + ":visible").size()==1) {
e.preventDefault();
makeSelection(acSearchId, acResultsId, data_type);
}
break;
}
});
}
function autoComplete(lastValue, searchBox, resultsBox, url, data_type) {
var part = $(searchBox).val();
if(part.length<3) {
clearAutoComplete();
return;
}
if(lastValue != part){
return;
}
var finalURL = "";
switch (data_type) {
case "OJdests":
finalURL = url + part + "&language=" + acLanguage;
break;
default:
finalURL = url + part;
break;
}
$.get(finalURL, function(data){
var ansLength = data.length;
if(ansLength > 0){
data = parseData(data, data_type);
$(resultsBox).empty();
$(resultsBox).append(data);
$(resultsBox).css("display","block");
var options = $(resultsBox + " > select > option");
acListTotal = options.size();
$(resultsBox + " > select").change( function() {
makeSelection(searchBox, resultsBox, data_type);
});
$(resultsBox + " > select").keydown( function(e) {
if (e.keyCode==27) {
clearAutoComplete();
}
});
} else {
clearAutoComplete();
}
});
}
function clearAutoComplete() {
$(".ajaxResults").html('');
$(".ajaxResults").css("display","none");
acListCurrent=-1;
}
function parseData(response,data_type) {
switch(data_type) {
case "OJdests":
response=response.replace(/^\s*/,'');
response=response.replace(/\s*$/,'');
if((response=='<ul></ul>')||(response=='')){
response="";
} else {
response=response.replace(/\<ul\>/gi,'');
response=response.replace(/\<\/ul\>/gi,'');
response=response.replace(/<li/gi,'<option');
response=response.replace(/<\/li>/gi,"<\/option>");
response=response.replace(/id=/gi,'value=');
response='<select size="4">'+response+"<\/select>";
}
return response;
break;
case "DWRdests":
var splitData = response.split("\n");
var s0 = eval(splitData[0] + ";s0;");
var optionsString='<select name="destChoices" id="destChoices" size="4">';
var hasoptions=false;
for (var i in s0) {
hasoptions=true;
optionsString+='<option value="'+i+'">'+s0[i]+'</option>';
}
if (hasoptions) {
optionsString+='</select>';
return optionsString;
} else {
return "";
}
break;
default:
return response;
}
}
function updownArrow(keyCode,resultsBox) {
if(keyCode == 40 || keyCode == 38){
switch (keyCode) {
case 38 :
if(acListCurrent == 0 || acListCurrent == -1) {
acListCurrent = acListTotal-1;
} else {
acListCurrent--;
}
break;
case 40:
if(acListCurrent == acListTotal-1){
acListCurrent = 0;
} else {
acListCurrent++;
}
break;
}
jumpToSelect(resultsBox);
} else {
acListCurrent = -1;
return false;
}
}
function jumpToSelect(resultsBox) {
var options = $(resultsBox + " > select > option");
options.each(function(i){
if(i == acListCurrent){
this.selected = "selected";
} else {
this.selected = "";
}
});
return true;
}
function makeSelection(searchBox,resultsBox,data_type) {
var selectedOption = $(resultsBox + " > select > option:selected");
$(searchBox).val(selectedOption.text());
switch (data_type) {
case "OJdests":
$("#destMatch:visible").slideUp("slow");
var selectedDep = $("#fromPkg > option:selected").val();
$("#ojId").val(selectedOption.val());
$("#ojGw").val(selectedOption.attr("gw"));
$("#ojCountry").val(selectedOption.attr("country"));
var selectedDest = selectedOption.attr("gw");
updateCabin(selectedDep, selectedDest, acLanguage, "dp");
updateTicket(selectedDep, selectedDest);
break;
case "DWRdests":
$("#destMatch:visible").slideUp("slow");
var selectedDep = $("#from > option:selected").val();
var selectedDest = selectedOption.val();
updateCabin(selectedDep, selectedDest, acLanguage);
updateTicket(selectedDep, selectedDest);
break;
default:
break
}
clearAutoComplete();
}
function setDPDestination(productType, stationCode) {
var theTargetField = '';
switch (productType) {
case 'hotel': theTargetField = '#hotelGOTo';
break;
case 'car': theTargetField = '#carGOTo';
break;
case 'experience': theTargetField = '#expGOTo';
break;
case 'flighthotel': theTargetField = '#packageTo';
break;
case 'flightcar': theTargetField = '#packageTo';
break;
}
finalURL = OJUrl + '?capability=' + productType + '&ajaxSearch=' + stationCode + "&language=" + acLanguage;
$.get(finalURL, function(data){
var ansLength = data.length;
if(ansLength > 0){
data = data.replace(/\r/g,'');
data = data.replace(/\n/g,'');
var splitData = data.split("<li");
for (var i=0; i<=splitData.length; i++) {
var gwmatch = /gw="(.+?)"\s*country/.exec(splitData[i]);
if (gwmatch) {
if ((gwmatch[1]==stationCode.toUpperCase())) {
var ojGw=gwmatch[1];
var textmatch = /">(.+?)<\/li>/.exec(splitData[i]);
							if (textmatch) {
								var ojText=textmatch[1];
								//if the code is in the text in brackets
								if (ojText.indexOf('('+stationCode.toUpperCase())!=-1) {								
									var idmatch = /id\s*=\s*"(.+?)"\s*name/.exec(splitData[i]);
									if (idmatch) {
										var ojId=idmatch[1];	
									}							
									var countrymatch = /country\s*=\s*"(.+?)">/.exec(splitData[i]);
									if (countrymatch) {
										var ojCountry=countrymatch[1];
									}									
									if ((ojId) && (ojGw) && (ojCountry) && (ojText)) {		//sanity check
										$("#ojId").val(ojId);
										$("#ojGw").val(ojGw);
										$("#ojCountry").val(ojCountry);
										$(theTargetField).val(ojText);	
										return;
									}	
								}
							}							
						}
					}					
				}				
			}
		});
	}
	








