/*
   JavaSkript Bibliothek
   ------------------------------------------------------------------------------
   Um diese Bibliothek nutzen zu können, müssen die Einträge
   o <script language="JavaScript" SRC="Pfad/FranckJS.js"></script> im Header und
   o <script language="JavaScript"> Befehl() ; </script> an der entsp. Stelle
   eingebunden sein
*/

// -------- Globale Funktionen -----------
// Eigene Fehlerbehandlung aktivieren
window.onerror = Fehler ;


// -------- Unterfunktionen ---------------
// Fehlerausgabe in Statuszeile
function Fehler(meldung, url, zeile)
{
  if (self.location.protocol.toString() != "file:")
  {
    // Fehler in Statuszeile -> kein lästiges Bestätigen ...
    window.status = "JavaSkript-Fehler URL>"+url+"< Zeile>"+zeile+"<: "+meldung ;
  }
  else
  {
    // Auf lokalem Rechner -> richtig anzeigen
    alert("JavaSkript-Fehler:\nURL >"+url+"<\nZeile >"+zeile+"<\n"+meldung) ;
  }
  // Keine Standard-Behandlung mehr
  return true ;
}

// Falls die Seite im Frame (eines anderen) angezeigt wird
// den anderen Frame eliminieren
function KillFrame()
{
  if (top.location.href != this.location.href)
  {
    top.location.href = this.location.href ;
  }
}

// Diverse Informationen zur angezeigten Datei ausgeben
function DateiInfos()
{
  // Schriftart in Tabelle über CSS einstellen
  //document.write('<span STYLE="\n') ;
  //document.write('TABLE {font-size : 11px; font-family : Arial, sans-serif; }\n');
  //document.write('TR {font-size : 11px; font-family : Arial, sans-serif; }\n');
  //document.write('TD {font-size : 11px; font-family : Arial, sans-serif; }\n');
  document.write('<span STYLE="font-size : 11px; font-family : Arial, sans-serif; "\n') ;
  document.write('">\n') ;

  document.write("<BR><HR>\n") ;
  document.write('<table border="0" cellpadding="0" cellspacing="0">\n') ;

  // Zeile der aktuellen Seite
  document.write('<tr>\n') ;
  document.write('<td>Diese Seite: </td>\n') ;
  //document.write('<td>' + document.location + ' vom ' + document.lastModified + '</td>\n') ;
  document.write('<td>' + document.location + '</td>\n') ;
  document.write('</tr>\n') ;

  // Aufrufende Seite anzeigen (falls vorhanden und falls nicht aus Untermenü)
  if ((document.referrer != "") && (document.referrer.indexOf('Content') > -1))
  {
    // Zeile der aufrufenden Seite
    document.write('<tr>\n') ;
    document.write('<td>aufgerufen von: </td>\n') ;
    document.write('<td><a href=' + document.referrer) ;
    // Falls Aufrufer von anderem Server -> target="_top"
    if (document.referrer.indexOf(document.location.hostname) == -1)
    {
      document.write(' target="_top"') ;
    }
    document.write('>' + document.referrer + '</a></td>\n') ;
    document.write('</tr>\n') ;
  }

  // Zeile der Homepage
  document.write('<tr>\n') ;
  document.write('<td>HOMEPAGE: </td>\n') ;
  cAddress = document.location.protocol + '//' + document.location.host + "/" ;
  document.write('<td><a href=' + cAddress + ' target="_top">' + cAddress + '</a></td>\n') ;
  document.write('</tr>\n') ;

  document.write('</table>\n') ;
  document.write('<HR><BR>\n') ;

  document.write('</span>\n') ;
}


// Das Untermenü zum Menü anzeigen (sofern es noch nicht angezeigt wird)
function MenuToSubmenu(SubmenuFile)
{
  // Derzeitige location des Frames
  cSMref  = parent.Submenu.location.href ;
  nLen    = cSMref.length ;
  nPos    = cSMref.lastIndexOf('/') ;
  // Nur den Dateinamen aus location ermitteln
  cSMref  = cSMref.substring(nPos+1, nLen) ;

  if (cSMref != SubmenuFile)
  {
    // Submenu noch nicht richtig -> neu anzeigen
    parent.Submenu.location.href = "../Submenu/" + SubmenuFile ;
  }
}


