//Variablen fuer die Browserabfrage
var isDOM = (document.getElementById ? true : false); 
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);   //alle 4er-NetscapeVersionen; Netscape 4.08 kennt nur layer
var isNS6 = (navigator.userAgent.indexOf("Netscape6")!=-1 ? true : false);

var parentLayer = null;  //umschliessender Layer
var subLayer = null;

var activeImg = new Array();   
var i = 0;
var anzahlArrays = 0;


//Rueckgabe der Browserspezifischen Daten
function getRef(id) 
{
 if (isDOM) return document.getElementById(id);
 if (isIE4) return document.all[id];
 if (isNS4) return document.layers[id];
}

//Browserbestimmung
function getSty(id) 
{
 return (isNS4 ? getRef(id) : getRef(id).style);
} 

//Resize beim Netscape4
var popOldWidth = window.innerWidth;
 
function nsResize()
{
 if (isNS4)
 {
  if (popOldWidth != window.innerWidth) location.reload()
 }
}

//Vorabladen der Bilder des Menues
var images = new Array();


function loadImg(imgName)
{
 var anzahlImgs = images.lenght;
 images[anzahlImgs] = new Image();
 images[anzahlImgs].src = imgName;
}


//Bild tauschen(innerhalb eines layers)
//geht bis jetzt nur mit Bildern im parentLayer
function changeImg(layerId, imgId, newStatus, target)
{ 
 var Layer = menu[target][0].ref;

 if(isDOM || isIE4)
 {  
  img1 = new Image();
  if(newStatus=='act')
  {
   img1.src = document.images[imgId].src.replace(/pas/,"act");
  }
  else if(newStatus=='pas')
  {
   if(target!=0)
   {
    if (Layer.visibility == 'visible') img1.src = document.images[imgId].src.replace(/act/,"act");
	else img1.src = document.images[imgId].src.replace(/act/,"pas");
   }
   else
   { 
    img1.src = document.images[imgId].src.replace(/act/,"pas");
   } 
  }
   
  document.images[imgId].src = img1.src;
 
 } 
 else if(isNS4)    //Netscape4 
 { 
  img1 = new Image();
  layerId1 = layerId;   
  imgId1 = imgId;
  
  //richtigen parentLayer ermitteln
  //layerId = menu0item1,...
  //zahl = ermittelte menuNummer 
  var uIndex = layerId1.indexOf("u");
  var iIndex = layerId1.indexOf("i");
  var zahl = layerId.substring(uIndex+1,iIndex);
  parentLayer = menu[zahl][0].ref;
 
  if(newStatus=='act')
  {
  img1.src = parentLayer.document.layers[layerId1].document.images[imgId1].src.replace(/pas/,"act");
  }
  else if(newStatus=='pas')
  {
   if(target!=0)
   {
    if (Layer.visibility == 'show') img1.src = parentLayer.document.layers[layerId1].document.images[imgId1].src.replace(/act/,"act");
	else img1.src = parentLayer.document.layers[layerId1].document.images[imgId1].src.replace(/act/,"pas");
   }
   else
   { 
    img1.src = parentLayer.document.layers[layerId1].document.images[imgId1].src.replace(/act/,"pas");
   }
  }
  parentLayer.document.layers[layerId1].document.images[imgId1].src = img1.src;  
  

 } 
 /*
 else
 {
  alert("kein IE4, kein DOM, kein NS4, kein NS6");
 }*/
  return true;
 
}


// alle Images, bei deren mouseOver ein popupMenue aufgeht dh target ist nicht '0' 
function changeActiveImages()
{ 
 for(j=0; j<i; j++)
 {
  changeImg(activeImg[j][0], activeImg[j][1], activeImg[j][2], activeImg[j][3]);
 }
}


var popTimer = 0; 
var litNow = new Array();   // Array fuer die Menuepunkte

function popOver(menuNum, itemNum) 
{
 clearTimeout(popTimer);  //Timeout ignorieren
 hideAllBut(menuNum);
 litNow = getTree(menuNum, itemNum);
 changeCol(litNow, true);
 targetNum = menu[menuNum][itemNum].target;
 if (targetNum > 0) 
 { 
  thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left);
  thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
  with (menu[targetNum][0].ref) 
  {
   left = parseInt(thisX + menu[targetNum][0].x);
   top = parseInt(thisY + menu[targetNum][0].y);
   visibility = 'visible';
  }
 }
}

function popOut(menuNum, itemNum) 
{
 if ((menuNum == 0) && !menu[menuNum][itemNum].target)
 {  
 
  hideAllBut(0);

 }
 else
 { 
  popTimer = setTimeout('hideAllBut(0)', 500);
  
 }
}


