/**
 * GRAPPELLI COLLAPSIBLES
 * handles collapsibles,
 * excluding open/closing all elements
 * within a group.
 */

(function($) {
    $.fn.grp_collapsible = function(options){
        var defaults = {
            toggle_handler_slctr: ".grp-collapse-handler:first",
            closed_css: "grp-closed",
            open_css: "grp-open",
            on_init: function() {},
            on_toggle: function() {}
        };
        var opts = $.extend(defaults, options);
        return this.each(function() {
            _initialize($(this), opts);
        });
    };
    var _initialize = function(elem, options) {
        options.on_init(elem, options);
        _register_handlers(elem, options);
    };
    var _register_handlers = function(elem, options) {
        _register_toggle_handler(elem, options);
    };
    var _register_toggle_handler = function(elem, options) {
        elem.children(options.toggle_handler_slctr).click(function() {
            elem.toggleClass(options.closed_css).toggleClass(options.open_css);
            options.on_toggle(elem, options);
        });
    };
})(grp.jQuery);