Source: LAF/widgets/switches.js

/**
 * Lens LAF Switches: Check boxes, radio buttons, and toggles.
 *
 * @name Lens.LAF.Switches
 * @namespace
 */
define(["lib/jquery",         "lib/underscore", "common/util/dom_utils"],
function($,                    _,                DOMUtils) {

    "use strict";

    var enabled = true;

    var Switches = /** @lends Lens.LAF.Switches */ {
        /**
         * Enables scrollbar styling
         */
        enable: function() {
            DOMUtils.addStylesheet("LAF/widgets/switches.less");
            enabled = true;
        },

        /**
         * Disabled scrollbar styling
         */
        disable: function() {
            DOMUtils.removeStylesheet("LAF/widgets/switches.less");
            enabled = false;
        },

        /**
         * Returns true if this LAF module is enabled
         * @return {Boolean}
         * @memberOf Lens.LAF.Switches
         */
        enabled: function() {
            return enabled;
        }
    };

    var toggleChecked = function(target) {
        if($(target).is(":not(:disabled)")) {
            $(target).click();
        }
    };

    var pickRadio = function(target) {
        if($(target).is(":not(:disabled)")) {
            $(target).click();
        }
    };

    var switchRadio = function(container) {
        container.find("input:not(:checked)").click();
    };

    $(function(){
        document.addEventListener("lens:touchend", function(evt) {
            if(!enabled) {
                return;
            }

            _.each(evt.changedTouches, function(touch) {
                if($(touch.target).is("input[type=checkbox]")) {
                    toggleChecked(touch.target);
                }
                else if($(touch.target).is("input[type=radio]")) {
                    pickRadio(touch.target);
                }
                else if($(touch.target).is("label")){
                    if($(touch.target).parents(".toggle").length === 1) {
                        // it's a toggle, let the click handler below deal with
                        // it
                    }
                    else {
                        toggleChecked($(touch.target).find("input[type=checkbox]"));
                        pickRadio($(touch.target).find("input[type=radio]"));
                    }
                }
            });
        });

        document.addEventListener("click", function(evt) {
            if($(evt.target).is("label") && ($(evt.target).parents(".toggle").length === 1)){
                switchRadio($(evt.target).parents(".toggle"));
            }
        });
    });

    Switches.enable();
    Lens._addMember(Switches, "Switches", Lens.LAF);
    return Switches;
});