var Cl=window.Cl||{};!function(a){"use strict";Cl.Autocomplete=new Class({options:{url:!1,minLength:3,easing:"swing",duration:300,delay:30,fx:"slide",closeOnBlur:!0,showEmpty:!1,dropdown:!1,cls:{field:'input[type="search"]',filter:'input[name="filter"]',results:".autocomplete-results",filtering:".autocomplete-filtering",item:".autocomplete-item",close:".autocomplete-close",focus:".autocomplete-focus",submit:".autocomplete-submit",icon:".autocomplete-icon",highlightFieldOnClick:!0,openAllOnClick:!0,clearFieldOnClick:!1},attr:{value:"data-value"},lang:{error:"There has been an error!",empty:"No results."}},initialize:function(b,c){this.container=a(b),this.options=a.extend(!0,{},this.options,c),this.url=this.options.url?this.options.url:this.container.attr("action"),this.results=this.container.find(this.options.cls.results),this.field=this.container.find(this.options.cls.field),this.fltr=this.container.find(this.options.cls.filter,this.container),this.callbacks={},this.timer=function(){},this.query="",this._setup()},_setup:function(){var b=this;this.results.hide().attr("aria-hidden",!0),this.field.on("keyup focus paste click",function(){b.search()}),this.container.on("keydown",function(a){var c=a.charCode?parseInt(a.charCode):a.keyCode?parseInt(a.keyCode):0;switch(c){case 27:b.hide();break;case 38:a.preventDefault(),b._focusPreviousResult();break;case 40:a.preventDefault(),b._focusNextResult()}}),this.options.closeOnBlur&&(this.container.on("click",function(a){a.stopPropagation()}),a(document.body).on("click",function(){b.hide(),b._fire("close")})),a(this.options.cls.submit,this.container).bind("click",function(a){a.preventDefault(),b.container.submit()}),this.options.dropdown&&this._typeDropdown()},_typeDropdown:function(){var b=this,c=this.field.val();this.field.attr(this.options.attr.value,c),this.field.on("click",function(){b.options.cls.highlightFieldOnClick&&b.field.select(),b.options.cls.clearFieldOnClick&&b.field.val(""),b.options.cls.openAllOnClick?b.search(" ",!0):b.search()}),a(this.options.cls.icon,this.container).bind("click",function(a){a.preventDefault(),a.stopPropagation(),b._isVisible()?(b.hide(),b._fire("close")):(b.options.cls.clearFieldOnClick&&b.field.val(""),b.options.cls.highlightFieldOnClick&&b.field.select(),b.options.cls.openAllOnClick?b.search(" ",!0):b.search()),b.field.focus(),b.options.cls.highlightFieldOnClick||b.field.blur()}),this.callbacks.close=function(){var a=b.field.attr(b.options.attr.value);b.field.val(a)}},show:function(){this.results.attr("aria-hidden",!1),"toggle"===this.options.fx&&this.results.show(),"fade"===this.options.fx&&this.results.fadeIn(this.options.duration),"slide"===this.options.fx&&this.results.slideDown(this.options.duration),this._fire("show")},hide:function(){this.results.attr("aria-hidden",!0),"toggle"===this.options.fx&&this.results.hide(),"fade"===this.options.fx&&this.results.fadeOut(this.options.duration,this.options.transition),"slide"===this.options.fx&&this.results.slideUp(this.options.duration,this.options.transition),this._fire("hide")},search:function(a,b){var c=this;a=a||this.field.val(),b=b||!1,this._validate(a)&&(c.query=a,clearTimeout(c.timer),c.timer=setTimeout(function(){c._request(b)},c.options.delay)),this._fire("search")},_focusNextResult:function(){var a=this.results.find(this.options.cls.item);if(a.length>0){var b=a.filter(":focus").first();a.index(b)>=0?a.index(b)+1===a.length?this.field.focus():a.eq(a.index(b)+1).focus():a.eq(0).focus()}},_focusPreviousResult:function(){var a=this.results.find(this.options.cls.item);if(a.length>0){var b=a.filter(":focus").first();a.index(b)>=0?0===a.index(b)?this.field.focus():a.eq(a.index(b)-1).focus():a.eq(a.length-1).focus()}},_validate:function(a){return this.options.dropdown?a!==this.field.attr(this.options.attr.value):""!==a&&a.length>=this.options.minLength&&a!==this.query},_request:function(b){var c=this,d="";b=b||!1,d=b?"filter=&q=":this.container.find("input").serialize(),a.ajax({type:"GET",url:this.url,dataType:"html",data:d,success:function(a){a&&a.length>0?c._replace(a):c._showEmpty()},error:function(){c._showError()},headers:{"X-Requested-With":"XMLHttpRequest"}})},_replace:function(b){var c=this;this.results.html(b),a(this.options.cls.item,this.results).bind("click",function(b){b.preventDefault();var d=a(this).attr(c.options.attr.value);d&&(c.field.val(d),c.field.attr(c.options.attr.value,d)),c.hide(),a(c.field).focus(),c._fire("selected")}),a(this.options.cls.filtering,this.results).bind("click",function(b){b.stopPropagation(),b.preventDefault();var d=a(this).attr("data-filter");a(c.fltr).val(d),a(c.field).focus(),c.search()}),a(this.options.cls.focus,this.results).bind("click",function(b){b.preventDefault(),a(c.field).focus()}),a(this.options.cls.close,this.results).bind("click",function(b){b.preventDefault(),c.hide(),a(c.field).focus(),c._fire("close")}),this.results.is(":visible")||this.show()},_showEmpty:function(){this.options.showEmpty?this._replace('

'+this.options.lang.empty+"

"):this._replace("")},_showError:function(){this._replace('

'+this.options.lang.error+"

")},_isVisible:function(){return this.results.is(":visible")},_fire:function(a){return void 0===this.callbacks[a]?!1:void this.callbacks[a](this)}})}(jQuery);