//Array-Index ist gleich der Menuenummer. 
//Wert ist entweder null (falls das Menue kein parent ist)
//oder hat die Nummer des Menuespunktes(falls das Menue ein ancestor ist)
function getTree(menuNum, itemNum) 
{
 itemArray = new Array(menu.length);

 while(1) 
 {
  itemArray[menuNum] = itemNum;
  if (menuNum == 0) return itemArray;   // falls oberste Hierarchie erreicht wurde
  itemNum = menu[menuNum][0].parentItem;
  menuNum = menu[menuNum][0].parentMenu;
  }
}

// Funktion fuer Farbaenderungen; true = overColour.
function changeCol(changeArray, isOver) 
{
 for (menuCount = 0; menuCount < changeArray.length; menuCount++) 
 {
  if (changeArray[menuCount]) 
  {
   newCol = isOver ? menu[menuCount][0].overCol : menu[menuCount][0].backCol;  
   with (menu[menuCount][changeArray[menuCount]].ref)    // Aendern der Farbe des Layer-Hintergrundes
   {
    if (isNS4) bgColor = newCol;
    else backgroundColor = newCol;
   }

  }
 }
}

//nicht benoetigte Menues verstecken
function hideAllBut(menuNum) 
{
 var keepMenus = getTree(menuNum, 1);
 for (count = 0; count < menu.length; count++)
 if (!keepMenus[count])
 menu[count][0].ref.visibility = 'hidden';
 changeCol(litNow, false);
 //alert(keepMenus);
 changeActiveImages();
}

 

//Aussehen des Menues:
function Menu(isVert, popInd, x, y, width, overCol, backCol, borderClass, textClass, NS6borderCorX) 
{
this.isVert = isVert;              //True bedeutet vertikales Menue, False bedeuted horizontales
this.popInd = popInd               //Zeichen fuer das Vorhandensein eines Unermenues
this.x = x;                        //x-position des Menues
//Borderpuffer beim Netscape6  
if(isNS6 && NS6borderCorX!=0)
{
 this.x = x+NS6borderCorX;
}
this.y = y;                        //y-position des Menues
this.width = width;                //Breite (bei vert) bzw Hoehe (bei horiz) des Menues
this.overCol = overCol;            //Farbe der Menuepunkte meim MouseOver
this.backCol = backCol;            //Hintergrundfarbe des Menues
this.borderClass = borderClass;    //Farbe des Borders
this.textClass = textClass;        //Farbe des Textes fuer die Menuepunkte
this.parentMenu = null;             
this.parentItem = null;             
this.ref = null;                  
}

function Item(text, href, frame, length, spacing, target) 
{
 this.text = text;
 this.href = href;
 this.frame = frame;
 this.length = length;
 this.spacing = spacing;
 this.target = target;
 this.ref = null;                   
}

