/*
 jQuery.semantictabs.js
 Creates semantic tabs from nested divs
 Chris Yates
 Inspired by Niall Doherty's $ Coda-Slider v1.1 - http://www.ndoherty.com/coda-slider
 Usage:
 $("#mycontainer").semantictabs({
 container:'panelcontainer',   //-- Selector of element containing all panels
 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
 });
 1 Nov 2007
 */
$.fn.semantictabs = function(passedArgsObj) {
    /* defaults */
    args = {
        container: 'panelcontainer',
        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.container + " ." + 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.container + " ." + args.panel).hide();
            container.find("div." + args.panel + args.active).show();
            container.prepend("<ul class=\"tabs semtabs\"></ul>");
            container.find("." + args.container + " ." + args.panel).each(function() {
                var title = $.trim($(this).find(args.head).text());
                this.title = title;
                container.find("ul.tabs").append("<li><a href=\"javascript:void(0);\">" + title + "</a></li>");
            });
            container.find("ul li" + args.active).addClass("active");
            // Tab click behavior
            container.find("ul.tabs li").click(function() {
                container.find("." + args.container + " ." + args.panel).hide();
                container.find("ul.tabs li").removeClass("active");
                container.find("div." + args.panel + "[title='" + $(this).text() + "']").show();
                $(this).addClass("active");
            });
            container.find("#remtabs").click(function() {
                container.find("ul.tabs").remove();
                container.find("." + args.container + " ." + args.panel).show();
                container.find("#remtabs").remove();
            });
        });
    }
};