// Generierungsdatum:  
// Globale Variablen /Inits für Menü
  var aktivMenName=0, aktivMenNr=0, 
  debug=0, // Debug-Anzeige in der Statuszeile
  ev_debug=0, // MouseEvent-Alerts alerts im Code
  dynLeft=97, // linke Koordinate, aus Menü-Grafik (Menüstamm, Grafik-Leiste) ermittelt
  dynTop=50, // Top-Koordinate des Menüstamms
  menuLeft=0, menuRight=0, menuBottom=0, menuTop=102, menuHeight=0,// Koordinaten der Menüs  
  leftKorrektur=-1, // Korrektur linke Position der Menüs 
  leftKorrekturUnternehmen=-18,
  topKorrektur=0, // Korrektur linke Position der Menüs
  mouseX=0, mouseY=0, //  via Event-Handlicg ermittelte Mauskoordinaten
  outerSpace=10, //  "Rahmen" der Menüs, damit bei Mouseout nicht sofort der LAyer wegploppt
  menuOutDelay=200, // Verzögerung bei Mouseout, noch nicht implementiert
  menuDelayTimer, // Timer-Objekt
  rubrik_id; // setzt den jeweiligen Reiter auf aktiv  
  Menues = new Array ("fahrplan","tickets","aktuelles","freizeit","service","unternehmen"); // Array für  Menü-Namen (IDs)
  /*Browsercheck object*/
  this.agent=navigator.userAgent.toLowerCase();
  this.ie5xMac= this.agent.indexOf("mac")>-1 && this.agent.indexOf("msie")>-1 && !window.opera;
  
function showMenu( menNr, omoObj)
{     
//eintragName is out of use --> Dummy Attribut 
  if (!getObj(Menues[menNr]))return;  // abbrechen, falls menu noch nicht geladen
  if ( Menues[menNr] != aktivMenName){ hideMenu(); };  // offenes Menü schliessen falls vorhanden
  // erst JETZT menName zusammensetzten, da hideMenu mit globaler Variable arbeitet 
  menName=Menues[menNr]; // Menü-Namen aus Array erstellen
  imgName=menName+"Img"; // Bildnamen für Grafik-Rollover erstellen
  overImg(imgName, menNr, omoObj); // Mouseover Grafik
  menuObj = getObj(menName); // Menü-Objekt holen
  dynLeft = getCoords(omoObj).posX ; 
  dynTop  =  59; //macht mucken unter Netscape 6.2, dewwegen statisch: getCoords(omoObj).posY ; 
  barHeight = getWH(omoObj).objHeight;
  barWidth = getWH(omoObj).objHeight;
  
  // IE5Mac setzt die Menü-Layer auf volle Breite, deshalb feste Breite mit Pixeln 
  if (ie5xMac) menuObj.style.width = "200px";  

  // Koordinaten und Maße der Menülayer für event-Mouseout auslesen und berechnen
  menuLeft = dynLeft; // Variable zuordnen, für volldynamischen Koordinatenabgriff (noch nicht implementiert) 
  menuWidth = parseInt(getWH(menName).objWidth); // Breite
  menuHeight =  parseInt(getWH(menName).objHeight); //Höhe
  menuRight = parseInt(menuLeft + menuWidth); // rechter Rand
  menuTop = 102  // parseInt(dynTop + barHeight);  rechter Rand
  menuBottom = parseInt(menuTop + menuHeight) ; // unterer Rand

  if ( menuRight > getWinWidth()){ //  angepasste Anordnung des äusserst rechten Menülayers 
    menuLeft = parseInt( menuLeft - ( menuRight - getWinWidth() ) );
    getElementsByClassName('menuTopBorder')[menNr].style.textAlign = "right";
  }
  menuObj.style.left = parseInt( menuLeft +  leftKorrektur)   ; // Menü-Layer links ausrichten
  menuObj.style.top = menuTop; // parseInt(menuTop + topKorrektur); statisch- funktioniert im IE5-Mac nicht
  menuObj.style.visibility = "inherit"; // Menü sichtbar  
  aktivMenName=menName; // Aktives Menü setzen
  aktivMenNr=menNr;  
}

