/*
//	EXAMPLE USAGE::
	this.tabController = new TabControllerClass();
	this.tabController.id = this.id + 'tabContainer' + id;
	this.tabController.name = this.name + '.tabController';
	this.tabController.eventHandler = this;
	this.tabController.editable = false;
	this.tabController.addSpacer = true;
	this.tabController.init();
	
	// Add Tabs - IDs need to be 'zusammenhängen' (TODO)		
	this.tabController.addTab(0, 'Kommentare');
	this.tabController.addTab(1, 'Ort');
	this.tabController.addTab(2, 'Optionen');

	// Set active Tab	
	this.tabController.setActiveTab(0);
	
	// Called when a tab is selected:
	this.tabSelected(tabId); // when this is defined through tabController.eventHandler
	
	// needed Stylesheet-Classes:
	.inactiveTab
	.activeTab
	.markedTab
	.tabSpacer
	.hoveredTab
*/

function TabControllerClass() {
	var tabs = new Array;
	var tabCounter = 0;
	var activeTabNo = 0;
	var isCreatingTab = false;
	var tabCreationAllowed = false;
	
	deleteTabString = 'Tab entfernen';
	
	this.init = function() {
		// Initiliase
		this.box = document.getElementById(this.id);
		
		var tabBody = document.createElement("DIV");
		tabBody.id = this.id + 'tabBody';
		tabBody.className = 'tabBody';
		this.box.appendChild(tabBody);
		
		if(this.addSpacer) {
			var tabSpacer = document.createElement("DIV");
			tabSpacer.id = this.id + 'tabSpacer';
			tabSpacer.className = 'tabSpacer';
			this.box.appendChild(tabSpacer);			
		}		
	}
	
	this.addTab = function (id, title) {
		var tab = document.createElement("DIV");
		tab.className = 'tab';
		tab.id = this.id + 'Tab' + tabCounter;
		tab.innerHTML = title;

		eval("tab.onclick = function() { " + this.name + ".selectTab(" + tabCounter + "); };");
		eval("tab.onmouseover = function() { " + this.name + ".highlightTab(" + tabCounter + "); };");
		eval("tab.onmouseout = function() { " + this.name + ".deHighlightTab(" + tabCounter + "); };");

		if(tabCreationAllowed) {
			this.box.insertBefore(tab, document.getElementById(this.id + 'addTab'));	
		} else {
			this.box.appendChild(tab);
		}
		
		tabs[tabCounter] = new Array;
		tabs[tabCounter]["id"] = id;
		tabs[tabCounter]["title"] = title;
		tabs[tabCounter]["isActive"] = false;
		tabs[tabCounter]["isMarked"] = false;
		
		this.highlightTab(tabCounter);
		this.deHighlightTab(tabCounter);
		
		tabCounter++;
	}
		
	this.allowTabCreation = function() {
		tabCreationAllowed = true;
		
		var tab = document.createElement("DIV");
		tab.className = 'tab small';
		tab.id = this.id + 'addTab';
		tab.innerHTML = '+';
		eval("tab.onclick = function() { " + this.name + ".createTab(); };");
		eval("tab.onmouseover = function(event) { mousePointerLabel.display(event, 'Tab hinzuf&uuml;gen'); };");
		eval("tab.onmouseout = function() { mousePointerLabel.clear(); };");
		
		this.box.appendChild(tab);		
	}
	
	this.createTab = function() {
		if(!isCreatingTab) {
			isCreatingTab = true;
			var tab = document.createElement("DIV");
			tab.className = 'tab createTab';
			tab.id = this.id + 'createTabTab';
			eval("tab.onmouseover = function(event) { mousePointerLabel.display(event, '<center><b>Enter</b> - Tab speichern<br /><b>Escape</b> - Abbrechen</center>'); };");
			eval("tab.onmouseout = function() { mousePointerLabel.clear(); };");
			
			var tabInputField = document.createElement("INPUT");
			tabInputField.type='text';
			tabInputField.id = this.id + 'tabInputField';
			tabInputField.className = 'tabInputField';
			eval("tabInputField.onkeydown = function(event) { " + this.name + ".checkTabInputField(event); }");
			eval("tabInputField.onblur = function() { " + this.name + ".closeTabInputField(); }");
			tab.appendChild(tabInputField);
			
			this.box.insertBefore(tab, document.getElementById(this.id + 'addTab'));
			
			document.getElementById(this.id + 'tabInputField').focus();
		}
	}
	
	this.createTabInt = function() {
		tabTitle = document.getElementById(this.id + 'tabInputField').value;
		
		tabTitle = tabTitle.replace(/\"/g, "");
		tabTitle = tabTitle.replace(/\'/g, "");
		tabTitle = tabTitle.replace(/</g, "");
		tabTitle = tabTitle.replace(/>/g, "");
		
		this.closeTabInputField();
		
		this.eventHandler.tabCreated(tabTitle);
		
		this.addTab(tabCounter, tabTitle);

		mousePointerLabel.clear();
	}
	
	this.deleteTab = function(tabNo) {
		this.deleteTabWindow = new MessageWindowClass();
		this.deleteTabWindow.name = this.name + '.deleteTabWindow';
		this.deleteTabWindow.className = 'eventCreatorMessageWindow';
		this.deleteTabWindow.title = 'Wirklich l&ouml;schen?';
		this.deleteTabWindow.message = 'M&ouml;chtest du den Tab wirklich l&ouml;schen?';
		this.deleteTabWindow.defaultValue = 'L' + String.fromCharCode(246) + 'schen';
		this.deleteTabWindow.displayCancelButton = true;
		this.deleteTabWindow.call = this.name + '.deleteTabInt(' + tabNo + ')';
		this.deleteTabWindow.displayCurtain = false;
		this.deleteTabWindow.display();
	}
	
	this.deleteTabInt = function(tabNo) {
		this.hideTab(tabNo);
			
		this.eventHandler.tabDeleted(tabNo);		
	}
	
	this.closeTabInputField = function() {
		if(isCreatingTab) {
			isCreatingTab = false;
			this.box.removeChild(document.getElementById(this.id + 'createTabTab'));
		}
	}
	
	this.checkTabInputField = function(evt) {
		if (navigator.appName=="Microsoft Internet Explorer") {
			keyCode = event.keyCode;
		}
			
		if (navigator.appName=="Netscape") {
			keyCode = evt.which;
		}

		if(keyCode==13) {
			// Enter-Key
			this.createTabInt();
		} else if(keyCode==27) {
			this.closeTabInputField();
		}		
	}
	
	this.changeTab = function(id, title) {
		document.getElementById(this.id + 'Tab' + id).innerHTML = title;
	}
		
	this.showTab = function(id) {
		document.getElementById(this.id + 'Tab' + id).style.display = 'block';
	}
	
	this.hideTab = function(id) {
		document.getElementById(this.id + 'Tab' + id).style.display = 'none';
	}	
	
	this.addBatchToTab = function(id, text, color) {
		if(color=='red') {
			classString = 'redBg';
		} else if(color=='yellow') {
			classString = 'yellowBg';
		} else if(color=='green') {
			classString = 'greenBg';
		} else {
			classString = '';
		}
		
		if(tabCreationAllowed && text=='-') {
			if(id!=0) {
				document.getElementById(this.id + 'Tab' + id).innerHTML = '<table cellspacing="0" cellpadding="0"><tr><td valign="top">' + tabs[id]["title"] + '</td><td valign="top"><div onMouseOver="mousePointerLabel.display(event, deleteTabString);" onMouseOut="mousePointerLabel.clear();" onClick="' + this.name + '.deleteTab(' + id + ')" class="tabBatch deleteBatch ' + classString+ '"><img src="/images/style/tabDeleteBatchIcon.gif" /></div></td></tr></table>';			
			}
		} else {
			document.getElementById(this.id + 'Tab' + id).innerHTML = '<table cellspacing="0" cellpadding="0"><tr><td valign="top">' + tabs[id]["title"] + '</td><td valign="top"><div class="tabBatch ' + classString+ '">' + text + '</div></td></tr></table>';
		}
	}
	
	this.clearBatch = function(id) {
		document.getElementById(this.id + 'Tab' + id).innerHTML = tabs[id]["title"];		
	}
	
	this.selectTab = function(tabNo) {
		tabId = tabs[tabNo]["id"];
		this.setActiveTab(tabId);
		
		if(tabCreationAllowed) {
			this.addBatchToTab(tabNo, '-', false);
		}
	}
	
	this.selectNextTab = function() {
		if(activeTabNo < tabCounter-1) {
			this.selectTab(activeTabNo + 1);
		}
	}

	this.selectPreviousTab = function() {
		if(activeTabNo >= 1) {
			this.selectTab(activeTabNo - 1);
		}
	}
	
	this.highlightTab = function(tabNo) {
		if(!tabs[tabNo]["isActive"]) {
			if(tabs[tabNo]["isMarked"]) {
				document.getElementById(this.id + "Tab" + tabNo).className = "tab marked hovered";				
			} else {
				document.getElementById(this.id + "Tab" + tabNo).className = 'tab hovered';		
			}	
		}
	}
	
	this.deHighlightTab = function(tabNo) {
		if(tabs[tabNo]["isActive"]) {
			if(tabs[tabNo]["isMarked"]) {
				document.getElementById(this.id + "Tab" + tabNo).className = 'tab marked selected';			
			} else {		
				document.getElementById(this.id + "Tab" + tabNo).className = 'tab selected';
			}
		} else {
			if(tabs[tabNo]["isMarked"]) {		
				document.getElementById(this.id + "Tab" + tabNo).className = 'tab marked';
			} else {
				document.getElementById(this.id + "Tab" + tabNo).className = 'tab';			
			}	
		}
	}
	
	this.markTab = function(tabNo) {
		if(tabs[tabNo]["isActive"]) {
			document.getElementById(this.id + "Tab" + tabNo).className = "tab marked selected";
		} else {
			document.getElementById(this.id + "Tab" + tabNo).className = "tab marked";		
		}
		tabs[tabNo]["isMarked"]=true;
	}

	this.unmarkTab = function(tabNo) {
		if(tabs[tabNo]["isActive"]) {
			document.getElementById(this.id + "Tab" + tabNo).className = "tab selected";
		} else {
			document.getElementById(this.id + "Tab" + tabNo).className = "tab";		
		}
		tabs[tabNo]["isMarked"]=false;
	}
	
	this.isMarked = function(tabNo) {
		return(tabs[tabNo]["isMarked"]==true);
	}
	
	this.setActiveTab = function(id) {
		for(z96=0; z96 < tabs.length; z96++) {
			if(tabs[z96]["id"] == id) {
				if(tabs[z96]["isMarked"]) {
					document.getElementById(this.id + "Tab" + z96).className = "tab marked selected";				
				} else {
					document.getElementById(this.id + "Tab" + z96).className = "tab selected";
				}	
				
				tabs[z96]["isActive"] = true;
				activeTabNo = z96;
			} else {
				if(tabs[z96]["isMarked"]) {
					document.getElementById(this.id + "Tab" + z96).className = "tab marked";				
				} else {			
					document.getElementById(this.id + "Tab" + z96).className = "tab";
				}
				
				tabs[z96]["isActive"] = false;		
			}
		}
		this.eventHandler.tabSelected(id);		
	}
}
