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