var autoComplete=function(){function n(n){function c(n,t){return n.classList?n.classList.contains(t):new RegExp("\\b"+t+"\\b").test(n.className)}function r(n,t,i){n.attachEvent?n.attachEvent("on"+t,i):n.addEventListener(t,i)}function u(n,t,i){n.detachEvent?n.detachEvent("on"+t,i):n.removeEventListener(t,i)}function h(n,t,i,u){r(u||document,t,function(t){for(var u,r=t.target||t.srcElement;r&&!(u=c(r,n));)r=r.parentElement;u&&i.call(r,t)})}var i,e,f,o,t,s;if(document.querySelector){i={selector:0,source:0,minChars:3,delay:150,offsetLeft:0,offsetTop:1,cache:1,menuClass:"",renderItem:function(n,t){t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");var i=new RegExp("("+t.split(" ").join("|")+")","gi");return'<div class="autocomplete-suggestion" data-val="'+n+'">'+n.replace(i,"<b>$1<\/b>")+"<\/div>"},onSelect:function(){}};for(e in n)n.hasOwnProperty(e)&&(i[e]=n[e]);for(f=typeof i.selector=="object"?[i.selector]:document.querySelectorAll(i.selector),o=0;o<f.length;o++)t=f[o],t.sc=document.createElement("div"),t.sc.className="autocomplete-suggestions "+i.menuClass,t.autocompleteAttr=t.getAttribute("autocomplete"),t.setAttribute("autocomplete","off"),t.cache={},t.last_val="",t.updateSC=function(n,r){var f=t.getBoundingClientRect(),e,u;t.sc.style.left=Math.round(f.left+(window.pageXOffset||document.documentElement.scrollLeft)+i.offsetLeft)+"px";t.sc.style.top=Math.round(f.bottom+(window.pageYOffset||document.documentElement.scrollTop)+i.offsetTop)+"px";t.sc.style.width=Math.round(f.right-f.left)+"px";n||(t.sc.style.display="block",t.sc.maxHeight||(t.sc.maxHeight=parseInt((window.getComputedStyle?getComputedStyle(t.sc,null):t.sc.currentStyle).maxHeight)),t.sc.suggestionHeight||(t.sc.suggestionHeight=t.sc.querySelector(".autocomplete-suggestion").offsetHeight),t.sc.suggestionHeight&&(r?(e=t.sc.scrollTop,u=r.getBoundingClientRect().top-t.sc.getBoundingClientRect().top,u+t.sc.suggestionHeight-t.sc.maxHeight>0?t.sc.scrollTop=u+t.sc.suggestionHeight+e-t.sc.maxHeight:u<0&&(t.sc.scrollTop=u+e)):t.sc.scrollTop=0))},r(window,"resize",t.updateSC),document.body.appendChild(t.sc),h("autocomplete-suggestion","mouseleave",function(){var n=t.sc.querySelector(".autocomplete-suggestion.selected");n&&setTimeout(function(){n.className=n.className.replace("selected","")},20)},t.sc),h("autocomplete-suggestion","mouseover",function(){var n=t.sc.querySelector(".autocomplete-suggestion.selected");n&&(n.className=n.className.replace("selected",""));this.className+=" selected"},t.sc),h("autocomplete-suggestion","mousedown",function(n){if(c(this,"autocomplete-suggestion")){var r=this.getAttribute("data-val");t.value=r;i.onSelect(n,r,this);t.sc.style.display="none"}},t.sc),t.blurHandler=function(){var n;try{n=document.querySelector(".autocomplete-suggestions:hover")}catch(i){n=0}n?t!==document.activeElement&&setTimeout(function(){t.focus()},20):(t.last_val=t.value,t.sc.style.display="none",setTimeout(function(){t.sc.style.display="none"},350))},r(t,"blur",t.blurHandler),s=function(n){var u=t.value,f,r;if(t.cache[u]=n,n.length&&u.length>=i.minChars){for(f="",r=0;r<n.length;r++)f+=i.renderItem(n[r],u);t.sc.innerHTML=f;t.updateSC(0)}else t.sc.style.display="none"},t.keydownHandler=function(n){var f=window.event?n.keyCode:n.which,u,r;if((f==40||f==38)&&t.sc.innerHTML)return r=t.sc.querySelector(".autocomplete-suggestion.selected"),r?(u=f==40?r.nextSibling:r.previousSibling,u?(r.className=r.className.replace("selected",""),u.className+=" selected",t.value=u.getAttribute("data-val")):(r.className=r.className.replace("selected",""),t.value=t.last_val,u=0)):(u=f==40?t.sc.querySelector(".autocomplete-suggestion"):t.sc.childNodes[t.sc.childNodes.length-1],u.className+=" selected",t.value=u.getAttribute("data-val")),t.updateSC(0,u),!1;if(f==27)t.value=t.last_val,t.sc.style.display="none";else if((f==13||f==9)&&(r=t.sc.querySelector(".autocomplete-suggestion.selected"),r&&t.sc.style.display!="none")){i.onSelect(n,r.getAttribute("data-val"),r);setTimeout(function(){t.sc.style.display="none"},20)}},r(t,"keydown",t.keydownHandler),t.keyupHandler=function(n){var u=window.event?n.keyCode:n.which,r,f,e;if(!u||(u<35||u>40)&&u!=13&&u!=27)if(r=t.value,r.length>=i.minChars){if(r!=t.last_val){if(t.last_val=r,clearTimeout(t.timer),i.cache){if(r in t.cache){s(t.cache[r]);return}for(f=1;f<r.length-i.minChars;f++)if(e=r.slice(0,r.length-f),e in t.cache&&!t.cache[e].length){s([]);return}}t.timer=setTimeout(function(){i.source(r,s)},i.delay)}}else t.last_val=r,t.sc.style.display="none"},r(t,"keyup",t.keyupHandler),t.focusHandler=function(n){t.last_val="\n";t.keyupHandler(n)},i.minChars||r(t,"focus",t.focusHandler);this.destroy=function(){for(var n,t=0;t<f.length;t++)n=f[t],u(window,"resize",n.updateSC),u(n,"blur",n.blurHandler),u(n,"focus",n.focusHandler),u(n,"keydown",n.keydownHandler),u(n,"keyup",n.keyupHandler),n.autocompleteAttr?n.setAttribute("autocomplete",n.autocompleteAttr):n.removeAttribute("autocomplete"),document.body.removeChild(n.sc),n=null}}}return n}();(function(){typeof define=="function"&&define.amd?define("autoComplete",function(){return autoComplete}):typeof module!="undefined"&&module.exports?module.exports=autoComplete:window.autoComplete=autoComplete})()