var tabHolder = {
    activeTabCls: 'active_tab_img',
    inactiveTabCls: 'inactive_tab_img',
    activeTextCls: 'active_tab_text',
    inactiveTextCls: 'inactive_tab_text',
    layerVisibleDisp: '',
    layerInvisibleDisp: 'none',
    onTabActivate: null,
    activeTabIdx: null,
    largeTabIdx: false,
    init: function(initDefs){
        this.tabIds = initDefs.tabIds;
        this.tabTextIds = initDefs.tabTextIds;
        this.allLayers = initDefs.allLayers;
        this.tabLayers = initDefs.tabLayers;
        this.tabCount = this.tabIds.length;
        this.activateTab(initDefs.defActiveTabIdx);
    },
    getEl: function(id){
        return document.getElementById(id);
    },
    isVisibleLayer: function(lName){
        var a = this.tabLayers[this.activeTabIdx];
        for(var i = 0; i <= a.length; i++) {
            if(a[i] == lName){
                return true;
            }
        }
        return false;
    },
    tabIdxToImgIdx: function(tabIdx){
        return (this.tabCount == 4?tabIdx:tabIdx + 1);
    },
    activateTab: function(tabIdx){
        var imgIdx = 0;
        var activeIdx = tabIdx;
        this.activeTabIdx = tabIdx;
        for(var i = 0; i <= this.tabCount - 1; i++) {
            var elTd = this.getEl(this.tabIds[i]);
            if ( elTd ) {
                elTd.className = (i == activeIdx?this.activeTabCls:this.inactiveTabCls);
                elTd.style.backgroundImage = "url(/images/tabs/" + (this.tabCount==2?"2":"3") + "_clear_tabs/tab_" + this.tabIdxToImgIdx(activeIdx) + "_" + this.tabIdxToImgIdx(imgIdx) + (this.largeTabIdx == imgIdx?'_large':'') + ".gif)";
            }
            var elText = this.getEl(this.tabTextIds[i]);
            if ( elText ) elText.className = (i == activeIdx?this.activeTextCls:this.inactiveTextCls);
            var l = this.tabLayers[i];
            for(var li = 0; li <= this.allLayers.length - 1; li++) {
                lName = this.allLayers[li];
                var elL = this.getEl(lName);
                if ( elL ) elL.style.display = (this.isVisibleLayer(lName)?this.layerVisibleDisp:this.layerInvisibleDisp);
            }
            imgIdx ++;
        }
        if ( typeof this.onTabActivate == 'function' ) {
            this.onTabActivate(tabIdx);
        }
    }
}
