(function(n,t){var r=0,i;n.widget("ech.multiselect",{options:{header:!0,height:175,minWidth:225,classes:"",checkAllText:"Check all",uncheckAllText:"Uncheck all",noneSelectedText:"Select options",allSelectedText:"-- All --",selectedText:"# selected",selectedList:0,selectedShowAll:!1,selectedShowPlusMaxChars:!1,show:null,hide:null,autoOpen:!1,multiple:!0,position:{},showCheckAll:!0},_create:function(){var r=this.element.hide(),t=this.options;this.speed=n.fx.speeds._default;this._isOpen=!1;var f=(this.button=n('<button type="button"><span class="ui-icon ui-icon-triangle-1-s"><\/span><\/button>')).addClass("ui-multiselect ui-widget ui-state-default ").addClass(t.classes).attr({title:r.attr("title"),"aria-haspopup":!0,tabIndex:r.attr("tabIndex")}).insertAfter(r),o=(this.buttonlabel=n("<span />")).html(t.noneSelectedText).appendTo(f),u=(this.menu=n("<div />")).addClass("ui-multiselect-menu ui-widget ui-widget-content ui-corner-all").addClass(t.classes).appendTo(document.body),e=(this.header=n("<div />")).addClass("ui-widget-header-multiselect ui-corner-all ui-multiselect-header ui-helper-clearfix").appendTo(u),s=(this.headerLinkContainer=n("<ul />")).addClass("ui-helper-reset").html(function(){return t.header===!0?t.showCheckAll?'<li><a class="ui-multiselect-all" href="#"><span class="ui-icon ui-icon-check"><\/span><span>'+t.checkAllText+'<\/span><\/a><\/li><li><a class="ui-multiselect-none" href="#"><span class="ui-icon ui-icon-closethick"><\/span><span>'+t.uncheckAllText+"<\/span><\/a><\/li>":'<\/span><\/a><\/li><li><a class="ui-multiselect-none" href="#"><span class="ui-icon ui-icon-closethick"><\/span><span>'+t.uncheckAllText+"<\/span><\/a><\/li>":typeof t.header=="string"?"<li>"+t.header+"<\/li>":""}).append('<li class="ui-multiselect-close"><a href="#" class="ui-multiselect-close"><span class="ui-icon ui-icon-circle-close"><\/span><\/a><\/li>').appendTo(e),h=(this.checkboxContainer=n("<ul />")).addClass("ui-multiselect-checkboxes ui-helper-reset").appendTo(u);i=f.closest("span[id$='outerContainer']");this._bindEvents();this.refresh(!0);t.multiple||u.addClass("ui-multiselect-single")},_init:function(){this.options.header===!1&&this.header.hide();this.options.multiple||this.headerLinkContainer.find(".ui-multiselect-all, .ui-multiselect-none").hide();this.options.autoOpen&&this.open();this.element.is(":disabled")&&this.disable()},refresh:function(t){var u=this.element,f=this.options,s=this.menu,h=this.checkboxContainer,e=[],i="",o=u.attr("id")||r++;u.find("option").each(function(t){var w=n(this),u=this.parentNode,c=this.innerHTML.replace(/"/g,"&quot;"),v=this.title,y=this.value,l="ui-multiselect-"+(this.id||o+"-option-"+t),s=this.disabled,a=this.selected,h=["ui-corner-all"],p=(s?"ui-multiselect-disabled ":" ")+this.className,r;u.tagName==="OPTGROUP"&&(r=u.getAttribute("label"),n.inArray(r,e)===-1&&(i+='<li class="ui-multiselect-optgroup-label '+u.className+'"><a href="#">'+r.replace("'","'")+"<\/a><\/li>",e.push(r)));s&&h.push("ui-state-disabled");a&&!f.multiple&&h.push("ui-state-active");i+='<li class="'+p+'">';i+='<label for="'+l+'" title="'+v+'" class="'+h.join(" ")+'">';i+='<input id="'+l+'" name="multiselect_'+o+'" type="'+(f.multiple?"checkbox":"radio")+'" value="'+y+'" title="'+c+'"';a&&(i+=' checked="checked"',i+=' aria-selected="true"');s&&(i+=' disabled="disabled"',i+=' aria-disabled="true"');i+=" /><span>"+c+"<\/span><\/label><\/li>"});h.html(i);this.labels=s.find("label");this.inputs=this.labels.children("input");this._setButtonWidth();this._setMenuWidth();this.button[0].defaultValue=this.update();t||this._trigger("refresh")},update:function(){var r=this.options,l=this.inputs,e=l.filter(":checked"),d=l.filter(":not(:checked)"),s=e.length,g=d.length,u,p=l.length,a=n(),v,y,f,w,o,h,b,c,k;if(i!=t&&i.attr("data-sync")=="true"&&(v=[],y=[],e.each(function(t,i){var r=n(i).val();n.inArray(r,v)==-1&&(v.push(r),a=a.add(i))}),l.each(function(t,i){var r=n(i).val();n.inArray(r,y)==-1&&y.push(r)}),s=v.length,p=y.length),s===0)u=r.noneSelectedText;else if(g===0)u=s===1?e[0].title:r.allSelectedText;else if(n.isFunction(r.selectedText))u=r.selectedText.call(this,s,p,e.get());else if(/\d/.test(r.selectedList)&&r.selectedList>0&&s<=r.selectedList)u=a.length>0?a.map(function(){return n(this).next().html()}).get().join(", "):e.map(function(){return n(this).next().html()}).get().join(", ");else if(r.selectedShowAll)o=[],e.each(function(t,i){var r=n(i).attr("title");o.push(r)}),u=o.join(", ");else if(r.selectedShowPlusMaxChars>0){for(f=[],w=", ",e.each(function(t,i){var r=n(i).attr("title");f.push(r)}),f.sort(function(n,t){var i=n.toLowerCase(),r=t.toLowerCase();return i===r?0:i>r?1:-1}),o=[],h=f[0],h.length>r.selectedShowPlusMaxChars-3&&(h=h.substring(0,r.selectedShowPlusMaxChars-3)+"..."),o.push(h),b=h.length+w.length,c=1;c<f.length;c++){if(k=f[c],b+=k.length+w.length,b>r.selectedShowPlusMaxChars)break;o.push(k)}u=o.join(", ");c<f.length&&(u=u+" (+"+(f.length-c)+")")}else u=r.selectedText.replace("#",s).replace("#",p);return this.buttonlabel.html(u),u},_bindEvents:function(){function f(){return r[r._isOpen?"close":"open"](),!1}var r=this,u=this.button;u.find("span").bind("click.multiselect",f);u.bind({click:f,keypress:function(n){switch(n.which){case 27:case 38:case 37:r.close();break;case 39:case 40:r.open()}},mouseenter:function(){u.hasClass("ui-state-disabled")||n(this).addClass("ui-state-hover-multiselect")},mouseleave:function(){n(this).removeClass("ui-state-hover-multiselect")},focus:function(){u.hasClass("ui-state-disabled")||n(this).addClass("ui-state-focus")},blur:function(){n(this).removeClass("ui-state-focus")}});this.header.delegate("a","click.multiselect",function(t){n(this).hasClass("ui-multiselect-close")?r.close():r[n(this).hasClass("ui-multiselect-all")?"checkAll":"uncheckAll"]();t.preventDefault()});this.menu.delegate("li.ui-multiselect-optgroup-label a","click.multiselect",function(u){var c,l,e;u.preventDefault();var o=n(this),f=o.parent().nextUntil("li.ui-multiselect-optgroup-label").find("input:visible:not(:disabled)"),s=f.get(),h=o.parent().text();r._trigger("beforeoptgrouptoggle",u,{inputs:s,label:h})!==!1&&(c=f.filter(":checked").length!==f.length,i!=t&&(l=o.closest("ul"),e=n(),f.each(function(t,i){var r=n(i).val();e=e.add(l.find('input:visible:not(:disabled)[value="'+r+'"]'))}),f=e),r._toggleChecked(c,f),r._trigger("optgrouptoggle",u,{inputs:s,label:h,checked:s[0].checked}))}).delegate("label","mouseenter.multiselect",function(){n(this).hasClass("ui-state-disabled")||(r.labels.removeClass("ui-state-hover-multiselect"),n(this).addClass("ui-state-hover-multiselect").find("input").focus())}).delegate("label","keydown.multiselect",function(t){t.preventDefault();switch(t.which){case 9:case 27:r.close();break;case 38:case 40:case 37:case 39:r._traverse(t.which,this);break;case 13:n(this).find("input")[0].click()}}).delegate('input[type="checkbox"], input[type="radio"]',"click.multiselect",function(u){var e=n(this),o=this.value,f=this.checked,c=r.element.find("option"),s,h;if(this.disabled||r._trigger("click",u,{value:o,text:this.title,checked:f})===!1){u.preventDefault();return}e.focus();s=e.attr("name");i!=t&&i.attr("data-sync")=="true"?(h=n("input[name='"+s+"'][value='"+o+"']"),r._toggleChecked(f,h)):(e.attr("aria-selected",f),c.each(function(){this.value===o?this.selected=f:r.options.multiple||(this.selected=!1)}));r.options.multiple||(r.labels.removeClass("ui-state-active"),e.closest("label").toggleClass("ui-state-active",f),r.close());r.element.trigger("change");setTimeout(n.proxy(r.update,r),10)});n(document).bind("mousedown.multiselect",function(t){!r._isOpen||n.contains(r.menu[0],t.target)||n.contains(r.button[0],t.target)||t.target===r.button[0]||r.close()});n(this.element[0].form).bind("reset.multiselect",function(){setTimeout(n.proxy(r.refresh,r),10)})},_setButtonWidth:function(){var n=this.element.outerWidth(),t=this.options;/\d/.test(t.minWidth)&&n<t.minWidth&&(n=t.minWidth);this.button.width(n)},_setMenuWidth:function(){var n=this.menu,t=this.button.outerWidth()-parseInt(n.css("padding-left"),10)-parseInt(n.css("padding-right"),10)-parseInt(n.css("border-right-width"),10)-parseInt(n.css("border-left-width"),10);n.width(t||this.button.outerWidth())},_traverse:function(t,i){var e=n(i),r=t===38||t===37,f=e.parent()[r?"prevAll":"nextAll"]("li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup-label)")[r?"last":"first"](),u;f.length?f.find("label").trigger("mouseover"):(u=this.menu.find("ul").last(),this.menu.find("label")[r?"last":"first"]().trigger("mouseover"),u.scrollTop(r?u.height():0))},_toggleState:function(n,t){return function(){this.disabled||(this[n]=t);t?this.setAttribute("aria-selected",!0):this.removeAttribute("aria-selected")}},_toggleChecked:function(t,i){var r=i&&i.length?i:this.inputs,f=this,u;r.each(this._toggleState("checked",t));r.eq(0).focus();this.update();u=r.map(function(){return this.value}).get();this.element.find("option").each(function(){!this.disabled&&n.inArray(this.value,u)>-1&&f._toggleState("selected",t).call(this)});r.length&&this.element.trigger("change")},_toggleDisabled:function(t){this.button.attr({disabled:t,"aria-disabled":t})[t?"addClass":"removeClass"]("ui-state-disabled");var i=this.menu.find("input"),r="ech-multiselect-disabled";i=t?i.filter(":enabled").data(r,!0):i.filter(function(){return n.data(this,r)===!0}).removeData(r);i.attr({disabled:t,"arial-disabled":t}).parent()[t?"addClass":"removeClass"]("ui-state-disabled");this.element.attr({disabled:t,"aria-disabled":t})},open:function(){var s=this,i=this.button,r=this.menu,f=this.speed,t=this.options,e=[];if(this._trigger("beforeopen")!==!1&&!i.hasClass("ui-state-disabled")&&!this._isOpen){var h=r.find("ul").last(),u=t.show,o=i.offset();n.isArray(t.show)&&(u=t.show[0],f=t.show[1]||s.speed);u&&(e=[u,f]);h.scrollTop(0).height(t.height);n.ui.position&&!n.isEmptyObject(t.position)?(t.position.of=t.position.of||i,r.show().position(t.position).hide()):r.css({top:o.top+i.outerHeight(),left:o.left});n.fn.show.apply(r,e);this.labels.eq(0).trigger("mouseover").trigger("mouseenter").find("input").trigger("focus");i.addClass("ui-state-active");this._isOpen=!0;this._trigger("open")}},close:function(){if(this._trigger("beforeclose")!==!1){var t=this.options,i=t.hide,r=this.speed,u=[];n.isArray(t.hide)&&(i=t.hide[0],r=t.hide[1]||this.speed);i&&(u=[i,r]);n.fn.hide.apply(this.menu,u);this.button.removeClass("ui-state-active").trigger("blur").trigger("mouseleave");this._isOpen=!1;this._trigger("close")}},enable:function(){this._toggleDisabled(!1)},disable:function(){this._toggleDisabled(!0)},checkAll:function(){this._toggleChecked(!0);this._trigger("checkAll")},uncheckAll:function(){this._toggleChecked(!1);this._trigger("uncheckAll")},getChecked:function(){return this.menu.find("input").filter(":checked")},destroy:function(){return n.Widget.prototype.destroy.call(this),this.button.remove(),this.menu.remove(),this.element.show(),this},isOpen:function(){return this._isOpen},widget:function(){return this.menu},getButton:function(){return this.button},_setOption:function(t,i){var r=this.menu;switch(t){case"header":r.find("div.ui-multiselect-header")[i?"show":"hide"]();break;case"checkAllText":r.find("a.ui-multiselect-all span").eq(-1).text(i);break;case"uncheckAllText":r.find("a.ui-multiselect-none span").eq(-1).text(i);break;case"height":r.find("ul").last().height(parseInt(i,10));break;case"minWidth":this.options[t]=parseInt(i,10);this._setButtonWidth();this._setMenuWidth();break;case"selectedText":case"selectedList":case"noneSelectedText":this.options[t]=i;this.update();break;case"allSelectedText":this.options[t]=i;this.update();break;case"classes":r.add(this.button).removeClass(this.options.classes).addClass(i);break;case"multiple":r.toggleClass("ui-multiselect-single",!i);this.options.multiple=i;this.element[0].multiple=i;this.refresh()}n.Widget.prototype._setOption.apply(this,arguments)}})})(jQuery),function(n){var t=/[\-\[\]{}()*+?.,\\\^$|#\s]/g;n.widget("ech.multiselectfilter",{options:{label:"Filter:",width:null,placeholder:"Enter keywords",autoReset:!1},_create:function(){var t=this.options,r=n(this.element),i=this.instance=r.data("echMultiselect")||r.data("multiselect")||r.data("ech-multiselect"),e=this.header=i.menu.find(".ui-multiselect-header").addClass("ui-multiselect-hasfilter"),f=this.wrapper=n('<div class="ui-multiselect-filter">'+(t.label.length?t.label:"")+'<input placeholder="'+t.placeholder+'" type="search"'+(/\d/.test(t.width)?'style="width:'+t.width+'px"':"")+" /><\/div>").prependTo(this.header),u;this.inputs=i.menu.find('input[type="checkbox"], input[type="radio"]');this.input=f.find("input").bind({keydown:function(n){n.which===13&&n.preventDefault()},keyup:n.proxy(this._handler,this),click:n.proxy(this._handler,this)});this.updateCache();i._toggleChecked=function(t,r){var u=r&&r.length?r:this.labels.find("input"),e=this,o=i._isOpen?":disabled, :hidden":":disabled",f;u=u.not(o).each(this._toggleState("checked",t));this.update();f=u.map(function(){return this.value}).get();this.element.find("option").filter(function(){!this.disabled&&n.inArray(this.value,f)>-1&&e._toggleState("selected",t).call(this)});u.length&&this.element.trigger("change")};u=n(document).bind("multiselectrefresh",n.proxy(function(){this.updateCache();this._handler()},this));this.options.autoReset&&u.bind("multiselectclose",n.proxy(this._reset,this))},_handler:function(i){var u=n.trim(this.input[0].value.toLowerCase()),r=this.rows,e=this.inputs,o=this.cache,f;u?(r.hide(),f=new RegExp(u.replace(t,"\\$&"),"gi"),this._trigger("filter",i,n.map(o,function(n,t){return n.search(f)!==-1?(r.eq(t).show(),e.get(t)):null}))):r.show();this.instance.menu.find(".ui-multiselect-optgroup-label").each(function(){var t=n(this),i=t.nextUntil(".ui-multiselect-optgroup-label").filter(function(){return n.css(this,"display")!=="none"}).length;t[i?"show":"hide"]()})},_reset:function(){this.input.val("").trigger("keyup")},updateCache:function(){this.rows=this.instance.menu.find(".ui-multiselect-checkboxes li:not(.ui-multiselect-optgroup-label)");this.cache=this.element.children().map(function(){var t=n(this);return this.tagName.toLowerCase()==="optgroup"&&(t=t.children()),t.map(function(){return this.innerHTML.toLowerCase()}).get()}).get()},widget:function(){return this.wrapper},destroy:function(){n.Widget.prototype.destroy.call(this);this.input.val("").trigger("keyup");this.wrapper.remove()}})}(jQuery)