/******************************************************************************/
//die layer müssen einfach nur im html code mit MenuLayerX bezeichnet werden, 
//wobei X für eine fortlaufende zahl >0 steht

/******************************************************************************/
var Menu;
var ActiveItem 		= "";
var ActiveSubItem = "";
var PageLoaded = false;

var xPos = 0;
var xPos = 0;

var ObjVisible	= document.all? "visible":"show";
var ObjHidden		=	document.all? "hidden":"hide";
/******************************************************************************/
function InitMenu()
{
	// Menu und Layer
	Menu = new Menu();
	Menu.addLayer(166,129, 17,80);
//wenn du den index als parameter einträgst, vergiss nicht, ihn auch hinter Menu.Layers[-> an dieser stelle <-]   ebenfalls zu ändern
	Menu.addLayer(150,129,144,80);
	Menu.Layers[1].addSubLayer( 49, 124, 271, 135, 1);
	Menu.addLayer(143,129,270,80);
	Menu.addLayer( 87,129,397,80);
	Menu.addLayer( 87,129,524,80);

	// events
	if (document.layers) 
		document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = CaptureClientXY;
}
/******************************************************************************/
/******************************************************************************/
function Menu()
{
	this.Layers							=	new Array();
	this.addLayer 					= addLayer;	
	this.GetLayerName 			= GetLayerName;
	this.GetLayerLeft				= GetLayerLeft;
	this.GetLayerTop				= GetLayerTop;
	this.GetLayerWidth 			= GetLayerWidth;
	this.GetLayerHeight			= GetLayerHeight;
	this.GetSubLayerName 		= GetSubLayerName;
	this.GetSubLayerLeft		= GetSubLayerLeft;
	this.GetSubLayerTop			= GetSubLayerTop;
	this.GetSubLayerWidth 	= GetSubLayerWidth;
	this.GetSubLayerHeight	= GetSubLayerHeight;	
}
/******************************************************************************/
function MenuLayer(Height, Width, Left, Top)
{
	this.height				= Height;
	this.width				= Width;
	this.left					= Left;
	this.top	  			= Top;
	this.name					= "";
	this.index				= 0;
	this.SubLayers 		= new Array();
	this.addSubLayer 	= addSubLayer;	
}
/******************************************************************************/
function addLayer(Height, Width, Left, Top)
{
	if (Menu && Menu != "" && PageLoaded)
	{
		var CurrentMenuLayer 		= new MenuLayer(Height, Width, Left, Top)
		CurrentMenuLayer.index	= Menu.Layers.length;
		CurrentMenuLayer.name		= "MenuLayer" + Menu.Layers.length;
		//Menu.Layers.push(CurrentMenuLayer);
		
		Menu.Layers[Menu.Layers.length] = CurrentMenuLayer;
	}
}
/******************************************************************************/
function addSubLayer(Height, Width, Left, Top, LayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)
	{
		var CurrentSubMenuLayer 		= new MenuLayer(Height, Width, Left, Top)
		CurrentSubMenuLayer.index		= Menu.Layers[LayerIndex].SubLayers.length;
		CurrentSubMenuLayer.name		= "SubMenu" + LayerIndex + "Layer" + Menu.Layers[LayerIndex].SubLayers.length;
		//Menu.Layers[LayerIndex].SubLayers.push(CurrentSubMenuLayer);
		
		Menu.Layers[LayerIndex].SubLayers[Menu.Layers[LayerIndex].SubLayers.length] = CurrentSubMenuLayer;
	}
}
/******************************************************************************/
function GetLayerName(Index)
{
	if (Menu && Menu != "" && PageLoaded)
		return Menu.Layers[Index].name;
}
/******************************************************************************/
function GetLayerLeft(Index)
{
	if (Menu && Menu != "" && PageLoaded)
		return Menu.Layers[Index].left;
}
/******************************************************************************/
function GetLayerTop(Index)
{
	if (Menu && Menu != "" && PageLoaded)
		return Menu.Layers[Index].top;
}
/******************************************************************************/
function GetLayerHeight(Index)
{
	if (Menu && Menu != "" && PageLoaded)
		return Menu.Layers[Index].height;
}
/******************************************************************************/
function GetLayerWidth(Index)
{
	if (Menu && Menu != "" && PageLoaded)	
		return Menu.Layers[Index].width;
}
/******************************************************************************/
function GetSubLayerName(LayerIndex, SubLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
		return Menu.Layers[LayerIndex].SubLayers[SubLayerIndex].name;
}
/******************************************************************************/
function GetSubLayerLeft(LayerIndex, SubLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
		return Menu.Layers[LayerIndex].SubLayers[SubLayerIndex].left;
}
/******************************************************************************/
function GetSubLayerTop(LayerIndex, SubLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
		return Menu.Layers[LayerIndex].SubLayers[SubLayerIndex].top;
}
/******************************************************************************/
function GetSubLayerHeight(LayerIndex, SubLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
		return Menu.Layers[LayerIndex].SubLayers[SubLayerIndex].height;
}
/******************************************************************************/
function GetSubLayerWidth(LayerIndex, SubLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
		return Menu.Layers[LayerIndex].SubLayers[SubLayerIndex].width;
}
/******************************************************************************/


