


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, responseParser, afterSelection) {
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,responseParser,afterSelection);
}
});


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,responseParser,afterSelection)}, 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, afterSelection);
} 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, afterSelection);
}
break;
}
});

}


function autoComplete(lastValue, searchBox, resultsBox, url, responseParser, afterSelection) {

var part = $(searchBox).val();


if(part.length<3) {
clearAutoComplete();
return;
}


if(lastValue != part){
return;
}

var finalURL = "";
if(typeof(url)=="function") {
finalURL=url(part);
} else {
finalURL = url + part;
}


$.get(finalURL, function(data){

var ansLength = data.length;


if(ansLength > 0){	

data = parseData(data, responseParser);

$(resultsBox).empty();
$(resultsBox).append(data);
$(resultsBox).css("display","block");

var options = $(resultsBox + " > select > option");

acListTotal = options.size();




$(resultsBox + " > select").change( function() {
makeSelection(searchBox, resultsBox, afterSelection);
});


$(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, responseParser) {
if (response.length > 0) {
if ( typeof(responseParser)=="function" ) {
return responseParser(response);
} else {
return response;
}
} else {
return "";
}
}


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,afterSelection) {

var selectedOption = $(resultsBox + " > select > option:selected");

$(searchBox).val(selectedOption.text());
if ( typeof(afterSelection)=="function" ) {
afterSelection(selectedOption);
}
clearAutoComplete();
}


function DWRdestsResponseParser(response) {





var splitData = response.split("\n");

var s0 = eval(splitData[0] + ";s0;");

var optionsString='<select name="destChoices" id="destChoices" size="4" onfocus="hideCal();">';
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 "";
}
}
function OJdestsResponseParser(response){
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;
}

function OJonSelection(selectedOption) {
$("#ojId").val(selectedOption.val());
$("#ojGw").val(selectedOption.attr("gw"));
$("#ojCountry").val(selectedOption.attr("country"));
}
