jQuery.autocomplete=function(h,l){var m=this;var n=$(h).attr("autocomplete","off");if(l.inputClass)n.addClass(l.inputClass);var o=document.createElement("div");var r=$(o);r.hide().addClass(l.resultsClass).css("position","absolute");if(l.width>0)r.css("width",l.width);$("body").append(o);h.autocompleter=m;var t=null;var u="";var w=-1;var y={};var z=false;var A=false;var B=null;function flushCache(){y={};y.data={};y.length=0};flushCache();if(l.data!=null){var C="",stMatchSets={},line='';if(typeof l.url!="string")l.cacheLength=1;for(var i=0;i<l.data.length;i++){line=l.data[i];if(line.length>0){C=line.substring(0,1).toLowerCase();if(!stMatchSets[C])stMatchSets[C]='';stMatchSets[C]=stMatchSets[C]+"\n"+line}}for(var k in stMatchSets){stMatchSets[k]=parseData(stMatchSets[k]);l.cacheLength++;addToCache(k,stMatchSets[k])}}n.keydown(function(e){B=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()){n.get(0).blur();e.preventDefault()}break;default:w=-1;if(t)clearTimeout(t);t=setTimeout(function(){onChange()},l.delay);break}}).focus(function(){A=true}).blur(function(){A=false;hideResults()});hideResultsNow();function onChange(){if(B==46||(B>8&&B<32))return r.hide();var v=n.val();if(v==u)return;u=v;var a=false;if(l.globalShortWordsAllowed.length>0){index=l.globalShortWordsAllowed.length;while(index--){if(v.toLowerCase()==l.globalShortWordsAllowed[index].toLowerCase()){a=true;break}}}if(l.globalFilterIsin&&v.match(new RegExp('^[a-zA-z]{2}[0-9]+',''))){if(v.length<l.globalFilterIsinLengthMin){if(l.globalFilterIsinLengthError!=""){r.html('<ul><li>'+l.globalFilterIsinLengthError+'</li></ul>');showResults()}}else{n.addClass(l.loadingClass);r.hide();if(l.searchText!=""){r.html('<ul><li>'+l.searchText+'</li></ul>');showResults()}requestData(v)}}else if(v.length>=l.minChars||a){n.addClass(l.loadingClass);r.hide();if(l.searchText!=""){r.html('<ul><li>'+l.searchText+'</li></ul>');showResults()}requestData(v)}else{n.removeClass(l.loadingClass);r.hide();if(l.errorMin!=""){r.html('<ul><li>'+l.errorMin+'</li></ul>');showResults()}}};function moveSelect(a){var b=$("li",o);if(!b)return;w+=a;if(w<0){w=0}else if(w>=b.size()){w=b.size()-1}b.removeClass("ac_over");$(b[w]).addClass("ac_over")};function selectCurrent(){if(n.hasClass('ac_loading')||!r.is(":visible")){return false}var a=$("li.ac_over",o)[0];if(!a){var b=$("li",o);if(l.selectOnly){if(b.length==1)a=b[0]}else if(l.selectFirst){a=b[0]}}if(a){selectItem(a);return true}else{return false}};function selectItem(a){if(!a){a=document.createElement("li");a.extra=[];a.selectValue=""}var v=$.trim(a.selectValue);h.lastSelected=v;u=v;r.html("");n.val(v);hideResultsNow();if(l.onItemSelect)setTimeout(function(){l.onItemSelect(a)},1)};function createSelection(a,b){var c=n.get(0);if(c.createTextRange){var d=c.createTextRange();d.collapse(true);d.moveStart("character",a);d.moveEnd("character",b);d.select()}else if(c.setSelectionRange){c.setSelectionRange(a,b)}else{if(c.selectionStart){c.selectionStart=a;c.selectionEnd=b}}c.focus()};function autoFill(a){if(B!=8){n.val(n.val()+a.substring(u.length));createSelection(u.length,a.length)}};function showResults(){var a=findPos(h);var b=(l.width>0)?l.width:n.width();r.css({top:(a.y+h.offsetHeight)+"px",left:a.x+"px"}).show()};function hideResults(){if(t)clearTimeout(t);t=setTimeout(hideResultsNow,200)};function hideResultsNow(){if(t)clearTimeout(t);n.removeClass(l.loadingClass);if(r.is(":visible")){r.hide()}if(l.mustMatch){var v=n.val();if(v!=h.lastSelected){selectItem(null)}}};function receiveData(q,a){if(a){n.removeClass(l.loadingClass);o.innerHTML="";if(!A||a.length==0){if(l.onEmptyList)setTimeout(function(){l.onEmptyList(n)},1);return hideResultsNow()}if($.browser.msie){}o.appendChild(dataToDom(a));if(l.autoFill&&(n.val().toLowerCase()==q.toLowerCase()))autoFill(a[0][0]);showResults()}else{if(l.onEmptyList)setTimeout(function(){l.onEmptyList(n)},1);hideResultsNow()}};function parseData(a){if(!a)return null;var b=[];var c=a.split(l.lineSeparator);for(var i=0;i<c.length;i++){var d=$.trim(c[i]);if(d){b[b.length]=d.split(l.cellSeparator)}}return b};function dataToDom(a){var b=document.createElement("ul");var c=a.length;if((l.maxItemsToShow>0)&&(l.maxItemsToShow<c))c=l.maxItemsToShow;for(var i=0;i<c;i++){var d=a[i];if(!d)continue;var f=document.createElement("li");if(l.formatItem){f.innerHTML=l.formatItem(d,i,c);f.selectValue=d[0]}else{f.innerHTML=d[0];f.selectValue=d[0]}var g=null;if(d.length>1){g=[];for(var j=1;j<d.length;j++){g[g.length]=d[j]}}f.extra=g;b.appendChild(f);$(f).hover(function(){$("li",b).removeClass("ac_over");$(this).addClass("ac_over");w=$("li",b).indexOf($(this).get(0))},function(){$(this).removeClass("ac_over")}).click(function(e){e.preventDefault();e.stopPropagation();selectItem(this)})}return b};function requestData(q){if(!l.matchCase)q=q.toLowerCase();var b=l.cacheLength?loadFromCache(q):null;if(b){receiveData(q,b)}else if((typeof l.url=="string")&&(l.url.length>0)){$.get(makeUrl(q),function(a){a=parseData(a);addToCache(q,a);receiveData(q,a)})}else{n.removeClass(l.loadingClass);if(l.onEmptyList)setTimeout(function(){l.onEmptyList(n)},1)}};function makeUrl(q){var a=l.url+"?q="+encodeURI(q);for(var i in l.extraParams){a+="&"+i+"="+encodeURI(l.extraParams[i])}return a};function loadFromCache(q){if(!q)return null;if(y.data[q])return y.data[q];if(l.matchSubset==1){for(var i=q.length-1;i>=l.minChars;i--){var a=q.substr(0,i);var c=y.data[a];if(c){var b=[];for(var j=0;j<c.length;j++){var x=c[j];var d=x[0];if(matchSubset(d,q)){b[b.length]=x}}return b}}}return null};function matchSubset(s,a){if(!l.matchCase)s=s.toLowerCase();var i=s.indexOf(a);if(i==-1)return false;return i==0||l.matchContains};this.flushCache=function(){flushCache()};this.setExtraParams=function(p){l.extraParams=p};this.findValue=function(){var q=n.val();if(!l.matchCase)q=q.toLowerCase();var b=l.cacheLength?loadFromCache(q):null;if(b){findValueCallback(q,b)}else if((typeof l.url=="string")&&(l.url.length>0)){$.get(makeUrl(q),function(a){a=parseData(a);addToCache(q,a);findValueCallback(q,a)})}else{findValueCallback(q,null)}};function findValueCallback(q,a){if(a)n.removeClass(l.loadingClass);var b=(a)?a.length:0;var c=null;for(var i=0;i<b;i++){var d=a[i];if(d[0].toLowerCase()==q.toLowerCase()){c=document.createElement("li");if(l.formatItem){c.innerHTML=l.formatItem(d,i,b);c.selectValue=d[0]}else{c.innerHTML=d[0];c.selectValue=d[0]}var e=null;if(d.length>1){e=[];for(var j=1;j<d.length;j++){e[e.length]=d[j]}}c.extra=e}}if(l.onFindValue)setTimeout(function(){l.onFindValue(c)},1)};function addToCache(q,a){if(!a||!q||!l.cacheLength)return;if(!y.length||y.length>l.cacheLength){flushCache();y.length++}else if(!y[q]){y.length++}y.data[q]=a};function findPos(a){var b=a.offsetLeft||0;var c=a.offsetTop||0;while(a=a.offsetParent){b+=a.offsetLeft;c+=a.offsetTop}return{x:b,y:c}}};jQuery.fn.autocomplete=function(b,c,d){c=c||{};c.url=b;c.data=((typeof d=="object")&&(d.constructor==Array))?d:null;c.inputClass=c.inputClass||"ac_input";c.resultsClass=c.resultsClass||"ac_results";c.lineSeparator=c.lineSeparator||"\n";c.cellSeparator=c.cellSeparator||"|";c.minChars=c.minChars||1;c.delay=c.delay||400;c.matchCase=c.matchCase||0;c.matchSubset=c.matchSubset;c.matchContains=c.matchContains||0;c.cacheLength=c.cacheLength||1;c.mustMatch=c.mustMatch||0;c.extraParams=c.extraParams||{};c.loadingClass=c.loadingClass||"ac_loading";c.selectFirst=c.selectFirst||false;c.selectOnly=c.selectOnly||false;c.maxItemsToShow=c.maxItemsToShow||-1;c.autoFill=c.autoFill||false;c.width=parseInt(c.width,10)||0;c.errorMin=c.errorMin||"";c.searchText=c.searchText||"";c.globalFilterIsin=c.globalFilterIsin||false;c.globalFilterIsinLengthMin=c.globalFilterIsinLengthMin||8;c.globalFilterIsinLengthError=c.globalFilterIsinLengthError||"";if(c.globalShortWordsAllowed){var e=c.globalShortWordsAllowed.split(",");var f=e.length;while(f--){var g=e[f];e[f]=trim(g)}c.globalShortWordsAllowed=e}else{c.globalShortWordsAllowed=new Array()}this.each(function(){var a=this;new jQuery.autocomplete(a,c)});return this};jQuery.fn.autocompleteArray=function(a,b){return this.autocomplete(null,b,a)};jQuery.fn.indexOf=function(e){for(var i=0;i<this.length;i++){if(this[i]==e)return i}return-1};