(function(A){A.widget("ui.dropdownchecklist",{_appendDropContainer:function(){var C=A("<div/>");C.addClass("ui-dropdownchecklist-dropcontainer-wrapper");C.css({position:"absolute",left:"-3300",top:"-3300px",width:"3000px",height:"3000px"});var B=A("<div/>");B.addClass("ui-dropdownchecklist-dropcontainer").css("overflow-y","auto");C.append(B);A(document.body).append(C);C.drop=false;return C},_isDropDownKeyShortcut:function(B){return B.altKey&&(A.ui.keyCode.DOWN==(B.keyCode||B.which))},_isDroDownCloseKey:function(B){return A.ui.keyCode.ESCAPE==(B.keyCode||B.which)},_handleKeyboard:function(C){var B=this;if(B._isDropDownKeyShortcut(C)){C.stopPropagation();B._toggleDropContainer();B.dropWrapper.find("input:first").focus()}else{if(B.dropWrapper.drop&&B._isDroDownCloseKey(C)){B._toggleDropContainer()}}},_appendControl:function(){var B=this,C=this.sourceSelect;var F=A("<span/>");F.addClass("ui-dropdownchecklist-wrapper");F.css({display:"inline-block",cursor:"default"});var E=A("<span/>");E.addClass("ui-dropdownchecklist");
E.css({display:"inline-block"});E.attr("tabIndex",0);E.keyup(function(G){B._handleKeyboard(G)});F.append(E);var D=A("<span/>");D.addClass("ui-dropdownchecklist-text");D.css({display:"inline-block",overflow:"hidden"});E.append(D);F.hover(function(){if(!B.disabled){E.toggleClass("ui-dropdownchecklist-hover")}},function(){if(!B.disabled){E.toggleClass("ui-dropdownchecklist-hover")}});F.click(function(G){if(!B.disabled){G.stopPropagation();B._toggleDropContainer()}});F.insertAfter(C);return F},_createDropItem:function(H,K,M,L,F,D){var O=this;var N=A("<div/>");N.addClass("ui-dropdownchecklist-item");N.css({whiteSpace:"nowrap"});var C=L?' checked="checked"':"";var J=F?' disabled="disabled"':"";var P=(O.sourceSelect.attr("id")||"ddcl");var B=P+H;var G;if(O.initialMultiple){G=A('<input type="checkbox" id="'+B+'"'+C+J+"/>")}else{G=A('<input type="radio" id="'+B+'" name="'+P+'"'+C+J+"/>")}G=G.attr("index",H).val(K);N.append(G);var I=A("<label for="+B+"/>");I.addClass("ui-dropdownchecklist-text").css({cursor:"default",width:"100%"}).text(M);
if(D){N.addClass("ui-dropdownchecklist-indent")}if(F){N.addClass("ui-dropdownchecklist-item-disabled")}N.append(I);N.hover(function(){N.addClass("ui-dropdownchecklist-item-hover")},function(){N.removeClass("ui-dropdownchecklist-item-hover")});G.click(function(Q){Q.stopPropagation();if(!F){O._syncSelected(A(this));O.sourceSelect.trigger("change","ddcl_internal")}});var E=function(R){R.stopPropagation();if(!F){var Q=G.attr("checked");G.attr("checked",!Q);O._syncSelected(G);O.sourceSelect.trigger("change","ddcl_internal")}};I.click(function(Q){Q.stopPropagation()});N.click(E);N.keyup(function(Q){O._handleKeyboard(Q)});return N},_createGroupItem:function(D){var C=A("<div />");C.addClass("ui-dropdownchecklist-group");C.css({whiteSpace:"nowrap"});var B=A("<span/>");B.addClass("ui-dropdownchecklist-text").css({cursor:"default",width:"100%"}).text(D);C.append(B);return C},_appendItems:function(){var D=this,G=this.sourceSelect,F=this.dropWrapper;var B=F.find(".ui-dropdownchecklist-dropcontainer");
B.css({"float":"left"});G.children().each(function(H){var I=A(this);if(I.is("option")){D._appendOption(I,B,H,false)}else{var K=I.attr("label");var J=D._createGroupItem(K);B.append(J);D._appendOptions(I,B,H,true)}});var C=B.outerWidth();var E=B.outerHeight();B.css({"float":""});return{width:C,height:E}},_appendOptions:function(F,C,E,B){var D=this;F.children("option").each(function(G){var H=A(this);var I=(E+"."+G);D._appendOption(H,C,I,B)})},_appendOption:function(F,B,G,C){var K=this;var I=F.text();var H=F.val();var E=F.attr("selected");var D=F.attr("disabled");var J=K._createDropItem(G,H,I,E,D,C);B.append(J)},_syncSelected:function(G){var H=this,I=this.options,C=this.sourceSelect,D=this.dropWrapper;var F=D.find("input:not([disabled])");if(I.firstItemChecksAll){if(G.attr("index")==0){F.attr("checked",G.attr("checked"))}else{var E;E=true;F.each(function(K){if(K>0){var L=A(this).attr("checked");if(!L){E=false}}});var J=F.filter(":first");J.attr("checked",false);if(E){J.attr("checked",true)}}}var B=C.get(0).options;
F.each(function(K){A(B[K]).attr("selected",A(this).attr("checked"))});H._updateControlText()},_sourceSelectChangeHandler:function(C){var B=this,D=this.dropWrapper;D.find("input").val(B.sourceSelect.val());B._updateControlText()},_updateControlText:function(){var H=this,B=this.sourceSelect,I=this.options,E=this.controlWrapper;var J=B.find("option:first");var F=null!=J&&J.attr("selected");var C=B.find("option");var G=H._formatText(C,I.firstItemChecksAll,F);var D=E.find(".ui-dropdownchecklist-text");D.text(G);D.attr("title",G)},_getSelected:function(H){console.log("_getSelected");var B=this,G=this.sourceSelect,D=this.options,F=this.controlWrapper;var C=G.find("option:first");H.allSelected=null!=C&&C.attr("selected");var E=G.find("option:selected");for(_s in E){if(E[_s].value){H[E[_s].value]=true}}},_formatText:function(C,D,B){var E;if(D&&B){E=C.filter(":first").text()}else{E="";C.each(function(){if(A(this).attr("selected")){E+=A(this).text()+", "}});if(E.length>0){E=E.substring(0,E.length-2)
}}if(E==""){E=this.options.emptyText}return E},_toggleDropContainer:function(){var C=this,F=this.dropWrapper,E=this.controlWrapper;var D=function(){var G=A.ui.dropdownchecklist.drop;if(null!=G){G.dropWrapper.css({top:"-3300px",left:"-3300px"});G.controlWrapper.find(".ui-dropdownchecklist").toggleClass("ui-dropdownchecklist-active");G.dropWrapper.find("input").attr("tabIndex",-1);G.dropWrapper.drop=false;A.ui.dropdownchecklist.drop=null;A(document).unbind("click",D);C.sourceSelect.trigger("blur")}};var B=function(G){if(null!=A.ui.dropdownchecklist.drop){D()}G.dropWrapper.css({top:G.controlWrapper.offset().top+G.controlWrapper.outerHeight()+"px",left:G.controlWrapper.offset().left+"px"});var I=E.parents().map(function(){var J=A(this).css("z-index");return isNaN(J)?0:J}).get();var H=Math.max.apply(Math,I);if(H>0){G.dropWrapper.css({zIndex:(H+1)})}G.controlWrapper.find(".ui-dropdownchecklist").toggleClass("ui-dropdownchecklist-active");G.dropWrapper.find("input").attr("tabIndex",0);G.dropWrapper.drop=true;
A.ui.dropdownchecklist.drop=G;A(document).bind("click",D);C.sourceSelect.trigger("focus")};if(F.drop){D(C)}else{B(C)}},_setSize:function(B){var J=this.options,E=this.dropWrapper,H=this.controlWrapper;var G;if(J.width){G=parseInt(J.width)}else{G=B.width;var C=J.minWidth;if(G<C){G=C}}H.find(".ui-dropdownchecklist-text").css({width:G+"px"});var I=H.outerWidth();var F=J.maxDropHeight?parseInt(J.maxDropHeight):B.height;var D=B.width<I?I:B.width;A(E).css({width:(J.wrapperWidth?J.wrapperWidth:D)+"px",height:F+"px"});E.find(".ui-dropdownchecklist-dropcontainer").css({height:F+"px"})},_init:function(){var C=this,D=this.options;var G=C.element;C.initialDisplay=G.css("display");G.css("display","none");C.initialMultiple=G.attr("multiple");G.attr("multiple","multiple");C.sourceSelect=G;var F=C._appendDropContainer();C.dropWrapper=F;var B=C._appendItems();var E=C._appendControl();C.controlWrapper=E;C._updateControlText(E,F,G);C._setSize(B);if(D.bgiframe&&typeof C.dropWrapper.bgiframe=="function"){C.dropWrapper.bgiframe()
}C.sourceSelect.change(function(I,H){if(H!="ddcl_internal"){C._sourceSelectChangeHandler(I)}})},enable:function(){this.controlWrapper.find(".ui-dropdownchecklist").removeClass("ui-dropdownchecklist-disabled");this.disabled=false},disable:function(){this.controlWrapper.find(".ui-dropdownchecklist").addClass("ui-dropdownchecklist-disabled");this.disabled=true},getSelected:function(D){var B=this.sourceSelect.find("option:first");D.allSelected=null!=B&&B.attr("selected");var C=this.sourceSelect.find("option:selected");for(_s in C){if(C[_s].value){D[C[_s].value]=true}}},destroy:function(){(A.Widget||A.widget).prototype.destroy.apply(this,arguments);this.sourceSelect.css("display",this.initialDisplay);this.sourceSelect.attr("multiple",this.initialMultiple);this.controlWrapper.unbind().remove();this.dropWrapper.remove()}});A.extend(A.ui.dropdownchecklist,{defaults:{width:null,maxDropHeight:null,firstItemChecksAll:false,minWidth:50,bgiframe:false,wrapperWidth:null,emptyText:""}})})(jQuery);
