(function(A){jQuery.autocomplete=function(E,V){var Q=this;var Z=A(E).attr("autocomplete","off");if(V.inputClass){Z.addClass(V.inputClass)}var R=document.createElement("div");var J=A(R).hide().addClass(V.resultsClass).css("position","absolute");if(V.width>0){J.css("width",V.width)}A("body").append(R);E.autocompleter=Q;var j=null;var Y="";var l=-1;var K={};var c=false;var M=false;var B=null;var L=false;var I=false;function N(){K={};K.data={};K.length=0}N();if(V.data!=null){var T="",q={},O=[];if(typeof V.url!="string"){V.cacheLength=1}for(var o=0;o<V.data.length;o++){O=((typeof V.data[o]=="string")?[V.data[o]]:V.data[o]);if(O[0].length>0){T=O[0].substring(0,1).toLowerCase();if(!q[T]){q[T]=[]}q[T].push(O)}}for(var n in q){V.cacheLength++;F(n,q[n])}}Z.keydown(function(i){B=i.keyCode;switch(i.keyCode){case 38:i.preventDefault();e(-1);break;case 40:i.preventDefault();e(1);break;case 9:case 13:if(g()){if(V.blur){Z.get(0).blur()}i.preventDefault()}break;default:l=-1;if(j){clearTimeout(j)}j=setTimeout(function(){U()},V.delay);break}}).focus(function(){M=true}).blur(function(){M=false;if(!L){D()}});W();function U(){if(B==46||(B>8&&B<32)){return J.hide()}var i=Z.val();if(i==Y){return }Y=i;if(i.length>=V.minChars){Z.addClass(V.loadingClass);d(i)}else{Z.removeClass(V.loadingClass);J.hide()}}function e(k){var i=A("li",R);if(!i){return }l+=k;if(l<0){l=0}else{if(l>=i.size()){l=i.size()-1}}i.removeClass("ac_over");A(i[l]).addClass("ac_over")}function g(){var i=A("li.ac_over",R)[0];if(!i){var k=A("li",R);if(V.selectOnly){if(k.length==1){i=k[0]}}else{if(V.selectFirst){i=k[0]}}}if(i){S(i);return true}else{return false}}function S(i){if(!i){i=document.createElement("li");i.extra=[];i.selectValue=""}var k=A.trim(i.selectValue?i.selectValue:i.innerHTML);E.lastSelected=k;Y=k;J.html("");Z.val(k);W();if(V.onItemSelect){setTimeout(function(){V.onItemSelect(i)},1)}}function C(s,k){var r=Z.get(0);if(r.createTextRange){var i=r.createTextRange();i.collapse(true);i.moveStart("character",s);i.moveEnd("character",k);i.select()}else{if(r.setSelectionRange){r.setSelectionRange(s,k)}else{if(r.selectionStart){r.selectionStart=s;r.selectionEnd=k}}}r.focus()}function X(i){if(B!=8){Z.val(Z.val()+i.substring(Y.length));C(Y.length,i.length)}}function f(){var k=a(E);var i=(V.width>0)?V.width:Z.width();J.css({width:parseInt(i)+"px",top:(k.y+E.offsetHeight)+"px",left:k.x+"px"}).show()}function D(){if(j){clearTimeout(j)}j=setTimeout(W,200)}function W(){if(I){return }I=true;if(j){clearTimeout(j)}var i=Z.removeClass(V.loadingClass).val();if(J.is(":visible")){J.hide()}if(V.mustMatch){if(!E.lastSelected||E.lastSelected!=i){S(null)}}I=false}function H(k,i){if(i){Z.removeClass(V.loadingClass);R.innerHTML="";if(!M||i.length==0){return W()}if(A.browser.msie){J.append(document.createElement("iframe"))}R.appendChild(m(i));if(V.autoFill&&(Z.val().toLowerCase()==k.toLowerCase())){X(i[0][0])}f()}else{W()}}function G(t){if(!t){return null}var k=[];var s=t.split(V.lineSeparator);for(var r=0;r<s.length;r++){var u=A.trim(s[r]);if(u){k[k.length]=u.split(V.cellSeparator)}}return k}function m(w){var v=document.createElement("ul");var t=w.length;if((V.maxItemsToShow>0)&&(V.maxItemsToShow<t)){t=V.maxItemsToShow}for(var u=0;u<t;u++){var x=w[u];if(!x){continue}var r=document.createElement("li");if(V.formatItem){r.innerHTML=V.formatItem(x,u,t);r.selectValue=x[0]}else{r.innerHTML=x[0];r.selectValue=x[0]}var k=null;if(x.length>1){k=[];for(var s=1;s<x.length;s++){k[k.length]=x[s]}}r.extra=k;v.appendChild(r);A(r).hover(function(){A("li",v).removeClass("ac_over");A(this).addClass("ac_over");l=A("li",v).indexOf(A(this).get(0))},function(){A(this).removeClass("ac_over")}).click(function(i){i.preventDefault();i.stopPropagation();S(this)})}A(v).mousedown(function(){L=true}).mouseup(function(){L=false});return v}function d(k){if(!V.matchCase){k=k.toLowerCase()}var i=V.cacheLength?p(k):null;if(false){H(k,i)}else{if((typeof V.url=="string")&&(V.url.length>0)){A.get(P(k),function(r){r=G(r);F(k,r);H(k,r)})}else{Z.removeClass(V.loadingClass)}}}function P(t){var r=V.url.indexOf("?")==-1?"?":"&";var k=V.url+r+"q="+encodeURIComponent(t);for(var s in V.extraParams){k+="&"+s+"="+encodeURI(V.extraParams[s])}return k}function p(w){if(!w){return null}if(K.data[w]){return K.data[w]}if(V.matchSubset){for(var u=w.length-1;u>=V.minChars;u--){var r=w.substr(0,u);var y=K.data[r];if(y){var v=[];for(var s=0;s<y.length;s++){var k=y[s];var t=k[0];if(b(t,w)){v[v.length]=k}}return v}}}return null}function b(t,r){if(!V.matchCase){t=t.toLowerCase()}var k=t.indexOf(r);if(k==-1){return false}return k==0||V.matchContains}this.flushCache=function(){N()};this.setExtraParams=function(i){V.extraParams=i};this.findValue=function(){var k=Z.val();if(!V.matchCase){k=k.toLowerCase()}var i=V.cacheLength?p(k):null;if(i){h(k,i)}else{if((typeof V.url=="string")&&(V.url.length>0)){A.get(P(k),function(r){r=G(r);F(k,r);h(k,r)})}else{h(k,null)}}};function h(w,v){if(v){Z.removeClass(V.loadingClass)}var t=(v)?v.length:0;var r=null;for(var u=0;u<t;u++){var x=v[u];if(x[0].toLowerCase()==w.toLowerCase()){r=document.createElement("li");if(V.formatItem){r.innerHTML=V.formatItem(x,u,t);r.selectValue=x[0]}else{r.innerHTML=x[0];r.selectValue=x[0]}var k=null;if(x.length>1){k=[];for(var s=1;s<x.length;s++){k[k.length]=x[s]}}r.extra=k}}if(V.onFindValue){setTimeout(function(){V.onFindValue(r)},1)}}function F(k,i){if(!i||!k||!V.cacheLength){return }if(!K.length||K.length>V.cacheLength){N();K.length++}else{if(!K[k]){K.length++}}K.data[k]=i}function a(k){var r=k.offsetLeft||0;var i=k.offsetTop||0;while(k=k.offsetParent){r+=k.offsetLeft;i+=k.offsetTop}return{x:r,y:i}}};jQuery.fn.autocomplete=function(C,B,D){B=B||{};B.url=C;B.data=((typeof D=="object")&&(D.constructor==Array))?D:null;B.inputClass=B.inputClass||"ac_input";B.resultsClass=B.resultsClass||"ac_results";B.lineSeparator=B.lineSeparator||"\n";B.cellSeparator=B.cellSeparator||"|";B.minChars=B.minChars||1;B.delay=B.delay||400;B.matchCase=B.matchCase||0;B.matchSubset=B.matchSubset||1;B.matchContains=B.matchContains||0;B.cacheLength=B.cacheLength||1;B.mustMatch=B.mustMatch||0;B.extraParams=B.extraParams||{};B.loadingClass=B.loadingClass||"ac_loading";B.selectFirst=B.selectFirst||false;B.selectOnly=B.selectOnly||false;B.maxItemsToShow=B.maxItemsToShow||-1;B.autoFill=B.autoFill||false;B.width=parseInt(B.width,10)||0;this.each(function(){var E=this;new jQuery.autocomplete(E,B)});return this};jQuery.fn.autocompleteArray=function(C,B){return this.autocomplete(null,B,C)};jQuery.fn.indexOf=function(C){for(var B=0;B<this.length;B++){if(this[B]==C){return B}}return -1}})(jQuery)