//Aufbau des Menues
function loadMenus(nr) 
{  
 createParentMenue(nr);
  
 if (!isDOM && !isIE4 && !isNS4) return;  //falls kein bekannter Browser

 //Beginn der 1. for-Schleife
 for (currMenu = 0; currMenu < menu.length; currMenu++) with (menu[currMenu][0]) 
 {
  var str = '', itemX = 0, itemY = 0;    

  //Beginn der 2. for-Schleife
  for (currItem = 1; currItem < menu[currMenu].length; currItem++) with (menu[currMenu][currItem]) 
  {
   var itemID = 'menu' + currMenu + 'item' + currItem;
   var w = (isVert ? width : length);   //Breite
   var h = (isVert ? length : width);   //Hoehe

   if (isDOM || isIE4)   //DOM-Browser oder IE4
   {//alert("target: "+target);
    str += '<div id="' + itemID + '" style="position: absolute; left: ' + itemX + '; top: ' + itemY + '; width: ' + w + '; height: ' + h + '; visibility: inherit; z-index: 10;';
    if (backCol) str += 'background: ' + backCol + '; ';
    str += '" ';
   }
   if (isNS4)     //Netscape4
   {
    str += '<layer name ="' + itemID +'" left="' + itemX + '" top="' + itemY + '" width="' +  w + '" height="' + h + '" visibility="inherit" z-index="10"';
	if (backCol) str += 'bgcolor="' + backCol + '" ';    
   }
   if (borderClass) str += 'class="' + borderClass + '" ';

   //MouseOver/Out-Funktionalitatet  
   if(text.search(/gif/)!=-1 || text.search(/jpg/)!=-1 || text.search(/jepg/)!=-1 || text.search(/png/)!=-1)   // falls ein bild uebergeben wird 
   { 
   	var IndexLastSlash = text.lastIndexOf("/");
    var IndexLastUnderline = text.lastIndexOf("_");
    var imgName = text.substring(IndexLastSlash+1,IndexLastUnderline);
	
	
	//actImgArray fuellen mit den Images, die ein Untermenue haben
    if(target != 0)   
    {	
	 activeImg[anzahlArrays] = new Array();   //2-dimArray
	 anzahlArrays++;
	 activeImg[i][0] = itemID;
     activeImg[i][1] = imgName;
	 activeImg[i][2] = "pas";
     activeImg[i][3] = target; 
	 i++;
    }

	
	//Die Parameter werden sofort durch die eigentlichen Werte ersetzt (und nicht erst beim eigentlichen MouseOver),
	//da der Funktionsaufruf in einer string-variablen steht bzw die Funktion indirekt aufgerufen wird und
	//somit auch gleich die Ersetzung der Parameter durch die eigentlichen Werte erfolgt! 
    var hk ="'";     //da eine string-variable selbst in hochkommata steht und somit diese nicht als zeichen interpretiert
	
    if (isNS4)     //Netscape4
    {
     str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + '), changeImg(' + hk + itemID + hk + ',' + hk + imgName + hk + ',' + hk + 'act' + hk + ',' + target +')" onMouseOut="popOut(' + currMenu +',' + currItem +'), changeImg(' + hk + itemID + hk + ',' + hk + imgName + hk + ',' + hk + 'pas' + hk +',' + target +')">';
	 str += '<table width="' + (w - 8) + '" border="0" cellspacing="0" cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '"><tr><td align="left" height="' + (h - 7) + '">' + '<a href="' + href + (frame ? '" target="' + frame + '">' : '">') + '<img name="' + imgName + '" src="' + text + '" border="0"></img></a></td>';
	 //alert(str);
	}
    else
    {
	 str += '<table width="' + (w - 8) + '" border="0" cellspacing="0" cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '"><tr><td align="left" height="' + (h - 7) + '">' + '<a href="' + href + (frame ? '" target="' + frame + '">' : '">') + '<img name="' + imgName + '" src="' + text + '" border="0"' + ' onMouseOver="popOver(' + currMenu + ',' + currItem + '), changeImg(' + hk + itemID + hk + ',' + hk + imgName + hk + ',' + hk + 'act' + hk +',' + target +')" onMouseOut="popOut(' + currMenu + ',' + currItem + '), changeImg(' + hk + itemID + hk + ',' + hk + imgName + hk + ',' + hk + 'pas' + hk +',' + target +')"' + '</img></a></td>';
	}
   }
   else  //falls Text uebergeben wird
   {
    str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
    str += '<table width="' + (w - 8) + '" border="0" cellspacing="0" cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '"><tr><td align="left" height="' + (h - 7) + '">' + '<a class="' + textClass + '" href="' + href + '"' + (frame ? ' target="' + frame + '">' : '>') + text + '</a></td>';
   }
   
   if (target > 0) 
   {
    menu[target][0].parentMenu = currMenu;
    menu[target][0].parentItem = currItem;

    if (popInd) str += '<td class="' + textClass + '" align="right">' + popInd + '</td>';
   }
   str += '</tr></table>' + (isNS4 ? '</layer>' : '</div>');   
   if (isVert) itemY += length + spacing;
   else itemX += length + spacing;
  }
  //Ende der 2. for-Schleife

  if (isDOM)    //Layer fuer DOM
  {
   var newDiv = document.createElement('div');
   document.getElementsByTagName('body').item(0).appendChild(newDiv);
   newDiv.innerHTML = str;
   ref = newDiv.style;
   ref.position = 'absolute';
   ref.visibility = 'hidden';
   // >>>> **** inserted by markus körner, informedia 2002-06-06 ****
   if (currMenu > 0) { ref.top = -1000; }
   // <<<<
   //ref.visibility = 'hidden';
   //alert(ref.visibility);
  }

  //umschliessenden Layer erzeugen
  
  if (isIE4)   //Layer fuer IE4
  {
   document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden">' + str + '</div>');
   ref = getSty('menu' + currMenu + 'div');
  }

  if (isNS4)   //Layer fuer Netscape4
  {
   ref = new Layer(0);   
   ref.document.write(str);
   ref.document.close();  
  }

  for (currItem = 1; currItem < menu[currMenu].length; currItem++)
  {
   itemName = 'menu' + currMenu + 'item' + currItem;
   if (isDOM || isIE4) menu[currMenu][currItem].ref = getSty(itemName);
   if (isNS4) menu[currMenu][currItem].ref = ref.document[itemName];
  }

 }
 //Ende der 1. for-Schleife

 with(menu[0][0]) 
 {
  ref.left = x;
  ref.top = y;
  ref.visibility = 'visible';   //Layer fuer die sichtbare Menueleiste 
 }
  
   
 
}


//Menue klappt beim MouseKlick zu
/*if (isNS4) document.captureEvents(Event.CLICK);
document.onclick = clickHandle;

function clickHandle(evt)
{
 if (isNS4) document.routeEvent(evt);
 hideAllBut(0);
}*/


