(function(a){a.widget("ui.checkBox",{_init:function(){var d=this,c=this.options,b=function(f){if(this.disabledStatus){return false}d.hover=(f.type=="focus"||f.type=="mouseenter");d._changeStateClassChain()};if(!this.element.is(":radio,:checkbox")){return false}this.labels=a([]);this.checkedStatus=false;this.disabledStatus=false;this.hoverStatus=false;this.radio=(this.element.is(":radio"));this.visualElement=a("<span />").addClass(this.radio?"ui-radio":"ui-checkbox").bind("mouseenter.checkBox mouseleave.checkBox",b).bind("click.checkBox",function(f){d.element[0].click();return false});if(c.replaceInput){this.element.addClass("ui-helper-hidden-accessible").after(this.visualElement[0]).bind("usermode",function(f){(f.enabled&&d.destroy.call(d,true))})}this.element.bind("click.checkBox",a.bind(this,this.reflectUI)).bind("focus.checkBox blur.checkBox",b);if(c.addLabel){this.labels=a("label[for="+this.element.attr("id")+"]").bind("mouseenter.checkBox mouseleave.checkBox",b)}this.reflectUI({type:"initialReflect"})},_changeStateClassChain:function(){var d=(this.checkedStatus)?"-checked":"",c="ui-"+((this.radio)?"radio":"checkbox")+"-state";d+=(this.disabledStatus)?"-disabled":"";d+=(this.hover)?"-hover":"";if(d){d=c+d}function b(){var e=this.className.split(" "),f=false;a.each(e,function(g,h){if(h.indexOf(c)===0){f=true;e[g]=d;return false}});if(!f){e.push(d)}this.className=e.join(" ")}this.labels.each(b);this.visualElement.each(b)},destroy:function(b){this.element.removeClass("ui-helper-hidden-accessible");this.visualElement.addClass("ui-helper-hidden");if(!b){var c=this.options;this.element.unbind(".checkBox");this.visualElement.remove();this.labels.unbind(".checkBox").removeClass("ui-state-hover ui-state-checked ui-state-disabled")}},disable:function(){this.element[0].disabled=true;this.reflectUI({type:"manuallyDisabled"})},enable:function(){this.element[0].disabled=false;this.reflectUI({type:"manuallyenabled"})},toggle:function(b){this.changeCheckStatus((this.element.is(":checked"))?false:true,b)},changeCheckStatus:function(b,c){if(c&&c.type=="click"&&this.element[0].disabled){return false}this.element.attr({checked:b});this.reflectUI(c||{type:"changeCheckStatus"})},propagate:function(d,c,b){if(!c||c.type!="initialReflect"){if(this.radio&&!b){a(document.getElementsByName(this.element.attr("name"))).checkBox("reflectUI",c,true)}return this._trigger(d,c,{options:this.options,checked:this.checkedStatus,labels:this.labels,disabled:this.disabledStatus})}},reflectUI:function(f,d){var b=this.checkedStatus,c=this.disabledStatus;d=d||f;this.disabledStatus=this.element.is(":disabled");this.checkedStatus=this.element.is(":checked");if(this.disabledStatus!=c||this.checkedStatus!==b){this._changeStateClassChain();(this.disabledStatus!=c&&this.propagate("disabledChange",d));(this.checkedStatus!==b&&this.propagate("change",d))}}});a.ui.checkBox.defaults={replaceInput:true,addLabel:true}})(jQuery);

