/* "link.js" Version 3.00 - Javascript-Funktionen im Frameset */
/* Webautor: Ingo Falk - Stand: 03-2002 */
{//globale Variablendeklarationen und Instanzierungen für nachfolgende Funktionen
 var FrameSetDatei;
 var FrameSetPosition;
 var FramePosition;
 var FrameOK;
 var NaviDatei;
 var NaviPosition;
 var NaviOberPosition;
 var NaviOrdner;
 var NaviOberOrdner;
 var SeiteDatei;
 var SeitePosition;
 var SeiteOberPosition;
 var SeiteOrdner;
 var SeiteOberOrdner;
 var SeiteTitel;
 var SeiteEbene;
 var ElementID;
 var Seite;
 var Num;
 var Name;
 var Url;
 var Fenster;
 var FensterNeu;
 var Zweig;
 var Position;
 var Stamm;
 var Adresse;
 var i, k, z, n, s;
 var u = "R";
 var sNeu;
 Frame = new Array();
 Pfad  = new Array();
 Datei = new Array();
 var Anker;
 auf = new Image();
 auf.src = "../images/xplo_oa.gif";
}
/* Hier KEINE Dokument-abhängigen WERTE ermitteln bzw. übergeben! */

function FrameCheck()
{//Befreiung aus fremden Framesets und Wertezuweisung der Variablen
 if(parent.frames.length > 0)
    {//Bestandteil eines Framesets
      FrameSetDatei = top.location.href.slice(top.location.href.lastIndexOf("/") + 1);
      FrameSetPosition = top.location.href.slice(0,top.location.href.lastIndexOf("/"));
      FramePosition = self.location.href.slice(0,self.location.href.lastIndexOf("/"));
      if (((FrameSetDatei != "frameset.htm") && (FrameSetPosition.indexOf("FrontPage/temp") == -1)) || (top.frames.length > 2))
         {//FALSCHES Frameset - richtige URL aufrufen
          FrameOK = false;
          alert("Diese Seite ist Bestandteil eines anderen Framesets, \nwelches jetzt automatisch geladen wird!");
          top.location.href = (FramePosition + "/frameset.htm");
         }
      else
         {//RICHTIGES Frameset - Wertezuweisung
          FrameOK           = true;
          NaviDatei         = top.navi.location.href.slice(top.navi.location.href.lastIndexOf("/") + 1);
          NaviPosition      = top.navi.location.href.slice(0,top.navi.location.href.lastIndexOf("/"));
          NaviOrdner        = NaviPosition.slice(NaviPosition.lastIndexOf("/") + 1);
          NaviOberPosition  = NaviPosition.slice(0,NaviPosition.lastIndexOf("/"));
          NaviOberOrdner    = NaviOberPosition.slice(NaviOberPosition.lastIndexOf("/") + 1);
          SeiteDatei        = top.seite.location.href.slice(top.seite.location.href.lastIndexOf("/") + 1);
          SeitePosition     = top.seite.location.href.slice(0,top.seite.location.href.lastIndexOf("/"));
          SeiteOrdner       = SeitePosition.slice(SeitePosition.lastIndexOf("/") + 1);
          SeiteOberPosition = SeitePosition.slice(0,SeitePosition.lastIndexOf("/"));
          SeiteOberOrdner   = SeiteOberPosition.slice(SeiteOberPosition.lastIndexOf("/") + 1);
          if (NaviOrdner == SeiteOrdner)
             {//im Navi-Frame UND im Seite-Frame Dateien des SELBEN Ordners geladen
              SeiteEbene = "s";
             }
          else if (NaviOberOrdner == SeiteOrdner || NaviOrdner == SeiteOberOrdner)
             {//im Navi-Frame ODER im Seite-Frame Datei eines jeweiligen Unterordners des SELBEN Ordners geladen
              SeiteEbene = (NaviOberOrdner == SeiteOrdner) ? "o" : "u";
             }
          else if ((NaviOrdner != SeiteOrdner) && (NaviOberOrdner != SeiteOrdner) && (NaviOrdner != SeiteOberOrdner))
             {//WEDER im Navi-Frame NOCH im Seite-Frame Datei eines jeweiligen Unterordners ODER des SELBEN Ordners geladen
              SeiteEbene = "x";
             }
          s = (SeiteDatei.indexOf("seite") != -1) ? parseInt(SeiteDatei.slice(SeiteDatei.lastIndexOf("seite") + 5),10) : 0;
          if (isNaN(s) == true)
             {//FALSCHER Dateiname
              s = 0;
             }
         } 
     }
 else
     {//außerhalb des Framesets geladen
      FrameOK = false;
      alert("Diese Seite ist normalerweise Bestandteil eines Framesets, \nseparates Laden kann zu Darstellungsproblemen führen!");
     }
}
/* Funktion zum Verhindern ungewollter Schaufenster-Effekte und zur Initialisierung von globalen Variablen im Frame */
/* Aufruf SOFORT beim EINLESEN, in separatem "SCRIPT"-Container BEIDER Frames */
/* Wird die aufrufende Seite AUSSERHALB eines Framesets angezeigt, erfolgt Hinweis auf evtl. Anzeigeprobleme */
/* GIBT es ein Eltern-Fenster, muss d. Dateiname = "frameset.htm" sein o. d. Pfad auf temp. Frontpage-Ordner verweisen */
/* Außerdem dürfen nicht mehr als EINE Frame-Ebene im Eltern-Fenster angezeigt werden */
/* Sind BEIDE Bed. erfüllt, werden die Variablen entspr. initialisiert, wenn NICHT wird autom. "frameset.htm" aufgerufen */

