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