

(function(A){A.fn.extend({autocomplete:function(C,D){var B=typeof C=="string";D=A.extend({},A.Autocompleter.defaults,{url:B?C:null,data:B?null:C,delay:B?A.Autocompleter.defaults.delay:10,max:D&&!D.scroll?10:150},D);D.autoDisplay=D.autoDisplay||false;D.highlight=D.highlight||function(E){return E};D.formatMatch=D.formatMatch||D.formatItem;return this.each(function(){new A.Autocompleter(this,D)})},result:function(B){return this.bind("result",B)},search:function(B){return this.trigger("search",[B])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(B){return this.trigger("setOptions",[B])},unautocomplete:function(){return this.trigger("unautocomplete")}});A.Autocompleter=function(O,J){var E={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var D=A(O).attr("autocomplete","off").addClass(J.inputClass);var M;var S="";var P=A.Autocompleter.Cache(J);var G=0;var X;var I={mouseDownOnSelect:false};var U=A.Autocompleter.Select(J,O,F,I);var C;A.browser.opera&&A(O.form).bind("submit.autocomplete",function(){if(C){C=false;return false}});D.bind((A.browser.opera?"keypress":"keydown")+".autocomplete",function(Y){X=Y.keyCode;switch(Y.keyCode){case E.UP:Y.preventDefault();if(U.visible()){U.prev()}else{W(0,true)}break;case E.DOWN:Y.preventDefault();if(U.visible()){U.next()}else{W(0,true)}break;case E.PAGEUP:Y.preventDefault();if(U.visible()){U.pageUp()}else{W(0,true)}break;case E.PAGEDOWN:Y.preventDefault();if(U.visible()){U.pageDown()}else{W(0,true)}break;case J.multiple&&A.trim(J.multipleSeparator)==","&&E.COMMA:case E.TAB:case E.RETURN:if(F()){Y.preventDefault();C=true;return false}break;case E.ESC:U.hide();break;default:clearTimeout(M);M=setTimeout(W,J.delay);break}}).focus(function(){G++;if(J.autoDisplay){W(0,true)}}).blur(function(){G=0;if(!I.mouseDownOnSelect){V()}}).click(function(){if(G++>1&&!U.visible()){W(0,true)}}).bind("search",function(){var Y=(arguments.length>1)?arguments[1]:null;function Z(b,a){var c;if(a&&a.length){for(var d=0;d<a.length;d++){if(a[d].result.toLowerCase()==b.toLowerCase()){c=a[d];break}}}if(typeof Y=="function"){Y(c)}else{D.trigger("result",c&&[c.data,c.value])}}A.each(K(D.val()),function(a,b){H(b,Z,Z)})}).bind("flushCache",function(){P.flush()}).bind("setOptions",function(){A.extend(J,arguments[1]);if("data" in arguments[1]){P.populate()}}).bind("unautocomplete",function(){U.unbind();D.unbind();A(O.form).unbind(".autocomplete")});function F(){var Z=U.selected();if(!Z){return false}var Y=Z.result;S=Y;if(J.multiple){var a=K(D.val());if(a.length>1){Y=a.slice(0,a.length-1).join(J.multipleSeparator)+J.multipleSeparator+Y}Y+=J.multipleSeparator}D.val(Y);B();D.trigger("result",[Z.data,Z.value]);return true}function W(a,Z){if(X==E.DEL){U.hide();return }var Y=D.val();if(!Z&&Y==S){return }S=Y;Y=L(Y);if(Y.length>=J.minChars){D.addClass(J.loadingClass);if(!J.matchCase){Y=Y.toLowerCase()}H(Y,N,B)}else{Q();U.hide()}}function K(Z){if(!Z){return[""]}var a=Z.split(J.multipleSeparator);var Y=[];A.each(a,function(c,b){if(A.trim(b)){Y[c]=A.trim(b)}});return Y}function L(Y){if(!J.multiple){return Y}var Z=K(Y);return Z[Z.length-1]}function T(Y,Z){if(J.autoFill&&(L(D.val()).toLowerCase()==Y.toLowerCase())&&X!=E.BACKSPACE){D.val(D.val()+Z.substring(L(S).length));A.Autocompleter.Selection(O,S.length,S.length+Z.length)}}function V(){clearTimeout(M);M=setTimeout(B,200)}function B(){var Y=U.visible();U.hide();clearTimeout(M);Q();if(J.mustMatch){D.search(function(Z){if(!Z){if(J.multiple){var a=K(D.val()).slice(0,-1);D.val(a.join(J.multipleSeparator)+(a.length?J.multipleSeparator:""))}else{D.val("")}}})}if(Y){A.Autocompleter.Selection(O,O.value.length,O.value.length)}}function N(Z,Y){if(Y&&Y.length&&G){Q();U.display(Y,Z);T(Z,Y[0].value);U.show()}else{B()}}function H(a,c,Z){if(!J.matchCase){a=a.toLowerCase()}var b=P.load(a);if(b&&b.length){c(a,b)}else{if((typeof J.url=="string")&&(J.url.length>0)){var Y={timestamp:+new Date()};A.each(J.extraParams,function(d,e){Y[d]=typeof e=="function"?e():e});A.ajax({mode:"abort",port:"autocomplete"+O.name,dataType:J.dataType,url:J.url,data:A.extend({q:L(a),limit:J.max},Y),success:function(e){var d=J.parse&&J.parse(e)||R(e);P.add(a,d);c(a,d)}})}else{U.emptyList();Z(a)}}}function R(c){var Z=[];var b=c.split("\n");for(var a=0;a<b.length;a++){var Y=A.trim(b[a]);if(Y){Y=Y.split("|");Z[Z.length]={data:Y,value:Y[0],result:J.formatResult&&J.formatResult(Y,Y[0])||Y[0]}}}return Z}function Q(){D.removeClass(J.loadingClass)}};A.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(B){return B[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(B,C){return B.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+C.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};A.Autocompleter.Cache=function(H){var E={};var C=0;function B(K,J){if(!H.matchCase){K=K.toLowerCase()}var I=K.indexOf(J);if(I==-1){return false}return I==0||H.matchContains}function F(J,I){if(C>H.cacheLength){G()}if(!E[J]){C++}E[J]=I}function D(){if(!H.data){return false}var N={},M=0;if(!H.url){H.cacheLength=1}N[""]=[];for(var P=0,O=H.data.length;P<O;P++){var I=H.data[P];I=(typeof I=="string")?[I]:I;var L=H.formatMatch(I,P+1,H.data.length);if(L===false){continue}var K=L.charAt(0).toLowerCase();if(!N[K]){N[K]=[]}var J={value:L,data:I,result:H.formatResult&&H.formatResult(I)||L};N[K].push(J);if(M++<H.max){N[""].push(J)}}A.each(N,function(Q,R){H.cacheLength++;F(Q,R)})}setTimeout(D,25);function G(){E={};C=0}return{flush:G,add:F,populate:D,load:function(M){if(!H.cacheLength||!C){return null}if(!H.url&&H.matchContains){var L=[];for(var J in E){if(J.length>0){var I=E[J];A.each(I,function(N,O){if(B(O.value,M)){L.push(O)}})}}return L}else{if(E[M]){return E[M]}else{if(H.matchSubset){for(var K=M.length-1;K>=H.minChars;K--){var I=E[M.substr(0,K)];if(I){var L=[];A.each(I,function(N,O){if(B(O.value,M)){L[L.length]=O}});return L}}}}}return null}}};A.Autocompleter.Select=function(M,R,B,F){var Q={ACTIVE:"ac_over"};var S,N=-1,H,C="",I=true,K,E;function D(){if(!I){return }K=A("<div/>").hide().addClass(M.resultsClass).css("position","absolute").appendTo(document.body);E=A("<ul/>").appendTo(K).mouseover(function(T){if(G(T).nodeName&&G(T).nodeName.toUpperCase()=="LI"){N=A("li",E).removeClass(Q.ACTIVE).index(G(T));A(G(T)).addClass(Q.ACTIVE)}}).click(function(T){A(G(T)).addClass(Q.ACTIVE);B();return false}).mousedown(function(){F.mouseDownOnSelect=true}).mouseup(function(){F.mouseDownOnSelect=false});if(M.width>0){K.css("width",M.width)}I=false}function G(U){var T=U.target;while(T&&T.tagName!="LI"){T=T.parentNode}if(!T){return[]}return T}function P(T){S.slice(N,N+1).removeClass(Q.ACTIVE);O(T);var V=S.slice(N,N+1).addClass(Q.ACTIVE);if(M.scroll){var U=0;S.slice(0,N).each(function(){U+=this.offsetHeight});if((U+V[0].offsetHeight-E.scrollTop())>E[0].clientHeight){E.scrollTop(U+V[0].offsetHeight-E.innerHeight())}else{if(U<E.scrollTop()){E.scrollTop(U)}}}}function O(T){N+=T;if(N<0){N=S.size()-1}else{if(N>=S.size()){N=0}}}function J(T){return M.max&&M.max<T?M.max:T}function L(){E.empty();var U=J(H.length);for(var V=0;V<U;V++){if(!H[V]){continue}var W=M.formatItem(H[V].data,V+1,U,H[V].value,C);if(W===false){continue}var T=A("<li/>").html(M.highlight(W,C)).addClass(V%2==0?"ac_even":"ac_odd").appendTo(E)[0];A.data(T,"ac_data",H[V])}S=E.find("li");if(M.selectFirst){S.slice(0,1).addClass(Q.ACTIVE);N=0}if(A.fn.bgiframe){E.bgiframe()}}return{display:function(U,T){D();H=U;C=T;L()},next:function(){P(1)},prev:function(){P(-1)},pageUp:function(){if(N!=0&&N-8<0){P(-N)}else{P(-8)}},pageDown:function(){if(N!=S.size()-1&&N+8>S.size()){P(S.size()-1-N)}else{P(8)}},hide:function(){K&&K.hide();S&&S.removeClass(Q.ACTIVE);N=-1},visible:function(){return K&&K.is(":visible")},current:function(){return this.visible()&&(S.filter("."+Q.ACTIVE)[0]||M.selectFirst&&S[0])},show:function(){var V=A(R).offset();K.css({width:typeof M.width=="string"||M.width>0?M.width:A(R).width(),top:V.top+R.offsetHeight,left:V.left}).show();if(M.scroll){E.scrollTop(0);E.css({maxHeight:M.scrollHeight,overflow:"auto"});if(A.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var T=0;S.each(function(){T+=this.offsetHeight});var U=T>M.scrollHeight;E.css("height",U?M.scrollHeight:T);if(!U){S.width(E.width()-parseInt(S.css("padding-left"))-parseInt(S.css("padding-right")))}}}},selected:function(){var T=S&&S.filter("."+Q.ACTIVE).removeClass(Q.ACTIVE);return T&&T.length&&A.data(T[0],"ac_data")},emptyList:function(){E&&E.empty()},unbind:function(){K&&K.remove()}}};A.Autocompleter.Selection=function(E,B,D){if(E.createTextRange){var C=E.createTextRange();C.collapse(true);C.moveStart("character",B);C.moveEnd("character",D);C.select()}else{if(E.setSelectionRange){E.setSelectionRange(B,D)}else{if(E.selectionStart){E.selectionStart=B;E.selectionEnd=D}}}}})(jQuery); 