function Vergleichen()
{//Markierung auf Aktualität prüfen
if (FrameOK == true)
   {//RICHTIGES Frameset geladen, "s" und "SeitePosition" noch einmal ermitteln
    SeiteDateiNeu = top.seite.location.href.slice(top.seite.location.href.lastIndexOf("/") + 1);
    SeitePositionNeu = top.seite.location.href.slice(0,top.seite.location.href.lastIndexOf("/"));
    sNeu = (SeiteDateiNeu.indexOf("seite") != -1) ? parseInt(SeiteDateiNeu.slice(SeiteDatei.lastIndexOf("seite") + 5),10) : 0;
    if ((sNeu != top.navi.s) || (SeitePositionNeu != top.navi.SeitePosition))
       {//wenn NICHT gleich Anfangszustand im Navi-Frame, diesen neuaufbauen
        Blatt('navi%R');
       }
   }
}
/* Funktion zum Vergleich der Seite im Seite-Frame mit Markierung im Navi-Frame NACH dem Laden der SEITE */
/* Wird vom Seite-Frame "onLoad" aufgerufen */ 

function Markieren()
{//Seitennamen entsprechend Inhalt im Seite-Frame markieren UND Ordnersymbol im Navi-Frame entsprechend austauschen
if (FrameOK == true)
   {//RICHTIGES Frameset geladen, Titel im Seite-Frame ermitteln
    SeiteTitel = parent.seite.document.title;
    if ((NaviDatei == "navi_seiten.htm") && (s > 0) && (SeiteEbene != "x"))
       {//im Navi-Frame Seitenverzeichnis UND im Seite-Frame SEITENNUMMER eines jeweiligen Unterordners ODER des SELBEN Ordners geladen
        ElementID = (SeiteEbene + s);
        if ((document.getElementById) && (document.getElementById(ElementID)))
           {//DOM-Syntax bekannt UND Seitenname existiert - Klassenname ändern
            if (window.opera)
               {//Opera-Browser, die Textstyle NICHT dynamisch ändern
                document.getElementById(ElementID).style.backgroundColor = "#C0C0FF";
               }
            document.getElementById(ElementID).className = "blau";
            document.getElementById(ElementID).setAttribute("class", "blau");
           }
        else if ((! document.getElementById) && (document.all) && (document.all.tags("a")[ElementID]))
           {//DOM-Syntax unbekannt UND all-Objekt bekannt UND Seitenname existiert - Klassenname ändern
            document.all.tags("a")[ElementID].className = "blau";
           }
        else if ((! document.getElementById) && (! document.all) && (document.layers) && (document.layers[ElementID]))
           {//DOM-Syntax UND all-Objekt NICHT bekannt UND layer-Objekt bekannt UND Seitenname existiert
            with(document.layers[ElementID].document)
                {//Layer-Inhalt generieren = neuer Verweis mit anderem Klassenname
                 open();
                 write("<a class='blau' id='" + ElementID + "' href='javascript:Blatt(String(u))'");
                 write("onMouseOver='Ziel(String(u)); return true' onMouseOut='Aus()'><nobr>" + SeiteTitel + "</nobr></a>");
                 close(); 
                }
           }
       }
    else if (s == 0)
       {//im Seite-Frame NICHT Seitennummer irgendeines Ordners geladen --> ÜBERSICHT geladen
        if (document.images[SeiteOrdner])
           {//Ordnername existiert - Ordnersymbol ÖFFNEN
            document.images[SeiteOrdner].src = auf.src;
           }
        ElementID = SeiteOrdner;
        if ((! document.all || window.opera) && (document.getElementById) && (document.getElementById(ElementID)))
           {//all-Objekt unbekannt ODER Opera-Browser UND DOM-Syntax bekannt UND Seitenname existiert - Klassenname ändern
            if (window.opera)
               {//Opera-Browser, die Textstyle NICHT dynamisch ändern
                document.getElementById(ElementID).style.backgroundColor = "#C0C0FF";
               }
            document.getElementById(ElementID).className = "blau";
            document.getElementById(ElementID).setAttribute("class", "blau");
           }
        else if ((! window.opera) && (document.all) && (document.all.tags("a")[ElementID]))
           {//NICHT Opera-Browser UND all-Objekt bekannt UND Seitenname existiert - Klassenname ändern
            document.all.tags("a")[ElementID].className = "blau";
           }
        else if ((! document.getElementById) && (! document.all) && (document.layers) && (document.layers[ElementID]))
           {//DOM-Syntax UND all-Objekt NICHT bekannt UND layer-Objekt bekannt UND Seitenname existiert
            with(document.layers[ElementID].document)
                {//Layer-Inhalt generieren = neuer Verweis mit anderem Klassenname
                 open();
                 write("<a class='blau' id='" + ElementID + "' href='javascript:Blatt(String(u))'");
                 write("onMouseOver='Ziel(String(u)); return true' onMouseOut='Aus()'><nobr>" + SeiteTitel + "</nobr></a>");
                 close(); 
                }
           }
       }
   }
}
/* Funktion zum Markieren vom Namen der Seite und "Öffnen" des Ordnersymbols */
/* Aufruf vom Navi-Frame "onLoad" */
/* zulässiger Wert des "NAME"-Attributs im Image-Tag des Ordnersymbols == Verzeichnisname im Web */
/* zulässige Werte für MSIE ("ID"-Wert im "A"-Tag) = "[Verz.-Name]" o. "s[Seitennr.]", Bsp.: id="s4", id="projekt" */
/* zulässige Werte für NSCom ("NAME"-Wert im "LAYER"-Tag) = wie MSIE, Bsp.: name="s4" usw. */
/* der Seitentitel muss mit dem zu markierenden Text übereinstimmen, da er beim NSCom entspr. neu geschrieben wird! */

