/*
jquery.semantictabs.js
Creates semantic tabs from nested divs
Chris Yates - see http://plugins.jquery.com/project/semantictabs
Usage:
$("#mycontainer").semantictabs({
panel:'mypanelclass',         //-- Selector of individual panel body
head:'headelement',           //-- Selector of element containing panel header
active:':first',              //-- Which panel to activate by default
activate:':eq(2)'             //-- Argument used to activate panel programmatically
});
*/
$.fn.semantictabs = function (passedArgsObj) {
    /* defaults */
    args = { panel: 'panel', head: 'h2', active: ':first', activate: false };

    /* override the defaults if necessary */
    for (var argName in passedArgsObj) {
        args[argName] = passedArgsObj[argName];
    }

    // Allow activation of specific tab, by index
    if (args.activate) {
        return this.each(function () {
            var container = $(this);
            container.find("." + args.panel).hide();
            container.find("ul.tabs li").removeClass("active");
            container.find("div." + args.panel + ":eq(" + args.activate + ")").show();
            container.find("ul.tabs li:eq(" + args.activate + ")").addClass("active");
        });
    }
    else {
        return this.each(function () {
            // Load behavior
            var container = $(this);
            container.parent().find("." + args.panel).hide();
            container.find("div." + args.panel + args.active).show();
            container.prepend("<ul class=\"tabs semtabs\"></ul>");
            container.find("." + args.panel).each(function () {
                var title = $(this).find(args.head).text();
                var id = $(this).find(args.head).attr('id');
                this.title = title;
                container.find("ul.tabs").append("<li id=\"" + id + "\"><a href=\"javascript:void(0);\"><span>" + title + "</span></a></li>");
                $(this).find(args.head).hide(); // hide the original h3
            });
            container.find("ul li" + args.active).addClass("active");
            // Tab click behavior
            container.find("ul.tabs li").click(function () {
                container.find("." + args.panel).hide();
                container.find("ul.tabs li").removeClass("active");
                container.find("div." + args.panel + "[title='" + $(this).text() + "']").show();
                $(this).addClass("active");
                setTimeout(function () {
                    if ($.browser.msie && $.browser.version < 7) {
                        container.find("ul.tabs li").each(function () {
                            $(this).hide().show();
                        });
                    }
                }, 100);
            });
            container.find("#remtabs").click(function () {
                container.find("ul.tabs").remove();
                container.find("." + args.container + " ." + args.panel).show();
                container.find("#remtabs").remove();
            });
        });
    }
};
