var browser;
if (document.all) browser = "ie";
if (document.layers) browser = "n4";
if (document.getElementById && !document.all) browser = "n7";

var openPopup = "";
var openLayer = "";
var openMouseOverClicked = new Array();

var timeout;

document.onmouseup = closePopup;
if (browser == "n4") window.captureEvents(Event.MOUSEDOWN);
window.onmouseup = closePopup;

var mouseX, mouseY;
document.onmousemove = getMousePosition;

function getMousePosition(e) {
	if (document.all) {
		mouseX = window.event.x + document.body.scrollLeft;
		mouseY = window.event.y + document.body.scrollTop;
	}else{
		mouseX = e.pageX;
		mouseY = e.pageY;
	}
}


function layer_click(name, layer, pos , top, left) {
	if (openPopup == name) {
		layer_hide(name);
		openMouseOverClicked[name] = 0;

		openPopup = '';
		return;
	}

	top = getPos(layer + 'li' + pos).top;

	//alert(top);

	//höherer negativer Wert, schiebt das Layer nach oben
	layer_position(name, top - 129, '');

	layer_show(name);

	openPopup = name;
	openMouseOverClicked[name] = 1;
}

function layer_over(name, layer, pos , top, left) {
	//Erst mal alle Layer schließen, die nicht aufgeklickt sind!
	var dontOpen = 0;

	for (var i in openMouseOverClicked) {
		if (openMouseOverClicked[i] != 1) {
			layer_hide(i);
		}else{
			dontOpen = 1;
		}
	}

	if (dontOpen) return;

	window.clearTimeout(timeout);

	top = getPos(layer + 'li' + pos).top;

	//höherer negativer Wert, schiebt das Layer nach oben
	layer_position(name, top - 129, '');

	layer_show(name);

	if (openMouseOverClicked[name] != 1) openMouseOverClicked[name] = 2;
}

function layer_out(name, layer, pos, counter) {
	//Bei IE die Höhe mit dem Skrollbalken verschieben
	if (browser == 'ie') {
		//top = 0 + window.pageYOffset;
	}else{
		top = 0;
	}

	//Ab dieser Zahl disablen
	disableCounter = 2;

	//Wenn sich die Maus noch innerhalb des Rahmens befindet, dann kurz warten und Funktion erneut aufrufen
	if (mouseX < getPos(layer + 'a' + pos).right && mouseY > getPos(layer + 'a' + pos).top + top && mouseY < getPos(layer + 'a' + pos).bottom + top) {
		timeout = window.setTimeout("layer_out('" + name + "','" + layer + "'," + pos + ",0)", 100);
		return;
	}

	var mousePuffer = 0;

	for (var i in openMouseOverClicked) {
		if (openMouseOverClicked[i] != 1) {
			if (i == name) {
				if (mouseX + mousePuffer < getPos(layer + 'a' + pos).right || (mouseY - mousePuffer < getPos(layer + 'a' + pos).top + top || mouseY + mousePuffer >= getPos(layer + 'a' + pos).bottom + top)) {
					if (counter < disableCounter) {
						timeout = window.setTimeout("layer_out('" + name + "','" + layer + "'," + pos + "," + ++counter + ")", 100);
					}else{
						layer_hide(name);
					}

					//alert(mouseX + '|' + mouseY + '==' + getPos(layer + 'a' + pos).right + '||' + getPos(layer + 'a' + pos).top + '|' + (getPos(layer + 'a' + pos).bottom));
				}else{

				}
			}else{
				layer_hide(i);
			}
		}
	}
}

function layer_isvisible(name) {
	if (browser == "ie") {
		if (document.all[name].style.visibility == "visible") return (true);
	}else if (browser == "n4"){
		if (document.layers[name].visibility == "show") return (true);
	}else if (browser == "n7"){
		if (document.getElementById(name).style.visibility == "visible") return (true);
	}

	return (false);
}

function layer_hide(name) {
	if (browser == "ie") {
		document.all[name].style.visibility = "hidden";
	}else if (browser == "n4"){
		document.layers[name].visibility = "hide";
	}else if (browser == "n7"){
		document.getElementById(name).style.visibility = "hidden";
	}
}

function layer_show(name) {
	if (browser == "ie") {
		document.all[name].style.visibility = "visible";
	}else if (browser == "n4"){
		document.layers[name].visibility = "show";
	}else if (browser == "n7"){
		document.getElementById(name).style.visibility = "visible";
	}
}

function layer_position(name,top,left) {
	if (browser == "ie") {
		document.all[name].style.top = top;
		if (left != '') document.all[name].style.left = left;
	}else if (browser == "n4"){
		document.layers[name].top = top;
		if (left != '') document.layers[name].left = left;
	}else if (browser == "n7"){
		document.getElementById(name).style.top = top + "px";
		if (left != '') document.getElementById(name).style.left = left + "em";
	}
}

function getPos(el) {
        var pos = {left:0, top:0};
        var o = document.getElementById(el);

		pos.height = o.offsetHeight;
		pos.width = o.offsetWidth;

        while(o) {
                pos.top += o.offsetTop;
                pos.left += o.offsetLeft;

                o = o.offsetParent;
        }

        pos.bottom = pos.top + pos.height;
        pos.right = pos.left + pos.width;
        //alert(pos.height);

        return pos;
}

function closePopup() {
	if (openPopup.length > 0) {
		layer_hide(openPopup);
		openMouseOverClicked[openPopup] = 0;
	}

	for (var i in openMouseOverClicked) {
		if (openMouseOverClicked[i] == 2) {
			layer_hide(i);
		}
	}

	return true;
}



function open_menu(id,ebene,curid,td) {
	height_title = document.getElementById("menuprodtitle").offsetHeight;

	ArrMenuOpen = strMenuOpen.split(",");

	hoehe = ArrMenuOpen.length;
	if (strMenuOpen.length == 0) hoehe = 0;

	for (i = hoehe; i > ebene; i--) {
		//Layer schlieï¿½n
		layer_hide("menuprod" + ArrMenuOpen[i-1]);
	}

	strMenuOpen = ""
	for (i = 0; i < ebene; i++) {
		strMenuOpen = strMenuOpen + ArrMenuOpen[i] + ",";
	}
	strMenuOpen = strMenuOpen + id;

	//Neuen Layer ï¿½fnen
	if (td > 0) {
		height[ebene] = height[ebene-1] + height_title;

		for (i = 1; i <= td; i++) {
			height[ebene] += document.getElementById("menuprod" + curid + "td" + i).offsetHeight;
		}

		//alert(height[ebene]);
	}

	layer_position("menuprod" + id,height[ebene]);
	layer_show("menuprod" + id);
	//alert("Open Layer menuprod" + id);
}

function close_menu(id,ebene) {
	if (strMenuOpen.length == 0) return(false);

	ArrMenuOpen = strMenuOpen.split(",");
	hoehe = ArrMenuOpen.length;

	for (i = hoehe; i >= ebene; i--) {
		//alert("Close Layer menuprod" + ArrMenuOpen[i-1]);
		layer_hide("menuprod" + ArrMenuOpen[i-1]);
	}

	strMenuOpen = ""
	for (i = 0; i < ebene - 1; i++) {
		strMenuOpen = strMenuOpen + ArrMenuOpen[i]
		if (i < ebene - 2) strMenuOpen += ",";
	}

	//alert(strMenuOpen);
}


//var height = new Array();
//height[0] = 206;
//var height_title;
//var strMenuOpen = new array();

