var TabMaker = Class.create()
TabMaker.prototype = {
    initialize: function(name) {
        tabs = $A($(name + 'Index').getElementsByTagName('li'));
        var menu = new TabIndex(name);
        for(var i=0,l=tabs.length; i < l; i++){
            var tab = new Tab(name + '' + i, (i==0));
            menu.appendTab(tab);
        }
        menu.setTab();
    }
}

var Tab = Class.create();
Tab.prototype = {
    initialize: function(name, open) {
        this.name = name;
        this.page = name + 'Box';
        this.open = open;
    },
    styleTab: function() {
        if (this.open)
            this.setStyle('visible', 'block', '', 'open');
        else
            this.setStyle('hidden', 'none', 'absolute', 'close');
        this.open = false;
    },
    setStyle: function(visibility, display, position, className){
        var page = $(this.page).style;
        var name = $(this.name);
        page.visibility = visibility;
        page.display = display;
        page.position = position;
        name.className = className;
    }
}

var TabIndex = Class.create();
TabIndex.prototype = {
    initialize : function(name) {
        this.last = 0;
        this.tabs = new Array();
        this.tabName = name;

        this.tabMenuList = $(name + 'Index').getElementsByTagName('li');

        var temp = $A($(name + 'BoxIndex').getElementsByTagName('div'));
        var list = [];

        temp.each(function(div){
            if(div.className==name+'Box'){
                list.push(div);
            }
        });

        this.tabBoxList = list;
    },
    getTabAt : function(index) {
        return this.tabs[index];
    },
    appendTab : function(tab) {
        this.tabs[this.last] = tab;

        this.tabMenuList[this.last].id = tab.name;
        this.tabBoxList[this.last].id = tab.page;
        this.last++;

        var link = document.createElement('a');
        link.innerHTML = $(tab.name).innerHTML;
        link.href = 'javascript:void(0);'
        $(tab.name).innerHTML = '';
        $(tab.name).appendChild(link);
        $(tab.name).onclick = function(){
            tab.open = true;
            this.setTab();
        }.bind(this);
    },

    setTab: function() {
        this.tabs.each(function(tab) {
            tab.styleTab();
        });
    }
};