/**
 * Checkboxlist jQuery plugin
 *
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Copyright © 2009 Alexey Tcherevatov <darth.lemming@gmail.com>
 *
 * Version: 0.1.1
 * Created: 25-03-2010
 *
 */
(function($) {

    $.fn.checkboxlist = function(settings) {
        var config = { 
            msgEmpty: 'nothing selected',
            msgChecked: 'checked: %d',
            msgSelect: 'select the checkboxes'
        };
     
        if (settings) $.extend(config, settings);
     
        this.each(function() {
            var $elm = $(this);
            var num_of_checked = $(':checked', $elm).length;
    
            var $toggle_button = $('<a>', {
                href: 'javascript:void(0)',
                css: {
                  display: 'block',
                  'min-width': $elm.css('width')
                }
            });
            $toggle_button.html(num_of_checked ? config.msgChecked.replace('%d', num_of_checked) : config.msgEmpty);
            $elm.before($toggle_button);
            $elm.css({'position': 'absolute', 'display': 'none', 'background-color': 'white', 'border': '1px solid #7C90A9', 'padding': '4px'});
    
            $elm.click(function(event) {
                event.stopPropagation();
            });

            $toggle_button.click(function(event) {
                if ($elm.is(':visible')) {} else {
                    event.stopPropagation();
                    $(this).html(config.msgSelect);
                    $elm.slideToggle('fast');
                }
            });

            $(document).click(function() {
                if ($elm.is(':visible')) {
                    num_of_checked = $(':checked', $elm).length;
                    if (num_of_checked)
                        $toggle_button.html(config.msgChecked.replace('%d', num_of_checked));
                    else
                        $toggle_button.html(config.msgEmpty);
                    $elm.slideToggle('fast');
                }
            });
        });
        return this;
    };
})(jQuery);
