/** * Basic jQuery plugin that turns any element into a toggle button. * * @author Dan Bettles * @copyright Powder Blue Ltd 2014 * @license MIT */ !function(){"use strict";function t(t,n){this.setEl(t),this.setOptions(n)}t.CLASS_NAME_ON="toggle_button__on",t.prototype={setEl:function(t){this.oEl=t},getEl:function(){return this.oEl},setOptions:function(t){this.oOptions=t},getOptions:function(){return this.oOptions},on:function(){this.getEl().addClass(t.CLASS_NAME_ON),this.callUserEventHandler("on",arguments),this.callUserEventHandler("both",arguments)},off:function(){this.getEl().removeClass(t.CLASS_NAME_ON),this.callUserEventHandler("off",arguments),this.callUserEventHandler("both",arguments)},isOn:function(){return this.getEl().hasClass(t.CLASS_NAME_ON)},toggle:function(){this.isOn()?this.off.apply(this,arguments):this.on.apply(this,arguments)},callUserEventHandler:function(t,n){var e=this.getOptions()[t];return"function"==typeof e?(e.apply(this,n),!0):!1}},jQuery.fn.extend({toggleButton:function(n){return this.each(function(){var e=jQuery(this);e.data("toggleButton",new t(e,n)).click(function(t){t.preventDefault(),jQuery(this).data("toggleButton").toggle(t)})})}})}();