jQuery.fn.uCheckbox = function(options) {  

    return this.each(function() {  
        var self = this, o = this.options;
        
        // <p class="uCheckbox checked"><input type="checkbox" value="" style="display:none" id='p1' /><label for='p1'>Option 1</label></p>
        // <p class="uCheckbox"><input type="checkbox" value="" style="display:none" id='p2' /><label for='p2'>Option 2</label><</p>
        // <p class="uCheckbox"><input type="checkbox" value="" style="display:none" id='p3' /><label for='p3'>Option 3</label><</p>
        // <p class="uCheckbox checked"><input type="checkbox" value="" style="display:none" id='p4' /><label for='p4'>Option 4</label></p>
        
        jQuery(self).css("display", "none");

        parent_element = jQuery(this).parent();
        parent_element.addClass("uCheckbox");

        if(jQuery(self).attr('checked')) {
            parent_element.addClass("checked");
        }
       
        parent_element.click(function () {toggleBox(jQuery(self))});
        parent_element.children("a").click(function () {return toggleBox(jQuery(self))});
       
       
       
        function toggleBox(elem) {
            //var elem = jQuery(self);
            var parent_element = elem.parent();
            if(elem.is(':checked')) {
                uncheck(elem, parent_element);
                //console.log("unchecking...")
            } else {
                check(elem, parent_element);
                //console.log("checking...")
            }
            return false;
        }
       
        function check(elem, parent_element) {
            parent_element.addClass("checked");
            elem.attr("checked", true);
           
            if(parent_element.is(".all")) {
                //console.log("click all");
                parent_element.siblings().each(function (index, element) {
                    jQuery(element).children("input").attr("checked", false);
                        jQuery(element).removeClass("checked");
                });
            } else {
                parent_element.siblings().each(function (index, element) {
                    if(jQuery(element).is(".all.checked")) {
                        jQuery(element).removeClass("checked");
                        jQuery(element).children("input").attr("checked", false);
                        
                    }
                });
            }
        }

        function uncheck(elem, parent_element) {
            parent_element.removeClass("checked");
            elem.attr("checked", false);
        }
       
   });  
};  
