// Berliner Rundfunk HauptNavigation
// theCo.de AG fredhaas 02.2003

var agent = navigator.userAgent.toLowerCase();
var ie = (agent.indexOf('msie')!=-1)? true : false;
var ie4 = (!document.getElementById && document.all && ie)? true : false;
var ie5 = (agent.indexOf('msie 5.0')!=-1)? true : false;
var nopera = ((agent.indexOf('opera 6')!=-1) || (agent.indexOf('opera 5')!=-1))? true : false;
var mac = (agent.indexOf('mac')!=-1)? true : false;
var moz =  (agent.indexOf('gecko')!=-1)&&!(agent.indexOf('netscape')!=-1)? true : false;
var moznet = (agent.indexOf('gecko')!=-1)? true : false;

var levelOneNormal  = "#5978B8";  // mouseout level 1
var levelOneHover   = "#39548B";  // mouseover level 1
var levelTwoNormal  = "#FFE9A5";  // mouseout level 2
var levelTwoHover   = "#FDC625";  // mouseover level 2
var whiteText       = "#FFFFFF";  // textfarbe mouseout level 2 des aufgeklappten pagetopic
var level3selected  = "BRFLevel3Selected";
var topic = null;
var subtopic = null;
var homepage = null;
var startseite = null;
var cmsMode = false;   // im cmsModus (true) soll die Navigation nicht funktionieren
var lastSecondMenu = null;
var lastFirstMenu = null;
var lastVisSecondMenu = null;

// hauptmenupunkte level 1
// following line is now dynamicly rendered from BRFStandardWrapper ;)
// var menuItems = new Array("programm","musik","service","sonstiges","mein_berlin");

var leaveFirstLevelTimeOut = null;        
var leaveFirstLevelTimeOutValue = 500;    // resetMenu(): level 2 verstecken
var leaveSecondLevelTimeOut = null;        
var leaveSecondLevelTimeOutValue = 500;    // sichtbares level 3 verstecken
var leaveThirdLevelTimeOut = null;        
var leaveThirdLevelTimeOutValue = 500;    // alle level 3 verstecken
var setLevelOneColorTimeOut = null;       
var setLevelOneColorTimeOutValue = 150;   // Level 1 mouseout color
var menuWidth = 130;                      // breite level 1
var levelTwoHorzSpace;

var imgArrowNormal = new Image();     imgArrowNormal.src = "/brfimg/arrow_n.gif";        // level 1 pfeilbild (hell)
var imgArrowHover = new Image();      imgArrowHover.src = "/brfimg/arrow_h.gif";
var subimgArrowNormal = new Image();  subimgArrowNormal.src = "/brfimg/subarrow_n.gif";  // level 2 pfeilbild (dunkel)
var subimgArrowHover = new Image();   subimgArrowHover.src = "/brfimg/subarrow_h.gif";

(moznet)? levelTwoHorzSpace = 10 : levelTwoHorzSpace = 5;   // horizontaler Abstand Level 1 -> Level 2


// onLoad
function initNavigation(pageTopic,pageSubTopic) {
  if(cmsMode) return;  
  // standort
  if((pageTopic != null) && (pageTopic != "") && (pageTopic != startseite) && (pageTopic != "suchergebnisse"))
    topic = pageTopic;
  else topic = null;   
  if((pageSubTopic != null) && (pageSubTopic != "") && (pageSubTopic != startseite) && (pageTopic != "suchergebnisse"))
    subtopic = pageSubTopic +"Second";
  else subtopic = null;
  if((pageTopic == startseite) || (pageTopic == 'suchergebnisse')) homepage = 1;  
  window.setTimeout('resetMenu()',100);
}
 

// level 1 mouseover
function enterFirstLevel(a) {
  if(cmsMode) return;  
  resetMenu();
  resetThirdLevel();
  window.clearTimeout(setLevelOneColorTimeOut);  
  window.clearTimeout(leaveFirstLevelTimeOut);   
   
  if(document.layers || nopera) {
     return;
  } else if(document.getElementById) { 
      changeImage(1,a)  // kleines pfeilbild;
      document.getElementById(a).style.background = levelOneHover; // mouseover color
      if(topic || homepage) showLevelTwo(a);  // submenu öffnen      
  }
}

