(function(b){b.widget("ui.dropdownchecklist",{version:function(){alert("DropDownCheckList v1.4")},_appendDropContainer:function(a){var e=b("<div/>");e.addClass("ui-dropdownchecklist ui-dropdownchecklist-dropcontainer-wrapper");e.addClass("ui-widget");e.attr("id",a.attr("id")+"-ddw");e.css({position:"absolute",left:"-33000px",top:"-33000px"});var f=b("<div/>");f.addClass("ui-dropdownchecklist-dropcontainer ui-widget-content");f.css("overflow-y","auto");e.append(f);e.insertAfter(a);e.isOpen=false;return e},_isDropDownKeyShortcut:function(d,a){return d.altKey&&(b.ui.keyCode.DOWN==a)},_isDropDownCloseKey:function(d,a){return(b.ui.keyCode.ESCAPE==a)||(b.ui.keyCode.ENTER==a)},_keyFocusChange:function(m,j,p){var l=b(":focusable");var o=l.index(m);if(o>=0){o+=j;if(p){var n=this.dropWrapper.find("input:not([disabled])");var a=l.index(n.get(0));var k=l.index(n.get(n.length-1));if(o<a){o=k}else{if(o>k){o=a}}}l.get(o).focus()}},_handleKeyboard:function(e){var a=this;var f=(e.keyCode||e.which);if(!a.dropWrapper.isOpen&&a._isDropDownKeyShortcut(e,f)){e.stopImmediatePropagation();a._toggleDropContainer(true)}else{if(a.dropWrapper.isOpen&&a._isDropDownCloseKey(e,f)){e.stopImmediatePropagation();a._toggleDropContainer(false);a.controlSelector.focus()}else{if(a.dropWrapper.isOpen&&(e.target.type=="checkbox")&&((f==b.ui.keyCode.DOWN)||(f==b.ui.keyCode.UP))){e.stopImmediatePropagation();a._keyFocusChange(e.target,(f==b.ui.keyCode.DOWN)?1:-1,true)}else{if(a.dropWrapper.isOpen&&(f==b.ui.keyCode.TAB)){}}}}},_handleFocus:function(e,g,a){var h=this;if(a&&!h.dropWrapper.isOpen){e.stopImmediatePropagation();if(g){h.controlSelector.addClass("ui-state-hover");if(b.ui.dropdownchecklist.gLastOpened!=null){b.ui.dropdownchecklist.gLastOpened._toggleDropContainer(false)}}else{h.controlSelector.removeClass("ui-state-hover")}}else{if(!a&&!g){if(e!=null){e.stopImmediatePropagation()}h.controlSelector.removeClass("ui-state-hover");h._toggleDropContainer(false)}}},_cancelBlur:function(d){var a=this;if(a.blurringItem!=null){clearTimeout(a.blurringItem);a.blurringItem=null}},_appendControl:function(){var l=this,s=this.sourceSelect,a=this.options;var t=b("<span/>");t.addClass("ui-dropdownchecklist ui-dropdownchecklist-selector-wrapper ui-widget");t.css({display:"inline-block",cursor:"default",overflow:"hidden"});var p=s.attr("id");if((p==null)||(p=="")){p="ddcl-"+b.ui.dropdownchecklist.gIDCounter++}else{p="ddcl-"+p}t.attr("id",p);var n=b("<span/>");n.addClass("ui-dropdownchecklist-selector ui-state-default");n.css({display:"inline-block",overflow:"hidden","white-space":"nowrap"});var r=s.attr("tabIndex");if(r==null){r=0}else{r=parseInt(r);if(r<0){r=0}}n.attr("tabIndex",r);n.keyup(function(c){l._handleKeyboard(c)});n.focus(function(c){l._handleFocus(c,true,true)});n.blur(function(c){l._handleFocus(c,false,true)});t.append(n);if(a.icon!=null){var m=(a.icon.placement==null)?"left":a.icon.placement;var o=b("<div/>");o.addClass("ui-icon");o.addClass((a.icon.toOpen!=null)?a.icon.toOpen:"ui-icon-triangle-1-e");o.css({"float":m});n.append(o)}var q=b("<span/>");q.addClass("ui-dropdownchecklist-text");q.css({display:"inline-block","white-space":"nowrap",overflow:"hidden"});n.append(q);t.hover(function(){if(!l.disabled){n.addClass("ui-state-hover")}},function(){if(!l.disabled){n.removeClass("ui-state-hover")}});t.click(function(c){if(!l.disabled){c.stopImmediatePropagation();l._toggleDropContainer(!l.dropWrapper.isOpen)}});t.insertAfter(s);b(window).resize(function(){if(!l.disabled&&l.dropWrapper.isOpen){l._toggleDropContainer(true)}});return t},_createDropItem:function(G,H,y,B,w,F,I,C){var A=this,K=this.options,J=this.sourceSelect,x=this.controlWrapper;var a=b("<div/>");a.addClass("ui-dropdownchecklist-item");a.css({"white-space":"nowrap"});var v=F?' checked="checked"':"";var D=I?' class="inactive"':' class="active"';var L=x.attr("id");var z=L+"-i"+G;var u;if(A.isMultiple){u=b('<input disabled type="checkbox" id="'+z+'"'+v+D+' tabindex="'+H+'" />')}else{u=b('<input disabled type="radio" id="'+z+'" name="'+L+'"'+v+D+' tabindex="'+H+'" />')}u=u.attr("index",G).val(y);a.append(u);var E=b("<label for="+z+"/>");E.addClass("ui-dropdownchecklist-text");if(w!=null){E.attr("style",w)}E.css({cursor:"default"});E.html(B);if(C){a.addClass("ui-dropdownchecklist-indent")}a.addClass("ui-state-default");if(I){a.addClass("ui-state-disabled")}E.click(function(c){c.stopImmediatePropagation()});a.append(E);a.hover(function(c){var d=b(this);if(!d.hasClass("ui-state-disabled")){d.addClass("ui-state-hover")}},function(c){var d=b(this);d.removeClass("ui-state-hover")});u.click(function(d){var e=b(this);d.stopImmediatePropagation();if(e.hasClass("active")){var c=A.options.onItemClick;if(b.isFunction(c)){try{c.call(A,e,J.get(0))}catch(f){e.prop("checked",!e.prop("checked"));A._syncSelected(e);return}}A._syncSelected(e);A.sourceSelect.trigger("change","ddcl_internal");if(!A.isMultiple&&K.closeRadioOnClick){A._toggleDropContainer(false)}}});a.click(function(h){var c=b(this);h.stopImmediatePropagation();if(!c.hasClass("ui-state-disabled")){var e=c.find("input");var d=e.prop("checked");e.prop("checked",!d);var g=A.options.onItemClick;if(b.isFunction(g)){try{g.call(A,e,J.get(0))}catch(f){e.prop("checked",d);A._syncSelected(e);return}}A._syncSelected(e);A.sourceSelect.trigger("change","ddcl_internal");if(!d&&!A.isMultiple&&K.closeRadioOnClick){A._toggleDropContainer(false)}}else{c.focus();A._cancelBlur()}});a.focus(function(c){var d=b(this);c.stopImmediatePropagation()});a.keyup(function(c){A._handleKeyboard(c)});return a},_createGroupItem:function(g,i){var a=this;var h=b("<div />");h.addClass("ui-dropdownchecklist-group ui-widget-header");if(i){h.addClass("ui-state-disabled")}h.css({"white-space":"nowrap"});var j=b("<span/>");j.addClass("ui-dropdownchecklist-text");j.css({cursor:"default"});j.text(g);h.append(j);h.click(function(c){var d=b(this);c.stopImmediatePropagation();d.focus();a._cancelBlur()});h.focus(function(c){var d=b(this);c.stopImmediatePropagation()});return h},_createCloseItem:function(f){var a=this;var g=b("<div />");g.addClass("ui-state-default ui-dropdownchecklist-close ui-dropdownchecklist-item");g.css({"white-space":"nowrap","text-align":"right"});var h=b("<span/>");h.addClass("ui-dropdownchecklist-text");h.css({cursor:"default"});h.html(f);g.append(h);g.click(function(c){var d=b(this);c.stopImmediatePropagation();d.focus();a._toggleDropContainer(false)});g.hover(function(c){b(this).addClass("ui-state-hover")},function(c){b(this).removeClass("ui-state-hover")});g.focus(function(c){var d=b(this);c.stopImmediatePropagation()});return g},_appendItems:function(){var o=this,m=this.options,k=this.sourceSelect,l=this.dropWrapper;var a=l.find(".ui-dropdownchecklist-dropcontainer");k.children().each(function(f){var e=b(this);if(e.is("option")){o._appendOption(e,a,f,false,false)}else{if(e.is("optgroup")){var d=e.prop("disabled");var g=e.attr("label");if(g!=""){var c=o._createGroupItem(g,d);a.append(c)}o._appendOptions(e,a,f,true,d)}}});if(m.explicitClose!=null){var j=o._createCloseItem(m.explicitClose);a.append(j)}var p=a.outerWidth();var n=a.outerHeight();return{width:p,height:n}},_appendOptions:function(h,k,i,l,a){var j=this;h.children("option").each(function(e){var d=b(this);var c=(i+"."+e);j._appendOption(d,k,c,l,a)})},_appendOption:function(u,z,t,x,a){var o=this;var q=u.html();if((q!=null)&&(q!="")){var r=u.val();var s=u.attr("style");var v=u.prop("selected");var w=(a||u.prop("disabled"));var y=o.controlSelector.attr("tabindex");var p=o._createDropItem(t,y,r,q,s,v,w,x);z.append(p)}},_syncSelected:function(p){var o=this,a=this.options,v=this.sourceSelect,t=this.dropWrapper;var u=v.get(0).options;var q=t.find("input.active");if(a.firstItemChecksAll=="exclusive"){if((p==null)&&b(u[0]).prop("selected")){q.prop("checked",false);b(q[0]).prop("checked",true)}else{if((p!=null)&&(p.attr("index")==0)){var s=p.prop("checked");q.prop("checked",false);b(q[0]).prop("checked",s)}else{var r=true;var m=null;q.each(function(c){if(c>0){var d=b(this).prop("checked");if(!d){r=false}}else{m=b(this)}});if(m!=null){if(r){q.prop("checked",false)}m.prop("checked",r)}}}}else{if(a.firstItemChecksAll){if((p==null)&&b(u[0]).prop("selected")){q.prop("checked",true)}else{if((p!=null)&&(p.attr("index")==0)){q.prop("checked",p.prop("checked"))}else{var r=true;var m=null;q.each(function(c){if(c>0){var d=b(this).prop("checked");if(!d){r=false}}else{m=b(this)}});if(m!=null){m.prop("checked",r)}}}}}var n=0;q=t.find("input");q.each(function(e){var c=b(u[e+n]);var d=c.html();if((d==null)||(d=="")){n+=1;c=b(u[e+n])}c.prop("selected",b(this).prop("checked"))});o._updateControlText();if(p!=null){p.focus()}},_sourceSelectChangeHandler:function(f){var a=this,e=this.dropWrapper;e.find("input").val(a.sourceSelect.val());a._updateControlText()},_updateControlText:function(){var p=this,l=this.sourceSelect,o=this.options,m=this.controlWrapper;var k=l.find("option:first");var a=l.find("option");var j=p._formatText(a,o.firstItemChecksAll,k);var n=m.find(".ui-dropdownchecklist-text");n.html(j);n.attr("title",n.text())},_formatText:function(a,i,h){var g;if(b.isFunction(this.options.textFormatFunction)){try{g=this.options.textFormatFunction(a)}catch(j){alert("textFormatFunction failed: "+j)}}else{if(i&&(h!=null)&&h.prop("selected")){g=h.html()}else{g="";a.each(function(){if(b(this).prop("selected")){if(g!=""){g+=", "}var d=b(this).attr("style");var c=b("<span/>");c.html(b(this).html());if(d==null){g+=c.html()}else{c.attr("style",d);g+=b("<span/>").append(c).html()}}});if(g==""){g=(this.options.emptyText!=null)?this.options.emptyText:"&nbsp;"}}}return g},_toggleDropContainer:function(f){var h=this;var g=function(l){if((l!=null)&&l.dropWrapper.isOpen){l.dropWrapper.isOpen=false;b.ui.dropdownchecklist.gLastOpened=null;var e=l.options;l.dropWrapper.css({top:"-33000px",left:"-33000px"});var k=l.controlSelector;k.removeClass("ui-state-active");k.removeClass("ui-state-hover");var c=l.controlWrapper.find(".ui-icon");if(c.length>0){c.removeClass((e.icon.toClose!=null)?e.icon.toClose:"ui-icon-triangle-1-s");c.addClass((e.icon.toOpen!=null)?e.icon.toOpen:"ui-icon-triangle-1-e")}b(document).unbind("click",g);l.dropWrapper.find("input.active").prop("disabled",true);if(b.isFunction(e.onComplete)){try{e.onComplete.call(l,l.sourceSelect.get(0))}catch(d){alert("callback failed: "+d)}}}};var a=function(c){if(!c.dropWrapper.isOpen){c.dropWrapper.isOpen=true;b.ui.dropdownchecklist.gLastOpened=c;var s=c.options;if((s.positionHow==null)||(s.positionHow=="absolute")){c.dropWrapper.css({position:"absolute",top:c.controlWrapper.position().top+c.controlWrapper.outerHeight()+"px",left:c.controlWrapper.position().left+"px"})}else{if(s.positionHow=="relative"){c.dropWrapper.css({position:"relative",top:"0px",left:"0px"})}}var d=0;if(s.zIndex==null){var e=c.controlWrapper.parents().map(function(){var i=b(this).css("z-index");return isNaN(i)?0:i}).get();var q=Math.max.apply(Math,e);if(q>=0){d=q+1}}else{d=parseInt(s.zIndex)}if(d>0){c.dropWrapper.css({"z-index":d})}var p=c.controlSelector;p.addClass("ui-state-active");p.removeClass("ui-state-hover");var r=c.controlWrapper.find(".ui-icon");if(r.length>0){r.removeClass((s.icon.toOpen!=null)?s.icon.toOpen:"ui-icon-triangle-1-e");r.addClass((s.icon.toClose!=null)?s.icon.toClose:"ui-icon-triangle-1-s")}b(document).bind("click",function(i){g(c)});var t=c.dropWrapper.find("input.active");t.prop("disabled",false);var o=t.get(0);if(o!=null){o.focus()}}};if(f){g(b.ui.dropdownchecklist.gLastOpened);a(h)}else{g(h)}},_setSize:function(x){var a=this.options,t=this.dropWrapper,n=this.controlWrapper;var o=x.width;if(a.width!=null){o=parseInt(a.width)}else{if(a.minWidth!=null){var w=parseInt(a.minWidth);if(o<w){o=w}}}var q=this.controlSelector;q.css({width:o+"px"});var s=q.find(".ui-dropdownchecklist-text");var v=q.find(".ui-icon");if(v!=null){o-=(v.outerWidth()+4);s.css({width:o+"px"})}o=n.outerWidth();var p=(a.maxDropHeight!=null)?parseInt(a.maxDropHeight):-1;var r=((p>0)&&(x.height>p))?p:x.height;var u=x.width<o?o:x.width;b(t).css({height:r+"px",width:u+"px"});t.find(".ui-dropdownchecklist-dropcontainer").css({height:r+"px"})},_init:function(){var l=this,k=this.options;if(b.ui.dropdownchecklist.gIDCounter==null){b.ui.dropdownchecklist.gIDCounter=1}l.blurringItem=null;var h=l.element;l.initialDisplay=h.css("display");h.css("display","none");l.initialMultiple=h.prop("multiple");l.isMultiple=l.initialMultiple;if(k.forceMultiple!=null){l.isMultiple=k.forceMultiple}h.prop("multiple",true);l.sourceSelect=h;var j=l._appendControl();l.controlWrapper=j;l.controlSelector=j.find(".ui-dropdownchecklist-selector");var i=l._appendDropContainer(j);l.dropWrapper=i;var a=l._appendItems();l._updateControlText(j,i,h);l._setSize(a);if(k.firstItemChecksAll){l._syncSelected(null)}if(k.bgiframe&&typeof l.dropWrapper.bgiframe=="function"){l.dropWrapper.bgiframe()}l.sourceSelect.change(function(c,d){if(d!="ddcl_internal"){l._sourceSelectChangeHandler(c)}})},_refreshOption:function(f,g,h){var a=f.parent();if(g){f.prop("disabled",true);f.removeClass("active");f.addClass("inactive");a.addClass("ui-state-disabled")}else{f.prop("disabled",false);f.removeClass("inactive");f.addClass("active");a.removeClass("ui-state-disabled")}f.prop("checked",h)},_refreshGroup:function(d,a){if(a){d.addClass("ui-state-disabled")}else{d.removeClass("ui-state-disabled")}},close:function(){this._toggleDropContainer(false)},refresh:function(){var a=this,l=this.sourceSelect,m=this.dropWrapper;var n=m.find("input");var j=m.find(".ui-dropdownchecklist-group");var i=0;var k=0;l.children().each(function(g){var f=b(this);var d=f.prop("disabled");if(f.is("option")){var e=f.prop("selected");var p=b(n[k]);a._refreshOption(p,d,e);k+=1}else{if(f.is("optgroup")){var h=f.attr("label");if(h!=""){var c=b(j[i]);a._refreshGroup(c,d);i+=1}f.children("option").each(function(){var v=b(this);var t=(d||v.prop("disabled"));var u=v.prop("selected");var o=b(n[k]);a._refreshOption(o,t,u);k+=1})}}});a._syncSelected(null)},enable:function(){this.controlSelector.removeClass("ui-state-disabled");this.disabled=false},disable:function(){this.controlSelector.addClass("ui-state-disabled");this.disabled=true},destroy:function(){b.Widget.prototype.destroy.apply(this,arguments);this.sourceSelect.css("display",this.initialDisplay);this.sourceSelect.prop("multiple",this.initialMultiple);this.controlWrapper.unbind().remove();this.dropWrapper.remove()}});b.extend(b.ui.dropdownchecklist,{defaults:{width:null,maxDropHeight:null,firstItemChecksAll:false,closeRadioOnClick:false,minWidth:50,positionHow:"absolute",bgiframe:false,explicitClose:null}})})(jQuery);
