Skip to content
autocomplete.js 27 KiB
Newer Older
杨郁彬's avatar
杨郁彬 committed
$.component("coral.autocomplete",$.coral.inputbase,{version:"4.0.2",defaultElement:"<input>",castProperties:["source","pageData","buttons","title","rootNode","triggers","showRequiredMark","hideRequiredMark","itemattr"],options:{appendTo:"body",autoFocus:false,allowRepeat:false,asyncType:"post",delay:300,scrollTimeOut:100,maxLabelWidth:"auto",pageData:[],multiLineLabel:false,minLength:0,minHeight:1,height:"auto",multiple:false,position:{my:"left top",at:"left bottom",collision:"none"},value:"",text:"",forceSelection:false,defaultValue:"",postMode:"value",required:false,showStar:true,separator:",",buttons:[],rowNum:50,title:null,errMsg:null,errMsgPosition:"leftBottom",panelHeight:"auto",placeholder:"",maxPanelHeight:200,iframePanel:false,isLabel:false,source:null,valueField:"value",textField:"label",searchField:"valueField",onValidSuccess:null,onValidError:null,onChange:null,onBlur:null,onClose:null,onFocus:null,onOpen:null,oncancel:null,onResponse:null,onSearch:null,onSelect:null,triggers:null,excluded:false},requestIndex:0,pending:0,_create:function(){var a=this;this._prepareInit();this._initAutocomplete();this._initState();this._initSource();this._initData();this._bindEvent();this._setDefaultValue();this._setDefaultText();this.liveRegion=$("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("coral-helper-hidden-accessible").appendTo(this.document[0].body);this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}});if(this.options.multiLineLabel){$(this.element).easytext({minWidth:10,maxWidth:200,maxChars:60});this._on(this.document,{click:function(b){if(this.options.readonly||this.options.isLabel){return}this._moveInput("last",b)}})}},_prepareInit:function(){this.lastSelectedItem={};this.selectedItems=[];this.isNewMenu=true},_initAutocomplete:function(){var c=this.options.render=="tree"?"coral-autocompletetree":"coral-autocomplete";this.className="coral-autocomplete-text coral-combo-default coral-textbox-default tabbable "+this.element[0].className;
this.classBorder="";this.hiddenClass="";if(this.options.iframePanel){this.iframePanel=$("<iframe class='coral-autocomplete-iframePanel' style='position:absolute;display:none;'></iframe>").appendTo("body")}if(this.options.multiLineLabel){var b=this,e=this.element[0].nodeName.toLowerCase(),d=e==="textarea",a=e==="input";this.ismultiLineLabel=d?true:a?false:this.element.prop("isContentEditable");this.compClass=c+" coral-textboxlist coral-textbox";this.createInput();this.valuebox=$(this.textboxWrapper.lastChild);this.textboxWrapper=$(this.textboxWrapper);this.elementBorder=$(this.elementBorder);this.element=$(this.textboxInput);this.elementBorder.css({minHeight:this.options.minHeight+"px",height:this.options.height,overflow:"auto"});this.valueMethod=this.valuebox[d||a?"val":"text"];this.textMethod=this.element[d||a?"val":"text"];this.textboxlistUl=$("<ul class='coral-textboxlist-ul'><li class='coral-textboxlist-inputLi'></li></ul>");this.textboxlistUl.appendTo(this.elementBorder);this.element.appendTo(this.textboxlistUl.find(".coral-textboxlist-inputLi"));if(this.options.buttons.length>0){this._createButtonPanel()}if(typeof this.element.attr("id")!="undefined"){this.options.id=this.element.attr("id")}else{if(this.options.id){this.element.attr("id",this.options.id)}}if(typeof this.element.attr("name")!="undefined"){this.options.name=this.element.attr("name");this.valuebox.attr("name",this.options.name);this.element.removeAttr("name")}else{if(this.options.name){this.valuebox.attr("name",this.options.name)}}if(this.options.text){this.setText(this.options.text)}if($.trim(this.valuebox.val())!=""){this.options.value=this.valuebox.val()}if(this.options.showPopup){}}else{var e=this.element[0].nodeName.toLowerCase(),d=e==="textarea",a=e==="input";this.ismultiLineLabel=d?true:a?false:this.element.prop("isContentEditable");this.compClass=c+" coral-textbox";this.createInput();this.valuebox=$(this.textboxWrapper.lastChild);this.elementBorder=$(this.elementBorder);this.textboxWrapper=$(this.textboxWrapper);
this.element=$(this.textboxInput);this.textboxWrapper.css({"border-width":"0"});this.elementBorder.css({minHeight:this.options.minHeight+"px"});this.valueMethod=this.valuebox[d||a?"val":"text"];this.textMethod=this.element[d||a?"val":"text"];if(this.options.buttons.length>0){this._createButtonPanel()}if(typeof this.element.attr("id")!="undefined"){this.options.id=this.element.attr("id")}else{if(this.options.id){this.element.attr("id",this.options.id)}}if(typeof this.element.attr("name")!="undefined"){this.options.name=this.element.attr("name");this.valuebox.attr("name",this.options.name);this.element.removeAttr("name")}else{if(this.options.name){this.valuebox.attr("name",this.options.name)}}this.element.attr("placeholder",this.options.placeholder);if(this.options.placeholder&&""===this.element.val()){this._showPlaceholder()}if(this.options.text){this.setText(this.options.text)}if($.trim(this.valuebox.val())!=""){this.options.value=this.valuebox.val()}}},_initState:function(){if(this.element.prop("readonly")||this.options.readonly){this.options.readonly=true;this.valuebox.prop("readonly",true);this.element.prop("readonly",true);this.element.removeClass("tabbable");this.component().addClass("coral-readonly")}if(this.options.isLabel){this.element.prop("readonly",true);this.valuebox.prop("readonly",true);this.element.removeClass("tabbable");this.component().addClass("coral-isLabel")}},reset:function(){this.setValue(this.originalValue)},_showPlaceholder:function(){if($.support.placeholder&&!this.options.multiLineLabel){return}var b=this,a=$("<span class='coral-textbox-placeholder-label'>"+b.options.placeholder+"</span>");$(b.element).after(a)},_hidePlaceholder:function(){if($.support.placeholder&&!this.options.multiLineLabel){return}var a=this;a.textboxWrapper.find(".coral-textbox-placeholder-label").remove()},_bindEvent:function(){var c=this,b,a,d;this._on(this.element,{mouseenter:function(f){if(c.options.disabled||c.options.isLabel||c.options.readonly){return}c.textboxWrapper.addClass("coral-textbox-hover")
},mouseleave:function(f){if(c.options.disabled||c.options.isLabel||c.options.readonly){return}c.textboxWrapper.removeClass("coral-textbox-hover")},keyup:function(e){if(this.options.readonly||this.options.isLabel){return}this._trigger("onKeyUp",e,{})},keydown:function(e){if(c.options.disabled||c.options.isLabel||c.options.readonly){return}if(this.element.prop("readOnly")){b=true;d=true;a=true;return}b=false;d=false;a=false;var f=$.coral.keyCode;switch(e.keyCode){case f.PAGE_UP:if(this.options.render=="tree"){break}b=true;this._move("previousPage",e);break;case f.PAGE_DOWN:if(this.options.render=="tree"){break}b=true;this._move("nextPage",e);break;case f.LEFT:b=true;this._moveItem("left",e);break;case f.RIGHT:b=true;this._moveItem("right",e);break;case f.UP:if(this.options.render=="tree"){break}b=true;this._keyEvent("previous",e);break;case f.DOWN:if(this.options.render=="tree"){break}b=true;this._keyEvent("next",e);break;case f.ENTER:if(this.menu.active){b=true;e.preventDefault();this.menu.select(e)}break;case f.TAB:if(this.menu.active){this.menu.select(e)}break;case f.ESCAPE:if(this.menu.element.is(":visible")){if(!this.ismultiLineLabel){this.setValue(this.term,true)}this.close(e);e.preventDefault()}break;default:a=true;this._searchTimeout(e);break}this._trigger("onKeyDown",e,{})},keypress:function(e){if(c.options.disabled||c.options.isLabel||c.options.readonly){return}if(b){b=false;if(!this.ismultiLineLabel||this.menu.element.is(":visible")){e.preventDefault()}return}if(a){return}if(this.options.render=="tree"){return}var f=$.coral.keyCode;switch(e.keyCode){case f.PAGE_UP:this._move("previousPage",e);break;case f.PAGE_DOWN:this._move("nextPage",e);break;case f.UP:this._keyEvent("previous",e);break;case f.DOWN:this._keyEvent("next",e);break;default:break}},input:function(e){if(c.options.disabled||c.options.isLabel||c.options.readonly){return}if(d){d=false;e.preventDefault();return}this._searchTimeout(e)},focus:function(){if(c.options.disabled||c.options.isLabel||c.options.readonly){return
}this.selectedItem=null;this.previous=this.getValue();this.component().addClass("coral-state-focus");this._hidePlaceholder()},blur:function(f){this.component().removeClass("coral-state-focus");if(c.options.disabled||c.options.isLabel||c.options.readonly){return}if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching);this.close(f);if(!this.options.multiLineLabel){if(this.options.multiple){}else{if(!this.options.forceSelection){if(this.lastSelectedItem[this.options.textField]!=this.element.val()){this.setValue(this.element.val(),true)}}else{if(this.options.render=="tree"){}else{var e=$.grep(this.responseItems,function(g){return g[c.options.textField]==c.element.val()});if(!e.length){this.setValue("",true)}else{this.setValue(e[0][c.options.valueField],true)}}}}}if(""===this.getValue()){this._showPlaceholder()}this._trigger("onBlur",f,{item:this.selectedItem})}});this._on(this.menu.element,{scroll:function(g){var f=this;viewH=this.menu.element.height(),contentH=this.menu.element[0].scrollHeight,scrollTop=this.menu.element.scrollTop();if(contentH-viewH-scrollTop<=15){if(this.renderNumber<this.options.pageData.length){if(f.scrollTimer){clearTimeout(f.scrollTimer)}f.scrollTimer=setTimeout(function(){f._renderMenu(f.menu.element,f.options.pageData[f.renderNumber]);f.menu.refresh();f.renderNumber++},f.options.scrollTimeout)}}},mousedown:function(e){if(this.options.readonly||this.options.isLabel){return}e.preventDefault();this.cancelBlur=true;this._delay(function(){delete this.cancelBlur});var f=this.menu.element[0];if(!$(e.target).closest(".coral-menu-item").length){this._delay(function(){var g=this;this.document.one("mousedown",function(h){if(h.target!==g.element[0]&&h.target!==f&&!$.contains(f,h.target)){g.close()}})})}},menuonfocus:function(g,h){if(this.options.readonly||this.options.isLabel){return}var e,f;if(this.isNewMenu){this.isNewMenu=false;if(g.originalEvent&&/^mouse/.test(g.originalEvent.type)){this.menu.blur();this.document.one("mousemove",function(){$(g.target).trigger(g.originalEvent)
});return}}f=h.item.data("coral-autocomplete-item");if(false!==this._trigger("onFocus",g,{item:f})){if(g.originalEvent&&/^key/.test(g.originalEvent.type)){}}e=h.item.attr("aria-label")||f[this.options.valueField];if(e&&$.trim(e).length){this.liveRegion.children().hide();$("<div>").text(e).appendTo(this.liveRegion)}},menuonselect:function(g,j){if(this.options.readonly||this.options.isLabel){return}var f=j.item.data("coral-autocomplete-item"),e=this.previous;if(this.element[0]!==this.document[0].activeElement){this.element.focus();this.previous=e;this._delay(function(){this.previous=e;this.selectedItem=f;c.lastSelectedItem=f})}c.lastSelectedItem=f;this.selectedItem=f;if(false!==this._trigger("onSelect",g,{item:f})){var f=j.item.data("coral-autocomplete-item");valueField=f[this.options.valueField];textField=f[this.options.textField];var i=c.getValue(),l=c.getText(),h=i==""?[]:i.split(this.options.separator),k=l==""?[]:l.split(this.options.separator);if(c.options.multiple){if(this.options.postMode=="value"){if(!this.options.allowRepeat&&$.inArray(valueField,h)>-1){return}h.push(valueField);k.push(textField);this.setText(k.join(this.options.separator));this.setValue(h.join(this.options.separator),true)}if(this.options.postMode=="text"){if(!this.options.allowRepeat&&$.inArray(textField,k)>-1){return}k.push(textField);c.setValue(k.join(this.options.separator),true)}if(this.options.postMode=="value-text"){if(!this.options.allowRepeat&&$.inArray(valueField+"-"+textField,h+"-"+k)>-1){return}h.push(valueField);k.push(textField);this.setValue(h.join(this.options.separator)+"-"+k.join(this.options.separator),true)}}else{if(this.options.postMode=="value"){this.setText(f[this.options.textField],true);this.setValue(f[this.options.valueField],true)}if(this.options.postMode=="text"){this.setValue(f[this.options.textField],true)}if(this.options.postMode=="value-text"){this.setValue(f[this.options.valueField]+"-"+f[this.options.textField],true)}}}this.term=this.getText();this.close(g)}});
if(this.options.multiLineLabel){this._on({"click .coral-label-close":function(f){if(this.options.readonly||this.options.isLabel){return}this._removeLabel(f)},"click .coral-textboxlist-item":function(f){if(this.options.readonly||this.options.isLabel){return}f.stopPropagation()},"click .coral-textbox-border":function(f){if(this.options.readonly||this.options.isLabel){return}this.element.focus()},"mouseenter .coral-label-close":function(f){$(f.target).addClass("coral-label-close-hover")},"mouseleave .coral-label-close":function(f){$(f.target).removeClass("coral-label-close-hover")},"focus .coral-textboxlist-item":function(f){if(this.options.readonly||this.options.isLabel){return}$(f.target).addClass("coral-state-active")},"blur .coral-textboxlist-item":function(f){$(f.target).removeClass("coral-state-active")},"keydown .coral-state-active":function(g){if(this.options.readonly||this.options.isLabel){return}var f=$.coral.keyCode;switch(g.keyCode){case f.LEFT:this._moveInput("left",g);break;case f.RIGHT:this._moveInput("right",g);break;case f.BACKSPACE:this._removeLabel(g);break;case f.DELETE:this._removeLabel(g);break;default:break}}})}},_initData:function(){var b=this;var a=this.options;this.menu=$("<ul>").addClass("coral-autocomplete-panel coral-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance");if(isNaN(a.panelHeight)){$(".coral-autocomplete-panel").css({"max-height":a.maxPanelHeight+"px"});$(".coral-autocomplete-iframePanel").css({"max-height":a.maxPanelHeight+"px"})}},_setDefaultValue:function(){if(!this.options.value){this.originalValue="";return}else{this.setValue(this.options.value);this.originalValue=this.getValue()}},_setDefaultText:function(){if(!this.options.text){return}this.setText(this.options.text)},getLastSelectedItem:function(){return this.lastSelectedItem},_destroy:function(){clearTimeout(this.searching);this.element.removeClass("coral-autocomplete-input").removeAttr("autocomplete").removeAttr("title");this.menu.element.remove();
if(this.options.iframePanel){this.iframePanel.remove()}this.liveRegion.remove()},_setOption:function(a,c){var b=this.options.maxLabelWidth;if(b!="auto"){b=b+"px"}this._super(a,c);if(a==="isLabel"&&typeof c==="boolean"){this.element.prop("readonly",c);this.valuebox.prop("readonly",c);this.component().removeClass("coral-readonly");this.component().toggleClass("coral-isLabel",c);this.element.toggleClass("tabbable",!c);if(this.textboxlistUl){if(c){this.textboxlistUl.find(".coral-textboxlist-item").css("max-width","")}else{this.textboxlistUl.find(".coral-textboxlist-item").css("max-width",b)}}}if(a==="readonly"&&typeof c==="boolean"){this.element.prop("readonly",c);this.valuebox.prop("readonly",c);this.component().removeClass("coral-isLabel");this.component().toggleClass("coral-readonly",c);this.element.toggleClass("tabbable",!c);if(this.textboxlistUl){if(c){this.textboxlistUl.find(".coral-textboxlist-item").css("max-width","")}else{this.textboxlistUl.find(".coral-textboxlist-item").css("max-width",b)}}}if(a==="source"){this._initSource()}if(a==="appendTo"){this.menu.element.appendTo(this._appendTo())}if(a==="disabled"&&c&&this.xhr){this.xhr.abort()}if(a==="value"){this.setValue(c)}if(a==="placeholder"){this.element.attr("placeholder",this.options.placeholder);if(this.getValue()===""){this._showPlaceholder()}}},_appendTo:function(){var a=this.options.appendTo;if(a){a=a.jquery||a.nodeType?$(a):this.document.find(a).eq(0)}if(!a||!a[0]){a=this.element.closest(".coral-front")}if(!a.length){a=this.document[0].body}return a},_filter:function(c,b,a){a($.coral.autocomplete.filter(c,b.term,this.options.valueField,this.options.textField,this.options.searchField))},transTempData:function(){function b(e,d){for(var c=0;c<e.length;c++){if(e[c].children){b(e[c].children,d)}d.tempData[e[c].id]=e[c]}}if(this.options.source&&this.options.render==="tree"){this.options.tempData={};this.options.textField=this.options.textField||"name";this.options.valueField=this.options.valueField||"id";b(this.options.source,this.options)
}if(this.options.source&&this.options.render!=="tree"){this.options.tempData={};this.options.textField=this.options.textField||"text";this.options.valueField=this.options.valueField||"value";for(var a=0;a<this.options.source.length;a++){this.options.tempData[this.options.source[a][this.options.valueField]]=this.options.source[a]}}},_initSource:function(){var c,a,b=this;if($.isArray(this.options.source)){c=this.options.source;this.transTempData();this.source=function(e,d){b._filter(c,e,d)}}else{if(typeof this.options.source==="string"){a=this.options.source;this.source=function(e,d){if(b.xhr){b.xhr.abort()}if(this.element.attr("name")){e[this.element.attr("name")]=e.term}b.xhr=$.ajax({url:a,data:e,type:b.options.asyncType,dataType:"json",success:function(f){if(b.options.render!="tree"){d(f)}else{$(b.menu.element).tree("reload",f);d(f)}},error:function(){d([])}})}}else{this.source=this.options.source}}},_searchTimeout:function(a){clearTimeout(this.searching);this.searching=this._delay(function(){var c=this.term===this._term(),b=this.menu.element.is(":visible"),d=a.altKey||a.ctrlKey||a.metaKey||a.shiftKey;if(!c||(c&&!b&&!d)){this.selectedItem=null;this.search(null,a)}},this.options.delay)},_term:function(){if(this.options.multiLineLabel){return this.element.val()}return this.getText()},_updateTitle:function(d){var c=this,a,b=this.options;if(b.multiLineLabel){a=c.element.closest("ul")}else{a=c.element}if(b.title==true){a.attr("title",d)}else{if(b.title==false){a.attr("title","")}else{a.attr("title",b.title)}}},search:function(b,a){b=b!=null?b:this._term();this.term=this._term();if(b.length<this.options.minLength||(this.options.minLength>0&&$.trim(b)=="")){return this.close(a)}if(this._trigger("onSearch",a)===false){return}return this._search(b)},_search:function(a){this.pending++;this.element.addClass("coral-autocomplete-loading");this.cancelSearch=false;this.source({term:a},this._response())},_response:function(){var a=++this.requestIndex;return $.proxy(function(b){if(a===this.requestIndex){this.__response(b)
}this.pending--;if(!this.pending){this.element.removeClass("coral-autocomplete-loading")}},this)},__response:function(f){var e=this;this.renderNumber=1;this.options.pageData=[];if(f){f=this._normalize(f)}this._trigger("onResponse",null,{content:f});if(!this.options.disabled&&f&&f.length&&!this.cancelSearch){var d=f.length,a=e.options.rowNum,c=Math.ceil(d/a);if(c>1){for(var b=0;b<c;b++){e.options.pageData[b]=f.slice(b*a,(b+1)*a-1)}f=e.options.pageData[0]}this._suggest(f);this._trigger("onOpen")}else{this._close()}},close:function(a){this.cancelSearch=true;this._close(a)},_close:function(a){if(this.menu.element.is(":visible")){this.menu.element.hide();if(this.options.iframePanel){this.iframePanel.hide()}this.options.render!="tree"&&this.menu.blur();this.isNewMenu=true;this._trigger("onClose",a)}},_change:function(a){if(this.previous!==this.getValue()){this._trigger("onChange",a,{item:this.selectedItem,oldValue:this.previous,value:this.getValue(),text:this.getText(),lastSelectedItem:this.lastSelectedItem})}},_normalize:function(a){var b=this;if(a.length&&a[0][this.options.textField]&&a[0][this.options.valueField]){return a}return $.map(a,function(c){if(typeof c==="string"){return{label:c,value:c}}return $.extend({},c,{label:c.label||c.value,value:c.value||c.label})})},_suggest:function(c){var g=this;var f=this.menu.element,e;var h=this.iframePanel||$();if(this.options.render=="tree"){}else{this.menu.element.empty();this._renderMenu(f,c);this.isNewMenu=true;this.menu.refresh()}this.responseItems=c;var a=f.height();h.css("height",a);f.show();f.scrollTop(0);h.show();var b=f.siblings(".coral-front:visible").map(function(){return +$(this).css("z-index")}).get(),d=Math.max.apply(null,b);if(d>=+f.css("z-index")){f.css("z-index",d+1);h.css("z-index",d)}h.outerWidth(Math.max(f.width("").outerWidth()+1,this.elementBorder.outerWidth()));this._resizeMenu();f.position($.extend({of:this.elementBorder},this.options.position));h.position($.extend({of:this.elementBorder},this.options.position));
if(this.options.autoFocus){this.menu.next()}},_resizeMenu:function(){var a=this.menu.element;var b=this.iframePanel||$();a.outerWidth(Math.max(a.width("").outerWidth()+1,this.elementBorder.outerWidth()))},_renderMenu:function(b,a){var c=this;$.each(a,function(d,e){c._renderItemData(b,e)})},_renderItemData:function(a,b){return this._renderItem(a,b).data("coral-autocomplete-item",b)},_renderItem:function(h,l){var k=l[this.options.textField];var i,g="",a="",d=!!l.hidden==true?"hidden":"";var f=$.coral.toFunction(this.options.formatter),c;if($.isFunction(f)){k=f.apply(this.element[0],[{item:l}])}var e=$.coral.toFunction(this.options.itemattr);if($.isFunction(e)){var j=e.apply(this.element[0],[{item:l}]);if(!$.isEmptyObject(j)){if(j.hasOwnProperty("style")){a+=j.style;delete j.style}if(j.hasOwnProperty("class")){d+=" "+j["class"];delete j["class"]}try{delete j.role}catch(b){}for(i in j){if(j.hasOwnProperty(i)){g+=" "+i+"="+j[i]}}}return $('<li class="'+d+'"'+g+"style="+a+">").text(k).appendTo(h)}else{return $("<li>").addClass(d).text(k).appendTo(h)}},_move:function(b,a){if(!this.menu.element.is(":visible")){this.search(null,a);return}if(this.menu.isFirstItem()&&/^previous/.test(b)||this.menu.isLastItem()&&/^next/.test(b)){if(!this.options.multiLineLabel){this.setValue("",true);this.setText(this.term)}this.menu.blur();return}this.menu[b](a)},component:function(){return this.textboxWrapper},_setLastSelectedItem:function(){var a=this.options;var b=this.getValue(),c=this.getText();this.lastSelectedItem={};this.lastSelectedItem[a.valueField]=b;this.lastSelectedItem[a.textField]=c},_text:function(f){var e=this.options.maxLabelWidth,a=this.options.readonly,b=this.options.isLabel;if(this.options.multiLineLabel){if(f!=""&&!f){var d=[];$.each(this.textboxlistUl.find(".coral-textboxlist-item"),function(){d.push($(this).text())});return d.join(",")}var c="";if(f!=""&&!(f instanceof Array)){f=f.split(this.options.separator)}if(f instanceof Array){if(e=="auto"||b||a){$.each(f,function(g){f.splice(g,1,"<li tabindex='-1' class='coral-textboxlist-item'  title='"+this+"'>"+this+"<span class='coral-label-close cui-icon-cross2'></span></li>")
})}else{$.each(f,function(g){f.splice(g,1,"<li tabindex='-1' class='coral-textboxlist-item'  style='  max-width:"+e+"px;' title='"+this+"'>"+this+"<span class='coral-label-close cui-icon-cross2'></span></li>")})}c=f.join("")}else{if(e=="auto"||b||a){c="<li tabindex='-1' class='coral-textboxlist-item'   title='"+this+"' >"+f+"<span class='coral-label-close  cui-icon-cross2'></span></li>"}else{c="<li tabindex='-1' class='coral-textboxlist-item'  style='  max-width:"+e+"px;' title='"+this+"' >"+f+"<span class='coral-label-close cui-icon-cross2'></span></li>"}}if(f!=""){if(this.options.multiple){this.textboxlistUl.find(".coral-textboxlist-item").remove(".coral-textboxlist-item");this.textboxlistUl.find(".coral-textboxlist-inputLi").before(c)}else{this.textboxlistUl.find(".coral-textboxlist-item").remove(".coral-textboxlist-item");this.textboxlistUl.find(".coral-textboxlist-inputLi").before(c)}}else{this.textboxlistUl.find(".coral-textboxlist-item").remove(".coral-textboxlist-item")}}else{return this.textMethod.apply(this.element,arguments)}},getOldValue:function(){var c=this.options,b=[],e=[],a=0;if(!this.currentValues){return b}var e=this.currentValues.split(",");for(;a<e.length;a++){var d=e[a];b.push(d)}return b},setValue:function(a,e){a=a||"";var h=this,l,n,e,g;if(typeof a!=="string"){l=a.value;e=a.changed;g=a.removed}else{l=a}if(this.options.multiLineLabel){this.element.val("");this.element.css({width:"10px"})}this.previous=this.getValue();if(this.options.multiLineLabel){var h=this;var j=this.element.closest("li.coral-textboxlist-inputLi"),o=j.index(),f=o,m=this.valuebox.val(l)==""?[]:this.valuebox.val(l);if($.trim(l)==""){this.setText(l)}else{if("text"===this.options.postMode){this.setText(l)}else{if($.trim(l)!==""&&$.isArray(this.options.source)){var c=[],b=this.options.textField,k=l.split(",");for(var d=0;d<k.length;d++){c.push(this.options.tempData[k[d]][b])}if(c.length){this.setText(c)}}}}if(l==""){m=[]}this.valuebox.val(l);this.currentValues=l}else{if($.trim(l)==""){this.setText(l)
}else{if("text"===this.options.postMode){this.setText(l)}else{if($.trim(l)!==""&&$.isArray(this.options.source)){var c=[],b=this.options.textField,k=l.split(",");for(var d=0;d<k.length;d++){if(k[d] in this.options.tempData){c.push(this.options.tempData[k[d]][b])}}if(c.length){this.setText(c)}if(c.length){this.setText(c[0])}}}}this.valuebox.val(l)}if(l!==""){this._hidePlaceholder()}e&&this._change(null)},setText:function(a){this._updateTitle(a);this._text(a);this._setLastSelectedItem()},getValue:function(){if(this.options.multiLineLabel){return this.valuebox.val()}else{return this.valueMethod.apply(this.valuebox)}},getText:function(){return this._text()},focus:function(){if(this.options.disabled||this.options.readonly||this.options.isLabel){return false}this.element.focus()},_keyEvent:function(b,a){if(!this.ismultiLineLabel||this.menu.element.is(":visible")){this._move(b,a);a.preventDefault()}},_removeLabel:function(f){var c=this.element.closest("li.coral-textboxlist-inputLi"),j=$(f.target).closest("li.coral-textboxlist-item"),g=$(f.target).closest("li.coral-textboxlist-item:last");c.insertAfter(g);var i=c.index();var b=j.index();var d=b;if(b>i){d=b-1}var a=this.getText().split(",");a.splice(d,1);j.remove();var h=this.getValue().split(",");h.splice(d,1);this.selectedItems.splice(d,1);this.selectedItem=null;this.setValue(h.join(","),true);if(typeof this.options.source=="string"){this.setText(a.join(","))}this._moveInput("last",f);this.element.val("");this.element.focus()},_moveInput:function(f,d){var a=this.element.closest("li.coral-textboxlist-inputLi");var b=$(d.target).closest("li.coral-textboxlist-item");var c=$(a).closest("li.coral-textboxlist-inputLi").nextAll("li.coral-textboxlist-item").last();switch(f){case"left":a.insertBefore(b);this.element.val("");this.element.focus();break;case"right":a.insertAfter(b);this.element.val("");this.element.focus();break;case"last":a.insertAfter(c);this.element.val("");break}},_moveItem:function(c,b){var a=this.element.closest("li.coral-textboxlist-inputLi");
if(c=="left"&&a.prev().length&&$(a.find("input")).caret()==0){this.element.val("");a.prev().focus()}if(c=="right"&&a.next().length&&$(a.find("input")).caret()==a.find("input").val().length){this.element.val("");a.next().focus()}}});$.extend($.coral.autocomplete,{escapeRegex:function(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(g,c,b,a,f){var d=this;var e=new RegExp($.coral.autocomplete.escapeRegex(c),"i");if(f){return $.grep(g,function(l){var j=e.test(l[a]||l[b]||l);var k=f.split(",");for(var h=0;h<k.length;h++){if(!j&&l[k[h]]){j=e.test(l[k[h]]);if(j){break}}}return j})}return $.grep(g,function(h){return e.test(h[a]||h[b]||h[f]||h)})}});$.component("coral.autocomplete",$.coral.autocomplete,{options:{messages:{noResults:"No search results.",results:function(a){return a+(a>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(b){var a;this._superApply(arguments);if(this.options.disabled||this.cancelSearch){return}if(b&&b.length){a=this.options.messages.results(b.length)}else{a=this.options.messages.noResults}this.liveRegion.children().hide();$("<div>").text(a).appendTo(this.liveRegion)}});