if (typeof jQuery != 'undefined') {
    jQuery(function($) {
        $.fn.extend({
            collapsible: function(options, args) {
                if (typeof(options) == 'string') {
                    switch (options) {
                    case 'selectTab':
                        $(this).find('.collapsible-header h2:eq(' + args + ') a').click();
                        break;
                    }
                    return;
                }
                var settings = $.extend({},
                $.fn.collapsible.defaults, options);
                return this.each(function() {
                    if ($.fn.jquery < '1.2.6') {
                        return;
                    }
                    var $t = $(this);
                    var o = $.metadata ? $.extend({},
                    settings, $t.metadata()) : settings;
                    $(this).find(settings.tab_header).addClass('collapsible-tab-header');
                    var collapsibleHeader = $("<div class='collapsible-header'>");
                    $(this).find(settings.tab_header).each(function() {
                        var collapsibleContent = $("<div class='collapsible-content'>");
                        if (o.beforeInsert) {
                            collapsibleContent = o.beforeInsert($(this), collapsibleContent);
                        }
                        $(this).before(collapsibleContent);
                        var header = $(this).clone().wrapInner("<a href='#'></a>");
                        collapsibleHeader.append(header);
                        header.data('tab', collapsibleContent);
                        header.click(function() {
                            $t.find('.collapsible-header ' + settings.tab_header).removeClass('selected');
                            $(this).addClass('selected');
                            $t.find('.collapsible-content').removeClass('active-collapsible-tab');
                            $(this).data('tab').addClass('active-collapsible-tab');
                            if (o.onComplete) {
                                o.onComplete();
                            }
                            return false;
                        });
                        var nextSibling = $(this).next();
                        var curSibling = $(this);
                        var collapsibleSiblings = new Array();
                        var removeableElements = new Array();
                        if (nextSibling.length && !nextSibling.hasClass('collapsible-tab-header')) {
                            do {
                                collapsibleSiblings.push(nextSibling);
                                collapsibleContent.append(nextSibling.clone());
                                curSibling = nextSibling;
                                nextSibling = $(nextSibling).next();
                                removeableElements.push(curSibling);
                            }
                            while (nextSibling.length && !nextSibling.hasClass('collapsible-tab-header'));
                        }
                        for (var i = 0; i < removeableElements.length; i++) {
                            removeableElements[i].remove();
                        }
                        $(this).remove();
                    });
                    $(this).children('.collapsible-content:first').before(collapsibleHeader);
                    if (settings.selectedTab) {
                        var lowerTabTitle = settings.selectedTab.toLowerCase();
                        $(this).find('.collapsible-header ' + settings.tab_header + ' a').each(function(i) {
                            if ($(this).html().toLowerCase() == lowerTabTitle) {
                                settings.selectedIdx = i;
                            }
                        });
                    }
                    $($(this).children('.collapsible-content')[settings.selectedIdx]).addClass('active-collapsible-tab');
                    $($(this).find('.collapsible-header ' + settings.tab_header)[settings.selectedIdx]).addClass('selected');
                });
            }
        });
        $.fn.collapsible.defaults = {
            tab_header: "h2",
            selectedIdx: 0,
            selectedTab: null,
            beforeInsert: null,
            onComplete: null
        };
    });
}
