(function(A){A.suggest=function(N,F){var C=A(N).attr("autocomplete","off");var E=A(document.createElement("ul"));var M=false;var D=0;var P=[];var O=0;E.addClass(F.resultsClass).appendTo("body");I();A(window).load(I).resize(I);C.blur(function(){setTimeout(function(){E.hide()},200)});try{E.bgiframe()}catch(R){}C.keyup(L);function I(){var V=C.offset();E.css({top:(V.top+N.offsetHeight)+"px",left:V.left+"px"})}function L(V){if((/27$|38$|40$/.test(V.keyCode)&&E.is(":visible"))||(/^13$|^9$/.test(V.keyCode)&&T())){if(V.preventDefault){V.preventDefault()}if(V.stopPropagation){V.stopPropagation()}V.cancelBubble=true;V.returnValue=false;switch(V.keyCode){case 38:J();break;case 40:S();break;case 9:case 13:Q();break;case 27:E.hide();break}}else{if(C.val().length!=D){if(M){clearTimeout(M)}M=setTimeout(K,F.delay);D=C.val().length}}}function K(){var V=A.trim(C.val());if(V.length>=F.minchars){cached=U(V);if(cached){H(cached.items)}else{A.get(F.source,{q:V},function(W){E.hide();var X=B(W,V);H(X);G(V,X,W.length)})}}else{E.hide()}}function U(W){for(var V=0;V<P.length;V++){if(P[V]["q"]==W){P.unshift(P.splice(V,1)[0]);return P[0]}}return false}function G(Y,V,W){while(P.length&&(O+W>F.maxCacheSize)){var X=P.pop();O-=X.size}P.push({q:Y,size:W,items:V});O+=W}function H(V){if(!V){return}if(!V.length){E.hide();return}var X="";for(var W=0;W<V.length;W++){X+="<li>"+V[W]+"</li>"}E.html(X).show();E.children("li").mouseover(function(){E.children("li").removeClass(F.selectClass);A(this).addClass(F.selectClass)}).click(function(Y){Y.preventDefault();Y.stopPropagation();Q()})}function B(V,Z){var W=[];var a=V.split(F.delimiter);for(var Y=0;Y<a.length;Y++){var X=A.trim(a[Y]);if(X){X=X.replace(new RegExp(Z,"ig"),function(b){return'<span class="'+F.matchClass+'">'+b+"</span>"});W[W.length]=X}}return W}function T(){if(!E.is(":visible")){return false}var V=E.children("li."+F.selectClass);if(!V.length){V=false}return V}function Q(){$currentResult=T();if($currentResult){C.val($currentResult.text());E.hide();if(F.onSelect){F.onSelect.apply(C[0])}}}function S(){$currentResult=T();if($currentResult){$currentResult.removeClass(F.selectClass).next().addClass(F.selectClass)}else{E.children("li:first-child").addClass(F.selectClass)}}function J(){$currentResult=T();if($currentResult){$currentResult.removeClass(F.selectClass).prev().addClass(F.selectClass)}else{E.children("li:last-child").addClass(F.selectClass)}}};A.fn.suggest=function(C,B){if(!C){return}B=B||{};B.source=C;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 A.suggest(this,B)});return this}})(jQuery);
