| /** |
| * GRAPPELLI GROUP COLLAPSIBLES |
| * handles open/closing of all elements |
| * with tabular- and stacked-inlines. |
| */ |
| |
| (function($) { |
| $.fn.grp_collapsible_group = function(options){ |
| var defaults = { |
| open_handler_slctr: ".grp-open-handler", |
| close_handler_slctr: ".grp-close-handler", |
| collapsible_container_slctr: ".grp-collapse", |
| closed_css: "grp-closed", |
| open_css: "grp-open", |
| on_init: function() {}, |
| on_open: function() {}, |
| on_close: function() {} |
| }; |
| options = $.extend(defaults, options); |
| return this.each(function() { |
| _initialize($(this), options); |
| }); |
| }; |
| var _initialize = function(elem, options) { |
| options.on_init(elem, options); |
| _register_handlers(elem, options); |
| }; |
| var _register_handlers = function(elem, options) { |
| _register_open_handler(elem, options); |
| _register_close_handler(elem, options); |
| }; |
| var _register_open_handler = function(elem, options) { |
| elem.find(options.open_handler_slctr).each(function() { |
| $(this).click(function() { |
| options.on_open(elem, options); |
| elem.find(options.collapsible_container_slctr) |
| .removeClass(options.closed_css) |
| .addClass(options.open_css); |
| elem.removeClass(options.closed_css) |
| .addClass(options.open_css); |
| }); |
| }); |
| }; |
| var _register_close_handler = function(elem, options) { |
| elem.find(options.close_handler_slctr).each(function() { |
| $(this).click(function() { |
| options.on_close(elem, options); |
| elem.find(options.collapsible_container_slctr) |
| .removeClass(options.open_css) |
| .addClass(options.closed_css); |
| }); |
| }); |
| }; |
| })(grp.jQuery); |