var DURATION = 0.6;
var activeTabs = new Array();
var inProgress = 0;

function clickTab(inTab) {
	if (inProgress == 0) {
		var menues = $$("div#" + inTab.parentNode.id + " div.menu");  // Findet Geschwister im gemeinsamen Container
		var menu = findMenuForHeader(inTab);
		for(var i=0; i<menues.length; i++) {
			if(menues[i] == menu) {
				if (menues[i].style.display == 'none') {
					inProgress++;
					Effect.BlindDown(
						menues[i], 
						{ 
							duration: DURATION, 
							afterFinish: function() {
								inProgress--;
							}
						}
					);  // Aktiv und zu => oeffnen
					setActiveTab(inTab);
				} else {
					return;   // ***********************  Zumachen ausgeschaltet!  **********************
					inProgress++;
					Effect.BlindUp(
						menues[i], 
						{ 
							duration: DURATION, 
							afterFinish: function() {
								inProgress--;
							}
						}
					);  // Aktiv und auf => schließen
					clearActiveTab(inTab);
				}
			} else {
				// Aktiv und zu => oeffnen// Nicht aktives Tab zu
				inProgress++;
				Effect.BlindUp(
					menues[i], 
					{ 
						duration: DURATION, 
						afterFinish: function() {
							inProgress--;
						}
					}
				);  
			}
		}
		
		
		var menuheaders = $$("div#" + inTab.parentNode.id + " div.menuheader");  // Findet Geschwister im gemeinsamen Container
		for(var i=0; i<menuheaders.length; i++) {
			if (menuheaders[i] != activeTabs[inTab.parentNode.id]) {
				setHeaderClass(menuheaders[i], ''); // Nicht-aktiven Header zuruecksetzen
				activeTabs[findContainerIdForHeader(menuheaders[i])] = null;
			}
		}	
	}
}


function initTab() {
	var ids = 0;
	var containers = $$("div.container");
	for(var i=0; i<containers.length; i++) {
		containers[i].id = "container" + ids;
		ids++;
	}
	
	var menuheaders = $$("div.menuheader");
	for(var i=0; i<menuheaders.length; i++) {
		menuheaders[i].onclick = function() { clickTab(this); }
		//menuheaders[i].onmouseover = function() { setHeaderClass(this, 'menuheader_hover'); }
		menuheaders[i].onmouseover = function() { setHeaderClass(this, activeTabs[this.parentNode.id]==this ? 'menuheader_active' : 'menuheader_hover'); }
		menuheaders[i].onmouseout = function() { setHeaderClass(this, activeTabs[this.parentNode.id]==this ? 'menuheader_active' : ''); }
	}
	
	var menuheaders = $$("div.menuheader_active");
	for(var i=0; i<menuheaders.length; i++) {
		activeTabs[menuheaders[i].parentNode.id] = menuheaders[i];
		menuheaders[i].onclick = function() { clickTab(this); }
//		menuheaders[i].onmouseover = function() { setHeaderClass(this, 'menuheader_hover'); }
		menuheaders[i].onmouseover = function() { setHeaderClass(this, activeTabs[this.parentNode.id]==this ? 'menuheader_active' : 'menuheader_hover'); }
		menuheaders[i].onmouseout = function() { setHeaderClass(this, activeTabs[this.parentNode.id]==this ? 'menuheader_active' : ''); }
	}
}


function findMenuForHeader(inHeader) {
	var sibling = inHeader.nextSibling;
	while (sibling != null && sibling.className != "menu") {
		sibling = sibling.nextSibling;
	}
	return sibling;
}


function findContainerIdForHeader(inHeader) {
	var menu = findMenuForHeader(inHeader);
	var sibling = menu.firstChild;
	while (sibling != null && sibling.className != "container") {
		sibling = sibling.nextSibling;
	}
	return sibling != null ? sibling.id : -1;
}


function setActiveTab(inTab) {
	activeTabs[inTab.parentNode.id] = inTab;
	setHeaderClass(inTab, 'menuheader_active');
}


function clearActiveTab(inTab) {
	activeTabs[inTab.parentNode.id] = null;
	setHeaderClass(inTab, 'menuheader_hover');
}


function setHeaderClass(inTab, inClass) {
	var className = inTab.className.replace(/menuheader_active/, "").replace(/menuheader_hover/, "").replace(/menuheader/, "");
	inTab.className = 'menuheader ' + className + ' ' + inClass;
}


window.onload = initTab;