function TabItem(tabId, tabContentId, image) {
	
	var tab;
	var delegates = {sender: this};
	
	function init() {
		tab = document.getElementById(tabId);
		tab.onclick = onSelect;
		var img = new Image();
		img.src = 'i/selected' + image;
	}
	
	function onSelect() {
		tab.parentNode.className = 'selected';
		tab.getElementsByTagName('img')[0].src = 'i/selected' + image;
		document.getElementById(tabContentId).style.display = 'block';
		for (iterator in delegates['select']) {
			delegates['select'][iterator][1].call(delegates['select'][iterator][1], delegates.sender); 
		}
	}
	
	this.getId = function() {
		return tabId;
	}
	
	this.select = function() {
		onSelect();
	}
	
	this.deselect = function() {
		tab.parentNode.className = '';
		tab.getElementsByTagName('img')[0].src = 'i/' + image;
		document.getElementById(tabContentId).style.display = 'none';		
	}
	
	this.addSelectEventListener = function(object, method) {
		if  (delegates['select'] == null)
			delegates['select'] = [];
		delegates['select'][delegates['select'].length] = [object, method];
	}
	
	init();
}

function TabControl(contentContainerId) {
	
	var tabList = {};
	var contentContainer;
	var selectedTab = null;
	
	function init() {
		contentContainer = document.getElementById(contentContainerId);
	}

	this.addTabItem = function(tabItem) {
		tabItem.addSelectEventListener(this, this.onSelectTab);
		tabList[tabItem.getId()] = tabItem;
	}
	
	this.onSelectTab = function(tabItem) {
		if (selectedTab != null && selectedTab != tabItem) {
			selectedTab.deselect();
		}
		selectedTab = tabItem;	
	}
	
	this.selectTabItem = function(tabId) {
		tabList[tabId].select();
	}
	init();
}