function TabControl()
{
	var me = this;

	this.items = [];
	this.selectedIndex = -1;

	this.items.add = function(tab, content)
	{
		var idx = this.length;

		content.style.display = "none";
		tab.onclick = (function(index)
		{
			return (function()
			{
				me.select(index);
				return (false);
			});
		})(idx);
		this[idx] = {tab:tab, content:content, selected:false};
	}

	this.select = function(idx)
	{
		idx = parseInt(idx, 10);
		if (isNaN(idx) || idx < -1 || this.items.length <= idx)
			idx = -1;
		else if (idx == this.selectedIndex)
			return (true);
		if (!onbeforechange())
			return (false);
		this.selectedIndex = idx;
		return (onchange());
	}

	function onbeforechange()
	{
		if (typeof (me["onbeforechange"]) == "function" && me["onbeforechange"]() == false)
			return (false);
		if (-1 < me.selectedIndex)
		{
			me.items[me.selectedIndex].selected = false;
			me.items[me.selectedIndex].content.style.display = "none";
		}
		return (true);
	}

	function onchange()
	{
		if (-1 < me.selectedIndex)
		{
			me.items[me.selectedIndex].selected = true;
			me.items[me.selectedIndex].content.style.display = "block";
		}
		return (typeof (me["onchange"]) != "function" || me["onchange"]() != false);
	}
}