// level 1 mouseout
function leaveFirstLevel(a) {
  if(cmsMode) return;  
  setLevelOneColorTimeOut = setTimeout('setLevelOneColor(\"'+a+'\")',setLevelOneColorTimeOutValue);  // 1.Level mouseout color  
  leaveFirstLevelTimeOut = setTimeout('resetMenu()',leaveFirstLevelTimeOutValue);
  lastFirstMenu = a;
  
  if(document.layers || nopera) {
     return;
  } else if(document.getElementById) {      
    if(topic) colorFirstLevelPageTopic(); // PageTopic einfärben  
  }
}      


// level 2 mouseover
function enterSecondLevel(a) { 
  if(cmsMode) return;  
  window.clearTimeout(setLevelOneColorTimeOut);
  window.clearTimeout(leaveFirstLevelTimeOut);  
      
  if(document.getElementById) {      
    // alle level 2 verstecken wenn maus über pagetopic-level 2 fährt
    if((a.slice(0,a.length-1)) == topic)
      resetMenu();    
    document.getElementById(a).style.background = levelTwoHover; // background color mouseover  
  }
}


// level 2 mouseout
function leaveSecondLevel(a) {
  if(cmsMode) return;  
  window.clearTimeout(leaveFirstLevelTimeOut);     
  leaveFirstLevelTimeOut = setTimeout('resetMenu()',leaveFirstLevelTimeOutValue);    
  // aufgeklappter pagetopic level 2 
  if(document.getElementById) {      
    lastSecondMenu = a.slice(0,a.length-1)+'Sub';      
    document.getElementById(a).style.background = levelTwoNormal; // background color mouseout  
  }
}


// level 2 mouseover des sichtbaren submenus
function enterVisSecondLevel(a) { 
  if(cmsMode) return;  
  if(nopera) return;
  resetThirdLevel();  
  window.clearTimeout(setLevelOneColorTimeOut);
  window.clearTimeout(leaveFirstLevelTimeOut);   
  window.clearTimeout(leaveSecondLevelTimeOut);   
  window.clearTimeout(leaveThirdLevelTimeOut); 
  lastVisSecondMenu = a;  // soll hiliten wenn level 3 betreten wird    
  
  if(document.getElementById) {          
    document.getElementById(a).style.background = levelTwoHover; // background color mouseover  
    if(topic) colorFirstLevelPageTopic(); // pageTopic einfärben        
    if(lastSecondMenu!=null) {    // ersetzt träges resetMenu();
      document.getElementById(lastSecondMenu).style.visibility = "hidden"; // eben verlassenes menu verstecken  
      document.getElementById(lastSecondMenu.slice(0,lastSecondMenu.length-3)).style.background = levelOneNormal; // level 1 des eben verlassenes menu einfärben  
      changeImage(0,lastSecondMenu.slice(0,lastSecondMenu.length-3));     
    }
    
    // level 3 menu zeigen
    //alert(a+"Div");
    if(document.getElementById(a+'Div') != undefined) {
      changeImage(1,a,1); // 3.argument steht fuer level 2 bild (dunkel)
      showLevelThree(a+'Div'); 
    }  
  }
}