function hideMenu (menName, imgNr, omoObj)
{
//if (!aktivMenName || isNaN(aktivMenNr) ){ if(debug){ alert("F E H L E R !!! globVar fehlt \naktivMenName: " + aktivMenName + " \aktivMenNr: " + aktivMenNr) ;   return  }}
  imgName=aktivMenName+"Img"; 
  if(aktivMenName && aktivMenName != null){
   getObj(aktivMenName).style.visibility = "hidden";
  }
  outImg(imgName,aktivMenNr, omoObj );
  aktivMenName=0;
  aktivMenNr=0 ;
  window.setTimeout("setDefaultNav()", 500) ;

} 

function delayedHideMenu ()
{
  hideMenu();
  //window.setTimeout("setDefaultNav()", 300) ;
  // der Timeout macht noch große Probleme, das sich die Event dann zeitlich überlappen
  //menuDelayTimer= window.setTimeout("hideMenu()", menuOutDelay);
}
function getCoords(obj)
{
  if (document.layers){
    this.posX = obj.x;
    this.posY = obj.y;
  }
  else{// das hier sollte nach DOM funktionieren, Mozilla zeigt aber nur "auto" an, wenn keine festen Koordinaten definiert
   //this.posY = document.defaultView.getComputedStyle(obj,null).getPropertyValue("top")
   // posY = document.defaultView.getComputedStyle(obj,null).getPropertyValue("left ")
   // Das hier funktioniert, soweit ich das überblicken kann auf allen gängigen Plattformen:
   this.posX = getAbsLeft(obj); 
   this.posY = getAbsTop(obj);
  }
  return this;   
}
// Position rekursiv ermitteln
function getAbsLeft(obj)
{
 return (obj.offsetParent)? obj.offsetLeft+getAbsLeft(obj.offsetParent) : obj.offsetLeft ;
}  
function getAbsTop(obj)
{
 return (obj.offsetParent)? obj.offsetTop+getAbsTop(obj.offsetParent) : obj.offsetTop;
}

// Höhe und Breite des Objekts ermitteln
function getWinWidth()
{
  if(document.body.clientWidth){
    return document.body.clientWidth;
  } 
  if(window.innerWidth){
    return window.innerWidth;
  }
  else{return false}
}

function getWH(wObj)
{
  if (typeof wObj != "object" ){
    wObj = getObj(wObj)
  }
  this.objWidth= wObj.offsetWidth;
  this.objHeight=wObj.offsetHeight;
  return this;   
}
function getObj( objId )
{
  if (document.getElementById )  this.objElem = document.getElementById(objId);
  if (document.all && !document.getElementById )  this.objElem = document.getElementById(objId);
  if (document.layers )  this.objElem = document[objId];
  return objElem;
}

function getElementsByClassName(class_name)
{
  var all_obj, ret_obj=new Array(), j=0;
  if (document.all) all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)
         all_obj=document.getElementsByTagName("*"); // eine Zeile!
  for(i=0;i<all_obj.length;i++){
    if(all_obj[i].className==class_name){
      ret_obj[j]=all_obj[i];
      j++;
    }
  }
  return ret_obj;
}


function overImg(swapImgName, swapImgNr, omoObj)
{
  if (document.images[swapImgName]){ 
    document.images[swapImgName].src = nav_over[swapImgNr].src;
  }
 // showNavLines(swapImgNr); 
}
function outImg(swapImgName, swapImgNr, omoObj)
{
  if (document.images[swapImgName]){
    document.images[swapImgName].src = nav_out[swapImgNr].src;
  }
 // hideNavLines(swapImgNr); 
}
function showNavLines(swapImgNr)
{  
  navLineL = "navLine"+swapImgNr;
  navLineR = "navLine" + parseInt(swapImgNr+1);
  if (!document.layers) {
    document.images[navLineR].src = navLine_over[2].src; 
    if (swapImgNr == 0) {
        document.images[navLineL].src = navLine_over[0].src
    } 
    else{
      document.images[navLineL].src = navLine_over[2].src;
    }
  }
}

