// (C) Copyright 2001-2004 by Sven Weingartner (webdesign@sveni.com)
// All Rights reserved !!!

/////////////////////////////////////////////////////////////
// hier nix ändern!
// Änderungen ganz unten

// Info: Arraymanipultionen werden nicht mit push(), pop() etc gemacht,
// da einige alte Browser diese Funktionen noch nicht implementiert haben
// also alles per Hand.

// Version:     1.13.00
// last change: 13.03.2004

// 1.13.00   /changed: Opera wird nun korrekt verarbeitet
// 1.12.01   /changed: Navi wieder mit ?, aber nur wenn kein ? in original url vorkommt
// 1.12.00   /add: layerRead aus SDO
// 1.11.02   /fixed: Navi kann nicht ? verwenden, da es sonst zu Probs mit einigen URLs kommt
// 1.11.01   /add: Links in Navi können nun auch Javascript Funktionen sein
// 1.10.07   /fixed: adapted to webcdv2 navi
// 1.10.06   /fixed: some ns4 problems
// 1.10.05   /changed: writeUpdateCD nun mit last modified
// 1.10.04   /fixed: Opera wurde als goodBrowser interpretiert
// 1.10.03   /Farben werden nun alle über Variable definiert
// 1.10.02   /fixed: mac wurde nicht richtig erkannt
// 1.10.01   /fixed: getTitle hatte Probs im IE4
// 1.10.00   +getTitle, +addNaviLine, /writeLink target hinzugefügt
// 1.09.03   /auch für kombatibilitätsmodus cellpadding=3
// 1.09.02   /Submenu sieht nun auch im NS4 schön aus (verwendet nun class statt style)
// 1.09.01   /Bug behoben
// 1.09.00   /komplett überarbeitet
// 1.08.01   +setA, +setI
// 1.07.01   /layerWrite mit Fehlermeldung, wenn Layer nicht definiert
// 1.07.2002 /Bug behoben, wenn Opera als sich selbst identifiziert
// 1.06.2002 +printPage
// 1.05.2002 +writeSubMenuOpera
// 1.04.2002 /kleineren Bug in Navi behoben
// 1.03.2002 +getUrlParam, /push und pop umgeschrieben wg. IE5
// 1.02.2002 +writeUpdateCD
// 1.01.2002 +addSubMenu, /writeSubMenu

var debug=false;              //Debuginfos für SDO Funktionen ausgeben?
var defaultNavi=0;            //wenn nix aktiv
var linkNum=0;                //Anzahl der geschriebenen Links
var aNavi = defaultNavi;      //gerade aktiver Link
var pageText='';              //Textpuffer für Naviagtion
var naviLine='';              //Textpuffer für NaviLine
var naviLineNum=0;            //Anzahl der Ebenen
var subMenu = new Array();    //subMenüs alle hier drinn
var subMenuC = 0;             //anzahl der submenus
var subMenuLastL = 1;         //letztes Level im Submenu
var lastUpdate= '';           //Datum des letzten Update
//folgende Angaben, falls keine anderen Angaben
var updatePerson='Sven Weingartner';  //wer hat die Dateien geändert
var updateEmail='webdesign@sveni.com' //E-Mail dieser Person

//styles
var sFont = 'font-family:Arial, Verdana;';
var webCdPath='http://www.tu-dresden.de/webcd/';
var Path='http://www.tu-dresden.de/wwbwleeg/';
var ie4=ie5=ie6=ns4=ns6=opera=mac=false;
var browserInit=false;

var ncLight   ='#FFF300';
var ncDark    ='#5ABA42';
var ncBLight  ='#8080CD';
var ncBDark   ='#000099';


//sdo Funktionen

function layerWrite(layer,txt) {
  if (ns6||ie6||dom) {document.getElementById(layer).innerHTML=txt;}
  else if (ns4) {var lyr=document.layers[layer].document;lyr.open();lyr.write(txt);lyr.close();}
  else if (ie4||ie5) {document.all[layer].innerHTML=txt;}
}


function layerRead(layer) {
  if (ns6||ie6||dom) {return document.getElementById(layer).innerHTML}
  else if (ie4||ie5) {return document.all[layer].innerHTML}
}