// level 2 mouseout des sichtbaren submenus
function leaveVisSecondLevel(a) { 
  if(cmsMode) return;  
  if(nopera) return;
  window.clearTimeout(leaveFirstLevelTimeOut);     
  leaveFirstLevelTimeOut = setTimeout('resetMenu()',leaveFirstLevelTimeOutValue);   
     
  if(document.getElementById) {                 
    document.getElementById(a).style.background = levelTwoNormal; // background color mouseout      
    if(subtopic) document.getElementById(subtopic+'Sub').style.background = levelTwoHover; // background color gewählter unterpunkt
    if(lastFirstMenu!=null) {    // ersetzt träges resetMenu();
      document.getElementById(lastFirstMenu+'Sub').style.visibility = "hidden"; // eben verlassenes menu verstecken  
      document.getElementById(lastFirstMenu).style.background = levelOneNormal; // level 1 des eben verlassenes menu einfärben  
      changeImage(0,lastFirstMenu);     
    }
    
    // level 3 menu verstecken
    if(document.getElementById(a+'Div') != undefined) {
      leaveSecondLevelTimeOut = setTimeout('hideLevelThree(\"'+a+'\")',leaveSecondLevelTimeOutValue);            
    }             
  }
}  
  
  
// mouseover level 3 menu
function enterThirdLevel(a) { 
  if(cmsMode) return;  
  window.clearTimeout(leaveSecondLevelTimeOut);   
  window.clearTimeout(leaveThirdLevelTimeOut);    
  if(document.getElementById) {      
    if(lastVisSecondMenu != null)
      document.getElementById(lastVisSecondMenu).style.background = levelTwoHover;  // level 2 von level 3 hiliten
    document.getElementById(a).style.background = levelTwoHover;  // level 3
  }
}

// mouseout level 3 menu
function leaveThirdLevel(a) {
  if(cmsMode) return;  
  window.clearTimeout(leaveSecondLevelTimeOut); 
  leaveThirdLevelTimeOut = setTimeout('resetThirdLevel()',leaveThirdLevelTimeOutValue);     
  if(document.getElementById) {   
    if((lastVisSecondMenu != null) && (lastVisSecondMenu.slice(0,lastVisSecondMenu.length-3) != subtopic)) {
      document.getElementById(lastVisSecondMenu).style.background = levelTwoNormal;  // level 2 von level 3 de-hiliten wenn != pagesubtopic
    }  
    if(document.getElementById(a).className == level3selected)
      document.getElementById(a).style.background = levelTwoHover;  // pagetopic level 3    
    else
      document.getElementById(a).style.background = levelTwoNormal;
  }
}
  

// level 2 menu zeigen
function showLevelTwo(a) {
  if(a == topic) return;     
  if(document.getElementById) {      
    document.getElementById(a+'Sub').style.left = getMenuLeft(a)+menuWidth+levelTwoHorzSpace;
    document.getElementById(a+'Sub').style.top = getMenuTop(a);  
    document.getElementById(a+'Sub').style.visibility = "visible";
  }
} 
  
// level 3 menu zeigen
function showLevelThree(a) {
  if(nopera) return;    
  if(document.getElementById) {      
    document.getElementById(a).style.left = getMenuLeft(a.slice(0,a.length-3))+menuWidth+levelTwoHorzSpace;
    document.getElementById(a).style.top = getMenuTop(a.slice(0,a.length-3),1);  // zweites argument wegen naming in getMenuTop()
    document.getElementById(a).style.visibility = "visible";
  }
}

// level 3 menu verstecken
function hideLevelThree(a) {
  if(nopera) return;    
  if(document.getElementById) {      
    changeImage(0,a,1);  // 3.argument steht fuer level 2 bild (dunkel)       
    document.getElementById(a).style.background = levelTwoNormal;    // 2.Level mouseout color
    document.getElementById(a+'Div').style.visibility = "hidden";
  }
}

  
// level 2 verstecken
function resetMenu() {
  if(document.layers || nopera) return;  
    
  for(var i=0; i<menuItems.length; i++) {	   
    if(document.getElementById) {		
      changeImage(0,menuItems[i]);   // kleine pfeile verstecken      
      if(menuItems[i]!=topic) {
        // 2.level verstecken
        document.getElementById(menuItems[i]+'Sub').style.visibility = "hidden";      
        // 1.Level mouseout color   
        document.getElementById(menuItems[i]).style.background = levelOneNormal;
      }
      if(topic) colorFirstLevelPageTopic();
    }
  }        
} 

// level 3 verstecken
function resetThirdLevel() {
  if(document.layers || nopera || ie4) return;      
  for(var i=0; i<subMenuItems.length; i++) {	   //alert(subMenuItems[i]+'SecondSubDiv');
    if(document.getElementById(subMenuItems[i]+'SubDiv') != undefined) {		         
      document.getElementById(subMenuItems[i]+'SubDiv').style.visibility = "hidden";
      changeImage(0,subMenuItems[i]+'Sub',1);
    }
  }        
} 