function Werte(Link)
{//Wertezuweisung von Frame, Pfad, Datei und Anker:
  {
   if (Link.indexOf("%") != -1)
      {//Zielframe angegeben
       Frame = Link.split("%");
       if (Frame[1].indexOf("/") != -1)
          {//Zielframe und relativer Pfad angegeben
           Pfad[0] = Frame[1].slice(0,Frame[1].lastIndexOf("/"));
           Pfad[1] = Frame[1].slice(Frame[1].lastIndexOf("/") + 1);
           if (Pfad[1].indexOf("#") != -1)
              {//Zielframe, relativer Pfad und Verweisanker angegeben
               Datei = Pfad[1].split("#");
               Anker = Datei[1];
              }
           else
              {//Zielframe und relativer Pfad angegeben, Verweisanker NICHT angegeben
               Datei[0] = Pfad[1];
               Anker = "leer";
              }
          }
       else if (Frame[1].indexOf("/") == -1 && Frame[1].indexOf("#") != -1)
          {//Zielframe angegeben, relativer Pfad NICHT angegeben, Verweisanker angegeben
           Pfad[0] = "leer";
           Datei = Frame[1].split("#");
           Anker = Datei[1];
          }
       else
          {//Zielframe angegeben, relativer Pfad und Verweisanker NICHT angegeben
           Pfad[0] = "leer";
           Datei[0] = Frame[1];
           Anker = "leer";
          }
      }
   else if (Link.indexOf("%") == -1 && Link.indexOf("/") != -1)
      {//Zielframe NICHT angegeben, relativer Pfad angegeben
       Pfad[0] = Link.slice(0,Link.lastIndexOf("/"));
       Pfad[1] = Link.slice(Link.lastIndexOf("/") + 1);
       if (Pfad[1].indexOf("#") != -1)
          {//Zielframe NICHT angegeben, relativer Pfad und Verweisanker angegeben
           Frame[0] = "leer";
           Datei = Pfad[1].split("#");
           Anker = Datei[1];
          }
       else
          {//Zielframe NICHT angegeben, relativer Pfad angegeben, Verweisanker NICHT angegeben
           Frame[0] = "leer";
           Datei[0] = Pfad[1];
           Anker = "leer";
          }
      }
   else if (Link.indexOf("%") == -1 && Link.indexOf("/") == -1 && Link.indexOf("#") != -1)
      {//Zielframe und relativer Pfad NICHT angegeben, Verweisanker angegeben
       Frame[0] = "leer";
       Pfad[0] = "leer";
       Datei = Link.split("#");
       Anker = Datei[1];
      }
   else
      {//Zielframe, relativer Pfad und Verweisanker NICHT angegeben
       Frame[0] = "leer";
       Pfad[0] = "leer";
       Datei[0] = Link;
       Anker = "leer";
      }
  }
  {//vollständigen Dateinamen ermitteln:
   if (Datei[0].indexOf(".") != -1)
      {//Dateiname angegeben
       Name = Datei[0];
      }
   else if (Datei[0] == "")
      {//nur Verzeichnis angegeben (Default-Datei aufrufen)
       Name = "";
      }
   else if (Datei[0] == "E" || Datei[0] == "X")
      {//"Explorer" ODER "Exit" - Verzeichnis öffnen ODER schließen
       Frame[0] = "navi";
       Name = (Datei[0] == "E") ? "navi_seiten.htm" : "navi_inhalt.htm";
      }
   else if (Datei[0] == "R")
      {//"Reload" - Frameinhalt neuaufbauen
       Fenster = (Frame[0] != "leer") ? Frame[0] : "seite";
       Name = (Fenster == "self") ? self.location.href : top.frames[Fenster].location.href;
      }
   else if (Datei[0] == "Z")
      {//"Zurück" - zur vorher besuchten Seite wechseln
       Frame[0] = "back";
       Name = ((top.seite.document.referrer) && (top.seite.document.referrer.indexOf("navi_") == -1)) ? parent.seite.document.referrer : "javascript:window.history.back();";
      }//Ursprung NUR anzeigen, wenn ermittelbar UND NICHT Navi-Frame - sonst "JS-Text" anzeigen
   else if (Datei[0] == "=")
      {//im Navi-Frame aktuelle Position anzeigen
       Pfad[0] = SeitePosition;
       Frame[0] = "navi";
       Name = "navi_seiten.htm";
      }
   else if (Datei[0] == "+" || Datei[0] == "-")
      {//vorwärts oder rückwärts blättern
       Seite = self.location.href.slice(self.location.href.lastIndexOf("seite") + 5);
       n = parseInt(Seite,10);
       (Datei[0] == "+") ? n++ : n--;
       Num = (n < 10) ? ("0" + n) : n;
       Name = ("seite" + Num + ".htm");
      }
   else if (Datei[0] == "O" || Datei[0] == "U")
      {//"oben" ODER "unten" - zum SEITENANFANG oder -ENDE springen
       Name = (SeiteDatei.indexOf("#") != -1) ? SeiteDatei.slice(0,SeiteDatei.lastIndexOf("#")) : SeiteDatei;
       Anker = (Datei[0] == "O") ? "oben" : "unten";
      }
   else if (Datei[0] == "S")
      {//Standardseite = Druckversion aufrufen
       if (Frame[0] == "leer")
          {//KEIN Zielframe angegeben - NEUES Fenster erzeugen
           Frame[0] = "neu";
          }
       Seite = (SeiteDatei.indexOf("seite") != -1) ? self.location.href.slice(self.location.href.lastIndexOf("seite") + 5) : "0";
       n = parseInt(Seite,10);
       Num = (n < 10) ? ("0" + n) : n;
       Name = (n != 0) ? ("standard" + Num + ".htm") : "standard.htm";
      }
   else if (Datei[0] == "F")
      {//Frameset aufrufen
       if (Frame[0] == "leer")
          {//KEIN Zielframe angegeben - ganzes Browserfenster 
           Frame[0] = "top";
          }
       Name = "frameset.htm";
      }
   else
      {//Seitennummer angegeben
       n = parseInt(Datei[0]);
       if (isNaN(n) == true)
          {//ungültiger Parameter
           Fehler('Ziel',Datei[0]);
          }
       else if (n == 0)
          {//"Uebersicht" aufrufen
           Name = "inhalt.htm";
          }
       else
          {//Seitennummer aufrufen
           Num = (n < 10) ? ("0" + n) : n;
           Name = ("seite" + Num + ".htm");
          }
      }
  }
  {//vollständige URL ermitteln:
   if (Pfad[0] != "leer")
      {//relativer Pfad angegeben
       if (Anker != "leer")
          {//relativer Pfad und Verweisanker angegeben
           Url = (Pfad[0] + "/" + Name + "#" + Anker);
          }
       else
          {//relativer Pfad angegeben, Verweisanker NICHT angegeben
           Url = (Pfad[0] + "/" + Name);
          }
      }
   else
      {//relativer Pfad NICHT angegeben
       if (Anker != "leer")
          {//relativer Pfad NICHT angegeben, Verweisanker angegeben
           Url = (Name + "#" + Anker);
          }
       else
          {//relativer Pfad und Verweisanker NICHT angegeben
           Url = Name;
          }
      }
  }
}
/* Funktion zur Wertezuweisung der Variablen für "Blatt()" und "Ziel()" */
/* wird innerhalb der jeweiligen Funktion mit Übergabe des "Link"-Parameters aufgerufen */
/* Variablen müssen GLOBAL sein, zulässige Werte siehe aufrufende Funktionen! */