function setStylee(layer,style,val) {
  if (ie6||ns6||opera||dom) {
    if (document.getElementById(layer)) {
      eval('document.getElementById(\"'+layer+'\").style.'+style+'="'+val+'"');
    } else {if (debug){alert('SDO.setStylee: Layer \''+layer+'\' existiert nicht.')}}
  } else if (ie4||ie5) {
    if (document.all[layer]) {
      eval('document.all.'+layer+'.style.setAttribute("'+style+'","'+val+'","false");');
    } else {if (debug){alert('SDO.setStylee: Layer \''+layer+'\' existiert nicht.')}}
  }
}


function setA(wen) {
  setStylee(wen,'borderColor',ncBDark);
  setStylee(wen,'backgroundColor',ncDark);
}

function setI(wen) {
  setStylee(wen,'borderColor',ncBLight);
  setStylee(wen,'backgroundColor',ncLight);
}


// sdo Ende
///////////


//navigation Funktionen

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
MM_preloadImages(Path+"empty.gif",Path+"/n_plus.gif",Path+"n_minus.gif");

function addText(text) {pageText+=text}
function writeNavi() {}
function writeNaviLine() {}

function updatePageDirect() {
  pageText='<table border=0 cellspacing=0 cellpadding=0><tr valign=center>'+pageText+'</tr></table>';
  return (pageText);
}

function updatePage() {
  pageText='<table border=0 cellspacing=0 cellpadding=0><tr valign=center>'+pageText+'</tr></table>';
  layerWrite('navigation',pageText);
}

function writeLink(z,name,url,target) {
  linkNum++;
  if (target) {target=' target="'+target+'"'}
  else {target=''}
  name='&nbsp;'+name+'&nbsp;';
  var pre=(linkNum == 1)? '<td><img src="http://www.tu-dresden.de/wwbwleeg/empty.gif" width=9 height=5 border=0></td>':'<td width=1 bgcolor="#000000"><img src="'+Path+'empty.gif" width=1 height=1></td>';
  if (z) {
    if (aNavi==linkNum) {
      addText(pre+'<td bgColor="'+ncLight+'"><a href="'+url+'" class="navi"'+target+'>'+name+'</a></td>');
    } else {
      addText(pre+'<td onmouseover="bgColor=\''+ncLight+'\'" onmouseout="bgColor=\''+ncDark+'\'"><a href="'+url+'" class="navi"'+target+'>'+name+'</a></td>');
    }
  } else {addText(pre+'<td><span class="navii">'+name+'</span></td>')}
}

//navigation Ende
/////////////////


//submenu Funktionen

function getUrlParam() {
  var subM = document.URL.split("?");
  var paramArray = new Array();
  if (! (subM[1])) {
    subM[1]='[]';
  }
  var i=0;
  var subM2 = subM[1].split(',');
  for (i=0;i<subM2.length;i++) {
    paramArray[i]=(subM2);
  }
  return subM2;
}



//für ältere Seiten
function writeUpdate() {
  document.writeln('<br><br><img src="'+webCdPath+'px/line.gif" width=300 height=1><br>');
  document.writeln('<font face="Arial, Verdana" size=1 color="#FFFFFF"><span class="bottom">last update '+lastUpdate+' by <a href="mailto:webdesign@sveni.com">Sven Weingartner</a></span></font>');
}

//jetzt diese Funktion verwenden...
function writeUpdateCD() {
//  document.writeln('<font face="Arial, Verdana" size=1 color="#FFFFFF"><span class="bottom">last update '+lastUpdate+' by <a href="mailto:'+updateEmail+'" class="navim">'+updatePerson+'</a></span></font>');
  document.writeln('<font face="Arial, Verdana" size=1 color="#FFFFFF"><span class="bottom">last update '+document.lastModified+' by <a href="mailto:'+updateEmail+'" class="navim">'+updatePerson+'</a></span></font>');
}

