//Tabstrip Constructor
function tabstrip() {

this.tabs = new Array();
this.add = mtdTSAdd;
this.select = mtdTSSelect;
this.changeBG = mtdTSChangeBG;
this.stateChanged = mtdTSStateChanged;
this.getSelectedTab = mtdGetSelectedTab;		//Returns the zero based tab id of the selected tab
this.selectedClass = null;
this.activeClass = null;
this.selected = null;			//DOM id of the selected tab (zero based);
this.onchange = null;		//javascript event to be fired when date changes;

var objTable;
var objDiv;
var objDivExtra;

//adds a tab to strip
function mtdTSAdd(strTabID, strDivID, strDivExtraID) {
	this.tabs[this.tabs.length] = new tabstripItem(strTabID, strDivID, strDivExtraID);
}

//selects an individual tab
function mtdTSSelect(strTabID) {
	if (this.stateChanged(strTabID)) {
		for (var i = 0; i < this.tabs.length; i++) {
			objTable = document.getElementById(this.tabs[i].tab).childNodes[0];
			objDiv = document.getElementById(this.tabs[i].div);
			if (this.tabs[i].divExtra)
				objDivExtra = document.getElementById(this.tabs[i].divExtra);
			if (this.tabs[i].tab != this.selected) {
				//change the active tab
				if (objDiv) objDiv.style.display = 'none';
				if (objDivExtra) objDivExtra.style.display = 'none';
				this.changeBG(objTable, this.selectedClass, this.activeClass, false);
			} else {
				//change the selected tab
				this.changeBG(objTable, this.activeClass, this.selectedClass, true);
			}
		}
		for (var i = 0; i < this.tabs.length; i++) {
			objDiv = document.getElementById(this.tabs[i].div);
			if (this.tabs[i].divExtra)
				objDivExtra = document.getElementById(this.tabs[i].divExtra);
			
			if (this.tabs[i].tab == this.selected) {
				//change the selected divs
				if (objDiv) objDiv.style.display = 'block';
				if (objDivExtra) objDivExtra.style.display = 'block';
			}
		}
		//Fire the "onChange" javascript event here if specified
		if (this.onchange) {
			eval(this.onchange);
		}
	}
}

//Changes background color on tab from old to new
function mtdTSChangeBG(objTable, strBGOldClass, strBGNewClass, blnSelected) {
	//return;
	var i, j;
	for (i = 0; i < objTable.childNodes.length; i++) {
		switch(i) {
		
			//2nd table row in tab : 
			case 1:
				for (j = 0; j < objTable.childNodes[i].childNodes.length; j++) {
					if (objTable.childNodes[i].childNodes[j].className == strBGOldClass)
						objTable.childNodes[i].childNodes[j].className = strBGNewClass;
				}
				break;
						
			//3rd table row in tab : text
			case 2:
				for (j = 0; j < objTable.childNodes[i].childNodes.length; j++) {
					if (objTable.childNodes[i].childNodes[j].className == strBGOldClass)
						objTable.childNodes[i].childNodes[j].className = strBGNewClass;
				}
				break;
		}
	}
} 

//returns whether tab clicked is the same as tab selected 
function mtdTSStateChanged(strTabID){
	if (strTabID == this.selected)
		return false;
	else {
		this.selected = strTabID;			
		return true;
	}
}

//Returns the zero based tab id of the selected tab
function mtdGetSelectedTab() {
	for (var i = 0; i < this.tabs.length; i++) {
		if (this.tabs[i].tab == this.selected) {
			return i;
		}
	}
	return null;
}

//constructor for tab item
function tabstripItem(strTabID, strDivID, strDivExtraID){
	this.tab = strTabID;
	this.div = strDivID;
	this.divExtra = strDivExtraID;
}

}