// JavaScript Document
//<script src="menu.js"> ins head einbauen.
//untermenu: table width="100%" border="0" cellspacing="0" cellpadding="0" class="menu1" id="ta_XXXXX">
//menu kommt in irgendein element mit id="menu" (z.B. td oder div)
//<body onLoad="onLoad()">
 

function gEbI(z) {return document.getElementById(z);}

firstmenu = true;
menuwidth = 130;
menus_out = new Array();

function onLoad() {
if (location.search != "") {
	gEbI("mainframe").src = location.search.slice(1);
	}
current = gEbI("ta_");											//wo fängt menus_suchen() an?
menus_suchen()
eval(cmd);
gEbI("menu").removeChild(gEbI("ta_"));
}

function menus_suchen() {
level = 0;
cmd = "";
weitermachen = true;
stopper = gEbI("MenuEnde");
do{
	if (current.nodeType == 1){
		if (current.tagName == "TABLE") { 
		menuid = current.id.slice(3);
		cmd += "parselevel = " + menuid.length + "; menu_schreiben(gEbI(\"" + current.getAttribute("id") + "\"),gEbI(\"menu" + menuid + "\"));"
			}
		}
	do {
		if ( current.firstChild != null ) {
			current = current.firstChild;
			}
		else {
			if ( current != current.parentNode.lastChild ) {
				current = current.nextSibling;
				}
			else {
				do {
					current = current.parentNode;
					}
				while ( current.parentNode.nextSibling == null )
				current = current.parentNode.nextSibling;
				}
			}
		}
		while ( current.nodeType != 1 )
	//alert (current.tagName + "  " + current.id + "  " + cmd);
	//alert (current.id);
	if (current == stopper) {weitermachen = false;}
	}
while ( weitermachen == true )
}

function menu_schreiben(ta_current,parent) {
n = document.createElement("div");											//div
n.style.visibility = (parselevel == 0) ? "visible" : "hidden" ;
n.style.position = (parselevel == 0) ? "relative" : "absolute";
n.style.left = (parselevel == 0) ? 0 : menuwidth;
n.style.top = (parselevel == 0) ? 0 : parent.offsetTop;
n.id = "div_Menu";
n.style.width = menuwidth;

var HTML = "<table cellpadding=2 cellspacing=0 border=0 width=100%>";

for( i = 0 ; i < ta_current.childNodes.length ; i++ ) {
	if ( ta_current.childNodes[i].tagName == "TBODY" ) {
		otb = ta_current.childNodes[i]
		for ( j = 0 ; j < otb.childNodes.length ; j++ ) {
			if ( otb.childNodes[j].tagName == "TR" ) {
				HTML += "<tr>";
				otr = otb.childNodes[j];
				otr = otr.cloneNode(true);
				clean(otr);
				for ( k = 0 ; k < otr.childNodes.length ; k++ ) {
					if (otr.childNodes[k].tagName == "TD") {
						HTML += "<td width=100% id=\"menu" + otr.childNodes[k].id + "\" level=" + parselevel + " class=\"menu" + parselevel + "\" onMouseOut=\"mouseOut(this)\" onMouseOver=\"mouseOver(this)\">" + otr.childNodes[k].innerHTML + "</td>";
						}
					}
				HTML += "</tr>";
				}
			}
		}
	}

HTML += "</table>";
n.innerHTML = HTML;
parent.insertBefore(n,parent.firstChild);
}

function cAN (target,Att,Value) {											//createAttributeNode
var canode = document.createAttribute(Att);									//hängt dem Knoten "target" einen Eigentschaftsknoten "Att" mit dem Wert "Value" an. 
canode.nodeValue = Value;
target.setAttributeNode(canode);
}

function clean (target) { 													//entfernt alle <table> - Unterknoten des Objekts "target" 
for ( m = 0 ; m < target.childNodes.length ; m++) {
	if ( target.childNodes[m].tagName == "TD" ) {
		ttd = target.childNodes[m];
		for ( l = 0 ; l < ttd.childNodes.length ; l++) {
			if ( ttd.childNodes[l].tagName == "TABLE" ) {
				ttd.removeChild(ttd.childNodes[l]);
				}
			}
		}
	}
}

function mouseOver (td_over) {
cAN(td_over,"class","menu" + td_over.getAttribute("level") + "_h");
//if ( arrayFind(menus_out,td_over.getAttribute("id")) ) {return true}
for ( i = 0 ; i < td_over.childNodes.length ; i++) {
	if (td_over.childNodes[i].tagName == "DIV") {
		td_over.childNodes[i].style.visibility = "visible";
		menus_out.push(td_over.getAttribute("id"));
		//gEbI("status").innerHTML = menus_out.length + " : " + menus_out;
		}
	}
}

function mouseOut2 (td_ou) {
cAN(td_ou,"class","menu" + td_ou.getAttribute("level"));
}

function mouseOut (td_out) {
cAN(td_out,"class","menu" + td_out.getAttribute("level"));
for ( i = 0 ; i < td_out.childNodes.length ; i++) {
	if (td_out.childNodes[i].tagName == "DIV") {
		td_out.childNodes[i].style.visibility = "hidden";
		menus_out.pop();
		//gEbI("status").innerHTML = menus_out.length + " : " + menus_out;
		}
	}

}

function arrayFind (arr,term) {
for ( o = 0 ; o < arr.length ; o++) {
	if ( arr[o] == term ) {
		return o;
		}
	}
return false;
}
