/* "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("" + SeiteTitel + "");
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("" + SeiteTitel + "");
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 */