var tabEnable = function(aTable) {
	
	if (aTable == null) {
		// get the tabAble tables from the document
		var tables = document.getElementsByTagName('table'); 
		for (var i = 0; i <tables.length; i++) {
			if (tables[i].className == 'tabAble') {
				tabEnable(tables[i]);
			}
		}
		
		return;
	}
	
	var tabsContainer = document.createElement('div');
	tabsContainer.className = 'tabAbleTabsContainer';
	aTable._tabsContainer = tabsContainer;
	aTable.parentNode.insertBefore(tabsContainer, aTable);
	
	var tBodies = aTable.tBodies;
	
	for (var i = 0; i < tBodies.length; i++) {
		
		var tBody = tBodies[i];
		
		// if tBody has no name, get it from the first row's TH cell
		
		var tBodyName = tBody.getAttribute('name');
		
		if (tBodyName == null) {
			
			var firstTH = tBody.rows[0].cells[0];
			
			if (firstTH.nodeName == 'TH' || firstTH.nodeName == 'TD') {
				tBody.rows[0].style.display = 'none';
				tBody.setAttribute('name', firstTH.innerHTML);
			}
		}
		
		new tabAbleTab(aTable, i, tBody.getAttribute('name'), i == 0);		
	}
};

var tabAbleTab = function(aTable, aTBodyId, aTBodyName, isSelected) {
			
	var newTab = document.createElement('a');
	aTable.tBodies[aTBodyId]._tab = newTab;
	

	// hide the tbody
	if (isSelected == false) {
		aTable.tBodies[aTBodyId].style.display = 'none';
		newTab.className = "tabAbleTab";
	}			
	else {
		newTab.className = "tabAbleSelectedTab";
	}
	newTab.href="javascript:;";
	newTab.innerHTML = '<span style="white-space: nowrap;">' + aTBodyName + '</span>';
	
	newTab.onclick = function () {
		
		// hide all other tBodies
		for (var i = 0; i < aTable.tBodies.length; i++) {
			aTable.tBodies[i].style.display = 'none';
			aTable.tBodies[i]._tab.className = 'tabAbleTab';				
		}
		
		// show the current tBody
		aTable.tBodies[aTBodyId].style.display = '';
		aTable.tBodies[aTBodyId]._tab.className = 'tabAbleSelectedTab';
	};
	
	aTable._tabsContainer.appendChild(newTab);	
};