!function(a){"use strict";function b(a,e){c++,this.element=d(a),this.options=d.extend({},b.defaults,e),this.cache={},this.id="remotelist-"+c,this.options.param||(this.options.param=this.element.prop("name")||"q"),this._createDatalist(),this._bindEvents(this)}var c=0,d=window.webshims&&webshims.$||window.jQuery||window.$;b.defaults={minLength:2,maxLength:-1,source:"",param:"",select:d.noop,renderItem:null},b.createOption=function(a){var b=d(document.createElement("option"));return a&&"string"!=typeof a||(a={value:a}),b.prop("value",a.value),a.label&&b.prop("label",a.label),b.data("optionData",a),b[0]},b.prototype={selectedData:function(){var a=this.selectedOption();return a&&d(a).data("optionData")},selectedOption:function(){var a=null,b=this.val();return b&&(a=d('[value="'+b+'"]',this.element.prop("list"))[0]||null),a},search:function(a){var b,c,e,f,g=this,h=this.options,i=a;h.maxLength>-1&&(i=i.substr(h,h.maxLength)),this.doAjax=!1,this.cache[i]?this.setList(this.cache[i],i):this.currentAjax?this.doAjax=a:(this.element.addClass("list-search"),b={},b[h.param]=a,this.currentAjax=!0,f=function(){f.xhr&&f.xhr.abort&&f.xhr.abort(),g.currentAjax=!1,clearTimeout(f.timer),g.doAjax?g.search(g.doAjax):g.element.removeClass("list-search")},c=d.isFunction(h.source)?h.source:function(a,b,c,e,f){return d.ajax({dataType:"json",url:f,data:e,context:this,error:c,success:b})},e=function(a){g.setList(a,i),f()},f.timer=setTimeout(f,999),f.xhr=c(a,e,f,b,h.source))},setList:function(a,c){a||(a=[]),this.currentOptions!=a&&this.currentVal!==c&&(this.currentOptions=a,this.currentVal=c,this.cache[c]=a,a=d.map(a,b.createOption),this.datalistSelect.html(a),d.fn.updatePolyfill&&this.datalistSelect.updatePolyfill())},_createDatalist:function(){this.datalistSelect=this.element.prop("list"),this.datalistSelect||(this.datalistSelect=d('