function Blatt(Link)
{// Funktionsaufruf mit "Blatt('Frame%Pfad/Datei#Anker')"
 Werte(Link);
 Aus();
  {//Zielfenster ermitteln und Link ausführen:
   if (Frame[0] != "leer")
      {//Zielframe angegeben
       if (Frame[0] == "top")
          {//Ganzes Browserfenster - Frameset beenden
           top.location.href = Url;
          }
       else if (Frame[0] == "self")
          {//Gleicher Frame im Frameset
           self.location.href = Url;
          }
       else if (Frame[0] == "back")
          {//Zurückblättern im Seite-Frame - Browserfenster/Frames wie vor
           top.seite.history.back();
          }
       else if (Frame[0] == "navi" || Frame[0] == "seite")
          {//Name des Frames angegeben
           Fenster = Frame[0];
           top.frames[Fenster].location.href = Url;
          }
       else if (Frame[0] == "neu")
          {//neues Fenster mit Namen "neu" erzeugen
           Fenster = Frame[0];
           FensterNeu = window.open(Url,Fenster);
           FensterNeu.focus();
          }
       else
          {//ungültiger Parameter
           Fehler('Frame',Frame[0]);
          }
      }
   else
      {//KEIN Zielframe angegeben - im SEITE-FRAME "Url" aufrufen
       top.seite.location.href = Url;
      }
  }
}
/* Funktion zum Ausführen von Links im Frameset, Syntax = "Blatt('Frame%Pfad/Datei#Anker');" */
/* zulässige Werte für "Frame" = "top", "self", "navi", "seite", "back", "neu" abgeschlossen mit "%" oder weglassen */
/* zulässige Werte für "Pfad"  = beliebige URL-Pfade, abgeschlossen MIT "/" oder weglassen */
/* zulässige Werte für "Datei" = beliebige vollst. Dateinamen "*.*" oder "E,X,R,Z,S,F,O,U,0,=,+,-,[Seitennr.]" oder weglassen */
/* zulässige Werte für "Anker" = beliebige Verweisanker mit vorangestelltem "#" oder weglassen */
/* Bsp.: "Blatt('top%http://www.domain.de/web/projekt/index.htm#abs2')"; "Blatt('2')"; "Blatt('navi%R')" usw. */