//fügt submenus den globalen Array hinzu
//markiert hier ob es ein submenü gibt
//ist effizienter, da es so nur 1x gemacht werden muss ;)
function addSubMenu(level,lname,url,target) {
  if (!url) {url = 'none'}
  if (!target) {target=''}
  subMenu[subMenuC]=(level+'::'+lname+'::'+url+'::0::'+target);
  if (level>subMenuLastL) {// wenn aktuelles Menü ein submenü von vorigen, dann dort markieren
    var params=subMenu[subMenuC-1].split('::');
    subMenu[subMenuC-1]=params[0]+'::'+params[1]+'::'+params[2]+'::1::'+params[4];
  }
  subMenuC++;subMenuLastL=level;
}


//v1.00
//gibt Submenü aus
//lids ist ein Array mit den angaben, welches Submenü jeweils ausgefahren ist
function writeSubMenu(lids) {
  var levelnow = 1;
  var levelcount = 0;
  var levelC = new Array();//Array zum Zählen der Ebenen für Ausgabe
  var myTxt='';
  var same=false;
  var width=0;
  var merken=0;
  //String des ParameterArray erzeugen
  var lidsString='';
  //nicht existierende Felder übergehen
  for (i=0;i<lids.length;i++) {if (lids[i]) {lidsString+=lids[i]+','}}
  lidsString=lidsString.substr(0,lidsString.length-1); //letztes Komma löschen
  myTxt+=('<table border=0 cellspacing=0 cellpadding=0>');
  myTxt+=('<tr><td><img src="'+Path+'empty.gif" width=200 height=3 border=0></td></tr>');
  levelC[levelnow]=0;
  for (i=0;i<subMenu.length;i++) {
    var params=subMenu[i].split('::');
    level=params[0];lname=params[1];url=params[2];sub=params[3];target=params[4];
    same=false;
    if (level==levelnow) {levelcount++;levelC[levelnow]++;}
    if (level > levelnow) {                 //submenü angetroffem
      if (levelcount==lids[levelnow-1]) { //öffnen, wenn es mit lids übereinstimmt
        levelnow++;                         //sind nun eine Ebene weiter
        levelcount=1;
        levelC[levelnow]=1;
      }
    }
    if (level < levelnow) {//eine Ebene zurück
      levelnow=level;
      levelC[levelnow]++;
      levelcount=levelC[levelnow];
    }
    if (level==levelnow) {
      if (target=='_advertise') {
        myLevelTxt=('<tr><td style="padding-left:5px;padding-top:1px;padding-bottom:1px;">')
      } else {
        myLevelTxt=('<tr><td bgColor=\''+ncDark+'\' onmouseover="bgColor=\''+ncLight+'\'" onmouseout="bgColor=\''+ncDark+'\'" onClick="%open%"; style="padding-left:5px;padding-top:1px;padding-bottom:1px;">')
      }
      if (levelcount==lids[levelnow-1]) { //öffnen, wenn es mit lids übereinstimmt
        same=true;                          //aktuelles Menü wird ausgefahren
      }
      if (level > 1) {
        width=level*9;
        myLevelTxt+=('<img src="'+Path+'empty.gif" width='+width+' height=9 border=0>');
      }
      if (sub=='1') {
        if (same==true) {    //wenn geöffnet, dann letztes weg push())
          t_length=levelC.length;
          merken=levelC[t_length-1];
          delete levelC[t_length-1];
        }
        myLevelTxt+='<a href="javascript:writeSubMenu([';
        menuParam='[';
        myOpenTxt='';
        for (i2=1;i2<levelnow;i2++) {myOpenTxt+=levelC[i2]+','}
        if (levelC[levelnow]) {myOpenTxt+=levelC[levelnow]+'])'}
        else {myOpenTxt+='])'}
        myLevelTxt+=myOpenTxt+'">';
        if (same==true) {
          levelC[levelC.length-1]=merken;     //Element von oben push() wieder anhängen pop()
          myLevelTxt+=('<img src="'+Path+'n_minus.gif" width=9 height=9 border=0 alt="Ebene einfahren"></a>');
          var t_myLevelTxt=myLevelTxt.replace(/%open%/,'writeSubMenu(['+myOpenTxt+';');
          myLevelTxt=t_myLevelTxt;
        } else {
          myLevelTxt+=('<img src="'+Path+'n_plus.gif" width=9 height=9 border=0 alt="Ebene ausfahren"></a>');
          var t_myLevelTxt=myLevelTxt.replace(/%open%/,'writeSubMenu(['+myOpenTxt+';');
          myLevelTxt=t_myLevelTxt;
//          alert('writeSubMenu(['+myOpenTxt+';');
        }
      } else {//kein Submenu
        myLevelTxt+=('<img src="'+Path+'empty.gif" width=9 height=9 border=0></a>');
        var t_myLevelTxt=myLevelTxt.replace(/%open%/,'');
        myLevelTxt=t_myLevelTxt;
      }
      myTxt+=myLevelTxt;
      width=level*9;  //Zeilen einrücken
      if (level>1) {  //weiß auch grad nicht wieso, klappt aber nur so ;)
        width+=9;
      }
      lname = lname.replace(/<br>/g,'<br><img src="'+Path+'empty.gif" width='+width+' height=9 border=0> ');
      myTxt+='<span class="navi">';
      if (url=='none') {myTxt+=(' '+lname+' </span></td></tr>')}
      else if ((url.substring(0,11)=='javascript:') || (url.indexOf("?") != -1)) { //nicht bei JS links oder wenn schon ? zeichen in url vorkommt
        myTxt+='<a href="'+url+'" class="navi">';
        myTxt+=(' '+lname+'</a></span></td></tr>');
      } else {
        if (target) {myTxt+='<a href="'+url+'" target="'+params[4]+'" class="navi">'}
        else {myTxt+='<a href="'+url+'?'+lidsString+'" class="navi">'}
        myTxt+=(' '+lname+'</a></span></td></tr>');
      }
      myTxt+=('<tr height=3><td></td></tr>');
    }
  }
  myTxt+=('</table>');
//  alert(myTxt);
  layerWrite('submenu',myTxt);
}

