Class.create("SimpleTabs", {
    initialize: function(listElement)
    {
        this.container = $(listElement);
        this.container.className = "simpletabs";
        this.selectedTab = null;
        this.tabs = new Hash();
        this.onTabClick = this.tabClick.bindAsEventListener(this);
    },
    createTab: function(name, element)
    {
        element = $(element);
        var elementID = element.identify();
        element.className = "simpletabsContainer";
        element.hide();
        var tabButton = new Element("li", {});
        var tabID = tabButton.identify();
        tabButton.update(name);
        this.container.appendChild(tabButton);
        Event.observe(tabButton, "click", this.onTabClick);
        var ref = this;
        var tabObject = {
            name: name,
            button: tabButton,
            contentBox: element
        };

        this.tabs.set(name, tabObject);
        
        return this.tabs.get(name);
    },
    _selectTab: function(element)
    {
        var ref = this;
        this.tabs.values().each(function(tab)
        {
            if (tab.button == element)
            {
                tab.button.className = "selected";
                tab.contentBox.show();
                ref.container.fire("SimpleTabs:select", { tab: tab });
                ref.selectedTab = tab;
            }
            else
            {
                tab.button.className = "";
                tab.contentBox.hide();
                ref.container.fire("SimpleTabs:blur", { tab: tab });
            }
        });
    },
    selectTab: function(name)
    {
        var element = this.tabs.get(name).button;
        this._selectTab(element);
    },
    tabClick: function(event)
    {
        var element = Event.element(event);
        this._selectTab(element);
    },
    selectedTabName: function()
    {
		return this.selectedTab.name;
    }
});