function hideNavLines(swapImgNr) 
{  
  navLineL = "navLine"+swapImgNr;
  navLineR = "navLine" + parseInt(swapImgNr+1);
  if ( !document.layers) // vorerst noch nicht für N4... 
  {              
    document.images[navLineL].src = navLine_over[1].src;
    document.images[navLineR].src = navLine_over[1].src;
    if (swapImgNr == 0 ){ 
        document.images[navLineL].src = navLine_over[0].src;
    }  
  }
}

// Rollover- Grafiken laden und referenzieren
// Anzahl der Mouseover-Bilder in der ersten Ebene der Navigation
imgAnzNav= 5;
var nav_over = new Array();
for (var i=0; i <= imgAnzNav; i++) {
  nav_over[i] = new Image(); 
  }
 
nav_over[0].src = "/px/navigation/fahrplaene-aktiv.gif";
nav_over[1].src = "/px/navigation/tickets-aktiv.gif";
nav_over[2].src = "/px/navigation/aktuelles-aktiv.gif";
nav_over[3].src = "/px/navigation/freizeit-aktiv.gif";
nav_over[4].src = "/px/navigation/service-aktiv.gif";
nav_over[5].src = "/px/navigation/unternehmen-aktiv.gif";
var nav_out = new Array();
for (var i=0; i <= imgAnzNav; i++) {
  nav_out[i] = new Image(); 
}
 
nav_out[0].src = "/px/navigation/fahrplaene-passiv.gif";
nav_out[1].src = "/px/navigation/tickets-passiv.gif";
nav_out[2].src = "/px/navigation/aktuelles-passiv.gif";
nav_out[3].src = "/px/navigation/freizeit-passiv.gif";
nav_out[4].src = "/px/navigation/service-passiv.gif";
nav_out[5].src = "/px/navigation/unternehmen-passiv.gif";
imgAnzMeta= 3;
var meta_over = new Array();
for (var i=0; i <= imgAnzMeta; i++) {
  meta_over[i] = new Image(); 
  }
 
meta_over[0].src = "/px/navigation/kontakt-aktiv.gif";
meta_over[1].src = "/px/navigation/newsletter-aktiv.gif";
meta_over[2].src = "/px/navigation/jobs-aktiv.gif";
meta_over[3].src = "/px/navigation/index-aktiv.gif";
var meta_out = new Array();
for (var i=0; i <= imgAnzMeta; i++) {
  meta_out[i] = new Image(); 
}
 
meta_out[0].src = "/px/navigation/kontakt-passiv.gif";
meta_out[1].src = "/px/navigation/newsletter-passiv.gif";
meta_out[2].src = "/px/navigation/jobs-passiv.gif";
meta_out[3].src = "/px/navigation/index-passiv.gif";

navLineAnz=2;
var navLine_out = new Array();
for (var i=0; i <= navLineAnz; i++) {
  navLine_out[i] = new Image(); 
}
navLine_out[0].src = "/px/navigation/trans.gif";
navLine_out[1].src = "/px/navigation/doli.gif";
navLine_out[2].src = "/px/navigation/doli.gif";
 
var navLine_over = new Array();
for (var i=0; i <= navLineAnz; i++) {
  navLine_over[i] = new Image(); 
}
navLine_over[0].src = "/px/navigation/trans.gif";
navLine_over[1].src = "/px/navigation/doli.gif";
navLine_over[2].src = "/px/navigation/navilinie-aktiv.gif";
 
function overImgMeta (imgName,imgNr) {
  document.images[imgName].src = meta_over[imgNr].src;
}  
function outImgMeta (imgName,imgNr){
  document.images[imgName].src = meta_out[imgNr].src;
}  

function simpleOver( Obj, ImgSrc ){
  sOverImg = new Image();
  sOverImg.src = ImgSrc;
  Obj.src = sOverImg.src;
 }
function simpleOut( Obj, ImgSrc ){
  sOutImg = new Image();
  sOutImg.src = ImgSrc;
  Obj.src = sOutImg.src;
 }