// Untermenü lädt die erste Inhaltsdatei (sofern nicht eine der anzuklickenden
// Dateien schon geladen ist)
function SubmenuToContent()
{
  // Wie viele Links gibt es im Menü ?
  nLinks = self.document.links.length ;

  // Der Link im Content-Frame
  cCTref = parent.Content.location.href ;

  for (i = 0; i < nLinks; i++)
  {
    if (cCTref == self.document.links[i].href)
    {
      // Eines der Dokumente ist geladen -> nicht neu laden
      // Aber das Bild aktiv machen
      // Es gibt ein Bild mehr als Menues, aber Bild 1 ist Link auf Inhalt
      cImgSrc        = new String(self.document.images[i].src) ;
      cImgSrc        = cImgSrc.substring(0, cImgSrc.length - 4) ;
      self.document.images[i].src = cImgSrc + "A.GIF" ;
      return true ;
    }
  }
  // Es ist noch kein gelinktes Document angezeigt -> neu laden
  // Erster Link ([0]) ist zum Inhaltsverzeichnis
  // *** Problem: Wenn Inhaltsverzeichnis angezeigt ist, wird neuer Link nicht gezeigt
  parent.Content.location.href = self.document.links[1].href ;

  return true ;
}

// Den Inhalt des ContentFrames einstellen
function FuelleContentFrame(cFile)
{
  if (cFile)
  {
    self.Menu.location.href    = "Content/Leer.htm" ;
    self.Submenu.location.href = "Content/Leer.htm" ;
    self.Content.location.href = "Content/" + cFile.substring(1) ;
  }
}

// Ist der Inhalt im korrekten Frame ?
function IsInFrame()
{
  if (top.frames.length == 0)
  {
    // Keine Frames ->
    nPos  = location.href.indexOf('Content') ;
    lRest = location.href.substring(nPos + 8) ;
    location.href = location.href.substring(0, nPos) + "Franck.htm?" + lRest ;
    return false ;
  }
  return true ;
}

// Das richtige Menü und Untermenu zu einer Datei anzeigen
function ContentToMenues(MenuFile, SubmenuFile, SMLinkNr)
{
  // Prüfen, ob die Frames existieren ?
  if (!IsInFrame())
  {
    return true ;
  }

  // Derzeitige location des Frames Menu
  cMEref  = new String(parent.Menu.location.href) ;
  nLen    = cMEref.length ;
  nPos    = cMEref.lastIndexOf('/') ;
  // Nur den Dateinamen aus location ermitteln
  cMEref  = cMEref.substring(nPos+1, nLen) ;

  // Derzeitige location des Frames Submenu
  cSMref  = new String(parent.Submenu.location.href) ;
  nLen    = cSMref.length ;
  nPos    = cSMref.lastIndexOf('/') ;
  // Nur den Dateinamen aus location ermitteln
  cSMref  = cSMref.substring(nPos+1, nLen) ;

  if (cSMref != SubmenuFile)
  {
    // Das richtige Submenu anzeigen
    parent.Submenu.location.href = "../Submenu/" + SubmenuFile ;
  }
  else
  {
    // Das richtige Bild hervorheben (funktion NUR, wenn Submenu vorher schon aktiv war.
    // Ansonsten wird es aber in SubmenuToContent() eingestellt)
    nAnker = parent.Submenu.document.images.length ;
    for (i = 0; i < nAnker; i++)
    {
      cImgSrc  = parent.Submenu.document.images[i].src ;
      nLen     = cImgSrc.length ;
      // ".GIF" entfernen
      cImgSrcS = cImgSrc.substring(0, nLen - 4) ;
      // letzten Buchstaben ermitteln
      cImgSrcA = cImgSrcS.substring(nLen - 5, nLen - 4) ;
      // Falls letzter Buchstabe == 'A' -> Aktiv
      bAktive  = (cImgSrcA == 'A') ;

      if (i != SMLinkNr)
      {
        if (bAktive)
        {
          // Aktives Bild deaktivieren
          parent.Submenu.document.images[i].src = cImgSrc.substring(0, nLen - 5) + ".GIF" ;
        }
      }
      else
      {
        // Bild aktivieren
        if (!bAktive)
        {
          parent.Submenu.document.images[i].src = cImgSrcS + "A.GIF" ;
        }
      }
    }
  }

  if (cMEref != MenuFile)
  {
    // Das richtige Menu anzeigen
    parent.Menu.location.href = "../Menu/" + MenuFile ;
  }

  return true ;
}


// Zeigt die Bilddatei PicFile im Image PicID an
function zeigepic(PicID,PicFile)
{
  if(document.images)
  {
    // Nur aendern, wenn moeglich !
    document.images[PicID].src=eval(PicFile + ".src");
  }
}

// menu hervorheben, falls nicht schon angezeigt
function highlightmenu(cLink, PicID, Pic)
{
  cFrLink   = parent.Content.location.href ;
  nLen      = cFrLink.length ;
  nPos      = cFrLink.lastIndexOf('/') ;
  cFrFile   = cFrLink.substring(nPos+1, nLen) ;

  if (cFrFile != cLink)
  {
     zeigepic(PicID,Pic) ;
  }
}



