﻿

function TabManager(containerID, tabCount, calls, cacheID) {
    container = $(containerID);
    cache = $(cacheID);
    tabs = [];
    panes = [];
    callbacks = calls;
    for( var j = 0; j < tabCount; j++) {
        tabs[j] = "#" + container.id + "_tab_" + j;
        panes[j] = "#" + container.id + "_pane_" + j;
    }
    tabIds = tabs.join(", ");
    paneIds = panes.join(", ");


    container.getElements(tabIds).removeClass("btnHalfCornerFilled");
    container.getElements(paneIds).setStyle("display", "none");

    if (cache && cache.value != "") {
        var o = JSON.decode(cache.value);
        currentTab = $(o.tab);
        currentPane = $(o.pane);
    }
    else {
        currentTab = $$(tabs[0]);
        currentPane = $$(panes[0]);
    }
    currentTab.addClass("btnHalfCornerFilled");
    currentPane.setStyle("display", "");
    if (callbacks && callbacks["#" + currentPane.id]) {
        callbacks["#" + currentPane.id](e);
    }

    container.getElements(tabIds).addEvent("click", function(e) {
        var tab = null;
        if (e.event.currentTarget) tab = e.event.currentTarget;
        else {
            tab = e.target;
            while (!tab.id || tab.id == "") tab = tab.parentElement;
        }
        var a = tab.id.split("_");
        var pane = $(container.id + "_pane_" + a[a.length - 1]);
        currentTab.removeClass("btnHalfCornerFilled");
        currentPane.setStyle("display", "none");
        currentTab = $(tab.id);
        currentPane = pane;
        currentTab.addClass("btnHalfCornerFilled");
        currentPane.setStyle("display", "");
        if (callbacks && callbacks["#" + currentPane.id]) {
            callbacks["#" + currentPane.id](e);
        }
        if (cache) cache.value = JSON.encode({ "tab": tab.id, "pane": pane.id });
        return false;
    });
}
