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