// Hilfsfunktionen
/////////////////////////////////////////////////

// 1.Level mouseout color
function setLevelOneColor(a) {   
  if(document.getElementById) {
    changeImage(0,a);
    document.getElementById(a).style.background = levelOneNormal;  // mouseout color
    if(topic) colorFirstLevelPageTopic(); // pageTopic einfärben 
  }
}

// 2.Level mouseout color
function setLevelTwoColor(a) {   //alert(a);
  if(document.getElementById) {
    //changeImage(0,a);
    document.getElementById(a).style.background = levelTwoNormal;  // mouseout color
  }
}

// pageTopic einfärben
function colorFirstLevelPageTopic() {
  document.getElementById(topic).style.background = levelOneHover;   
}  
  
// kleinen pfeil zeigen/verstecken
function changeImage(v,a) {	  //alert(v);
  if(a == topic) return;
  if(document.layers || nopera) return;
  var pic = document.images[a];
  if(pic == undefined) return;
  if(!changeImage.arguments[2])
    (v)? pic.src = imgArrowHover.src : pic.src = imgArrowNormal.src;  // heller pfeil level 1 
  else
    (v)? pic.src = subimgArrowHover.src : pic.src = subimgArrowNormal.src;  // dunkler pfeil level 2
}  


// liefert höhe des browserfensters
function getWindowHeight() {
  if(document.getElementById) {    
    var w;
    if(document.body.clientHeight) w = document.body.clientHeight;    
    else if(window.innerHeight) w = window.innerHeight;
    return w;
  }
} 

// position von links
function getMenuLeft(n) {
  var myLeft;    
  if(document.layers) {
    return;                
  } else {    
    if(document.getElementById) {
      var l = document.getElementById(n).offsetLeft;   
      var p = document.getElementById(n).offsetParent;
    } else if(document.all) {
      var l = document.all[n].offsetLeft;
      var p = document.all[n].offsetParent;      
    }
    while (p) {
      l+=p.offsetLeft;
      p=p.offsetParent;
    }
    myLeft = l; 
  }     
  return myLeft;
}


// position von oben
function getMenuTop(n) { //alert(n);
  var myTop;    
  if(document.layers) {
    return;                
  } else {    
    if(document.getElementById) {
      var t = document.getElementById(n).offsetTop; 
      var p = document.getElementById(n).offsetParent;
      if(mac && ie) {  t=0; }
    } else if(document.all) {
      var t = document.all[n].offsetTop;
      var p = document.all[n].offsetParent;      
    }
    while (p) {
      t+=p.offsetTop;
      p=p.offsetParent;
    }
    myTop = t; 
  }     

  if(!getMenuTop.arguments[1]) var naming = 'Sub';    // level 2 menues
  else var naming = 'Div';  // level 3 menues
   
  // menu wird nach oben versetzt wenn browserfenster zu niedrig ist
  if(document.body && !moznet) { 	// explorer, opera 
    if((myTop + document.getElementById(n+naming).offsetHeight - document.body.scrollTop) > getWindowHeight())
      myTop = getWindowHeight() - document.getElementById(n+naming).offsetHeight  + document.body.scrollTop -5;
  } else if(moznet) {	//alert('m');// netscape 6, mozilla
    if((myTop + document.getElementById(n+naming).offsetHeight - window.pageYOffset) > (getWindowHeight()-16))
      myTop = getWindowHeight() - document.getElementById(n+naming).offsetHeight + window.pageYOffset - 15;
  } 
  return myTop;
}

// liefert objekthöhe
function getHeight(n) {
  var myHeight;    
  if(document.layers) {
    return; // document[n].clip.height;                
  } else {    
    if(document.getElementById) {
      var myHeight = document.getElementById(n).offsetHeight;
    } else if(document.all) {
      var myHeight = document.all[n].offsetHeight;    
    }
  }      
  return myHeight;
}