// ########## LH - ab 12.02.2002
// Initialisierung des Dokuments
// - Frames korrekt anzeigen:
//   o Falls kein Frame -> im Frame öffnen
//   o Falls mehr als 1 Frame -> neu aufmachen
// - Hauptmenü aufrufen (falls erforderlich)
// - Untermenü mit aktivierung des aktuellen Kapitels aufrufen
function DocumentInit(cDocRef, cMainMenu, cSubMenu, cChapter)
{
  // *** Prüfen, ob die Frames existieren ?
  if (!IsInFrame())
  {
    return true ;
  }

  // *** Hauptmenue anzeigen
  // Derzeitige location des Frames Menu
  cMEref  = new String(parent.Menu.location.href) ;
  nLen    = cMEref.length ;
  nPos    = cMEref.lastIndexOf('/') ;
  // Nur den Dateinamen aus location ermitteln
  cMEref  = cMEref.substring(nPos+1, nLen) ;

  if (cMEref != (cMainMenu + '.htm'))
  {
    // Das richtige Menu anzeigen
    parent.Menu.location.href = "../Menu/" + cMainMenu + ".htm" ;
  }

  // *** Untermenue mit Aktivierung des aktuellen Kapitels
  self.window.parent.Submenu.location.href = '../Submenu/Submenu.php3?file=' +
                                             cSubMenu + "&p=" + cChapter ;
}

// Initialisierung des Haupt-Menues
// - Untermenü laden (falls nicht OK)
function MenuInit(cSubMenu)
{
  // Derzeitige location des Frames Submenu
  cSMref  = new String(parent.Submenu.location.search) ;

  nPos = cSMref.indexOf(cSubMenu) ;
  if (nPos == -1)
  {
    // *** Untermenue mit Aktivierung des aktuellen Kapitels
    //self.window.parent.Submenu.location.href = '../Submenu/Submenu.php3?file=' +
    //                                           cSubMenu + "&p=1" ;
  }
}

// Initialisierung des Unter-Menues
// - 3 ten Link (die ersten Beiden gehen auf Inhalt) laden,
//   falls kein Link des Untermenues ausgewählt ist
function SubmenuInit(cParagraph)
{
  // Wie viele Links gibt es im Unter-Menü ?
  nLinks = self.document.links.length ;

  // Der Link im Content-Frame
  cCTref = parent.Content.location.href ;
  // Alles hinter # bzw. ? löschen ...
  nPos = cCTref.indexOf("#") ;
  if (nPos > -1)
  {
    cCTref = cCTref.substring(0, nPos) ;
  }
  nPos = cCTref.indexOf("?") ;
  if (nPos > -1)
  {
    cCTref = cCTref.substring(0, nPos) ;
  }
  //alert(cCTref) ;

  if (! cParagraph)
  {
    // ALTER QUELLCODE bis 23.04.2003 (wenn kein Parameter uebergeben wird

    // Pruefen, ob die aktuelle Datei zu den Links des Menue gehoert ...
    for (i = 0; i < nLinks; i++)
    {
      if (cCTref == self.document.links[i].href)
        // Eines der Dokumente ist geladen -> nicht neu laden
        return true ;
    }

    // Es ist noch kein gelinktes Document angezeigt -> neu laden
    // Erste 2 Links ([0/1]) sind zum Inhaltsverzeichnis

    // Den ersten, der kein ? enthält laden ...
    // ### LH 23.04.2003 ist leider auch falsch, denn es
    // gibt Menues die kein weiters Untermenu enthalten.
    // Dann funktioniert diese Taktik nicht. Die dann
    // angezeigte Datei bliebt immer erhalten ...
    i = 2 ;
    while(self.document.links[i].href.indexOf("?") > -1)
    {
      i++ ;
    }
    parent.Content.location.href = self.document.links[i].href ;
  }
  else
  {
    // NEUER CODE:
    // Den ersten Link NACH dem Link mit p=cParagraph anzeigen
    // sofern der noch nicht angezeigt wird ...)
    //window.defaultStatus  = "MENU: " + cParagraph ;

    var bFound = 0 ;
    var cSuche = "p=" + cParagraph ;

    for(var i = 0; i < self.document.links.length; i++)
    {
      if (!bFound)
      {
        // Solange der Link noch nicht gefunden wurde ->
        // nach Link mit p=cParagraph suchen ...
        if (self.document.links[i].href.indexOf(cSuche) > -1)
        {
          bFound = 1 ;
        }
      }
      else
      {
        // Link wurde gefunden ->
        // den ersten Link danach (der kein ? enthaelt) anzeigen
        parent.Content.location.href = self.document.links[i].href ;
        return true ;
      }
    }
  }

  return true ;
}
