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