$.autocomplete=function(wrapper,options){var me=this;$(wrapper).removeClass(options.removeClass);var results=document.createElement("div");$(results).hide();results.style.zIndex=20;wrapper.appendChild(results);$(results).attr("class",options.resultsClass);var input=$(wrapper).find("input").get(0);input.autocompleter=this;input.lastSelected=$(input).val();var timeout=null;var prev="";var active=-1;var cache={};var cover=null;
/*@cc_on
   cover = document.createElement("iframe");
   cover.style.src = "javascript:document.write('');";
   cover.style.display = "none";
   cover.style.zIndex = 10;
   cover.style.position = "absolute";
   cover.setAttribute("scrolling", "no");
   cover.setAttribute("frameborder", "0");
   cover.style.width = "100%";
   wrapper.appendChild(cover);
@*/
$(input).keydown(function(e){switch(e.keyCode){case 38:e.preventDefault();moveSelect(-1);break;case 40:e.preventDefault();moveSelect(1);break;case 9:case 13:if(selectCurrent()){e.preventDefault()}break;default:active=-1;if(timeout){clearTimeout(timeout)}timeout=setTimeout(onChange,options.delay);break}}).blur(function(){hideResults()});hideResultsNow();function onChange(){var v=$(input).val();if(v==prev){return}if(prev=v&&v.length>=options.minChars){$(input).addClass(options.loadingClass);requestData(v)}else{$(input).removeClass(options.loadingClass);$(results).hide();if(cover){$(cover).hide()}}}function moveSelect(step){var lis=$(results).find("li");if(!lis){return}active+=step;if(active<0){active=0}else{if(active>=lis.size()){active=lis.size()-1}}lis.removeClass("over");$(lis.get(active)).addClass("over")}function selectCurrent(){var li=$("li.over",results).get(0);if(li){selectItem(li);return true}else{return false}}function selectItem(li){var v=$.trim(li.extra[0]);input.lastSelected=v;prev=v;$(results).html("");$(input).val(v);hideResultsNow();if(options.onItemSelect){setTimeout(function(){options.onItemSelect(li)},1)}}function hideResults(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(hideResultsNow,200)}function hideResultsNow(){if(timeout){clearTimeout(timeout)}if($(results).is(":visible")){$(results).hide()}if(cover){$(cover).hide()}if(options.mustMatch){var v=$(input).val();if(v!=input.lastSelected){selectItem(document.createElement("li"))}}}function receiveData(q,data){if(data){$(input).removeClass(options.loadingClass);results.innerHTML="";results.appendChild(dataToDom(data));$(results).show();if(cover){cover.style.top=results.offsetTop;cover.style.left=results.offsetLeft;cover.style.width=results.clientWidth+2;cover.style.height=results.clientHeight+2;$(cover).show()}}else{hideResultsNow()}}function parseData(data){if(!data){return null}var parsed=[];var rows=data.split(options.lineSeparator);for(var i=0;i<rows.length;i++){var row=$.trim(rows[i]);if(row){parsed[parsed.length]=row.split(options.cellSeparator)}}return parsed}function dataToDom(data){var ul=document.createElement("ul");for(var i=0;i<data.length;i++){var row=data[i];if(!row){continue}var li=document.createElement("li");li.innerHTML=row[0];var extra=null;if(row.length>1){extra=[];for(var j=1;j<row.length;j++){extra[extra.length]=row[j]}}li.extra=extra;$(li).hover(function(){$(this).addClass("over")},function(){$(this).removeClass("over")}).click(function(e){e.preventDefault();e.stopPropagation();selectItem(this)});ul.appendChild(li)}return ul}function requestData(q){if(!options.matchCase){q=q.toLowerCase()}var data=options.cacheLength?loadFromCache(q):null;if(data){receiveData(q,data)}else{$.get(makeUrl(q),function(data){data=parseData(data);receiveData(q,data)})}}function makeUrl(q){var url=options.url+"?value="+q;url+="&"+options.extraParams();return url}function loadFromCache(q){if(!q){return null}if(cache[q]){return cache[q]}if(options.matchSubset){for(var i=q.length-1;i>=options.minChars;i--){var qs=q.substr(0,i);var c=cache[qs];if(c){var csub=[];for(var j=0;j<c.length;j++){var x=c[j];var x0=x[0];if(matchSubset(x0,q)){csub[csub.length]=x}}return csub}}}return null}function matchSubset(s,sub){if(!options.matchCase){s=s.toLowerCase()}var i=s.indexOf(sub);if(i==-1){return false}return i==0||options.matchContains}this.flushCache=function(){cache={}};this.setExtraParams=function(p){options.extraParams=p};function addToCache(q,data){if(!data||!q||!options.cacheLength){return}if(!cache.length||cache.length>options.cacheLength){cache={};cache.length=1}else{if(!cache[q]){cache.length++}}cache[q]=data}};$.fn.autocomplete=function(b,a){a=a||{};a.url=b;a.removeClass="ac___remove___this___class";a.wrapperClass=a.wrapperClass||"ac_wrapper";a.resultsClass=a.resultsClass||"ac_results";a.lineSeparator=a.lineSeparator||"\n";a.cellSeparator=a.cellSeparator||"|";a.minChars=a.minChars||1;a.delay=a.delay||200;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";this.wrap("<div class='"+a.wrapperClass+" "+a.removeClass+"'></div>");$("."+a.removeClass).each(function(){new $.autocomplete(this,a)});return this};