--- /dev/null
+/*
+ * Fuel UX Checkbox
+ * https://github.com/ExactTarget/fuelux
+ *
+ * Copyright (c) 2012 ExactTarget
+ * Licensed under the MIT license.
+ */
+
+define(['require','jquery'],function (require) {
+
+ var $ = require('jquery');
+
+
+ // CHECKBOX CONSTRUCTOR AND PROTOTYPE
+
+ var Checkbox = function (element, options) {
+
+ this.$element = $(element);
+ this.options = $.extend({}, $.fn.checkbox.defaults, options);
+
+ // cache elements
+ this.$label = this.$element.parent();
+ this.$icon = this.$label.find('i');
+ this.$chk = this.$label.find('input[type=checkbox]');
+
+ // set default state
+ this.setState(this.$chk);
+
+ // handle events
+ this.$chk.on('change', $.proxy(this.itemchecked, this));
+ };
+
+ Checkbox.prototype = {
+
+ constructor: Checkbox,
+
+ setState: function ($chk) {
+ var checked = $chk.is(':checked');
+ var disabled = $chk.is(':disabled');
+
+ // reset classes
+ this.$icon.removeClass('checked').removeClass('disabled');
+
+ // set state of checkbox
+ if (checked === true) {
+ this.$icon.addClass('checked');
+ }
+ if (disabled === true) {
+ this.$icon.addClass('disabled');
+ }
+ },
+
+ enable: function () {
+ this.$chk.attr('disabled', false);
+ this.$icon.removeClass('disabled');
+ },
+
+ disable: function () {
+ this.$chk.attr('disabled', true);
+ this.$icon.addClass('disabled');
+ },
+
+ toggle: function () {
+ this.$chk.click();
+ },
+
+ itemchecked: function (e) {
+ var chk = $(e.target);
+ this.setState(chk);
+ }
+ };
+
+
+ // CHECKBOX PLUGIN DEFINITION
+
+ $.fn.checkbox = function (option, value) {
+ var methodReturn;
+
+ var $set = this.each(function () {
+ var $this = $(this);
+ var data = $this.data('checkbox');
+ var options = typeof option === 'object' && option;
+
+ if (!data) $this.data('checkbox', (data = new Checkbox(this, options)));
+ if (typeof option === 'string') methodReturn = data[option](value);
+ });
+
+ return (methodReturn === undefined) ? $set : methodReturn;
+ };
+
+ $.fn.checkbox.defaults = {};
+
+ $.fn.checkbox.Constructor = Checkbox;
+
+
+ // CHECKBOX DATA-API
+
+ $(function () {
+ $(window).on('load', function () {
+ //$('i.checkbox').each(function () {
+ $('.checkbox-custom > input[type=checkbox]').each(function () {
+ var $this = $(this);
+ if ($this.data('checkbox')) return;
+ $this.checkbox($this.data());
+ });
+ });
+ });
+
+});