!function(e){e.fn.autoComplete=function(t){var o=e.extend({},e.fn.autoComplete.defaults,t);return"string"==typeof t?(this.each(function(){var o=e(this);"destroy"==t&&(e(window).off("resize.autocomplete",o.updateSC),o.off("blur.autocomplete focus.autocomplete keydown.autocomplete keyup.autocomplete"),o.data("autocomplete")?o.attr("autocomplete",o.data("autocomplete")):o.removeAttr("autocomplete"),e(o.data("sc")).remove(),o.removeData("sc").removeData("autocomplete"))}),this):this.each(function(){var t=e(this);function s(e){var s=t.val();if(t.cache[s]=e,e.length&&s.length>=o.minChars){for(var a="",c=0;c<e.length;c++)a+=o.renderItem(e[c],s);t.sc.html(a),t.updateSC(0)}else t.sc.hide()}t.sc=e('<div class="autocomplete-suggestions '+o.menuClass+'"></div>'),t.data("sc",t.sc).data("autocomplete",t.attr("autocomplete")),t.attr("autocomplete",t.data("autocomplete-override")||"off"),t.cache={},t.last_val="",t.updateSC=function(o,s){if(t.sc.css({top:t.offset().top+t.outerHeight(),left:t.offset().left,width:t.outerWidth()}),!o&&(t.sc.show(),t.sc.maxHeight||(t.sc.maxHeight=parseInt(t.sc.css("max-height"))),t.sc.suggestionHeight||(t.sc.suggestionHeight=e(".autocomplete-suggestion",t.sc).first().outerHeight()),t.sc.suggestionHeight))if(s){var a=t.sc.scrollTop(),c=s.offset().top-t.sc.offset().top;c+t.sc.suggestionHeight-t.sc.maxHeight>0?t.sc.scrollTop(c+t.sc.suggestionHeight+a-t.sc.maxHeight):c<0&&t.sc.scrollTop(c+a)}else t.sc.scrollTop(0)},e(window).on("resize.autocomplete",t.updateSC),t.sc.appendTo("body"),t.sc.on("mouseleave",".autocomplete-suggestion",function(){e(".autocomplete-suggestion.selected").removeClass("selected")}),t.sc.on("mouseenter",".autocomplete-suggestion",function(){e(".autocomplete-suggestion.selected").removeClass("selected"),e(this).addClass("selected")}),t.sc.on("mousedown click",".autocomplete-suggestion",function(s){var a=e(this),c=a.data("val");return(c||a.hasClass("autocomplete-suggestion"))&&(t.val(c),o.onSelect(s,c,a),t.sc.hide()),!1}),t.on("blur.autocomplete",function(){try{over_sb=e(".autocomplete-suggestions:hover").length}catch(e){over_sb=0}over_sb?t.is(":focus")||setTimeout(function(){t.focus()},20):(t.last_val=t.val(),t.sc.hide(),setTimeout(function(){t.sc.hide()},350))}),o.minChars||t.on("focus.autocomplete",function(){t.last_val="\n",t.trigger("keyup.autocomplete")}),t.on("keydown.autocomplete",function(s){var a;if((40==s.which||38==s.which)&&t.sc.html())return(c=e(".autocomplete-suggestion.selected",t.sc)).length?(a=40==s.which?c.next(".autocomplete-suggestion"):c.prev(".autocomplete-suggestion")).length?(c.removeClass("selected"),t.val(a.addClass("selected").data("val"))):(c.removeClass("selected"),t.val(t.last_val),a=0):(a=40==s.which?e(".autocomplete-suggestion",t.sc).first():e(".autocomplete-suggestion",t.sc).last(),t.val(a.addClass("selected").data("val"))),t.updateSC(0,a),!1;if(27==s.which)t.val(t.last_val).sc.hide();else if(13==s.which||9==s.which){var c;(c=e(".autocomplete-suggestion.selected",t.sc)).length&&t.sc.is(":visible")&&(o.onSelect(s,c.data("val"),c),setTimeout(function(){t.sc.hide()},20))}}),t.on("keyup.autocomplete",function(a){if(!~e.inArray(a.which,[13,27,35,36,37,38,39,40])){var c=t.val();if(c.length>=o.minChars){if(c!=t.last_val){if(t.last_val=c,clearTimeout(t.timer),o.cache){if(c in t.cache)return void s(t.cache[c]);for(var l=1;l<c.length-o.minChars;l++){var i=c.slice(0,c.length-l);if(i in t.cache&&!t.cache[i].length)return void s([])}}t.timer=setTimeout(function(){o.source(c,s)},o.delay)}}else t.last_val=c,t.sc.hide()}})})},e.fn.autoComplete.defaults={source:0,minChars:3,delay:150,cache:1,menuClass:"",renderItem:function(e,t){t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");var o=new RegExp("("+t.split(" ").join("|")+")","gi");return'<div class="autocomplete-suggestion" data-val="'+e+'">'+e.replace(o,"<b>$1</b>")+"</div>"},onSelect:function(e,t,o){}}}(jQuery);