function checkBrowser() {
  // Browsercheck
  dom = (document.getElementById)? true:false;
  ns4=(document.layers)? true:false;
  ns6=((navigator.userAgent.indexOf('Mozilla')>=0) && (navigator.appVersion.substring(0,1) >= "5"))? true:false;
  ie4=(document.all)? true:false;
  ie5=(ie4)? ((navigator.userAgent.indexOf('MSIE 5')>0)? true:false):false;
  ie6=(ie4)? ((navigator.userAgent.indexOf('MSIE 6')>0)? true:false):false;
  if (ie6 == true) {ie4=false;}
  opera=(navigator.userAgent.indexOf('Opera')>=0)? true:false;
  mac = navigator.platform == "Mac";
}

function goodBrowser() {
  var good =((ie4||ie5||ie6||ns6)&&(!mac))? true:false
  return good
}

function initNavi() {
  checkBrowser();
  if (goodBrowser()) {initDevices()}
}

function initDevices() {} //wird später überschrieben

function addNaviLine(name,url) {
  var prestr='';
  if (naviLineNum) {prestr=' > '}
  if (url) {naviLine+=prestr+'<a href="'+url+'">'+name+'</a>'}
  else {naviLine+=prestr+name}
  naviLineNum++;
}

function getTitle(title) {
  var ntitle = title.split("<br>");
  if (ntitle.length > 1) {
    return '<span class="h2">'+ntitle[0]+'</span><br><span class="h5">'+ntitle[1]+'</span>';
  } else {
    return '<span class="h1"><b>'+ntitle[0]+'</b></span><br>';
  }
}
//submenu Ende
//////////////

//Misc

function help(url) {
  helpW=window.open(''+webCdPath+'help/'+url+'.htm',"help",'toolbar=no,width=450,height=300,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');
  helpW.focus();
}

function printPage() {
  var printURL = document.URL.split("#");
//  printURL = printURL[0].replace(/www\.tu\-dresden\.de\//,'www.tu-dresden.de/webcd/print.php?id=');
  printURLx = printURL[0].replace(/\?/,'#');
  printURL = 'http://www.tu-dresden.de/webcd/print.php?id='+printURLx;
  open(printURL);
}