(function(f){f.suggest=function(k,b){function t(a){for(var c=new Array("`","q","w","e","r","t","y","u","i","o","p","\\[","\\]","a","s","d","f","g","h","j","k","l",";","'","z","x","c","v","b","n","m",",","\\.","\\/","~","Q","W","E","R","T","Y","U","I","O","P","\\{","\\}","A","S","D","F","G","H","J","K","L",":",'"',"Z","X","C","V","B","N","M","<",">","\\?","\\|","@","#","\\$","\\^","&"),d=new Array("ё","й","ц","у","к","е","н","г","ш","щ","з","х",
"ъ","ф","ы","в","а","п","р","о","л","д","ж","э","я","ч","с","м","и","т","ь","б","ю",".","Ё","Й","Ц","У","К","Е","Н","Г","Ш","Щ","З","Х","Ъ","Ф","Ы","В","А","П","Р","О","Л","Д","Ж","Э","Я","Ч","С","М","И","Т","Ь","Б","Ю",",","/",'"',
"№",";",":","?"),g="",i=0;i<c.length;i++){g=new RegExp(c[i],"g");a=a.replace(g,d[i])}return a}function m(){var a=h.offset();e.css({top:a.top+k.offsetHeight+"px",left:a.left+"px"})}function p(a){if(/27$|38$|40$/.test(a.keyCode)&&e.is(":visible")||/^13$|^9$/.test(a.keyCode)&&l()){a.preventDefault&&a.preventDefault();a.stopPropagation&&a.stopPropagation();a.cancelBubble=true;a.returnValue=false;switch(a.keyCode){case 38:u();break;case 40:v();break;case 9:case 13:q();break;case 27:e.hide();break}}else if(h.val().length!=
r){n&&clearTimeout(n);n=setTimeout(w,b.delay);r=h.val().length}}function w(){h.val(t(h.val()));var a=f.trim(h.val());if(a.length>=b.minchars)(cached=x(a))?s(cached.items):f.get(b.source,{q:a},function(c){e.hide();var d=y(c,a);s(d);z(a,d,c.length)});else e.hide()}function x(a){for(var c=0;c<j.length;c++)if(j[c].q==a){j.unshift(j.splice(c,1)[0]);return j[0]}return false}function z(a,c,d){for(;j.length&&o+d>b.maxCacheSize;){var g=j.pop();o-=g.size}j.push({q:a,size:d,items:c});o+=d}function s(a){if(a)if(a.length){for(var c=
"",d=0;d<a.length;d++)c+="<li>"+a[d]+"</li>";e.html(c).show();e.children("li").mouseover(function(){e.children("li").removeClass(b.selectClass);f(this).addClass(b.selectClass)}).click(function(g){g.preventDefault();g.stopPropagation();q()})}else e.hide()}function y(a,c){var d=[];a=a.split(b.delimiter);for(var g=0;g<a.length;g++){var i=f.trim(a[g]);if(i){i=i.replace(new RegExp(c,"ig"),function(A){return'<span class="'+b.matchClass+'">'+A+"</span>"});d[d.length]=i}}return d}function l(){if(!e.is(":visible"))return false;
var a=e.children("li."+b.selectClass);a.length||(a=false);return a}function q(){if($currentResult=l()){h.val($currentResult.text());e.hide();b.onSelect&&b.onSelect.apply(h[0])}}function v(){($currentResult=l())?$currentResult.removeClass(b.selectClass).next().addClass(b.selectClass):e.children("li:first-child").addClass(b.selectClass)}function u(){($currentResult=l())?$currentResult.removeClass(b.selectClass).prev().addClass(b.selectClass):e.children("li:last-child").addClass(b.selectClass)}var h=
f(k).attr("autocomplete","off"),e=f(document.createElement("ul")),n=false,r=0,j=[],o=0;e.addClass(b.resultsClass).appendTo("body");m();f(window).load(m).resize(m);h.blur(function(){setTimeout(function(){e.hide()},200)});f.browser.mozilla?h.keypress(p):h.keydown(p)};f.fn.suggest=function(k,b){if(k){b=b||{};b.source=k;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||
"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new f.suggest(this,b)});return this}}})(jQuery);

