(function(a){a.suggest=function(o,k){var c=a(o).attr("autocomplete","off");var m=a(document.createElement("ul"));var d=false;var n=0;var p=[];var v=0;m.addClass(k.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){m.hide()},200)});try{m.bgiframe()}catch(t){}if(a.browser.mozilla){c.keypress(l)}else{c.keydown(l)}function j(){var e=c.offset();m.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function l(w){if((/27$|38$|40$/.test(w.keyCode)&&m.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:f();break;case 40:r();break;case 9:case 13:s();break;case 27:m.hide();break}}else{if(c.val().length!=n){if(d){clearTimeout(d)}d=setTimeout(g,k.delay);n=c.val().length}}}function g(){var e=a.trim(c.val());if(e.length>=k.minchars){cached=q(e);if(cached){i(cached.items)}else{a.get(k.source,{q:e},function(w){m.hide();var x=b(w,e);i(x);h(e,x,w.length)})}}else{m.hide()}}function q(w){for(var e=0;e<p.length;e++){if(p[e]["q"]==w){p.unshift(p.splice(e,1)[0]);return p[0]}}return false}function h(y,w,x){while(p.length&&(v+x>k.maxCacheSize)){var e=p.pop();v-=e.size}p.push({q:y,size:x,items:w});v+=x}function i(e){if(!e){return}if(!e.length){m.hide();return}var x="";for(var w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}m.html(x).show();m.children("li").mouseover(function(){m.children("li").removeClass(k.selectClass);a(this).addClass(k.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();s()})}function b(e,z){var w=[];var A=e.split(k.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="'+k.matchClass+'">'+B+"</span>"});w[w.length]=x}}return w}function u(){if(!m.is(":visible")){return false}var e=m.children("li."+k.selectClass);if(!e.length){e=false}return e}function s(){$currentResult=u();if($currentResult){c.val($currentResult.text());m.hide();if(k.onSelect){k.onSelect.apply(c[0])}}}function r(){$currentResult=u();if($currentResult){$currentResult.removeClass(k.selectClass).next().addClass(k.selectClass)}else{m.children("li:first-child").addClass(k.selectClass)}}function f(){$currentResult=u();if($currentResult){$currentResult.removeClass(k.selectClass).prev().addClass(k.selectClass)}else{m.children("li:last-child").addClass(k.selectClass)}}};a.fn.suggest=function(b,c){if(!b){return}c=c||{};c.source=b;c.delay=c.delay||100;c.resultsClass=c.resultsClass||"ac_results";c.selectClass=c.selectClass||"ac_over";c.matchClass=c.matchClass||"ac_match";c.minchars=c.minchars||2;c.delimiter=c.delimiter||"\n";c.onSelect=c.onSelect||false;c.maxCacheSize=c.maxCacheSize||65536;this.each(function(){new a.suggest(this,c)});return this}})(jQuery);
