NS4 = (document.layers);
NS6 = (navigator.vendor == ("Netscape6") || navigator.product == ("Gecko"));
IE4 = (document.all);
ver4 = ( NS6 || NS4 || IE4 );
IE5 = (IE4 && navigator.appVersion.indexOf("5.")!=-1);
isMac = (navigator.appVersion.indexOf("Mac") != -1);
isTree = (NS6 || NS4 || (IE4 && !isMac) || (IE5 && isMac));
isWin = (navigator.appVersion.indexOf("Win") != -1)

var to = "";              // timeout-handler
var vlist = new Array();  // current menu

function setPopPosX(trid) {
	if (document.getElementById) { // if ( IE4 )
	var el_ = document['menu'+trid];
	var x = y = 0;

	// MAC-Erweiterung fuer IE
	if ((navigator.userAgent.indexOf("Mac") > -1) && ( navigator.userAgent.indexOf("IE") > -1 )) {
		var offsetleft = document['menu'+trid].offsetLeft + document['menu'+trid].offsetWidth + 1;
		var offsettop  = document['menu'+trid].offsetTop  - document['menu'+trid].offsetHeight + 18;
	} else {
		while( (el_ = el_.offsetParent) != null ) {
			x += el_.offsetLeft;
			y += el_.offsetTop;
		}
		var offsetleft = x + document['menu'+trid].offsetLeft + document['menu'+trid].offsetWidth;
		var offsettop  = y + document['menu'+trid].offsetTop;
	}
	} else {

		if (document.layers) {
			var el_ = document['menu'+trid];
			var offsetleft = el_.x;
		} else {
			if ( !document.all ) return;
			var x = y = 0;
			var offsetleft = x + document['menu'+trid].offsetLeft + document['menu'+trid].offsetWidth;
		}
	}
	return (offsetleft);
}

function setPopPosY(trid) {
	if (document.getElementById) { // if ( IE4 )
	var el_ = document['menu'+trid];
	var x = y = 0;

	// MAC-Erweiterung fuer IE
	if ((navigator.userAgent.indexOf("Mac") > -1) && ( navigator.userAgent.indexOf("IE") > -1 )) {
		var offsetleft = document['menu'+trid].offsetLeft + document['menu'+trid].offsetWidth + 1;
		var offsettop  = document['menu'+trid].offsetTop  - document['menu'+trid].offsetHeight + 18;
	} else {
		while( (el_ = el_.offsetParent) != null ) {
			x += el_.offsetLeft;
			y += el_.offsetTop;
		}
		var offsetleft = x + document['menu'+trid].offsetLeft + document['menu'+trid].offsetWidth;
		var offsettop  = y + document['menu'+trid].offsetTop;
	}
	} else {

		if (document.layers) {
			var el_ = document['menu'+trid];
			var offsettop = el_.y;
		} else {
			if ( !document.all ) return;
			var x = y = 0;
			var offsettop  = y + document['menu'+trid].offsetTop;
		}
	}
	return (offsettop);
}

var LastID=0;
var TimOut=0;

function SetMenu( tid, tstat ) {
	if ( TimOut ) clearTimeout( TimOut );
	if ( tid!=LastID ) hidshow(LastID,0);
	if ( tid ) hidshow(tid,tstat);
	if ( tstat ) TimOut=setTimeout("SetMenu(0,0)",tstat);
}

function hidshow(i,s) {
	if ( i ) {

		ietarget = "div" + i;
		nsstat   = ( s ? "SHOW"    : "HIDE"   );
		iestat   = ( s ? "visible" : "hidden" );
		if ( document.layers ) {
			if (!document.layers[ietarget]) return;
			x=setPopPosX(i);
			y=setPopPosY(i);
			document.layers[ietarget].left = x;
			document.layers[ietarget].top = y;
			document.layers[ietarget].visibility = nsstat;
		} else if (document.all){
			if (!document.all[ietarget]) return;
			document.all[ietarget].style.left = setPopPosX(i);
			document.all[ietarget].style.top = setPopPosY(i);
			document.all[ietarget].style.visibility = iestat;
		} else if (document.getElementById) {
			if (!document.getElementById(ietarget)) return;
			x=setPopPosX(i);
			y=setPopPosY(i);
			document.getElementById(ietarget).style.left = x;
			document.getElementById(ietarget).style.top = y;
			document.getElementById(ietarget).style.visibility = iestat;
		}
		LastID = ( s ? i : 0 );
	}
}

