(function(J){var P=13;var M=9;var E=27;var G=37;var L=38;var I=39;var Q=40;var N=8;var K=46;function A(R){J("#info").append(F(R)+"<br>")}function D(U){var W=-1;var R=-1;if(typeof U.selectionStart!="undefined"){W=U.selectionStart;R=U.selectionEnd}else{if(document.selection&&document.selection.createRange){var V=document.selection.createRange();var S;try{S=V.duplicate();S.moveToElementText(U)}catch(T){S=U.createTextRange()}S.setEndPoint("EndToStart",V);W=S.text.length;if(W>U.value.length){W=-1}S.setEndPoint("EndToStart",V);R=S.text.length;if(R>U.value.length){R=-1}}}return{start:W,end:R}}function C(S,R){S.focus();if(S.setSelectionRange){S.setSelectionRange(R,R)}else{if(S.createTextRange){m=S.createTextRange();m.moveStart("character",R);m.collapse();m.select()}}}function B(T){var R=[];for(var S=0;S<T.length;S++){if(T[S].id!=undefined&&T[S].value!=undefined){T[S].id=T[S].id+"";T[S].value=T[S].value+"";if(T[S].info!=undefined){T[S].info=T[S].info+""}R.push(T[S])}}return R}function H(R){if(R==undefined||!R){return""}return R.replace("\\","\\\\").replace("*","\\*").replace(".","\\.").replace("/","\\/")}function F(R){if(R==undefined||!R){return""}return R.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")}function O(R){if(R==undefined||!R){return""}return R.replace(/^\s+/g,"")}J.fn.autocomplete=function(R){return this.each(function(){var t=J(this);var h=J(this).get(0);if(!t.is("input:text,input:password,textarea")){return }if(!R&&(!J.isFunction(R.get)||!R.ajax_get)){return }if(t.attr("jqac")=="on"){return }t.attr("jqac","on");t.attr("autocomplete","off");R=J.extend({delay:500,timeout:5000,minchars:3,multi:false,cache:true,height:150,autowidth:false,noresults:"No results"},R);t.keydown(function(v){switch(v.which){case P:if(!u){return true}else{Z()}return false;case E:Y();return false}return true});t.keypress(function(v){switch(v.keyCode){case P:case E:return false;case L:j(v.keyCode);return false;case Q:if(!u){a(o())}else{j(v.keyCode)}return false}return true});t.keyup(function(v){switch(v.which){case P:case E:case G:case I:case L:case Q:return false;default:a(o())}return true});var r="";var X=0;var l=[];var b=0;var u=false;var q=false;var S=false;var T=false;var U=false;var f=false;var n=t.css("z-index");function o(){var w=t.val();if(R.multi){var y=D(h);var x=y.start;for(;x>0&&w.charAt(x-1)!=",";x--){}var v=y.start;for(;v<w.length&&w.charAt(v)!=",";v++){}var w=w.substr(x,v-x)}return O(w)}function V(x){r=x;if(R.multi){var AA=t.val();var z=D(h);var y=z.start;for(;y>0&&AA.charAt(y-1)!=",";y--){}var w=z.start;for(;w<AA.length&&AA.charAt(w)!=",";w++){}var v=AA.substr(0,y)+(y>0?" ":"")+x+AA.substr(w);t.val(v);C(h,y+x.length+(y>0?1:0))}else{h.focus();t.val(x)}}function a(y){if(y.length<R.minchars){Y();return false}if(R.cache&&y.length>X&&l.length){var v=[];for(var w=0;w<l.length;w++){var x=new RegExp("("+H(y)+")","ig");if(x.exec(l[w].value)){v.push(l[w])}}r=y;X=y.length;l=v;W(l);return false}else{clearTimeout(U);r=y;X=y.length;U=setTimeout(function(){l=[];if(J.isFunction(R.pre_callback)){R.pre_callback()}if(J.isFunction(R.get)){l=B(R.get(y));W(l)}else{if(J.isFunction(R.ajax_get)){Y();f=setTimeout(k,R.delay);R.ajax_get(y,c)}}},R.delay)}return false}function c(v){p();l=B(v);W(l)}function k(){if(!S){S=J('<div class="jqac-menu"><div class="jqac-loading">Loading</div></div>').get(0);J(S).css("position","absolute");var v=t.offset();J(S).css("left",v.left+"px");J(S).css("top",(v.top+t.height()+2)+"px");if(!R.autowidth){J(S).width(t.width())}J("body").append(S)}J(S).show();setTimeout(p,10000)}function p(){if(S){J(S).hide()}clearTimeout(f)}function W(w){if(u){J(u).remove()}p();d();u=J('<div class="jqac-menu"></div>').get(0);J(u).css({position:"absolute","z-index":n,"max-height":R.height+"px","overflow-y":"auto"});q=J("<ul></ul>").get(0);J(q).css("list-style","none").css("margin","0px").css("padding","2px").css("overflow","hidden");var AA=new RegExp("("+H(F(r))+")","ig");for(var y=0;y<w.length;y++){var AB=new String(w[y].value);var x=F(AB).replace(AA,"<em>$1</em>");var z=J('<span class="jqac-link">'+x+"</span>").get(0);if(w[y].info!=undefined&&w[y].info!=""){J(z).append(J('<div class="jqac-info">'+w[y].info+"</div>"))}J(z).attr("name",y+1);J(z).click(function(){Z()});J(z).mouseover(function(){s(J(this).attr("name"),true)});var v=J("<li></li>").get(0);J(v).append(z);J(q).append(v)}if(w.length==0){J(q).append('<li class="jqac-warning">'+R.noresults+"</li>")}J(u).append(q);var AC=t.offset();J(u).css("left",AC.left+"px");J(u).css("top",(AC.top+t.height()+2)+"px");if(!R.autowidth){J(u).width(t.width())}J(u).mouseover(function(){d()});J(u).mouseout(function(){g()});J("body").append(u);if(J.fn.bgiframe){J(u).bgiframe({height:u.scrollHeight})}if(u.scrollHeight>R.height){J(u).height(R.height);J(u).width(J(u).width()+20)}b=0;T=setTimeout(function(){Y()},R.timeout)}function Z(){if(b&&l[b-1]){var v=l[b-1];if(v.affected_value!=undefined&&v.affected_value!=""){V(v.affected_value)}else{V(v.value)}if(J.isFunction(R.callback)){R.callback(l[b-1])}Y()}}function j(v){if(!q||l.length==0){return false}var w;if(v==Q){w=b+1}else{if(v==L){w=b-1}}if(w>J(q).children().size()){w=1}if(w<1){w=J(q).children().size()}s(w)}function s(x,w){if(!q){return false}if(b>0){e()}b=Number(x);var v=J(q).children().get(b-1);v.className="jqac-highlight";if(!w){i(v)}d()}function e(){if(!q){return false}if(b>0){J(q).children().get(b-1).className="";b=0}}function Y(){d();if(u){J(u).remove();u=false;q=false;b=0}}function i(z){if(!u){return false}var w=u.clientHeight;var AA=u.scrollHeight;var y=u.scrollTop;var v=z.offsetTop;var x=v+z.offsetHeight;if(x>y+w){u.scrollTop=x-w}else{if(v<y){u.scrollTop=v}}return true}function d(){clearTimeout(T)}function g(){clearTimeout(T);T=setTimeout(function(){Y()},1000)}})}})($);