"use strict";!function(t){t.fn.extend({textboxlist:function(e){var o=t.extend({},t.TextboxLister.defaults,e);return this.each((function(){t.data(this,"textboxlist")||t.data(this,"textboxlist",new t.TextboxLister(this,o))}))}}),t.TextboxLister=function(e,o){var n=this;return n.input=t(e),e.textboxList=n,n.opts=t.extend({},n.input.data(),o),n.opts.inputName||(n.opts.inputName=n.input.attr("name")),n.container=n.input.wrap("<div />").parent().addClass(n.opts.containerClass).addClass("clearfix"),n.opts.enableClose&&n.container.addClass("jqTextboxListEnableClose"),"manual"===n.opts.sorting&&n.container.sortable({items:"> ."+n.opts.listValueClass,placeholder:"jqTextboxListPlaceholder",forcePlaceholderSize:!0,update:function(e,o){var s=[];t.each(n.container.sortable("toArray",{attribute:"class"}),(function(e,o){var n=[];t.map(o.split(/\s+/),(function(t){n.push("."+t)})),n=n.join(""),t(n).find("input").each((function(){s.push(t(this).val())}))})),n.currentValues=s}}),n.opts.clearControl&&t(n.opts.clearControl).on("click",(function(){return n.clear(),this.blur(),!1})),n.opts.resetControl&&t(n.opts.resetControl).on("click",(function(){return n.reset(),this.blur(),!1})),n.opts.autocomplete&&(t.extend(n.opts,{source:n.opts.autocomplete,select:function(t,e){return n.select([e.item.value+"="+e.item.label]),!1}}),n.input.attr("autocomplete","off").autocomplete(n.opts)),n.input.on("keydown.textboxlist",(function(t){if(13===t.keyCode){var e=n.input.val();if(e)return n.opts.autocomplete&&n.input.autocomplete("close"),n.select(e),t.preventDefault(),!1}})),n.input.on("AddValue",(function(t,e){e&&n.select(e)})),n.input.on("DeleteValue",(function(t,e){e&&n.deselect([e])})),n.input.on("Reset",(function(){n.reset()})),n.input.on("Clear",(function(){n.clear()})),n.currentValues=[],n.titleOfValue=[],n.input.val()&&n.select(n.input.val().split(/\s*,\s*/),!0),n.initialValues=n.currentValues.slice(),n.input.removeClass("foswikiHidden").show(),this},t.TextboxLister.prototype.clear=function(){var t=this;t.container.find("."+t.opts.listValueClass).remove(),t.currentValues=[],t.titleOfValue=[],"function"==typeof t.opts.onClear&&t.opts.onClear(t)},t.TextboxLister.prototype.reset=function(){var t=this;t.clear(),t.select(t.initialValues),"function"==typeof t.opts.onReset&&t.opts.onReset(t)},t.TextboxLister.prototype.select=function(e,o){var n,s,i,a,l,r,u=this;for("string"==typeof e?e=e.split(/\s*,\s*/):void 0===e&&(e=[]),n=0;n<e.length;n++)(s=e[n])&&(i=s,s.match(/^(.*)=(.*)$/)&&(e[n]=s=RegExp.$1,u.titleOfValue["_"+s]=RegExp.$2));for(u.currentValues=u.currentValues.concat(e).filter((function(t,e,o){return o.indexOf(t)===e})),!0===u.opts.sorting&&(u.currentValues=u.currentValues.sort()),u.container.find("."+u.opts.listValueClass).remove(),n=u.currentValues.length-1;n>=0;n--)(s=u.currentValues[n])&&(r="tag_"+(i=u.titleOfValue["_"+s]||s).replace(/["' ]/,"_"),a=t("<input type='hidden' name='"+u.opts.inputName+"' title='"+i+"' />").val(s),u.input.is(".foswikiMandatory")&&a.addClass("foswikiMandatory"),u.opts.enableClose&&(l=t("<a href='#' title='remove "+i+"'></a>").addClass(u.opts.closeClass).on("click",(function(e){var o=t(this).parent().find("input").val();return u.deselect([o]),u.input.trigger("DeleteValue"),!1}))),t("<span></span>").addClass(u.opts.listValueClass+" "+r).append(a).append(l).append(i).prependTo(u.container));u.input.val(""),o||("function"==typeof u.opts.onSelect&&u.opts.onSelect(u),u.input.trigger("SelectValue",e))},t.TextboxLister.prototype.deselect=function(t){var e,o,n,s,i,a=this,l=[];if("string"==typeof t&&(t=t.split(/\s*,\s*/)),t.length){for(e=0;e<a.currentValues.length;e++)if(n=a.currentValues[e]){for(s=!1,o=0;o<t.length;o++)if((i=t[o])&&n===i){s=!0;break}!s&&n&&l.push(n)}a.currentValues=l,"function"==typeof a.opts.onDeselect&&a.opts.onDeselect(a),a.select(l,!0)}},t.TextboxLister.defaults={containerClass:"jqTextboxListContainer",listValueClass:"jqTextboxListValue",closeClass:"jqTextboxListClose",enableClose:!0,sorting:"manual",inputName:void 0,resetControl:void 0,clearControl:void 0,autocomplete:void 0,onClear:void 0,onReset:void 0,onSelect:void 0,onDeselect:void 0},t("input.jqTextboxList:not(.jqInitedTextboxList)").livequery((function(){var e=t(this),o=t.extend({autocomplete:e.attr("autocomplete")},e.data());e.addClass("jqInitedTextboxList").textboxlist(o)}))}(jQuery);
