jQuery.autocomplete=function(input,options){var $input=$(input).attr("autocomplete","off");if(options.dropdown){options.dropdown.mousedown(function(event){if(results.style.display!="none"){hideResults();}else{ignoreFocus=true;prepareRequest("");var waitForNextClick=function(){$().one("mousedown",function(e){if(ignoreFocus){if(e.target==ul){setTimeout(waitForNextClick,0);}else{hideResults();}}});};setTimeout(waitForNextClick,0);}});}
$input.unload(function(){flushCache();});if(options.inputClass){$input.addClass(options.inputClass);}
var results=document.createElement("div");results.style.display="none";results.style.position="absolute";results.className=options.resultsClass;var ul=document.createElement("ul");results.appendChild(ul);document.body.appendChild(results);var timeout=0;var active=null;var cache;var hasFocus=false;var ignoreFocus=false;var lastKeyPressCode=0;var isValid=false;var quickjump={};var lastSelected="";function flushCache(){cache={length:0,data:{}};}
$(results).mouseover(function(e){if(e.target.parentNode==ul){if(active){$(active).removeClass("ac-over");}
active=e.target;$(e.target).addClass("ac-over");}}).mousedown(function(e){var node=e.target;do{if(node.parentNode==ul){selectItem(node);break;}
node=node.parentNode;}while(node);});flushCache();if(options.data!=null){var sFirstChar="",stMatchSets={},row=[];if(typeof options.url!="string"){options.cacheLength=1;}
for(var i=0;i<options.data.length;i++){row=((typeof options.data[i]=="string")?[options.data[i]]:options.data[i]);if(row[0].length>0){sFirstChar=row[0].substring(0,1).toLowerCase();if(!stMatchSets[sFirstChar]){stMatchSets[sFirstChar]=[];}
stMatchSets[sFirstChar].push(row);}}
for(var k in stMatchSets){options.cacheLength++;addToCache(k,stMatchSets[k]);}}
$().keyup(function(event){if(!hasFocus&&ignoreFocus&&results.style.display!="none"){var key=String.fromCharCode(event.keyCode);if(key in quickjump){ul.scrollTop=ul.childNodes[quickjump[key]].offsetTop;}}});$input.keydown(function(e){lastKeyPressCode=e.keyCode;switch(e.keyCode){case 38:e.preventDefault();moveSelect(-1);break;case 40:e.preventDefault();moveSelect(1);break;case 9:case 13:if(selectCurrent()){input.blur();e.preventDefault();}
break;default:active=null;if(timeout){clearTimeout(timeout);}
timeout=setTimeout(function(){if(e.keyCode>8&&e.keyCode<32){results.style.display="none";}else{inputEvent(e);}},options.delay);break;}}).dblclick(inputEvent).focus(function(){hasFocus=true;ignoreFocus=false;}).blur(function(){hasFocus=false;if(ignoreFocus)
return;$input.removeClass(options.loadingClass);hideResults();if(isValid){if(options.onValid){options.onValid();}}else if(options.onInvalid){options.onInvalid();}});$(ul).mousedown(function(e){if(!ignoreFocus&&e.target==ul){ignoreFocus=true;setTimeout(function(){input.focus();},0);}});function inputEvent(event){prepareRequest(input.value,event.type=="keydown");}
function prepareRequest(value,keyboardinput){$input.removeClass(options.noResultsClass);$("#sx-res-extended-search a.jqmClose").click();if(value.length>=options.minChars(keyboardinput)){$input.addClass(options.loadingClass);requestData(value);}else{$input.removeClass(options.loadingClass);results.style.display="none";}
isValid=false;}
function moveSelect(direction){var newActive=active?(direction<0?active.previousSibling:active.nextSibling):ul.firstChild;if(!newActive){return;}
if(active){$(active).removeClass("ac-over");}
active=newActive;$(active).addClass("ac-over");if(ul.scrollTop>active.offsetTop){ul.scrollTop=active.offsetTop;return;}
var top=active.offsetTop+active.offsetHeight-results.offsetHeight;if(ul.scrollTop<top){ul.scrollTop=top;}}
function selectCurrent(){var li;if(active){li=active;}
if(!li){if(options.selectOnly){if(ul.childNodes.length==1){li=ul.childNodes[0];}}else if(options.selectFirst){li=ul.childNodes[0];}}
if(li){selectItem(li);return true;}
return false;}
function selectItem(li){isValid=true;var stationname=$('li.ac-over .sx-res-station-helper').html();if(typeof(stationname!='undefined')&&stationname!=null){var sname=stationname.replace('&amp;','&');$('li').removeClass('ac-over');var sn=unescape(sname);input.value=lastSelected=li?sn:"";}
hideResults();if(options.onItemSelect){setTimeout(function(){options.onItemSelect(li);},1);}}
function createSelection(start,end){if(input.setSelectionRange){input.setSelectionRange(start,end);}else if("selectionStart"in input){input.selectionStart=start;input.selectionEnd=end;}else if(input.createTextRange){var selRange=input.createTextRange();selRange.collapse(true);selRange.moveStart("character",start);selRange.moveEnd("character",end);selRange.select();}
input.focus();}
function autoFill(sValue){if(lastKeyPressCode!=8){var oldLength=input.value.length;selectItem(ul.firstChild);createSelection(oldLength,sValue.length);}}
function showResults(){if((!hasFocus&&!ignoreFocus)||results.style.display!="none")
return;res.utility.hide_selectboxes();var pos=res.utility.clientRect(input);results.style.top=pos.top+input.offsetHeight+"px";results.style.left=pos.left+"px";results.style.display="block";}
function hideResults(){if(timeout){clearTimeout(timeout);timeout=0;}
ignoreFocus=false;active=null;if(results.style.display!="none"){res.utility.show_selectboxes();results.style.display="none";if(options.mustMatch&&input.value!=lastSelected)
selectItem();}}
function receiveData(q,data){if(!data){hideResults();return;}
$input.removeClass(options.loadingClass);if(data==''){$input.addClass(options.noResultsClass);which=$input.attr('rel');$('#sx-res-extended-search-'+which).click();}
if(data.length==0){hideResults();return;}
ul.innerHTML=dataToHTML(data);if(options.autoFill&&input.value.toLowerCase()==q.toLowerCase()){autoFill(data[0][0]);}
showResults();}
function parseData(data){if(!data){return null;}
var parsed=[];var rows=data.split(options.lineSeparator);for(var i=0;i<rows.length;i++){var row=$.trim(rows[i]);if(row){parsed[parsed.length]=row.split(options.cellSeparator);}}
return parsed;}
function dataToHTML(data){var por=options.extraParams.por;var liso=options.extraParams.liso;var num=data.length;if(options.maxItemsToShow&&num>options.maxItemsToShow){num=options.maxItemsToShow;}
quickjump={};var html=[];try{var test=$('input[@name="uci"]').val();var rell=(por=='return')?$('li[@rel='+test+'] div.ac-res-infobox').attr('rel'):"";}
catch(err){var test=$('input[name="uci"]').val();var rell=(por=='return')?$('li[rel='+test+'] div.ac-res-infobox').attr('rel'):"";}
for(var i=0;i<num;i++){if(por=='return'&&liso=='GB'){if(rell.charAt(0)=='S'&&data[i][3].charAt(0)!='S')continue;else if(rell.charAt(0)=='U'&&data[i][3]!=rell)continue;}
html.push(options.formatItem(data[i]));var key=data[i][0].substring(0,1);if(!(key in quickjump)){quickjump[key]=i;}}
return html.join("");}
function requestData(q){if(!options.matchCase){q=q.toLowerCase();}
var data=options.cacheLength?loadFromCache(q):null;if(data){receiveData(q,data);}else if(typeof options.url=="string"&&options.url){$.get(makeUrl(q),function(data){data=parseData(data);addToCache(q,data);receiveData(q,data);});}else{$input.removeClass(options.loadingClass);}}
function makeUrl(q){var url=options.url+"?q="+encodeURIComponent(q);for(var i in options.extraParams){url+="&"+i+"="+encodeURIComponent(options.extraParams[i]);}
url+="&hash="+new Date().getTime();return url;}
function loadFromCache(q){if(cache.data[q]){return cache.data[q];}
if(options.matchSubset){var minChars=options.minChars();for(var i=q.length-1;i>=minChars;i--){var qs=q.substr(0,i);var c=cache.data[qs];if(c){var csub=[];for(var j=0;j<c.length;j++){var x=c[j];if(matchSubset(x[0],q)){csub[csub.length]=x;}}
return csub;}}}
return null;}
function matchSubset(s,sub){if(!options.matchCase){s=s.toLowerCase();}
var i=s.indexOf(sub);if(i==0){return true;}
if(i>0&&options.matchContains){return new RegExp("\\b"+sub).test(s);}
return false;}
this.flushCache=flushCache;this.hideResults=hideResults;function addToCache(q,data){if(!data||!options.cacheLength){return;}
if(!cache.length||cache.length>options.cacheLength){flushCache();cache.length++;}else if(!cache[q]){cache.length++;}
cache.data[q]=data;}
if(options.preload){$.get(makeUrl(""),function(data){addToCache("",parseData(data));});}}
jQuery.fn.autocomplete=function(url,options,data){options=options||{};options.url=url;options.data=(typeof data=="object"&&data.constructor==Array)?data:null;options.inputClass=options.inputClass||"ac_input";options.resultsClass=options.resultsClass||"ac-results";options.noResultsClass=options.noResultsClass||"ac-noresults";options.lineSeparator=options.lineSeparator||"\n";options.cellSeparator=options.cellSeparator||"|";if(!("minChars"in options)){options.minChars=1;}
if(typeof options.minChars=="number"){var x=options.minChars;options.minChars=function(){return x;};}
options.delay=options.delay||400;options.matchCase=!!options.matchCase;if(!("matchSubset"in options)){options.matchSubset=true;}
options.matchContains=!!options.matchContains;options.cacheLength=options.cacheLength||1;options.mustMatch=!!options.mustMatch;options.preload=!!options.preload;options.extraParams=options.extraParams||{};options.loadingClass=options.loadingClass||"ac-loading";options.selectFirst=!!options.selectFirst;options.selectOnly=!!options.selectOnly;options.maxItemsToShow=options.maxItemsToShow||0;options.autoFill=!options.matchContains&&("autoFill"in options?options.autoFill:true);this.each(function(){this.autocompleter=new jQuery.autocomplete(this,options);});return this;}