/*
*	Klasse zum Anzeigen/Verstecken von Layern
*	Ralf Weber <ralf@weberr.de> http://www.weberr.de/
*	@version 1.0
*	@date 08.06.2002
*/

/*
* Beispiel:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<script language="JavaScript" src="../classes_js/newLayer.js"></script>

<script language="JavaScript">
	var layer = new layer();
</script>
	<title>Layers</title>
</head>

<body>

<a href="#" onMouseOver="layer.show('test1', 1);" onMouseOut="layer.createTimer();">layer1</a>
<br><br>
<a href="#" onMouseOver="layer.show('test2', 1);" onMouseOut="layer.createTimer();">layer2</a>
<br><br>
<a href="javascript:layer.show('test3', 1);" onMouseOut="layer.createTimer();">layer3</a>
<br><br>

<div id="test1" style="position:absolute; left:200; top:20; visibility:hidden;"><a href="#" onMouseOver="layer.clearTimer();" onMouseOut="layer.createTimer();">test1</a></div>
<div id="test2" style="position:absolute; left:200; top:100; visibility:hidden;"><a href="#"  onMouseOver="layer.show('test2_1'); layer.clearTimer();" onMouseOut="layer.clearAll();">test2</a></div>
<div id="test3" style="position:absolute; left:200; top:200; visibility:hidden;"><a href="#"  onMouseOver="layer.clearTimer();" onMouseOut="layer.createTimer();">test3</a></div>

<div id="test2_1" style="position:absolute; left:300; top:100; visibility:hidden;"><a href="#"  onMouseOver="layer.clearTimer();" onMouseOut="layer.clearAll();">test2_1</a></div>
</body>
</html>
*/

/*
*	globale Variablen
*	browser Erkennung
*	aktivLayer Array in dem das aktive Layer steht
*/
aktivLayer = new Array();
var timer;
var aktiv = false;

dom = (document.getElementById) ? true : false;
ie = (document.all && !document.getElementById) ? true : false;
nn = (document.layers) ? true : false;

/*
*	Konstruktor
*	Initialisierung aller Komponenten
*/
function layer()
{
	this.show = show;
	this.hide = hide;
	this.createTimer = createTimer;
	this.clearTimer = clearTimer;
	this.clearAll = clearAll;
	this.hideAll = hideAll;
}

/*
*	Anzeigen eines Layers
*	@param String divId		LayerName
*	@param bool isParent	1 wenn Elternlayer sonst leer
*	@see hide()
*/
function show(divId, isParent, ParentDiv)
{
	if (aktivLayer.length > 0 && isParent == true)
	{
			//alert(aktivLayer[2]);
			hide(aktivLayer[0], '' );
	}
	
	if (aktivLayer.length > 0 && aktivLayer[0] == divId)
	{
			//hide(aktivLayer[0]);	
	}
	aktivLayer[0] = "";
	aktivLayer[0] = divId;
	aktivLayer[1] = "";
	aktivLayer[1] = ParentDiv;
	aktivLayer[2] = "";
	aktivLayer[2] = divId + 'Pfeil';
	
	if (dom)
	{
		document.getElementById(aktivLayer[0]).style.visibility="visible";
	}
	if (ie)
	{
		eval(aktivLayer[0]+'.style.visibility="visible"');
	}
	if (nn)
	{
		document.eval(aktivLayer[0]).visibility="show";
	}
}


/*
*	Verstecken eines Layers wenn timer gesetzt ist.
*	@param String divId		LayerName
*	@see show(divId, isParent)
*/
function hide(divId, divParentId)
{
	if(timer)
	{
		if (dom)
		{
			//alert(divParentId + 'Pfeil');
			document.getElementById(divId).style.visibility="hidden";
			hideLayer(aktivLayer[2]);
			//document.getElementById(divParentId + 'Pfeil').style.visibility="hidden";
			
					//alert('in layer.js ' + divParentId);
					//alert('in layer.js ' + divId);
			if (divParentId != "")
			{
				changeMenuColorBack(divParentId, 'ffffff');
			}
		}
		if (ie)
		{
			eval(divId+'.style.visibility="hidden"');
			if (divParentId != "")
			{
				changeMenuColorBack(divParentId, 'red')
			}
		}
		if (nn)
		{
			document.eval(divId).visibility="hide";
			if (divParentId != "")
			{
				changeMenuColorBack(divParentId, 'red')
			}
		}
	}
}

/*
*	Timer zerstören
*/
function clearTimer()
{
	timer = clearTimeout (timer);
}

/*
*	Timer erstellen
*	aktives Layer wird nach 1 Sek Delay versteckt
*	in setTimeout die Zeit setzen
*/
function createTimer()
{
	timer = setTimeout('hide(aktivLayer[0], aktivLayer[1])',1000);
}

/*
*	Verstecken aller Layer
*	alle Layer werden versteckt
*	in setTimeout die Zeit setzen
*/
function clearAll()
{
	if ( timer )
	{
		clearTimeout (timer);
	}
	timer = setTimeout('hideAll()',1000);
}


/*
*	Verstecken aller Layer
*	alle Layer werden versteckt
*	wird von clearAll() aufgerufen
*	@see clearAll()
*/
function hideAll()
{
	if (dom)
	{
		var laenge = document.getElementsByTagName('div');

		for (i=0;i<laenge.length;i++) 
		{
			document.getElementsByTagName('div')[i].style.visibility = "hidden";		
		}
	}
	if (ie)
	{
		for(j=0;j<document.all.tags("div").length;j++) 
		{
			document.all.tags("div")[j].style.visibility = "hidden";
		}
	}
	
	if (nn)
	{
		for (i=0;i<document.layers.length;i++) 
		{
			document.layers[i].visibility = "hide";
		}
	}
}