(function(a){a.fn.extend({autocomplete:function(c,b){var d=typeof c=="string";b=a.extend({},a.Autocompleter.defaults,{url:d?c:null,data:d?null:c,delay:d?a.Autocompleter.defaults.delay:10,max:b&&!b.scroll?10:150},b);b.highlight=b.highlight||function(a){return a};b.formatMatch=b.formatMatch||b.formatItem;return this.each(function(){new a.Autocompleter(this,b)})},result:function(a){return this.bind("result",a)},search:function(a){return this.trigger("search",[a])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(a){return this.trigger("setOptions",[a])},unautocomplete:function(){return this.trigger("unautocomplete")}});a.Autocompleter=function(f,b){function s(){var g=c.selected();if(!g)return false;var e=g.result;h=e;if(b.multiple){var j=i(d.val());if(j.length>1){var o=b.multipleSeparator.length,m=a(f).selection().start,l,k=0;a.each(j,function(a,b){k+=b.length;if(m<=k){l=a;return false}k+=o});j[l]=e;e=j.join(b.multipleSeparator)}e+=b.multipleSeparator}d.val(e);n();d.trigger("result",[g.data,g.value]);return true}function g(a,f){if(q==e.DEL)c.hide();else{a=d.val();if(!(!f&&a==h)){h=a;a=m(a);if(a.length>=b.minChars){d.addClass(b.loadingClass);b.matchCase||(a=a.toLowerCase());t(a,w,n)}else{p();c.hide()}}}}function i(c){return!c?[""]:!b.multiple?[a.trim(c)]:a.map(c.split(b.multipleSeparator),function(b){return a.trim(c).length?a.trim(b):null})}function m(d){if(!b.multiple)return d;var c=i(d);if(c.length==1)return c[0];c=a(f).selection().start;c=c==d.length?i(d):i(d.replace(d.substring(c),""));return c[c.length-1]}function x(g,c){if(b.autoFill&&m(d.val()).toLowerCase()==g.toLowerCase()&&q!=e.BACKSPACE){d.val(d.val()+c.substring(m(h).length));a(f).selection(h.length,h.length+c.length)}}function v(){clearTimeout(j);j=setTimeout(n,200)}function n(){c.visible();c.hide();clearTimeout(j);p();b.mustMatch&&d.search(function(a){if(!a)if(b.multiple){a=i(d.val()).slice(0,-1);d.val(a.join(b.multipleSeparator)+(a.length?b.multipleSeparator:""))}else{d.val("");d.trigger("result",null)}})}function w(b,a){if(a&&a.length&&k){p();c.display(a,b);x(b,a[0].value);c.show()}else n()}function t(d,h,i){b.matchCase||(d=d.toLowerCase());var e=l.load(d);if(e&&e.length)h(d,e);else if(typeof b.url=="string"&&b.url.length>0){var g={timestamp:+new Date};a.each(b.extraParams,function(b,a){g[b]=typeof a=="function"?a():a});a.ajax({mode:"abort",port:"autocomplete"+f.name,dataType:b.dataType,url:b.url,data:a.extend({q:m(d),limit:b.max},g),success:function(a){a=b.parse&&b.parse(a)||u(a);l.add(d,a);h(d,a)}})}else{c.emptyList();i(d)}}function u(d){var e=[];d=d.split("\n");for(var f=0;f<d.length;f++){var c=a.trim(d[f]);if(c){c=c.split("|");e[e.length]={data:c,value:c[0],result:b.formatResult&&b.formatResult(c,c[0])||c[0]}}}return e}function p(){d.removeClass(b.loadingClass)}var e={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8},d=a(f).attr("autocomplete","off").addClass(b.inputClass),j,h="",l=a.Autocompleter.Cache(b),k=0,q,r={mouseDownOnSelect:false},c=a.Autocompleter.Select(b,f,s,r),o;a.browser.opera&&a(f.form).bind("submit.autocomplete",function(){if(o)return o=false});d.bind((a.browser.opera?"keypress":"keydown")+".autocomplete",function(d){k=1;q=d.keyCode;switch(d.keyCode){case e.UP:d.preventDefault();c.visible()?c.prev():g(0,true);break;case e.DOWN:d.preventDefault();c.visible()?c.next():g(0,true);break;case e.PAGEUP:d.preventDefault();c.visible()?c.pageUp():g(0,true);break;case e.PAGEDOWN:d.preventDefault();c.visible()?c.pageDown():g(0,true);break;case b.multiple&&a.trim(b.multipleSeparator)==","&&e.COMMA:case e.TAB:case e.RETURN:if(s()){d.preventDefault();o=true;return false}break;case e.ESC:c.hide();break;default:clearTimeout(j);j=setTimeout(g,b.delay)}}).focus(function(){k++}).blur(function(){k=0;r.mouseDownOnSelect||v()}).click(function(){k++>1&&!c.visible()&&g(0,true)}).bind("search",function(){function b(f,b){var a;if(b&&b.length)for(var e=0;e<b.length;e++)if(b[e].result.toLowerCase()==f.toLowerCase()){a=b[e];break}typeof c=="function"?c(a):d.trigger("result",a&&[a.data,a.value])}var c=arguments.length>1?arguments[1]:null;a.each(i(d.val()),function(c,a){t(a,b,b)})}).bind("flushCache",function(){l.flush()}).bind("setOptions",function(d,c){a.extend(b,c);"data"in c&&l.populate()}).bind("unautocomplete",function(){c.unbind();d.unbind();a(f.form).unbind(".autocomplete")})};a.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(a){return a[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(a,b){return a.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};a.Autocompleter.Cache=function(b){function e(a,d){b.matchCase||(a=a.toLowerCase());var c=a.indexOf(d);if(b.matchContains=="word")c=a.toLowerCase().search("\\b"+d.toLowerCase());return c==-1?false:c==0||b.matchContains}function g(a,e){d>b.cacheLength&&h();c[a]||d++;c[a]=e}function f(){if(!b.data)return false;var d={},i=0;if(!b.url)b.cacheLength=1;d[""]=[];for(var f=0,j=b.data.length;f<j;f++){var c=b.data[f];c=typeof c=="string"?[c]:c;var e=b.formatMatch(c,f+1,b.data.length);if(e!==false){var h=e.charAt(0).toLowerCase();d[h]||(d[h]=[]);c={value:e,data:c,result:b.formatResult&&b.formatResult(c)||e};d[h].push(c);i++<b.max&&d[""].push(c)}}a.each(d,function(c,a){b.cacheLength++;g(c,a)})}function h(){c={};d=0}var c={},d=0;setTimeout(f,25);return{flush:h,add:g,populate:f,load:function(f){if(!b.cacheLength||!d)return null;if(!b.url&&b.matchContains){var g=[];for(var h in c)if(h.length>0){var i=c[h];a.each(i,function(b,a){e(a.value,f)&&g.push(a)})}return g}else if(c[f])return c[f];else if(b.matchSubset)for(h=f.length-1;h>=b.minChars;h--)if(i=c[f.substr(0,h)]){g=[];a.each(i,function(b,a){if(e(a.value,f))g[g.length]=a});return g}return null}}};a.Autocompleter.Select=function(e,m,q,n){function s(){if(l){g=a("<div/>").hide().addClass(e.resultsClass).appendTo(a(".jquery-autocomplete-append"));d=a("<ul/>").appendTo(g).mouseover(function(b){if(j(b).nodeName&&j(b).nodeName.toUpperCase()=="LI"){c=a("li",d).removeClass(f.ACTIVE).index(j(b));a(j(b)).addClass(f.ACTIVE)}}).click(function(b){a(j(b)).addClass(f.ACTIVE);q();m.focus();return false}).mousedown(function(){n.mouseDownOnSelect=true}).mouseup(function(){n.mouseDownOnSelect=false});l=false}}function j(a){for(a=a.target;a&&a.tagName!="LI";)a=a.parentNode;return!a?[]:a}function i(g){b.slice(c,c+1).removeClass(f.ACTIVE);o(g);g=b.slice(c,c+1).addClass(f.ACTIVE);if(e.scroll){var a=0;b.slice(0,c).each(function(){a+=this.offsetHeight});if(a+g[0].offsetHeight-d.scrollTop()>d[0].clientHeight)d.scrollTop(a+g[0].offsetHeight-d.innerHeight());else a<d.scrollTop()&&d.scrollTop(a)}}function o(a){c+=a;if(c<0)c=b.size()-1;else if(c>=b.size())c=0}function p(a){return e.max&&e.max<a?e.max:a}function r(){d.empty();for(var j=p(h.length),g=0;g<j;g++)if(h[g]){var i=e.formatItem(h[g].data,g+1,j,h[g].value,k);if(i!==false){i=a("<li/>").html(e.highlight(i,k)).addClass(g%2==0?"ac_even":"ac_odd").appendTo(d)[0];a.data(i,"ac_data",h[g])}}b=d.find("li");if(e.selectFirst){b.slice(0,1).addClass(f.ACTIVE);c=0}a.fn.bgiframe&&d.bgiframe()}var f={ACTIVE:"ac_over"},b,c=-1,h,k="",l=true,g,d;return{display:function(a,b){s();h=a;k=b;r()},next:function(){i(1)},prev:function(){i(-1)},pageUp:function(){c!=0&&c-8<0?i(-c):i(-8)},pageDown:function(){c!=b.size()-1&&c+8>b.size()?i(b.size()-1-c):i(8)},hide:function(){g&&g.hide();b&&b.removeClass(f.ACTIVE);c=-1},visible:function(){return g&&g.is(":visible")},current:function(){return this.visible()&&(b.filter("."+f.ACTIVE)[0]||e.selectFirst&&b[0])},show:function(){a(m).offset();g.show();if(e.scroll){d.scrollTop(0);d.css({maxHeight:e.scrollHeight,overflow:"auto"});if(a.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var c=0;b.each(function(){c+=this.offsetHeight});var f=c>e.scrollHeight;d.css("height",f?e.scrollHeight:c);f||b.width(d.width()-parseInt(b.css("padding-left"))-parseInt(b.css("padding-right")))}}},selected:function(){var c=b&&b.filter("."+f.ACTIVE).removeClass(f.ACTIVE);return c&&c.length&&a.data(c[0],"ac_data")},emptyList:function(){d&&d.empty()},unbind:function(){g&&g.remove()}}};a.fn.selection=function(c,d){if(c!==undefined)return this.each(function(){if(this.createTextRange){var a=this.createTextRange();if(d===undefined||c==d)a.move("character",c);else{a.collapse(true);a.moveStart("character",c);a.moveEnd("character",d)}a.select()}else if(this.setSelectionRange)this.setSelectionRange(c,d);else if(this.selectionStart){this.selectionStart=c;this.selectionEnd=d}});var b=this[0];if(b.createTextRange){var a=document.selection.createRange(),f=b.value,e=a.text.length;a.text="<->";a=b.value.indexOf("<->");b.value=f;this.selection(a,a+e);return{start:a,end:a+e}}else if(b.selectionStart!==undefined)return{start:b.selectionStart,end:b.selectionEnd}}})(jQuery)