/******************************************************************************/
function ShowMenuLayer(MenuLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
	{
			HideAllLayers(MenuLayerIndex);
			//parent.frames.leer.document.forms['debug'].input.value = " MouseOver Index = " + MenuLayerIndex;
			SetLayerVisibility(Menu.GetLayerName(MenuLayerIndex), ObjVisible);
	}
	ActiveItem = Menu.GetLayerName(MenuLayerIndex);
}
/******************************************************************************/
function ShowSubLayer(MenuLayerIndex, SubLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
	{
		if (ActiveSubItem && ActiveSubItem != "")
			HideSubLayer(MenuLayerIndex);
		
		var ItemName = Menu.GetSubLayerName(MenuLayerIndex, SubLayerIndex);
		SetLayerVisibility(ItemName, ObjVisible);
		ActiveSubItem = ItemName;
	}
}

/******************************************************************************/
function HideMenuLayer()
{
	if (Menu && Menu != "" && PageLoaded)	
	{
//alert("hide @ hidemenulayer")			
		HideAllLayers(GetSelectedLayersIndex());
	}
}
/******************************************************************************/
function HideSubLayer(ParentLayerIndex)
{
	if (Menu && Menu != "" && PageLoaded)	
	{
		var SelectedSubLayerIndex = GetSelectedSubLayerIndex(ParentLayerIndex);
		for (var i = 0; i < Menu.Layers[ParentLayerIndex].SubLayers.length; i++)
		{
			if (SelectedSubLayerIndex	!= i)
			{
				SetLayerVisibility(Menu.GetSubLayerName(ParentLayerIndex, i), ObjHidden);		
			}
		}
	}
}
/******************************************************************************/
function GetSelectedSubLayerIndex(ParentLayerIndex)
{	
	if (Menu && Menu != "" && PageLoaded)	
	{
		var Result = -1;
		var PixelFailureWidth 	= 	0;
		for (var j = 0; j < Menu.Layers[ParentLayerIndex].SubLayers.length; j++)
		{
			if (xPos > Menu.GetSubLayerLeft(ParentLayerIndex, j) - PixelFailureWidth && 
					xPos < Math.abs(Menu.GetSubLayerLeft(ParentLayerIndex, j) + Menu.GetSubLayerWidth(ParentLayerIndex, j) - PixelFailureWidth) &&
					yPos > Menu.GetSubLayerTop(ParentLayerIndex, j) + PixelFailureWidth &&
					yPos < Math.abs(Menu.GetSubLayerTop(ParentLayerIndex, j) + Menu.GetSubLayerHeight(ParentLayerIndex, j) - PixelFailureWidth)
					)	
			{		
				Result = j;	
				break;
			}
		}
		return Result;
	}
}
/******************************************************************************/
function GetSelectedLayersIndex()
{
	if (Menu && Menu != "" && PageLoaded)	
	{	
		var Result 							=  -1;
		var PixelFailureWidth 	= 	0;
		
		for (var i = 0; i < Menu.Layers.length; i++)
		{
			if (Menu.GetLayerName(i) == ActiveItem)	
			{
//alert(" xPos " + xPos + "> Menu.GetLayerLeft(i) " + Menu.GetLayerLeft(i) +  " ?")						
				if (xPos >   + PixelFailureWidth && 
						xPos < Math.abs(Menu.GetLayerLeft(i) + Menu.GetLayerWidth(i) - PixelFailureWidth) &&
						yPos > Menu.GetLayerTop(i) + PixelFailureWidth &&
						yPos < Math.abs(Menu.GetLayerTop(i) + Menu.GetLayerHeight(i)) - PixelFailureWidth)
				{	
					Result = i;	
					break;
				}
				else
				{
					for (var j = 0; j < Menu.Layers[i].SubLayers.length; j++)
					{
						if (xPos < Math.abs(Menu.GetSubLayerLeft(i, j) + Menu.GetSubLayerWidth(i, j) - PixelFailureWidth) &&
								xPos > Menu.GetSubLayerLeft(i, j) + PixelFailureWidth &&
								yPos < Math.abs(Menu.GetSubLayerTop(i, j) + Menu.GetSubLayerHeight(i, j)) - PixelFailureWidth &&
								yPos > Menu.GetSubLayerTop(i, j) + PixelFailureWidth &&
								Menu.GetSubLayerName(i, j) == ActiveSubItem)	
						{						
							Result = i;	
							break;
						}
					}
				}
			}				
		}
		return Result;
	}
}
/******************************************************************************/
function HideAllLayers(ExceptedLayerIndex)
{
	//parent.frames.leer.document.forms['debug'].input.value += "\n HideAllLayers ExceptedLayerIndex \n = " + ExceptedLayerIndex;
	if (Menu && Menu != "" && PageLoaded)	
	{	
		if (ExceptedLayerIndex > -1) 
		{	
			ActiveItem = Menu.GetLayerName(ExceptedLayerIndex);
		}
		else 
		{
			ActiveItem 		= "";
			ActiveSubItem = "";
		}
		
		for (var i = 0; i < Menu.Layers.length; i++)	
		{		
			if (ExceptedLayerIndex != i)
			{	
				SetLayerVisibility(Menu.GetLayerName(i), ObjHidden);
				
				for (var j = 0; j < Menu.Layers[i].SubLayers.length; j++)	
				{			
					if (Menu.GetSubLayerName(i, j) != ActiveSubItem)	
						SetLayerVisibility(Menu.GetSubLayerName(i, j), ObjHidden);
				}
			}
		}
	}
}
/******************************************************************************/
function SetLayerVisibility(ObjectName, ObjectVisibility)
{	
	if (Menu && Menu != "" && PageLoaded)	
	{
		var Layer 			= (document.all)? "parent.frames.inhalt.document.all":"parent.frames.inhalt.document.layers";
		var css 				= (document.all)? ".style":"";
		eval(Layer+"."+ObjectName+css).visibility = ObjectVisibility;

	}
}
/******************************************************************************/
function CaptureClientXY(Event1)
{	
	xPos =(document.layers)? Event1.pageX:window.event.clientX;
	yPos =(document.layers)? Event1.pageY:window.event.clientY;

	if (ActiveItem && ActiveItem != "")
	{
		HideAllLayers(GetSelectedLayersIndex()); //macht das ganze sensibler
	}
}
/******************************************************************************/
function ChangeImageMode(name, mode, layername)
{
	if (document.all)
	{
		document[name].src = eval(name + mode).src;
	}
	else if (document.layers)
	{
		document.layers[layername].document.images[name].src = eval(name + mode).src;
	}
}
/******************************************************************************/