// MenuDivs: Layer aufpoppen lassen
function regMenu( level, mdiv, lpix, expire, pos, ofsx, ofsy ) {
	if ( to ) window.clearTimeout(to);      // timeout loeschen
	if ( !pos ) pos = "tr";
	if ( !ofsx ) ofsx = 0;
	if ( !ofsy ) ofsy = 0;

	if ( vlist[level]!=mdiv ) for(var i=level; i<=vlist.length; i++)
	if ( vlist[i]) vlist[i] = reg_setDiv(vlist[i]);

	if ( mdiv ) {
		if ( lpix ) var ppos = reg_getImagePos( lpix, pos, ofsx, ofsy ); // position ermitteln
		else        var ppos = [ 0, 0];  // sonst array generiren
		vlist[level] = reg_setDiv(mdiv,1,ppos[0],ppos[1]);
	}
	if ( expire )
	to=window.setTimeout("regMenu(0)",1000*expire);
	return(false);
}

// MenuDivs: Layer positioniern und ein- oder ausschalten
function reg_setDiv( name, show, xpos, ypos ) {
	if ( !name ) return("");
	var el_ = document.getElementById(name);
	var oel_ = el_;
	if ( el_ ) el_ = el_.style;
	var vis = ( show ? "visible" : "hidden" );
	if ( !el_ ) return("");
	if ( xpos || ypos ) {
		if ( adjust.length ) { xpos += adjust[0]; ypos += adjust[1]; }
		el_.top=ypos; el_.left=xpos;
	}
	el_.visibility = vis;
	if ( show ) {
		menu_hide_forms();
	} else {
		menu_show_forms();
	}
	return( show ? name : "" ); // rückgabewert
}


// MenuDivs: x/y Position des Positions-Pixels ermitteln
function reg_getImagePos( el, pos, ofsx, ofsy ) {
	var el = document.getElementById(el);
	var xpos = ypos = 0;
	var o_el = el;

	if ( document.getElementById ) {
		if ( !el ) return( [0,0] );
		xpos = el.offsetLeft;
		ypos = el.offsetTop;
		while( (el = el.offsetParent) != null ) {
			xpos += el.offsetLeft;
			ypos += el.offsetTop;
		}
	} else {
		return( [0,0] );
	}

	switch(pos) {
		case "tl":
		xpos = xpos;
		break;
		case "tr":
		default:
		xpos = xpos+o_el.offsetWidth;
		break;
		case "br":
		xpos = xpos+o_el.offsetWidth;
		ypos = ypos+o_el.offsetHeight;
		break;
		case "bl":
		ypos = ypos+o_el.offsetHeight;
		break;
	}
	xpos = xpos+ofsx;
	ypos = ypos+ofsy;

	return ([xpos,ypos]);
}

function setlink(el, vis) {
	if(vis=="visible") {
		//el.firstChild.firstChild.focus();
		document.onkeypress=function processKey() {
			var key = ( NS6 || IE4 ) ? window.event.keyCode : el.which;
			if(key==32) {
				el.firstChild.firstChild.focus();
			}
		};
	}
}


function menu_hide_forms()
{
	for (var a=0; a<document.forms.length; a++)
	{
		for (var b=0; b<document.forms[a].elements.length; b++)
		{
			if (document.forms[a].elements[b].type=="select-one") document.forms[a].elements[b].style.visibility="hidden";
		}
	}
}

function menu_show_forms()
{
	for (var a=0; a<document.forms.length; a++)
	{
		for (var b=0; b<document.forms[a].elements.length; b++)
		{
			document.forms[a].elements[b].style.visibility="visible";
		}
	}
}
