(function(e){e.fn.autocomplete=function(i){var h;if(arguments.length>1){h=i;i=arguments[1];i.url=h}else{if(typeof i==="string"){h=i;i={url:h}}}var j=e.extend({},e.fn.autocomplete.defaults,i);return this.each(function(){var k=e(this);k.data("autocompleter",new e.Autocompleter(k,e.meta?e.extend({},j,k.data()):j))})};e.fn.autocomplete.defaults={inputClass:"acInput",loadingClass:"acLoading",resultsClass:"acResults",selectClass:"acSelect",queryParamName:"q",extraParams:{},remoteDataType:false,lineSeparator:"\n",cellSeparator:"|",minChars:2,maxItemsToShow:10,delay:400,useCache:true,maxCacheLength:10,matchSubset:true,matchCase:false,matchInside:true,mustMatch:false,selectFirst:false,selectOnly:false,showResult:null,preventDefaultReturn:1,preventDefaultTab:0,autoFill:false,filterResults:true,filter:true,sortResults:true,sortFunction:null,onItemSelect:null,onNoMatch:null,onFinish:null,matchStringConverter:null,beforeUseConverter:null,autoWidth:"min-width",useDelimiter:false,delimiterChar:",",delimiterKeyCode:188,processData:null,onError:null,enabled:true};var d=function(h){var k,j;var i=typeof h;if(i==="string"){k=h;j={}}else{if(e.isArray(h)){k=h[0];j=h.slice(1)}else{if(i==="object"){k=h.value;j=h.data}}}k=String(k);if(typeof j!=="object"){j={}}return{value:k,data:j}};var g=function(k,h,j){var i=parseInt(k,10);j=j||{};if(isNaN(i)||(j.min&&ih){return 1}if(i").hide().addClass(this.options.resultsClass).css({position:"absolute"});e("body").append(this.dom.$results);i.keydown(function(l){h.lastKeyPressed_=l.keyCode;switch(h.lastKeyPressed_){case h.options.delimiterKeyCode:if(h.options.useDelimiter&&h.active_){h.selectCurrent()}break;case 35:case 36:case 16:case 17:case 18:case 37:case 39:break;case 38:l.preventDefault();if(h.active_){h.focusPrev()}else{h.activate()}return false;case 40:l.preventDefault();if(h.active_){h.focusNext()}else{h.activate()}return false;case 9:if(h.active_){h.selectCurrent();if(h.options.preventDefaultTab){l.preventDefault();return false}}if(h.options.preventDefaultTab===2){l.preventDefault();return false}break;case 13:if(h.active_){h.selectCurrent();if(h.options.preventDefaultReturn){l.preventDefault();return false}}if(h.options.preventDefaultReturn===2){l.preventDefault();return false}break;case 27:if(h.active_){l.preventDefault();h.deactivate(true);return false}break;default:h.activate()}});i.on("paste",function(){h.activate()});var k=function(){h.deactivate(true)};i.blur(function(){if(h.finishOnBlur_){h.finishTimeout_=setTimeout(k,200)}});i.parents("form").on("submit",k)};e.Autocompleter.prototype.position=function(){var n=this.dom.$elem.offset();var i=this.dom.$results.outerHeight();var k=e(window).outerHeight();var m=n.top+this.dom.$elem.outerHeight();var l=m+i;var h={top:m,left:n.left};if(l>k){var j=n.top-i;if(j>=0){h.top=j}}this.dom.$results.css(h)};e.Autocompleter.prototype.cacheRead=function(k){var m,j,i,h,l;if(this.options.useCache){k=String(k);m=k.length;if(this.options.matchSubset){j=1}else{j=m}while(j<=m){if(this.options.matchInside){h=m-j}else{h=0}l=0;while(l<=h){i=k.substr(0,j);if(this.cacheData_[i]!==undefined){return this.cacheData_[i]}l++}j++}}return false};e.Autocompleter.prototype.cacheWrite=function(h,i){if(this.options.useCache){if(this.cacheLength_>=this.options.maxCacheLength){this.cacheFlush()}h=String(h);if(this.cacheData_[h]!==undefined){this.cacheLength_++}this.cacheData_[h]=i;return this.cacheData_[h]}return false};e.Autocompleter.prototype.cacheFlush=function(){this.cacheData_={};this.cacheLength_=0};e.Autocompleter.prototype.callHook=function(j,i){var h=this.options[j];if(h&&e.isFunction(h)){return h(i,this)}return false};e.Autocompleter.prototype.activate=function(){if(!this.options.enabled){return}var h=this;if(this.keyTimeout_){clearTimeout(this.keyTimeout_)}this.keyTimeout_=setTimeout(function(){h.activateNow()},this.options.delay)};e.Autocompleter.prototype.activateNow=function(){var h=this.beforeUseConverter(this.dom.$elem.val());if(h!==this.lastProcessedValue_&&h!==this.lastSelectedValue_){this.fetchData(h)}};e.Autocompleter.prototype.fetchData=function(j){var i=this;var h=function(k,l){if(i.options.processData){k=i.options.processData(k)}i.showResults(i.filterResults(k,l),l)};this.lastProcessedValue_=j;if(j.length-1}else{return i===0}}return true};e.Autocompleter.prototype.filterResult=function(h,i){if(this.options.filter===false){return true}if(e.isFunction(this.options.filter)){return this.options.filter(h,i)}return this.defaultFilter(h,i)};e.Autocompleter.prototype.filterResults=function(l,m){var j=[];var k,h;for(k=0;k0&&this.options.maxItemsToShow");j.html(this.showResult(h.value,h.data));j.data({value:h.value,data:h.data}).click(function(){i.selectItem(j)}).mousedown(i.disableFinishOnBlur).mouseup(i.enableFinishOnBlur);return j};e.Autocompleter.prototype.getItems=function(){return e(">ul>li",this.dom.$results)};e.Autocompleter.prototype.showResults=function(l,h){var j=l.length;var r=this;var n=e("
    ");var m,s,p,q,o=false,k=false;if(j){for(m=0;m

    ").text(i).html()}};e.Autocompleter.prototype.autoFill=function(p,i){var m,n,q,k;if(this.options.autoFill&&this.lastKeyPressed_!==8){m=String(p).toLowerCase();n=String(i).toLowerCase();q=p.length;k=i.length;if(m.substr(0,k)===n){var o=this.getDelimiterOffsets();var j=o.start?" ":"";this.setValue(j+p);var h=k+o.start+j.length;var l=q+o.start+j.length;this.selectRange(h,l);return true}}return false};e.Autocompleter.prototype.focusNext=function(){this.focusMove(+1)};e.Autocompleter.prototype.focusPrev=function(){this.focusMove(-1)};e.Autocompleter.prototype.focusMove=function(h){var k=this.getItems();h=g(h,0);if(h){for(var j=0;j=j.length){i=j.length-1}}h=e(j[i])}else{h=e(i)}if(h){h.addClass(this.selectClass_).addClass(this.options.selectClass)}}};e.Autocompleter.prototype.selectCurrent=function(){var h=e("li."+this.selectClass_,this.dom.$results);if(h.length===1){this.selectItem(h)}else{this.deactivate(false)}};e.Autocompleter.prototype.selectItem=function(n){var p=n.data("value");var j=n.data("data");var m=this.displayValue(p,j);var k=this.beforeUseConverter(m);this.lastProcessedValue_=k;this.lastSelectedValue_=k;var l=this.getDelimiterOffsets();var h=this.options.delimiterChar;var i=this.dom.$elem;var o=0;if(this.options.useDelimiter){if(i.val().substring(l.start-1,l.start)==h&&h!=" "){m=" "+m}if(i.val().substring(l.end,l.end+1)!=h&&this.lastKeyPressed_!=this.options.delimiterKeyCode){m=m+h}else{o=1}}this.setValue(m);this.setCaret(l.start+m.length+o);this.callHook("onItemSelect",{value:p,data:j});this.deactivate(true);i.focus()};e.Autocompleter.prototype.displayValue=function(i,h){if(e.isFunction(this.options.displayValue)){return this.options.displayValue(i,h)}return i};e.Autocompleter.prototype.hideResults=function(){this.dom.$results.hide()};e.Autocompleter.prototype.deactivate=function(h){if(this.finishTimeout_){clearTimeout(this.finishTimeout_)}if(this.keyTimeout_){clearTimeout(this.keyTimeout_)}if(h){if(this.lastProcessedValue_!==this.lastSelectedValue_){if(this.options.mustMatch){this.setValue("")}this.callHook("onNoMatch")}if(this.active_){this.callHook("onFinish")}this.lastKeyPressed_=null;this.lastProcessedValue_=null;this.lastSelectedValue_=null;this.active_=false}this.hideResults()};e.Autocompleter.prototype.selectRange=function(k,h){var j=this.dom.$elem.get(0);if(j.setSelectionRange){j.focus();j.setSelectionRange(k,h)}else{if(j.createTextRange){var i=j.createTextRange();i.collapse(true);i.moveEnd("character",h);i.moveStart("character",k);i.select()}}};e.Autocompleter.prototype.setCaret=function(h){this.selectRange(h,h)};e.Autocompleter.prototype.getCaret=function(){var j=this.dom.$elem;var m=j[0];var n,l,i,o,h,k;if(m.createTextRange){l=document.selection;if(m.tagName.toLowerCase()!="textarea"){n=j.val();i=l.createRange().duplicate();i.moveEnd("character",n.length);if(i.text===""){o=n.length}else{o=n.lastIndexOf(i.text)}i=l.createRange().duplicate();i.moveStart("character",-n.length);h=i.text.length}else{i=l.createRange();k=i.duplicate();k.moveToElementText(m);k.setEndPoint("EndToEnd",i);o=k.text.length-i.text.length;h=o+i.text.length}}else{o=j[0].selectionStart;h=j[0].selectionEnd}return{start:o,end:h}};e.Autocompleter.prototype.setValue=function(j){if(this.options.useDelimiter){var l=this.dom.$elem.val();var k=this.getDelimiterOffsets();var h=l.substring(0,k.start);var i=l.substring(k.end);j=h+j+i}this.dom.$elem.val(j)};e.Autocompleter.prototype.getValue=function(h){if(this.options.useDelimiter){var i=this.getDelimiterOffsets();return h.substring(i.start,i.end).trim()}else{return h}};e.Autocompleter.prototype.getDelimiterOffsets=function(){var k=this.dom.$elem.val();if(this.options.useDelimiter){var j=k.substring(0,this.getCaret().start);var l=j.lastIndexOf(this.options.delimiterChar)+1;var i=k.substring(this.getCaret().start);var h=i.indexOf(this.options.delimiterChar);if(h==-1){h=k.length}h+=this.getCaret().start}else{l=0;h=k.length}return{start:l,end:h}}})(jQuery);