text: (function() {
    var iOSCheckbox;
    var __slice = Array.prototype.slice;
    iOSCheckbox = (function() {
      function iOSCheckbox(elem, options) {
        var key, opts, value;
        this.elem = $(elem);
        opts = $.extend({}, iOSCheckbox.defaults, options);
        for (key in opts) {
          value = opts[key];
          this[key] = value;
        }
        this.elem.data(this.dataName, this);
        this.wrapCheckboxWithDivs();
        this.attachEvents();
        this.disableTextSelection();
        if (this.resizeHandle) {
          this.optionallyResize('handle');
        }
        if (this.resizeContainer) {
          this.optionallyResize('container');
        }
        this.initialPosition();
      }
      iOSCheckbox.prototype.isDisabled = function() {
        return this.elem.is(':disabled');
      };
      iOSCheckbox.prototype.wrapCheckboxWithDivs = function() {
        this.elem.wrap("<div class='" + this.containerClass + "' />");
        this.container = this.elem.parent();
        this.offLabel = $("<label class='" + this.labelOffClass + "'>\n  <span>" + this.uncheckedLabel + "</span>\n</label>").appendTo(this.container);
        this.offSpan = this.offLabel.children('span');
        this.onLabel = $("<label class='" + this.labelOnClass + "'>\n  <span>" + this.checkedLabel + "</span>\n</label>").appendTo(this.container);
        this.onSpan = this.onLabel.children('span');
        return this.handle = $("<div class='" + this.handleClass + "'>\n  <div class='" + this.handleRightClass + "'>\n    <div class='" + this.handleCenterClass + "' />\n  </div>\n</div>").appendTo(this.container);
      };
      iOSCheckbox.prototype.disableTextSelection = function() {
        if ($.browser.msie) {
          return $([this.handle, this.offLabel, this.onLabel, this.container]).attr("unselectable", "on");
        }
      };
      iOSCheckbox.prototype._getDimension = function(elem, dimension) {
        if ($.fn.actual != null) {
          return elem.actual(dimension);
        } else {
          return elem[dimension]();
        }
      };
      iOSCheckbox.prototype.optionallyResize = function(mode) {
        var newWidth, offLabelWidth, onLabelWidth;
        onLabelWidth = this._getDimension(this.onLabel, "width");
        offLabelWidth = this._getDimension(this.offLabel, "width");
        if (mode === "container") {
          newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth;
          newWidth += this._getDimension(this.handle, "width") + this.handleMargin;
          return this.container.css({
            width: newWidth
          });
        } else {
          newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth;
          return this.handle.css({
            width: newWidth
          });
        }
      };
      iOSCheckbox.prototype.onMouseDown = function(event) {
        var x;
        event.preventDefault();
        if (this.isDisabled()) {
          return;
        }
        x = event.pageX || event.originalEvent.changedTouches[0].pageX;
        iOSCheckbox.currentlyClicking = this.handle;
        iOSCheckbox.dragStartPosition = x;
        return iOSCheckbox.handleLeftOffset = parseInt(this.handle.css('left'), 10) || 0;
      };
      iOSCheckbox.prototype.onDragMove = function(event, x) {
        var newWidth, p;
        if (iOSCheckbox.currentlyClicking !== this.handle) {
          return;
        }
        p = (x + iOSCheckbox.handleLeftOffset - iOSCheckbox.dragStartPosition) / this.rightSide;
        if (p < 0) {
          p = 0;
        }
        if (p > 1) {
          p = 1;
        }
        newWidth = p * this.rightSide;
        this.handle.css({
          left: newWidth
        });
        this.onLabel.css({
          width: newWidth + this.handleRadius
        });
        this.offSpan.css({
          marginRight: -newWidth
        });
        return this.onSpan.css({
          marginLeft: -(1 - p) * this.rightSide
        });
      };
      iOSCheckbox.prototype.onDragEnd = function(event, x) {
        var p;
        if (iOSCheckbox.currentlyClicking !== this.handle) {
          return;
        }
        if (this.isDisabled()) {
          return;
        }
        if (iOSCheckbox.dragging) {
          p = (x - iOSCheckbox.dragStartPosition) / this.rightSide;
          this.elem.prop('checked', p >= 0.5);
        } else {
          this.elem.prop('checked', !this.elem.prop('checked'));
        }
        iOSCheckbox.currentlyClicking = null;
        iOSCheckbox.dragging = null;
        return this.didChange();
      };
      iOSCheckbox.prototype.refresh = function() {
        return this.didChange();
      };
      iOSCheckbox.prototype.didChange = function() {
        var new_left;
        if (typeof this.onChange === "function") {
          this.onChange(this.elem, this.elem.prop('checked'));
        }
        if (this.isDisabled()) {
          this.container.addClass(this.disabledClass);
          return false;
        } else {
          this.container.removeClass(this.disabledClass);
        }
        new_left = this.elem.prop('checked') ? this.rightSide : 0;
        this.handle.animate({
          left: new_left
        }, this.duration);
        this.onLabel.animate({
          width: new_left + this.handleRadius
        }, this.duration);
        this.offSpan.animate({
          marginRight: -new_left
        }, this.duration);
        return this.onSpan.animate({
          marginLeft: new_left - this.rightSide
        }, this.duration);
      };
      iOSCheckbox.prototype.attachEvents = function() {
        var localMouseMove, localMouseUp, self;
        self = this;
        localMouseMove = function(event) {
          return self.onGlobalMove.apply(self, arguments);
        };
        localMouseUp = function(event) {
          self.onGlobalUp.apply(self, arguments);
          $(document).unbind('mousemove touchmove', localMouseMove);
          return $(document).unbind('mouseup touchend', localMouseUp);
        };
        this.elem.change(function() {
          return self.refresh();
        });
        return this.container.bind('mousedown touchstart', function(event) {
          self.onMouseDown.apply(self, arguments);
          $(document).bind('mousemove touchmove', localMouseMove);
          return $(document).bind('mouseup touchend', localMouseUp);
        });
      };
      iOSCheckbox.prototype.initialPosition = function() {
        var containerWidth, offset;
        containerWidth = this._getDimension(this.container, "width");
        this.offLabel.css({
          width: containerWidth - this.containerRadius
        });
        offset = this.containerRadius + 1;
        if ($.browser.msie && $.browser.version < 7) {
          offset -= 3;
        }
        this.rightSide = containerWidth - this._getDimension(this.handle, "width") - offset;
        if (this.elem.is(':checked')) {
          this.handle.css({
            left: this.rightSide
          });
          this.onLabel.css({
            width: this.rightSide + this.handleRadius
          });
          this.offSpan.css({
            marginRight: -this.rightSide
          });
        } else {
          this.onLabel.css({
            width: 0
          });
          this.onSpan.css({
            marginLeft: -this.rightSide
          });
        }
        if (this.isDisabled()) {
          return this.container.addClass(this.disabledClass);
        }
      };
      iOSCheckbox.prototype.onGlobalMove = function(event) {
        var x;
        if (!(!this.isDisabled() && iOSCheckbox.currentlyClicking)) {
          return;
        }
        event.preventDefault();
        x = event.pageX || event.originalEvent.changedTouches[0].pageX;
        if (!iOSCheckbox.dragging && (Math.abs(iOSCheckbox.dragStartPosition - x) > this.dragThreshold)) {
          iOSCheckbox.dragging = true;
        }
        return this.onDragMove(event, x);
      };
      iOSCheckbox.prototype.onGlobalUp = function(event) {
        var x;
        if (!iOSCheckbox.currentlyClicking) {
          return;
        }
        event.preventDefault();
        x = event.pageX || event.originalEvent.changedTouches[0].pageX;
        this.onDragEnd(event, x);
        return false;
      };
      iOSCheckbox.defaults = {
        duration: 200,
        checkedLabel: 'ON',
        uncheckedLabel: 'OFF',
        resizeHandle: true,
        resizeContainer: true,
        disabledClass: 'iPhoneCheckDisabled',
        containerClass: 'iPhoneCheckContainer',
        labelOnClass: 'iPhoneCheckLabelOn',
        labelOffClass: 'iPhoneCheckLabelOff',
        handleClass: 'iPhoneCheckHandle',
        handleCenterClass: 'iPhoneCheckHandleCenter',
        handleRightClass: 'iPhoneCheckHandleRight',
        dragThreshold: 5,
        handleMargin: 15,
        handleRadius: 4,
        containerRadius: 5,
        dataName: "iphoneStyle",
        onChange: function() {}
      };
      return iOSCheckbox;
    })();
    $.iphoneStyle = this.iOSCheckbox = iOSCheckbox;
    $.fn.iphoneStyle = function() {
      var args, checkbox, dataName, existingControl, method, params, _i, _len, _ref, _ref2, _ref3, _ref4;
      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
      dataName = (_ref = (_ref2 = args[0]) != null ? _ref2.dataName : void 0) != null ? _ref : iOSCheckbox.defaults.dataName;
      _ref3 = this.filter(':checkbox');
      for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
        checkbox = _ref3[_i];
        existingControl = $(checkbox).data(dataName);
        if (existingControl != null) {
          method = args[0], params = 2 <= args.length ? __slice.call(args, 1) : [];
          if ((_ref4 = existingControl[method]) != null) {
            _ref4.apply(existingControl, params);
          }
        } else {
          new iOSCheckbox(checkbox, args[0]);
        }
      }
      return this;
    };
    $.fn.iOSCheckbox = function(options) {
      var opts;
      if (options == null) {
        options = {};
      }
      opts = $.extend({}, options, {
        resizeHandle: false,
        disabledClass: 'iOSCheckDisabled',
        containerClass: 'iOSCheckContainer',
        labelOnClass: 'iOSCheckLabelOn',
        labelOffClass: 'iOSCheckLabelOff',
        handleClass: 'iOSCheckHandle',
        handleCenterClass: 'iOSCheckHandleCenter',
        handleRightClass: 'iOSCheckHandleRight',
        dataName: 'iOSCheckbox'
      });
      return this.iphoneStyle(opts);
    };
  }).call(this);
  
  //iOS / iPhone style toggle switch
  $('.iphone-toggle').iphoneStyle();