gezeigt = new Array();
signal = -1;
cycles = 0;

function setaktiv(){
	var element;
	if(aktiv['menu'] != undefined){
		document.getElementById("menu_" + aktiv['menu']).src = optionen['bildpfad'] + aktiv['menu'] + "_over.jpg";
		if(aktiv['submenu'] != undefined){
			element = document.getElementById("menucontainer_" + aktiv['menu'] + "_" + aktiv['submenu']).getElementsByTagName("img")[0];
			element.src = element.src.replace(/_out\./,"_over.");
		} else {
			aktiv['submenu'] = -1;
		}
	} else {
		aktiv['menu'] = -1;
	}
	waechter();
}

Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function show(nr){

	//document.getElementById("debug").value = "SHOW: " + nr + "\n" + document.getElementById("debug").value;

	var anzahl = menu[nr][0];
	var funcstring = "";

	if(!gezeigt.inArray(nr)){

		gezeigt.push(nr); 
		document.getElementById("menu_" + nr).src = optionen['bildpfad'] + nr + "_over.jpg";
		
		for(i = anzahl - 1;i >= 0;i = i - 1){
			//funcstring = "initMove(" + nr + "," + i + "," + (optionen['starthoehe']) + "," + (optionen['starthoehe'] - i*optionen["menupunkthoehe"]) + ")";
			//setTimeout(funcstring, 100);
			initMove(nr,i,optionen['starthoehe'],(optionen['starthoehe'] - i*optionen["menupunkthoehe"]))
		}
	} else if (anzahl > 0 && (aktiv['menu'] != nr || aktiv['submenu'] != 0)) {
		
		// Sicherheitshalber unterstes Submenu auf mouse-out stellen
		element = document.getElementById("menucontainer_" + nr + "_0").getElementsByTagName("img")[0];
		element.src = element.src.replace(/_over\./,"_out.");
	}
	
		//document.getElementById("debug").value = "AFTERSHOWSTACK: " + gezeigt + "\n" + document.getElementById("debug").value;

}

function initMove(nr, sub, wieweit, ende){
	element = document.getElementById("menucontainer_" + nr + "_" + sub);
	element.style.top = wieweit + "px";
	element.style.left = menu[nr][1] + "px";
	element.style.display = "block";
	move(nr, sub, wieweit, ende);
}

function move(nr, sub, wieweit, ende){
	var funcstring = "";
	element = document.getElementById("menucontainer_" + nr + "_" + sub);

	element.style.top = wieweit + "px";
	if(wieweit > ende){
		wieweit = wieweit - Math.ceil((wieweit - ende)/3);
		
		funcstring = "move(" + nr + "," + sub + "," + wieweit + "," + ende + ")"
		
		setTimeout(funcstring, 60);
	}
}


/*
submenu()
Bricht den letzten hide-Auftrag ab um sicherzustellen das Submenus erhalten bleiben
und regelt den onmouseover-Effekt
*/

function submenu(nr, sub){

	setSignal(nr);
	

	var element;
	var tmp = "";
	
	for(i = 0;i < menu[nr][0];i++){
		element = document.getElementById("menucontainer_" + nr + "_" + i).getElementsByTagName("img")[0];
		if(i == sub){
			element.src = element.src.replace(/_out\./,"_over.");
		} else if(aktiv['menu'] != nr || aktiv['submenu'] != i) {
			element.src = element.src.replace(/_over\./,"_out.");
		}
	}
}

/*
waechter()
Verwaltet die Signale und erledigt das Ausblenden und Zurücksetzen
*/

function waechter(){
	var sTmp;
	var gTmp;
	var element = "";
	var i = 0;
	
	//document.getElementById("debug").value = "STACK: " + gezeigt + "\n" + document.getElementById("debug").value;
	
	sTmp = signal;

	var gLaenge = gezeigt.length;
	while(i < gLaenge){
		gTmp = gezeigt.shift();
		i = i+1;
		
		if(gTmp != signal){
			if(gTmp != aktiv['menu']){
				document.getElementById("menu_" + gTmp).src = optionen['bildpfad'] + gTmp + ".jpg";
			}
				
			subpunkte = menu[gTmp][0];
				
			for(j = subpunkte - 1;j >= 0;j = j - 1){
				element = document.getElementById("menucontainer_" + gTmp + "_" + j);
				element.style.display = "none";
				element.style.top = "0px";
				element.style.left = "0px";
				
				if(aktiv['menu'] != gTmp || aktiv['submenu'] != j){
					element.getElementsByTagName("img")[0].src = element.getElementsByTagName("img")[0].src.replace(/_over\./,"_out.");
				}
					
			}

		} else {
			gezeigt.push(gTmp);
		}
	}
}

/*
setSignal(pos)
Setzt das Signal der derzeitigen Mausposition und ruft die ein- und ausblende-Funktionen auf
*/

function setSignal(pos,zeige){

	//document.getElementById("debug").value = "setSignal: " + pos + "|" + signal + "\n" + document.getElementById("debug").value;
	if(pos != signal && pos != -1 && zeige == 1){
		show(pos);
	}

	signal = pos;
	if(pos == -1){
		setTimeout("waechter()",500);
	} else {
		waechter();
	}
}
