!function($){"use strict";function fnFormatResult(a,b,c){var d="("+c.replace(reEscape,"\\$1")+")";return a.replace(new RegExp(d,"gi"),"$1")}function Autocomplete(a,b){this.el=$(a),this.el.attr("autocomplete","off"),this.suggestions=[],this.data=[],this.img=[],this.badQueries=[],this.selectedIndex=-1,this.currentValue=this.el.val(),this.intervalId=0,this.cachedResponse=[],this.onChangeInterval=null,this.onChange=null,this.ignoreValueChange=!1,this.serviceUrl=b.serviceUrl,this.isLocal=!1,this.options={autoSubmit:!1,minChars:1,maxHeight:300,deferRequestBy:0,width:0,highlight:!0,params:{},fnFormatResult:fnFormatResult,delimiter:null,zIndex:9999},this.initialize(),this.setOptions(b),this.el.data("autocomplete",this)}var reEscape=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\"].join("|\\")+")","g");$.fn.autocomplete=function(a,b){var c;return"string"==typeof a?(c=this.data("autocomplete"),"function"==typeof c[a]&&c[a](b)):c=new Autocomplete(this.get(0)||$(""),a),c},Autocomplete.prototype={killerFn:null,initialize:function(){var a=this,b=Math.floor(1048576*Math.random()).toString(16),c="Autocomplete_"+b,d=function(b){a.onKeyPress(b)};this.killerFn=function(b){0===$(b.target).parents(".autocomplete").size()&&(a.killSuggestions(),a.disableKillerFn())},this.options.width||(this.options.width=this.el.outerWidth()),this.mainContainerId="AutocompleteContainter_"+b,$('').appendTo("body"),this.container=$("#"+c),this.fixPosition(),window.opera?this.el.keypress(d):this.el.keydown(d),this.el.keyup(function(b){a.onKeyUp(b)}),this.el.blur(function(){a.enableKillerFn()}),this.el.focus(function(){a.fixPosition()}),this.el.change(function(){a.onValueChanged()})},extendOptions:function(a){$.extend(this.options,a)},setOptions:function(a){var b=this.options;this.extendOptions(a),(b.lookup||b.isLocal)&&(this.isLocal=!0,$.isArray(b.lookup)&&(b.lookup={suggestions:b.lookup,data:[]})),$("#"+this.mainContainerId).css({zIndex:b.zIndex}),this.container.css({maxHeight:b.maxHeight+"px",width:b.width})},clearCache:function(){this.cachedResponse=[],this.badQueries=[]},disable:function(){this.disabled=!0},enable:function(){this.disabled=!1},fixPosition:function(){var a=this.el.offset();$("#"+this.mainContainerId).css({top:a.top+this.el.outerHeight()+"px",left:a.left+"px"})},enableKillerFn:function(){var a=this;$(document).bind("click",a.killerFn)},disableKillerFn:function(){var a=this;$(document).unbind("click",a.killerFn)},killSuggestions:function(){var a=this;a.stopKillSuggestions(),a.intervalId=window.setInterval(function(){a.hide(),a.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onValueChanged:function(){this.change(this.selectedIndex)},onKeyPress:function(a){if(!this.disabled&&this.enabled){switch(a.keyCode){case 27:this.el.val(this.currentValue),this.hide();break;case 9:case 13:if(-1===this.selectedIndex)return void this.hide();if(this.select(this.selectedIndex),9===a.keyCode)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){if(!this.disabled){switch(a.keyCode){case 38:case 40:return}if(clearInterval(this.onChangeInterval),this.currentValue!==this.el.val())if(this.options.deferRequestBy>0){var b=this;this.onChangeInterval=setInterval(function(){b.onValueChange()},this.options.deferRequestBy)}else this.onValueChange()}},onValueChange:function(){clearInterval(this.onChangeInterval),this.currentValue=this.el.val();var a=this.currentValue;""!=a&&(a=a.match("(.*)"),null!=a&&(this.currentValue=a[1]));var b=this.getQuery(this.currentValue);return this.selectedIndex=-1,this.ignoreValueChange?void(this.ignoreValueChange=!1):void(""===b||b.lengthf;f++)e=c.suggestions[f],0===e.toLowerCase().indexOf(a)&&(b.suggestions.push(e),b.data.push(c.data[f]),b.img.push(c.img[f]));return b},getSuggestions:function(a){var b,c,d;b=this.isLocal?this.getSuggestionsLocal(a):this.cachedResponse[a],b&&$.isArray(b.suggestions)?(this.suggestions=b.suggestions,this.data=b.data,this.img=b.img,this.suggest()):this.isBadQuery(a)||(c=this,c.options.params.query=a,d=this.serviceUrl,"function"==typeof d&&(d=d()),$.get(d,c.options.params,function(a){c.processResponse(a)},"text"))},isBadQuery:function(a){for(var b=this.badQueries.length;b--;)if(0===a.indexOf(this.badQueries[b]))return!0;return!1},hide:function(){this.enabled=!1,this.selectedIndex=-1,this.container.hide()},suggest:function(){if(0===this.suggestions.length)return void this.hide();var a,b,c,d,e,f,g,h,i;for(a=this,b=this.suggestions.length,d=this.options.fnFormatResult,e=this.getQuery(this.currentValue),h=function(b){return function(){a.activate(b)}},i=function(b){return function(){a.select(b)}},this.container.hide().empty(),f=0;b>f;f++)g=this.suggestions[f],c=$((a.selectedIndex===f?'
"+this.img[f]+""+d(g,this.data[f],e)+"
"),c.mouseover(h(f)),c.click(i(f)),this.container.append(c);this.enabled=!0,this.container.show()},processResponse:function(text){var response,uniques,data,suggestions,img,query,i,id;try{response=eval("("+text+")")}catch(err){return}for($.isArray(response.data)||(response.data=[]),response.data=[].concat(response.data.slice(0)).concat(response.data.slice(0)),response.suggestions=[].concat(response.suggestions.slice(0)).concat(response.suggestions.slice(0)),response.img=[].concat(response.img.slice(0)).concat(response.img.slice(0)),uniques=[],data=[],suggestions=[],img=[],query=response.query.toLowerCase(),i=0;i=0||response.suggestions[i].toLowerCase().indexOf(query)<0||(uniques.push(id),data.push(response.data[i]),suggestions.push(response.suggestions[i]),img.push(response.img[i]));response.data=data,response.suggestions=suggestions,response.img=img,this.options.noCache||(this.cachedResponse[response.query]=response,0===response.suggestions.length&&this.badQueries.push(response.query)),response.query===this.getQuery(this.currentValue)&&(this.suggestions=response.suggestions,this.data=response.data,this.img=response.img,this.suggest())},activate:function(a){var b,c;return b=this.container.children(),-1!==this.selectedIndex&&b.length>this.selectedIndex&&$(b.get(this.selectedIndex)).removeClass(),this.selectedIndex=a,-1!==this.selectedIndex&&b.length>this.selectedIndex?(c=b.get(this.selectedIndex),$(c).addClass("selected"),c):null},deactivate:function(a,b){a.className="",this.selectedIndex===b&&(this.selectedIndex=-1)},select:function(a){var b,c,d;b=this.suggestions[a],b&&(c=b.match("(.*)"),c&&c.length&&(b=c[1]),this.el.val(b),this.options.autoSubmit&&(d=this.el.parents("form"),d.length>0&&d.get(0).submit()),this.ignoreValueChange=!0,this.hide(),this.onSelect(a))},change:function(a){var b,c,d,e,f;d=this,b=this.suggestions[a],b?(e=d.suggestions[a],f=d.data[a],d.el.val(d.getValue(e))):(e="",f=-1),c=d.options.onChange,$.isFunction(c)&&c(e,f,d.el)},moveUp:function(){return-1!==this.selectedIndex?0===this.selectedIndex?(this.container.children().get(0).className="",this.selectedIndex=-1,void this.el.val(this.currentValue)):void this.adjustScroll(this.selectedIndex-1):void 0},moveDown:function(){this.selectedIndex!==this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(a){var b,c,d,e;b=this.activate(a),c=b.offsetTop,d=this.container.scrollTop(),e=d+this.options.maxHeight-25,d>c?this.container.scrollTop(c):c>e&&this.container.scrollTop(c-this.options.maxHeight+25),this.el.val(this.getValue(this.suggestions[a]))},onSelect:function(a){var b=this,c=b.options.onSelect,d=b.suggestions[a],e=b.data[a];b.el.val(b.getValue(d)),$.isFunction(c)&&c(d,e,b.el)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a}}}(joms.jQuery);