var pk = pk || {};

/**
Create a new checkbox control
@class pk.checkbox
@constructor
@param options {Object}
@param options.element {Object} DOM element to convert to control
@param [options.value=0] {String} Value of initially selected option, defaults to the attribute value set on the passed element, or `0`
@param [options.name=pk-checkbox-RandInt] {String} Name of underlying input control, defaults to the attribute value set on the passed element, or `pk-checkbox-RandInt`
@param [options.label=label] {String} String to use for the control label, defaults to the attribute value set on the passed element, or its `innerHTML`
@param [options.tabindex=0] {Number} Tabindex of control, defaults to the attribute value set on the passed element, or `0`
@param [options.disabled=false] {Boolean} Disabled state of control, defaults to the attribute value set on the passed element, or `false`
@param [options.listeners] {Object} Object array of event listeners to bind to underlying input(s)
@returns Object {Object} Consisting of original DOM element (item `0`) and class methods (see below)
@chainable
*/
(function(pk) {
    pk.checkbox = function(opt) {
        var el = opt.element,
            //    listeners = opt.listeners === undefined ? {} : opt.listeners,
            inputValue = opt.value || el.getAttribute('value') || 0,
            inputLabel = opt.label || el.getAttribute('label') || el.innerHTML,
            inputDisabled = (opt.disabled || el.getAttribute('disabled')) ? 'disabled' : '',
            inputName = opt.name || el.getAttribute('name') || 'pk-checkbox-' + pk.getRand(1, 999),
            inputTabIndex = opt.tabindex || el.getAttribute('tabindex') || 0;

        /*jshint multistr:true */
        var str = "<label class='pk-checkbox' for='" + inputName + "'>\
		<input type = 'checkbox'  id = '" + inputName + "'  name = '" + inputName + "'  value = '" + inputValue + "'  tabindex = '" + inputTabIndex + "' / >\
            <span class = 'pk-label' > " + inputLabel + " </span>\
		</label>";
        el.innerHTML = '';
        el = pk.replaceEl(el, str);
/**
Gets or sets control value
@method val
@param [value] {String} Value to set
@return {String} Returns current value
*/     

/**
Gets or sets control disabled state
@method disabled
@param [boolean] {Boolean} Disabled state
@return {Boolean} Returns disabled state
*/ 
        var obj = {
            0: el,
            val: function(val) {
                if (val === undefined) {
                    return inputValue;
                }
                pk.attribute(el.children[0], 'checked', Boolean(val));
            },
            disabled: function(val) {
                if (val !== undefined) {
                    pk.toggleClass(el, 'pk-disabled', Boolean(val));
                    pk.attribute(el.children[0], 'disabled', Boolean(val));
                }
                return pk.attribute(el.children[0], 'disabled');
            }
        };
        obj.val(inputValue);
        if (inputDisabled) {
            obj.disabled(true);
        }
		pk.bindListeners(listeners, el.children[0]);
        return obj;
    };
    return pk;
})(pk);

@@ -1606,16 +1606,90 @@
 , 999),%0A
+            listeners = opt.listeners === undefined ? %7B%7D : opt.listeners,%0A
         
@@ -2160,20 +2160,36 @@
 , str);%0A
-/**%0A
+        /**%0A        
 Gets or 
@@ -2207,16 +2207,24 @@
 l value%0A
+        
 @method 
@@ -2227,16 +2227,24 @@
 hod val%0A
+        
 @param %5B
@@ -2272,16 +2272,24 @@
  to set%0A
+        
 @return 
@@ -2323,21 +2323,40 @@
 lue%0A
-*/
+  
      
-%0A%0A/**%0A
+ */%0A%0A        /**%0A        
 Gets
@@ -2387,16 +2387,24 @@
 d state%0A
+        
 @method 
@@ -2412,16 +2412,24 @@
 isabled%0A
+        
 @param %5B
@@ -2462,16 +2462,24 @@
 d state%0A
+        
 @return 
@@ -2515,11 +2515,18 @@
 ate%0A
+        
 */
- 
 %0A   
@@ -3210,18 +3210,24 @@
       %7D%0A
-%09%09
+        
 pk.bindL

Update checkbox.js