(function(b){var e,c=function(a){b(":ui-button",a.target.form).each(function(){var f=b(this).data("button");setTimeout(function(){f.refresh()},1)})},d=function(a){var i=a.name,h=a.form,g=b([]);if(i){g=h?b(h).find("[name='"+i+"']"):b("[name='"+i+"']",a.ownerDocument).filter(function(){return !this.form})}return g};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",c);if(typeof this.options.disabled!=="boolean"){this.options.disabled=this.element.attr("disabled")}this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,i=this.options,h=this.type==="checkbox"||this.type==="radio",g="ui-state-hover"+(!h?" ui-state-active":"");if(i.label===null){i.label=this.buttonElement.html()}if(this.element.is(":disabled")){i.disabled=true}this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!i.disabled){b(this).addClass("ui-state-hover");this===e&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){i.disabled||b(this).removeClass(g)}).bind("focus.button",function(){b(this).addClass("ui-state-focus")}).bind("blur.button",function(){b(this).removeClass("ui-state-focus")});h&&this.element.bind("change.button",function(){a.refresh()});if(this.type==="checkbox"){this.buttonElement.bind("click.button",function(){if(i.disabled){return false}b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)})}else{if(this.type==="radio"){this.buttonElement.bind("click.button",function(){if(i.disabled){return false}b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed",true);var f=a.element[0];d(f).not(f).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)})}else{this.buttonElement.bind("mousedown.button",function(){if(i.disabled){return false}b(this).addClass("ui-state-active");e=this;b(document).one("mouseup",function(){e=null})}).bind("mouseup.button",function(){if(i.disabled){return false}b(this).removeClass("ui-state-active")}).bind("keydown.button",function(f){if(i.disabled){return false}if(f.keyCode==b.ui.keyCode.SPACE||f.keyCode==b.ui.keyCode.ENTER){b(this).addClass("ui-state-active")}}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}}this._setOption("disabled",i.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),f="label[for="+this.element.attr("id")+"]";this.buttonElement=a.find(f);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(f);if(!this.buttonElement.length){this.buttonElement=a.find(f)}}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else{this.buttonElement=this.element}},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title");b.Widget.prototype.destroy.call(this)},_setOption:function(a,f){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled"){f?this.element.attr("disabled",true):this.element.removeAttr("disabled")}this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio"){d(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",true):b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)})}else{if(this.type==="checkbox"){this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)}}},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label)}else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),j=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),i=this.options.icons,g=i.primary&&i.secondary,h=[];if(i.primary||i.secondary){if(this.options.text){h.push("ui-button-text-icon"+(g?"s":i.primary?"-primary":"-secondary"))}i.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+i.primary+"'></span>");i.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+i.secondary+"'></span>");if(!this.options.text){h.push(g?"ui-button-icons-only":"ui-button-icon-only");this.hasTitle||a.attr("title",j)}}else{h.push("ui-button-text-only")}a.addClass(h.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,f){a==="disabled"&&this.buttons.button("option",a,f);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");b.Widget.prototype.destroy.call(this)}})})(jQuery);