function Ziel(Link)
{// Funktionsaufruf mit "Ziel('Frame%Pfad/Datei#Anker')"
 Werte(Link);
  {//Zweig ermitteln:
   i = Url.lastIndexOf("../");
   i += 3;
   if (i > 2)
      {//im aktuellen Zweig aufwärts
       Zweig = Url.slice(i);
       k = i / 3;
      }
   else
      {//nicht aufwärts steigen
       Zweig = Url;
       k = 0;
      }
  }
  {//aktuelle Position ermitteln:
    Position = self.location.href.slice(0,self.location.href.lastIndexOf("/"));
  }
  {//Verzeichnisstamm ermitteln:
    Stamm = Position;
    if (k > 0)
       for (z = 1; z <= k; z++)
           {//aufwärts steigen, falls erforderlich
            Stamm = Stamm.slice(0,Stamm.lastIndexOf("/"));
           }
  }
  {//Zieladresse ermitteln und anzeigen:
    if ((Url.indexOf("://") != -1) || (Url.indexOf("file:/") != -1) || (Url.indexOf("javascript:window.history.back();") != -1))
       {//Protokoll angegeben - absolute URL ODER einen Schritt zurück
        Adresse = Url;
       }
    else
       {//relative URL
        Adresse = (Stamm + "/" + Zweig);
       }
    window.status = Adresse;
  }
}
/* Funktion zum Anzeigen der Zieladresse von Links in der Statuszeile, Syntax = "Ziel('Frame%Pfad/Datei#Anker');" */
/* zulässige Werte wie Funktion "Blatt()" - bei gleichzeitiger Verwendung IDENTISCHE Parameter! */
/* Bsp.: "Ziel('top%http://www.domain.de/web/projekt/index.htm#abs2')"; "Ziel('2')"; "Ziel('seite%R')" usw. */


function Aus()
{
 window.status = '';
 return true;
}
/* Statuszeile leeren */


function Fehler(Parameter, Angabe)
{
 alert("Der " + Parameter + "-Parameter: \"" + Angabe + "\" ist ungültig!");
}
/* Syntax-Fehlermeldung ausgeben */