// Mauskoordinaten ermitteln und Bedingungen für menuHide 
function getMousePos(moveEvent)
{
  mouseX = (document.layers || (document.getElementById && !document.all)) ? moveEvent.pageX : document.body.scrollLeft + event.clientX;
  mouseY = (document.layers || (document.getElementById && !document.all)) ? moveEvent.pageY : document.body.scrollTop + event.clientY;
  
  if  (aktivMenName ) {
      // Mausposition oberhalb Grafik und links von Grafik
    if ( mouseY < dynTop ) { 
      if (ev_debug){ alert(1); alert ("mouseY < dynTop \n mouseY: " + mouseY + "\n dynTop: " + dynTop); } 
      delayedHideMenu()  
    }
    
    if (mouseX < dynLeft && mouseY < menuTop) { 
      if (ev_debug){ alert (2); alert("mouseX \< dynLeft \&\& mouseY \< menuTop"); }
      delayedHideMenu();
    }
    // unterhalb vom Menü
    if ( mouseY > parseInt(menuBottom +outerSpace) ) { 
      if (ev_debug){ alert(3); alert("mouseY \> menuBottom\n mouseY: " + mouseY + "\n menuBottom: "+ menuBottom); }      
      delayedHideMenu()
    }
    // und links davon
    if ( mouseX < parseInt(menuLeft-outerSpace) ) {
      if (ev_debug){ alert(4); alert( "mouseX: " + mouseX + "\n calcMenLeft: " + parseInt(menuLeft-outerSpace))}
      delayedHideMenu()
    }
    
    // Rechts vom Menü 
    if  ( mouseX > parseInt(menuRight +outerSpace) && mouseY > menuTop && ( menuRight >  menuWidth) ) { 
      if (ev_debug){ alert(5);alert("mouseX \> menuRight \&\& mouseY \> menuTop \n mouseX:" + mouseX + " menuRight: " + menuRight + "\nmouseY: " + mouseY + "menuTop: " + menuTop )}
      delayedHideMenu()
    }
  }
  if(debug)window.status= aktivMenName + " aktivMenNr:" + aktivMenNr + " dynLeft:" + dynLeft + " dynTop:" + dynTop + " msY:" + mouseY + " msX:" + mouseX + " mLeft:" + menuLeft + " mRight:" + menuRight + " mBottom:" + menuBottom + " mTop:" + menuTop + " mHeight:" + menuHeight ; 
}

// Event-Listener initialisieren:
if(document.layers){ document.captureEvents(Event.MOUSEMOVE)} //Netscape 4 Eventhandling initialisieren
if(document.addEventListener){document.addEventListener("mousemove", getMousePos, false);  }// Eventhandler starten: DOM-browser
if(document.attachEvent && !document.addEventListener){document.attachEvent("onmousemove", getMousePos)}; // Eventhandler starten: MSIE ohne Opera
if(!document.addEventListener && !document.attachEvent ){ document.onmousemove=getMousePos;} // Eventhandler starten: non-DOM && non-MSIE

// aktive Grafik in Menu-Bar setzen 
function setDefaultNav (){
  if (isFinite(rubrik_id) && rubrik_id < Menues.length ){
    imgName=Menues[rubrik_id]+"Img";
    overImg(imgName, rubrik_id);
  }
}

window.setTimeout("setDefaultNav()", 500) ;

// Popups

function popup(url,optionen, popupName){
  if (popupName == "newWin") popupName =  popupName+Math.round( Math.pow( Math.random(), -10) );
  popupName = window.open(url,popupName,optionen);
  if (popupName)
  {
    if (popupName.focus)
    {
      popupName.focus();
    }
  }
  return false; 
}
function imgPopup(url, name) {
  popup(url, 'width=355,height=550,toolbar=0,menubar=0,resizable=1,scrollbars=no', name );
  return false;
}
function pdfPopup(url, name) {
  popup(url, 'width=565,height=750,toolbar=0,menubar=0,resizable=1,scrollbars=no', name );
  return false;
}
function ticketPopup(url, name) {
  popup(url, 'width=600,height=450,toolbar=0,menubar=0,resizable=1,scrollbars=no', name );
  return false;
}
function ewmsPopup(url, name) {
  popup(url, 'width=600,height=450,toolbar=0,menubar=0,resizable=1,scrollbars=no', name );
  return false;
}