/*

Objekte und Methoden zur Erzeugung und Handling von Text / Bild Highlights, Klappmenus, OneLoadMenu etc.
Siehe auch CTreadme.txt
Version 2.0, 03.07.00
Letzte Aenderung 17.08.00

Copyright und Urheberrecht für den folgenden Programmcode, Programmlogik, Programmkonzeption und Idee liegen bei Bernd Wolfsegger, 1998/99/2000.
Alle Rechte vorbehalten.

Jede Verwendung des folgenden Codes, einzelner Bestandteile oder der Logik als solcher, ist nur mit meiner schriftlichen Einwilligung erlaubt.
Jede Verwendung ohne meine Einwilligung ist rechtswidrig.
In jedem Fall sind mir Veraenderungen und Erweiterungen des Codes mitzuteilen.
Dies betrifft insbesondere die kommerzielle Nutzung.

Der Online-Code ist nicht kommentiert.

bernd wolfsegger, egg@interactive-tools.de, www.interactive-tools.de

*/

// Globale Variablen

// z.B. fuer Test ob Einzelseite im Zusammenhang mit Umgebung aufgerufen wurde einzusetzen
var Kontext = true;

// Wird fuer Uebergabe von URL-GET-Suchstring benoetigt, da IE 4.0 "search" nicht unterstuetzt
// Wird von jumpTo und getSearchValue benutzt.
var such;

// Die Mutter aller Frames ;-)
var mother = self;

// Variablen fuer die History-Funktionen, speziell einzusetzen beim OneLoadMenu
var actionHistory = new Array();
var navigateActionHistory = new Array();
var actionHistoryPosition = -1;
var actionHistoryMaxPos = 0;
var doHistoryFlag = true;
mother.popup = new WinWrapper();

// Variable fuer aktuelle URL
var aktURL;

// Browserweiche und Plattformweiche
var BrowserName = navigator.appName;
var BrowserVersion = parseInt(navigator.appVersion);
var ExplorerAb5;
var n;
var ie;
var win;
var mac;

if (navigator.appVersion.indexOf("Win") >= 0){
	win = true;
	mac = false;
}
else {
	win = false;
	mac = true;
}

if ((BrowserName == "Netscape") && (BrowserVersion >= 4)){
	n=true;ie=false;
}
else if ((BrowserName == "Microsoft Internet Explorer") && (BrowserVersion >= 4)){
	n=false;ie=true;
	if (navigator.appVersion.indexOf("5.") >= 0) {
		ExplorerAb5 = true;
	}
	else {
		ExplorerAb5 = false;
	}
} 

// DIV's im Document fuer Netscape unter eigenem Namen sichern
// Im IE sind mit einer ID versehene Tags automatisch allein unter ihrer ID ansprechbar
// wenn die ID als Variable des WindowObjektes benutzt wird
function nameDivObjects (dasDokument){
	var i;
	if (n) {
		for (i = 0; i < dasDokument.layers.length; i++) {
			if (this[dasDokument.layers[i].id] == null){
				eval('this.' + dasDokument.layers[i].id + ' = dasDokument.layers[i]');
				this.nameDivObjects(dasDokument.layers[i].document);
			}
		}
	}
}

// Images im Document fuer Netscape u. IE unter eigenem Namen sichern
function nameImgObjects(dasDokument){
	var i;
	if (n) {
		for (i = 0; i < dasDokument.images.length; i++) {
			if (dasDokument.images[i].name != null && dasDokument.images[i].name != "") {
				eval('this.' + dasDokument.images[i].name + ' = dasDokument.images[i]');
			}
		}
		for (i = 0; i < dasDokument.layers.length; i++) {
			this.nameImgObjects(dasDokument.layers[i].document);
		}
	}
	else if (ie) {
		for (i = 0; i < dasDokument.images.length; i++) {
			if (dasDokument.images[i].name != null && dasDokument.images[i].name != "") {
				eval('this.' + dasDokument.images[i].name + ' = dasDokument.images[i]');
			}
		}
	}
}

// Positioniert Layerposition "left" nach einem Reload neu nach der neuen Fenstergroesse
// Ausgangsdaten sind in den Layern angegebene Startwerte fuer die Ausgangsfenstergroesse "bezugsWeite"
function repositionDivObjects(bezugsWeiteIE,bezugsWeiteNS,divCount,indexedDivName,nsNamePrae){
	var repoFaktor;
	var i;
	
	if (!nsNamePrae) {
		nsNamePrae = "";
	}
	
	if (n) {
		repoFaktor = this.innerWidth/bezugsWeiteNS;
	}
	else if (ie) {
		repoFaktor = this.document.body.offsetWidth/bezugsWeiteIE;
	}
	
	for (i = 0; i < divCount; i++) {
		if (n) {
			this[nsNamePrae + indexedDivName + "" + i].left = this[nsNamePrae + indexedDivName + "" + i].left * repoFaktor;
			this[nsNamePrae + indexedDivName + "" + i].visibility = "show";
		}
		else if (ie) {
			this[indexedDivName + "" + i].style.left = parseInt(this[indexedDivName + "" + i].style.left) * repoFaktor;
			this[indexedDivName + "" + i].style.visibility = "visible";
		}
	}
	
}

// Stylesheets laden
function browserStyles (pfad,namePart) {
	var tempPfad;
	var i;
	
	if (!pfad) {
		// Bei Angabe keines Pfades wird davon ausgegangen, dass sich
		// ein Ordner "css" auf gleicher Ebene mit der Seite befindet, in die
		// dieses Skript geladen wird
		pfad = mother.getFolderURL() + "css/";
	}
	
	if (win){
		this.document.write('<link rel=stylesheet type="text/css" href="' + pfad + 'win' + namePart +'.css"\076');
	}
	else{
		this.document.write('<link rel=stylesheet type="text/css" href="' + pfad + 'mac' + namePart +'.css"\076');
	}
	// this.document.close();
}

// Initialisierungsfunktion fuer LinkObjekte
// Methode Image: Hinter dem 7. Argument folgen beliebig viele PicObjektnamen im picModus "E"(qual)
// z.B. pic0,pic1,pic2
// Im picModus "D"(ifferent) ist das 8. Argument der Name des Picobjektes ohne Zaehler
// Methode Text: Das 7. Argument enhaelt den LightModus --> "fore" ground oder "back" ground, alle folgenden entfallen
// Methode Image: highSign und normSign sind die endungen von High und Normbild
// Methode Text: highSign und normSign sind die High und Norm Farbe
function initItem (anzahl,itemname,altItemname,dummyExpObj,methode,highSign,normSign,picModus){
	var i;
	var j;
	var teiler;
	var status;
	
	status = this.status;
	
	// ItemObjekt zur Aufnahme des jeweils letzten aktiven ItemObjekt initialisieren
	this[altItemname] = new Object();
	this[altItemname].flag = 1;
	this[altItemname].selectLink = new Function;
	this[altItemname].highLink = new Function;
	
	if(methode == 'image') {
		// Hat jeder Link sein eigenes Bild oder alle dasselbe?
		picObjName = new Array();
		picHigh = new Array();
		picNorm = new Array();
		
		if (picModus == "E") {
			teiler = initItem.arguments.length - 8;
			i = 0;
			while (i < anzahl) {
				for (j = 0; j < teiler; j++) {
					picObjName[i + j] = initItem.arguments[8 + j];
					picHigh[i + j] = initItem.arguments[5];
					picNorm[i + j] = initItem.arguments[6];
				}
				i = i + teiler;
			}
		}
		else if (picModus == "D") {
			for (i = 0; i < anzahl; i++) {
				picObjName[i] = initItem.arguments[8] + "" + i;
				picHigh[i] = initItem.arguments[5];
				picNorm[i] = initItem.arguments[6];
			}
		}
	}
			
	// ItemObjekten Methoden und Eigenschaften zuweisen
	for (i = 0; i < anzahl; i++) {
		this.status = status + " " + i;
		this[itemname + i].highLink = highLink;
		this[itemname + i].selectLink = selectLink;
		this[itemname + i].doHighLogic = doHighLogic;
		this[itemname + i].altItemName = altItemname;
		this[itemname + i].itemName = itemname;
		this[itemname + i].lightModus = picModus;
		this[itemname + i].dummyExpObj = dummyExpObj;
		this[itemname + i].diesMenu = null;
		this[itemname + i].highFlag = 0;
		this[itemname + i].methode = methode;

		if (methode == "image") {
			this[itemname + i].imgObjL = this.mother[picObjName[i]+picNorm[i]];
			this[itemname + i].imgObjH = this.mother[picObjName[i]+picHigh[i]];
		}
		else if (methode == "text") {
			if (ie || this[itemname + i].lightModus == "back") {
				this[itemname + i].highMod = highSign;
				this[itemname + i].lowMod = normSign;
			}
			else {
				this[itemname + i].highMod = "hide";
				this[itemname + i].lowMod = "show";
			}
		}

		// Verweis auf das das ItemObjekt enthaltende Objekt selbst
		this[itemname + i].rahmen = this;
	}
	
	this[dummyExpObj] = this[itemname + "0"];
}

function initKlappWech(anzahl,menuname,dummyExpObj) {
	this[dummyExpObj] = new Array();
	this[dummyExpObj].lastKlapped = null;
	
	for (i = 0; i < anzahl; i++) {
		this[dummyExpObj][i] = this[menuname + "" + i];
	}
}

function initHighWech(anzahl,itemname,dummyExpObj) {
	this[dummyExpObj] = new Array();
	this[dummyExpObj].lastHighed = null;
	
	for (i = 0; i < anzahl; i++) {
		this[dummyExpObj][i] = this[itemname + "" + i];
	}
}

function klappWech(dummyExpObj) {	
	for (i = 0; i < this[dummyExpObj].length; i++) {
		if (this[dummyExpObj][i].klappFlag == 1) {
			this[dummyExpObj][i].lastHighed = null;
			this[dummyExpObj][i].klappMenu('H');
		}
	}
	this[dummyExpObj].lastKlapped = null;
}

function highWech(dummyExpObj) {
	for (i = 0; i < this[dummyExpObj].length; i++) {
		if (this[dummyExpObj][i].highFlag == 1) {
			this[dummyExpObj][i].highLink('L');
		}
	}
	this[dummyExpObj].lastHighed = null;
}

// Initialisierungsfunktion fuer MenuObjekte
function initMenu (anzahl,menuname,altMenuname,dummyExpObj) {
	var status;
	
	status = this.status;
	
	// Menubjekte initialisieren
	this[altMenuname] = new Object();
	this[altMenuname].flag = 1;
	this[altMenuname].klappMenu = new Function();
	this[altMenuname].selectMenu = new Function();
	this[altMenuname].getAway = new Function();
	
	for (i = 0; i < anzahl; i++) {
		this.status = status + " " + i;
		this[menuname + i].klappMenu = klappMenu;
		this[menuname + i].selectMenu = selectMenu;
		this[menuname + i].getAway = getAway;
		this[menuname + i].menuName = menuname;
		this[menuname + i].altMenuName = altMenuname;
		this[menuname + i].dummyExpObj = dummyExpObj;
		this[menuname + i].klappFlag = 0;
		// Verweis auf das das MenuObjekt enthaltende Objekt selbst
		this[menuname + i].rahmen = this;
		this[menuname + i].lastHighed = null;
	}
	
	this[dummyExpObj] = this[menuname + "0"];
}


// Beim Laden "hidden" geschuetzte Layer mit den Linkobjekten (Text und Image) aufdecken
function showLinkObjLayers(anzahl,itemname){
	if (n) {
		for (i=0; i < anzahl; i++) {
			this[itemname + i].visibility = "show";
		}
	}
	else if (ie) {
		for (i=0; i < anzahl; i++) {
			this[itemname + i].style.visibility = 'visible';
		}
	}
}

// Beim Laden "hidden" geschuetzte Layer mit den Menuaufklappaktivierungslinks wieder sichtbar machen
function showMenuBarItemLayers(anzahl,menubarName){
	if (n) {
		for (i=0; i < anzahl; i++) {
			this[menubarName + i].visibility = "show";
		}
	}
	else if (ie) {
		for (i=0; i < anzahl; i++) {
			this[menubarName + i].style.visibility = 'visible';
		}
	}
}

// Bilder im voraus in den Cache laden
function lade(imObj,imSrc,imForm,diffN,diffH,methode) {
	var ichFolderURL;
	
	if (!n) {
		this.getFolderURL = getFolderURL;
		ichFolderURL = this.getFolderURL();
	}
	else {
		ichFolderURL = "";
	}

	imSrc = ichFolderURL + imSrc;
		
	eval(imObj+diffN+' = new Image()');
	eval(imObj+diffN+'.src = "'+imSrc+diffN+imForm+'"');
	if (methode == null){
		eval(imObj+diffH+' = new Image()');
		eval(imObj+diffH+'.src = "'+imSrc+diffH+imForm+'"');
	}
}

// Highlight fuer Image-Links / Text-Layer-Links. Benoetigt den modus.
// "H" fuer Highlight, und "L" fuer Normal (Lowlight)
// (Objektmethode eines Linkobjektes)
function highLink(modus,diesMenu,callingFunc){
	var tempnr;
	var tempModus;
	
	tempModus = modus;
	
	// Variable wird im Bodytag onmouseover-Handler gesetzt und abgefragt, um ein setTimeout zu steuern
	// Menus verschwinden bei onmouseover dem Body, aber erst nach setTimeout, und dann nur wenn diese 
	// Variable != 1 ist (Das heisst, wenn ich wieder zurueck aufs geklappte Menu komme wird sie wieder
	// auf 0 gesetzt, und Menus klappen nicht weg).
	this.rahmen.dasTimeOut = 0;

	if (this.flag != 1) {
		// Highlight setzen
		if (this.methode == "text") {
			modus == "H" ? ((modus = this.highMod) & (this.highFlag = 1)):((modus = this.lowMod) & (this.highFlag = 0));
			if (n) {
				this.lightModus == "fore" ? (this.visibility = modus) : (this.bgColor = modus);
			}
			else if (ie) {
				this.lightModus == "fore" ? (this.style.color = modus) : (this.style.backgroundColor = modus);
				(tempModus == "H" && !callingFunc && this.rahmen.event)? (this.rahmen.event.cancelBubble = true):"";
			}
		}
		else if (this.methode == "image") {
			if (modus == "H") {
				this.src = this.imgObjH.src;
				this.highFlag = 1;
			}
			else {
				this.src = this.imgObjL.src;
				this.highFlag = 0;
			}
			
			if (ie) {
				(tempModus == "H" && !callingFunc && this.rahmen.event)? (this.rahmen.event.cancelBubble = true):"";
			}
		}
		
	}

	// Highlightlogik
	// Einfacher Modus, merkt sich letztes Highlight,
	// muss manuell benutzt werden um letztes Highlight wieder zurueckzusetzen
	if (!this.rahmen[this.dummyExpObj][0]) {
		this.dummyExpObj != "" ? this.rahmen[this.dummyExpObj] = this:"";
	}
	else if (tempModus == "H") {
		// Komplexer Modus
		this.doHighLogic(tempModus,diesMenu);
	}
	
	if (ie) {
		(tempModus == "H" && !callingFunc && this.rahmen.event)? (this.rahmen.event.cancelBubble = true):"";
	}
}

function doHighLogic(tempModus,diesMenu) {
	// Komplexer Modus, automatische Steuerung des Highlighting
	// Letztes Highlight wird automatisch zurueckgesetzt bei neuem Highlight
	// Highlight wird global gemerkt sowie fuer Menubox, in der sich das Highlight befindet
	if (this.rahmen[this.dummyExpObj].lastHighed != null && this.rahmen[this.dummyExpObj].lastHighed != this) {
		if ((diesMenu && this.rahmen[this.dummyExpObj].lastHighed.diesMenu == this.rahmen[diesMenu]) || !diesMenu || (diesMenu && this.rahmen[diesMenu].lastHighed && this.diesMenu)){
			this.rahmen[this.dummyExpObj].lastHighed.highLink('L');
			this.rahmen[this.dummyExpObj].lastHighed.diesMenu = null;
		}
		if (diesMenu && this.rahmen[diesMenu].lastHighed && (this.rahmen[diesMenu].lastHighed != this.rahmen[this.dummyExpObj].lastHighed) && (this.rahmen[diesMenu].lastHighed != this)) {
			this.rahmen[diesMenu].lastHighed.highLink('L');
		}
	}
	this.rahmen[this.dummyExpObj].lastHighed = this;
	if (diesMenu) {
		this.rahmen[diesMenu].lastHighed = this;
		this.diesMenu = this.rahmen[diesMenu];
	}
}

// Hinter dem 2.Argument folgen die Indiezes aller Objekte fuer die die Funktion ausgefuehrt werden soll
function highLinkG (modus,objName){
	var i;
	
	for (i = 2; i < highLinkG.arguments.length; i++) {
		if (this[objName + highLinkG.arguments[i]].highFlag == 1) {
			this[objName + highLinkG.arguments[i]].highLink(modus);
		}
	}
}

// Hinter dem 2.Argument folgen die Indiezes aller Objekte fuer die die Funktion ausgefuehrt werden soll
function klappMenuG (modus,objName){
	var i;
	
	for (i = 2; i < klappMenuG.arguments.length; i++) {
		if (this[objName + klappMenuG.arguments[i]].klappFlag == 1) {
			this[objName + klappMenuG.arguments[i]].klappMenu(modus);
		}
	}
}

// Friert das Highlight des geklickten Image-Links ein und taut es wieder auf.
// (Objektmethode eines Linkobjektes)
function selectLink(selectmodus){		
	// Nur einer darf selektiert sein
	if (selectmodus != "check"){
		this.flag = 1;
		if (this.rahmen[this.altItemName] != null && this.rahmen[this.altItemName] != this) {
			this.rahmen[this.altItemName].flag = 0;
			this.rahmen[this.altItemName].highLink("L");
		}
		this.rahmen[this.altItemName] = this;
	}
	else {
		// Unabhaengiges mehrfaches selektieren
		if (this.flag != 1) {
			this.highLink("H");
			this.flag = 1;
		}
		else {
			this.flag = 0;
			this.highLink("L");
		}
		
		this.rahmen[this.altItemName] = new Object();
		this.rahmen[this.altItemName].flag = 1;
		this.rahmen[this.altItemName].selectLink = new Function;
		this.rahmen[this.altItemName].highLink = new Function;
	}
}

// Diese Funktion ruft "selectLink" fuer den angegebenen framePfad und item auf
// Dient in erster Linie als Wrapper beim Aufruf von Linkobjekten in "F"remdframes
function selectFLink (framePfad,itemName,modus) {
	if (modus != "check") {
		if (framePfad.toString().indexOf('object') != -1) {
			eval('framePfad.' + itemName + '.highLink(\'H\',null,' + selectFLink + ')');
		}
		else {
			eval(framePfad  + '.' + itemName + '.highLink(\'H\',null,' + selectFLink + ')');
		}
	}

	if (framePfad.toString().indexOf('object') != -1) {
		eval('framePfad.' + itemName + '.selectLink(\'' + modus + '\')');
	}
	else {
		eval(framePfad  + '.' + itemName + '.selectLink(\'' + modus + '\')');
	}
}

// Setzt die Flags fuer eine Gruppe von LinkObjekten
function setLinkFlags(wert,objName,anzahl){
	var i;
	
	for (i = 0; i < anzahl; i++) {
		this[objName + i + ""].flag = wert;
	}
}

// Formularfelder eines Formulars zuruecksetzen.
// Alle Feldernamen zurueckzusetzender Felder muessen spezifischen Anfangsnamensbestandteil haben
// Aus einem Objekt das die Methode "getWert" besitzen muss ermittelt sich der Wert.
// Aus dem uebergebenen Feldnamen ermittelt die "getWert" Funktion die noetigen
// Angaben um den korrekten Wert fuer das zurueckzusetzende Feld aus dem Objekt zu ermitteln
function resetFormFields(Objekt,formName,fieldName,wertName) {
	var i;
	
	for (i = 0; i < this.document[formName].elements.length; i++) {
		if (this.document[formName].elements[i].name.indexOf(fieldName) == 0) {
			wert = Objekt.getWert(this.document[formName].elements[i].name,wertName);
			this.document[formName].elements[i].value = wert;
		}
	}
}

// Alle Highlightstatus von Image-Linkobjekten zuruecksetzen
function resetImageHighlights(anzahl,linkObjName) {
	for (i=0; i < anzahl; i++) {		
		this["" + linkObjName + i].flag = 1;
		this["" + linkObjName + i].selectLink('check');
	}
}

// Menu kurz mal wegtun
// Methode eines MenuObjektes
function getAway(modus,ausloeseStelle) {
	if (n) {
		if (modus == "W" && this.rahmen[ausloeseStelle].flag != 1) {
			this.visibility = "hide";
		}
		else if (this.rahmen[ausloeseStelle].flag != 1) {
			this.visibility = "show";
		}
	}
	else {
		if (modus == "W") {
			this.style.visibility = "hidden";
		}
		else {
			this.style.visibility = "visible";
		}
	}
}


function lastKlappedNull(dummyExpObj,diesMenu) {
	if (this[dummyExpObj].lastKlapped != null && this[dummyExpObj].lastKlapped != this[diesMenu]) {
		this[dummyExpObj].lastKlapped.klappMenu('H');
	}
}

// Menue aufklappen
function klappMenu(modus,diesMenu){
	var callingFunc;
	
	// Variable wird im Bodytag onmouseover-Handler gesetzt und abgefragt, um ein setTimeout zu steuern
	// Menus verschwinden bei onmouseover dem Body, aber erst nach setTimeout, und dann nur wenn diese 
	// Variable != 1 ist (Das heisst, wenn ich wieder zurueck aufs geklappte Menu komme wird sie wieder
	// auf 0 gesetzt, und Menus klappen nicht weg).
	this.rahmen.dasTimeOut = 0;
	callingFunc = highLink.caller;
	
	if (this.flag != 1) {
		if (!this.rahmen[this.dummyExpObj][0]) {
		}
		else {
			if (this.lastHighed) {
				modus == "H" ? this.lastHighed.highLink('L'):"";
			}
		}
		
		if (n) {			
			modus == "S"?(this.visibility = 'show'):(this.visibility = 'hide');
			modus == "S"?(this.zIndex = 100):(this.zIndex = 99);	
			modus == "S"?(this.klappFlag = 1):(this.klappFlag = 0);						
		}
		else {
			modus == "S"?(this.style.visibility = 'visible'):(this.style.visibility = 'hidden');
			modus == "S"?(this.style.zIndex = 100):(this.style.zIndex = 99);	
			modus == "S"?(this.klappFlag = 1):(this.klappFlag = 0);						
		}
		
		if (!this.rahmen[this.dummyExpObj][0]) {
			// window.event.cancelBubble ist ieFix
			if (ie) {
				(modus == "S" && !callingFunc && this.rahmen.event)?(this.rahmen.event.cancelBubble = true):"";
			}				
			this.dummyExpObj != "" ? this.rahmen[this.dummyExpObj] = this:"";
		}
		else {
			if (ie && diesMenu && this.rahmen[diesMenu].rahmen == this.rahmen) {
				(modus == "S" && !callingFunc && this.rahmen.event)?(this.rahmen.event.cancelBubble = true):"";
			}				
			if (this.rahmen[this.dummyExpObj].lastKlapped != null && this.rahmen[this.dummyExpObj].lastKlapped != this && this.rahmen[this.dummyExpObj].lastKlapped != this.rahmen[diesMenu]) {
				modus == "S" ? this.rahmen[this.dummyExpObj].lastKlapped.klappMenu('H'):"";
			}
			modus == "S" ? this.rahmen[this.dummyExpObj].lastKlapped = this:"";
		}
	}
}

// Menue feststellen
function selectMenu(selectmodus){
	if (selectmodus != "check"){
		this.flag = 1;
		if (this.rahmen[this.altMenuName] != null && this.rahmen[this.altMenuName] != this) {
			this.rahmen[this.altMenuName].flag = 0;
			this.rahmen[this.altMenuName].klappMenu('H',this.dummyExpObj);
		}
		this.rahmen[this.altMenuName] = this;
	}
	else {
		if (this.flag != 1) {
			this.klappMenu('S');
			this.flag = 1;
		}
		else {
			this.flag = 0;
			this.klappMenu('H');
		}
		if (this.altMenuName != "") {
			this.rahmen[this.altMenuName] = new Object();
			this.rahmen[this.altMenuName].flag = 1;
			this.rahmen[this.altMenuName].selectMenu = new Function;
			this.rahmen[this.altMenuName].klappMenu = new Function;
			this.rahmen[this.altMenuName].getAway = new Function;
		}
	}
}

// Diese Funktion ruft selectMenu('check') fuer den angegebenen framePfad und item auf
// Dient in erster Linie als Wrapper beim Aufruf von Linkobjekten in "F"remdframes
function selectFMenu (framePfad,itemName,modus) {
	if (framePfad.toString().indexOf('object') != -1) {
		eval('framePfad.' + itemName + '.selectMenu(\'' + modus + '\')');
	}
	else {
		eval(framePfad  + '.' + itemName + '.selectMenu(\'' + modus + '\')');
	}
}

// Initialisierung der fuer die autoSelect-Funktion noetogen Werte fuer diesen Frame
function initAutoSelect (altItemName,modus) {
	if (!this.autoSelectFor) {
		this.autoSelectFor = new Object();
		this.autoSelectFor.altMenuNames = new Array();
		this.autoSelectFor.altLinkNames = new Array();
	}
		
	switch (modus) {
		case "link":	
			this.autoSelectFor.altLinkNames[this.autoSelectFor.altLinkNames.length] = altItemName;
			this.selectFLink = selectFLink;
			break;
		case "menu":	
			this.autoSelectFor.altMenuNames[this.autoSelectFor.altMenuNames.length] = altItemName;
			this.selectFMenu = selectFMenu;
			break;
	}
}

// Wird von "jumpTo" benutzt.
function autoSelect () {
	var i;
	var j;

	for (i = 0; i < mother.frames.length; i++) {
		if(mother.frames[i].autoSelectFor && mother.frames[i] != this) {
			for (j = 0; j < mother.frames[i].autoSelectFor.altLinkNames.length; j++) {
				this.selectFLink(mother.frames[i],mother.frames[i].autoSelectFor.altLinkNames[j],'check');
			}
			for (j = 0; j < mother.frames[i].autoSelectFor.altMenuNames.length; j++) {
				this.selectFLink(mother.frames[i],mother.frames[i].autoSelectFor.altMenuNames[j],'check');
			}
		}
	}
}

// Dummy, falls keine "winOpen.js" geladen wird
// Die Funktion muss in der winOpen.js ueberschrieben werden
// und definiert zusaetzliche Methoden fuer ein WinWrapperobjekt
function initMethoden() {
}

// Muss statt WinWrapper direkt zu benutzen benutzt werden,
// wenn ein neues Fenster aus einem schon geoeffnetem Fenster
// heraus geoeffnet werden soll
function doWinWrapper(winName) {
	return new WinWrapper(winName);
}

// FensterWrapperKlasse
function WinWrapper(winName){
	var datum = new Date();
	var jahr = datum.getYear();
	
	if (jahr < 1000) {
		jahr += 1900;
	}
	
	this.winName = winName + Date.UTC(jahr, datum.getMonth(), datum.getDate(), datum.getHours(), datum.getMinutes(), datum.getSeconds());
	
	this.thisWin = null;
	this.erzeuger = null;
	this.modus = "";
	this.winArt = "";
	this.weite = "";
	this.hoehe = "";
	this.derAufrufer = this;
	this.closeWin = closeWin;
	this.openWin = openWin;
	this.focusWin = focusWin;
	this.winCloseEvent = winCloseEvent;
	this.initMethoden = initMethoden;
	this.printWin = printWin;
	this.searchWin = searchWin;
	this.initMethoden();
}

// Generische FensterWrapperMethode zum oeffnen und beladen eines offenen Fensters etc.
// Fuer den Aufruf mittels "file://" muss im cgi-bin Ordner unterhalb der ROOT das Perlskript "fileJumper.pl" vorhanden sein!
function openWin(winArt,modus,linkOrt,linkQuell,weite,hoehe,oben,linke,werkzeug,ort,verzeichniss,zustand,menuebar,scrollleiste,veraenderbar,geschichte) {
	var winString;
	var separator;
	var ichFolderURL;
	var sourceURL;

	this.derAufrufer = linkQuell;
	winString = "";
	separator = "";
		
	if (this.derAufrufer.handleClick) {
		this.derAufrufer.handleClick();
	}

	// IE-Fix im Falle von relativem Pfad
	if (linkOrt != "" && linkOrt.match(/^http:\/\//i) == null && linkOrt.match(/^https:\/\//i) == null && linkOrt.match(/^file:\/\//i) == null) {
		if (!n) {
			if (linkQuell.src) {
				ichFolderURL = getFolderURL(linkQuell.src);
			}
			else {
				linkQuell.getFolderURL = getFolderURL;
				ichFolderURL = linkQuell.getFolderURL();
			}
		}
		else {
			if (!linkQuell.self && linkQuell.childSRC) {
				linkQuell.getFolderURL = getFolderURL;
				eval("sourceURL = " + linkQuell.childSRC + ".src;");
				ichFolderURL = linkQuell.getFolderURL(sourceURL);
			}
			else {
				ichFolderURL = "";
			}
		}
	}
	else if (linkOrt.match(/^file:\/\//i) != null) {
		if (n) {
			ichFolderURL = mother.document.location.host + "/cgi-bin/fileJumper.pl?";
		}
		else if (ie) {
			ichFolderURL = "";
		}
	}
	else {
		ichFolderURL = "";
	}
	linkOrt = ichFolderURL + linkOrt;
	
	if ((this.thisWin != null) && (!this.thisWin.closed)) {
		oldPage = this.thisWin.location.href.substring(this.thisWin.location.href.lastIndexOf("/")+1);
		newPage = linkOrt.substring(linkOrt.lastIndexOf("/")+1);
		// Es wird nur der Dateiname verglichen, ohne Pfad...
		if (oldPage != newPage){
			if (weite == this.weite && hoehe == this.hoehe) {
				this.modus = modus;
 				this.winArt = winArt;
				if (this.thisWin.focus) this.thisWin.focus();
				if (linkOrt != "") {
					this.thisWin.location.href = linkOrt;
				}
			}
			else {
				if (this.modus == "closeEvent" && this.derAufrufer.eventAus){
					this.derAufrufer.eventAus("MOUSEMOVE","onmousemove");
				}
				this.thisWin.close();
				this.thisWin = null;
				
				// Nur fuer Microschrott noetig, weil ers sonst nicht packt...
				if (ie){window.open("","dummy","width=100,height=100").close();}
				
				if (winArt != "Full") {
					winString = "toolbar=" + werkzeug + ",location=" + ort + ",directories=" + verzeichniss + ",status=" + zustand + ",menubar=" + menuebar + ",scrollbars=" + scrollleiste + ",resizable=" + veraenderbar + ",copyhistory=" + geschichte + ",width=" + weite + ",height=" + hoehe + ",top=" + oben + ",left=" + linke;
					separator = ",";
				}
				this.thisWin = eval("window.open(linkOrt,this.winName" + separator + "winString);");
				this.erzeuger = self;
				this.modus = modus;
 				this.winArt = winArt;
				this.weite = weite;
				this.hoehe = hoehe;
				if (this.modus == "closeEvent" && this.derAufrufer.eventAn){
					this.derAufrufer.eventAn("MOUSEMOVE","onmousemove",this.winCloseEvent);
				}
				if (this.thisWin.focus) this.thisWin.focus();
			}
		}
		else {
			if (this.thisWin.focus) this.thisWin.focus();
		}
	} 
	else {
		if (winArt != "Full") {
			winString = "toolbar=" + werkzeug + ",location=" + ort + ",directories=" + verzeichniss + ",status=" + zustand + ",menubar=" + menuebar + ",scrollbars=" + scrollleiste + ",resizable=" + veraenderbar + ",copyhistory=" + geschichte + ",width=" + weite + ",height=" + hoehe + ",top=" + oben + ",left=" + linke;
			separator = ",";
		}
		this.thisWin = eval("window.open(linkOrt,this.winName" + separator + "winString);");
		if (linkOrt.match(/^file:\/\//i) == null) {
 			this.erzeuger = self;
 			this.modus = modus;
 			this.winArt = winArt;
			this.weite = weite;
			this.hoehe = hoehe;
			// Hilfsevent um auf das Schließen des Windows durch User reagieren zu koennen
			if (this.modus == "closeEvent" && this.derAufrufer.eventAn){
				this.derAufrufer.eventAn("MOUSEMOVE","onmousemove",this.winCloseEvent);
			}
			if (this.thisWin.focus) this.thisWin.focus();
		}
		else {
			this.derAufrufer.popup = new WinWrapper("FensterEbene2");
		}
		
	}
	
	if (this.derAufrufer.window && this.derAufrufer.window.doHistory && this.modus != "noHistory") {
		if (doHistoryFlag == true) {
			this.derAufrufer.window.doHistory(0,"popup.openWin",openWin.arguments);
		}
		else {
			doHistoryFlag = true;
		}
	}
}

// FensterWrapperMethode zum endgueltigen Schließen des Fensters
function focusWin() {
	if ((this.thisWin != null) && (!this.thisWin.closed)) {
		this.thisWin.focus();
	}
}

// FensterWrapperMethode zum endgueltigen Schließen des Fensters
function closeWin() {
	if ((this.derAufrufer && !this.derAufrufer.opener && mother.popup.thisWin != null) && (!mother.popup.thisWin.closed) && (mother.popup.winArt != "NoClose")) {
		mother.popup.thisWin.close();
		mother.popup.thisWin = null;
	}
	if ((this.thisWin != null) && (!this.thisWin.closed) && (this.winArt != "NoClose")) {
		this.thisWin.close();
		this.thisWin = null;
	}
}

// Allgemeine Methode um ein FensterWrapperFenster zu schliessen, ruft "closeWin" auf
function winClose(framePfad,winName) {
	if (framePfad.toString().indexOf('object') != -1) {
	}
	else {
		eval('framePfadObj = ' + framePfad);
	}
	
	if (framePfadObj && framePfadObj[winName]) {
		framePfadObj[winName].closeWin();
	}
	
}

// Printfunktion: oeffnet ein extra Fenster, generiert dort ein Frameset,
// welches die in aktURL gespeicherte Seite in einen Frame laed.
// Die Seite durchlauft ein Filterprogramm "printFilter.pl" welches
// mit dem Wertnamen "printFileURL" die URL
// der auszudruckenden Datei uebermittelt bekommt.
// Das Filterprogramm muss sich im Verzeichniss "cgi-bin" direkt unterhalb der Root befinden.
// onLoad wird "print()" aufgerufen (nur IE ab 5 und NS ab 4) und onafterprint "close()" (nur IE ab 5);
// Fuer im OneLoadMenu geladene Seiten wird die Standardfunktion "initLocals" als Wrapper
// zur Verfuegung gestellt. Sie ruft die "initLocals" Function im opener-Fenster auf, mit dem Argument
// "PrintWin". Eine solche Funktion muss also vorhanden sein, wenn die mit "aktURL" geladene
// Seite selbst "initLocals" aufruft. In der initLocals Funktion fuer PrintWin koennen Seitenspezifische
// Einstellungen vorgenommen werden, wie z.B. das Laden der richtigen "css", etc.
// Siehe auch "OneLoadMenu"
function printWin (weite,hoehe,links,oben,cgiPath) {
	var absPath;
	var motherHost;
	var motherURL;
	
	motherHost = mother.document.location.host;
	absPath = aktURL.replace(/\//g,"\%2F");
	absPath = absPath.replace(/\:/g,"\%3A");

	this.openWin("Fix","noHistory",'',this.derAufrufer,weite,hoehe,links,oben,0,0,0,0,1,1,0,0);
	this.thisWin.document.writeln('<html\076');
	this.thisWin.document.writeln('<head\076');
	this.thisWin.document.writeln('	<title>PrintWindow</title\076');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('<script language="JavaScript"\076');
	this.thisWin.document.writeln('<!--');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('Kontext = true');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('function initLocals() {');
	this.thisWin.document.writeln('	this.initLocals = parent.top.opener.parent.top.initLocals;');
	this.thisWin.document.writeln('	this.initLocals(\'PrintWin\');');
	this.thisWin.document.writeln('}');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('//--\076');
	this.thisWin.document.writeln('</script\076');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('</head\076');
	if (ie) {
		this.thisWin.document.writeln('	<frameset onafterprint="setTimeout(\'this.close();\',2000);" onLoad="if(' + ExplorerAb5 + ') {this.print();}" rows="100%,*" framespacing="0" border="0"\076');
		this.thisWin.document.writeln('		<frame name="inhalt" src="' + aktURL + '" frameborder="NO" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"\076');
		this.thisWin.document.writeln('		<frame name="dummy" style="display:none;"\076');
	}
	else if (n) {
		this.thisWin.document.writeln('	<frameset onLoad="this.inhalt.print();" rows="100%,*" framespacing="0" border="0"\076');
		this.thisWin.document.writeln('		<frame name="inhalt" src="http://' + motherHost + '/cgi-bin/printFilter.pl?printFileURL=' + absPath + '" frameborder="NO" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"\076');
	}
	this.thisWin.document.writeln('	</frameset\076');
	this.thisWin.document.writeln('</html\076');
	this.thisWin.document.close();
}

function searchWin (winName,styleClass,weite,hoehe,links,oben) {
	this.winName = winName;
	this.openWin("NoClose","noHistory",'',this.derAufrufer,weite,hoehe,links,oben,0,0,0,0,0,0,0,0);
	this.thisWin.document.writeln('<html\076');
	this.thisWin.document.writeln('<head\076');
	this.thisWin.document.writeln('	<title>ResultWindow</title\076');
	this.thisWin.document.writeln('</head\076');
	this.thisWin.document.writeln('<body\076');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('<script language="JavaScript"\076');
	this.thisWin.document.writeln('<!--');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('this.initLocals = parent.top.opener.parent.top.initLocals;');
	this.thisWin.document.writeln('this.initLocals(\'ExtraWinInhalt\');');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('//--\076');
	this.thisWin.document.writeln('</script\076');
	this.thisWin.document.writeln('');
	this.thisWin.document.writeln('<table width="100%" height="100%"\076');
	this.thisWin.document.writeln('<tr\076');
	this.thisWin.document.writeln('<td\076');
	this.thisWin.document.writeln('<table align="center" valign="middle"\076');
	this.thisWin.document.writeln('<tr\076');
	this.thisWin.document.writeln('<td class="' + styleClass + '"\076');
	this.thisWin.document.writeln('Einen Moment Geduld bitte .........');
	this.thisWin.document.writeln('</td\076');
	this.thisWin.document.writeln('</tr\076');
	this.thisWin.document.writeln('</table\076');
	this.thisWin.document.writeln('</td\076');
	this.thisWin.document.writeln('</tr\076');
	this.thisWin.document.writeln('</table\076');
	this.thisWin.document.writeln('</body\076');
	this.thisWin.document.writeln('</html\076');
	this.thisWin.document.close();
}

// Diese Methode funktioniert zur Zeit nur fuer ein einzelnes FensterWrapperobjekt pro Fenster in dem dieses definiert ist.
// Loest Aktionen aus, wenn Benutzer das durch winOpen geoeffnete Fenster schliesst.
// Da das Schliessen selbst kein Event liefert, wird solange das Fenster da ist, ueber "mousemove"
// diese Funktion aufgerufen. Sie stellt dann erst fest, ob das Fenster noch da ist, und tut entsprechendes ;-)
function winCloseEvent() {
	if (this.thisWin == null || this.thisWin.closed) {
		if (this.derAufrufer.derSelector.selectedIndex != this.derAufrufer.derSelector.special[this.derAufrufer.derSelector.special.length-1]) {
			this.derAufrufer.derSelector.selectedIndex = this.derAufrufer.derSelector.special[this.derAufrufer.derSelector.special.length-1];
		}
		this.derAufrufer.eventAus("MOUSEMOVE","onmousemove");
		this.derAufrufer.derSelector.selectPic(this.derAufrufer);
	}
}

// Allgemeine Window/Frame Methoden um Events EventHandlerfunktionen zuzuordnen und sie wieder zu loesen.
function eventAn (eventName,eventHandlerName,eventHandlerFunktion) {
	if (n) {
		this.captureEvents(Event[eventName]);
		this[eventHandlerName] = eventHandlerFunktion;
	}
	else if (ie){
		this.document[eventHandlerName] = eventHandlerFunktion;
	}
}

function eventAus (eventName,eventHandlerName) {
	if (n) {
		this.releaseEvents(Event[eventName]);
	}
	else if (ie){
		this.document[eventHandlerName] = "";
	}
}

// Funktion um einen Link zu realisieren, der mehrere Frames bzw. Netscape-Layer belaedt.
// Argumente muessen wie folgt uebergeben werden, wobei die Anzahl von der Anzahl
// zu beladener Frames abhaengt.
// jumpTo("relativerOderAbsoluterHttpPfadZumZuLadendenDokument,VariablenNameDerVariableDieDenPfadZumFrameSetInDasGeladenWerdenSollEnthaeltOderDieReferenzEinesFrames","...,...",...)
function jumpTo(){
	var linkOrte = new Array();
	var ichFolderURL;
	var loadKlammer;
	var tempURL;
	var menuBarIndex;
	var frameObj;
	var jumpToArguments = new Array();
	var hasHistory = false;
	
	if (!this.setJumpToLink){
		this.setJumpToLink = setJumpToLink;
	}
	
	if (this.autoSelect) {
		this.selectFLink = selectFLink;
		this.autoSelect();
	}	
	
	if (this.src) {
		this.getFolderURL = getFolderURL;
		ichFolderURL = this.getFolderURL(this.src);
	}
	else {
		this.getFolderURL = getFolderURL;
		ichFolderURL = this.getFolderURL();
	}
	
	if (this.handleClick) {
		this.handleClick();
	}

	for (i = 0; i < jumpTo.arguments.length; i++) {
		linkOrte[i] = jumpTo.arguments[i].split(",");
				
		ichFolderURL = (linkOrte[i][0].match(/^http:\/\//i) == null && linkOrte[i][0].match(/^https:\/\//i) == null) ? ichFolderURL : "";
		
		if (this[linkOrte[i][1]].toString().indexOf('object') != -1) {
			frameObj = this[linkOrte[i][1]];
		}
		else {
			eval("frameObj = " + this[linkOrte[i][1]] + ";");
		}

		if(frameObj.doHistory) {
			jumpToArguments[jumpToArguments.length] = ichFolderURL + jumpTo.arguments[i];
			hasHistory = frameObj;
		}

		if (this.setJumpToLink(frameObj,ichFolderURL,linkOrte)) {
			continue;
		}
								
		if(!linkOrte[i][2]) {
			if (frameObj.src) {
				loadKlammer = "'";
				linkOrte[i][2] = "src= '";
			}
			else {
				loadKlammer = "'";
				linkOrte[i][2] = "location.href = '";
			}
		}
		else if (linkOrte[i][2] == "load") {
			loadKlammer = "','100%')";
			linkOrte[i][2] += "('";
		}
		else  if (linkOrte[i][2] == "src") {
			loadKlammer = "'";
			linkOrte[i][2] += "= '";
		}
		else  if (linkOrte[i][2] == "href") {
			loadKlammer = "'";
			linkOrte[i][2] = "location." + linkOrte[i][2] + " = '";
		}
		
		for (j = 0; j < frameObj.document.links.length; j++) {
			frameObj.document.links[j].onclick = null;
		}
		
		eval('frameObj.' + linkOrte[i][2] + ichFolderURL + linkOrte[i][0] + loadKlammer);
		
		if (!n && !ExplorerAb5) {
			such = linkOrte[i][0].substring(linkOrte[i][0].indexOf("?"));
			(such > 0) ? eval(this[linkOrte[i][1]] + '.wert = "' + such + '"'):"";
		}
	}
	
	if (hasHistory) {
		if (doHistoryFlag == true) {
			hasHistory.doHistory(0,"jumpTo",jumpToArguments);
		}
		else {
			doHistoryFlag = true;
		}
	}

}

// Erwartet als Argument einen kompletten HTTP-Filepfad als Textstring und global einen ab dem Index 1 zweidimensionalen Array
// Der Array in der 2. Dimension hat jeweils zwei Felder: Name oberstes Hauptmenuverzeichniss und zugehoeriger MenuLinkIndex
// Index 0 hat als Wert den Namen der Framevariablen fuer den Hauptmenuframe.
// Setzt beim OneloadMenu die Highlights bei Links von anderen Stellen als den Untermenus,
// wenn die neu geladene Seite einem anderen Hauptmenupunkt angehoert.
// Ebenso bei einem "Zurueck" wenn die vorhergehende Seite einem anderen Hauptmenupunkt angehoert
// Dies allerdings nur bei IE
function searchMenu(fileName,frameName){
	var i,j,menuBarIndex,frameObj,tempFrameObj,laenge,laenge2,tempFileName;
	
	tempFileName = getFolderURL(fileName);

	if (menuArray) {
		for (j = 0; j < menuArray.length; j++) {
			if (menuArray[j][0] == frameName || !frameName) {
				for (i = 1; i < menuArray[j].length; i++) {
					
					if (getFolderURL(menuArray[j][i][0]) != menuArray[j][i][0]) {
						laenge1 = menuArray[j][i][0].length;
						laenge2 = fileName.length;
						if (fileName.substring((laenge2 - laenge1)) == menuArray[j][i][0]) {
							menuBarIndex = (menuArray[j][i][1]);
							break;
						}
					}
					else {
						laenge1 = menuArray[j][i][0].length;
						laenge2 = tempFileName.length;
						if (tempFileName.substring((laenge2 - laenge1)) == menuArray[j][i][0]) {
							menuBarIndex = (menuArray[j][i][1]);
							break;
						}
					}
						
				}
				if (menuBarIndex != null) {
					this.selectFLink = selectFLink;
					
					eval("frameObj = this." + menuArray[j][0] + ";");
					
					if (frameObj.toString().indexOf('object') != -1) {
					}
					else {
						eval("tempFrameObj = this." + menuArray[j][0] + ";");
						eval("frameObj = " + tempFrameObj + ";");
					}

					if (frameObj && frameObj.itemName) {
						this.selectFLink (frameObj,(frameObj.itemName + menuBarIndex));
					}
					break;
				}
			}
		}
	}
}

// Wird nur von "jumpTo" benutzt
function setJumpToLink (quelle,ichFolderURL,linkOrte) {
	var quellOrt;
	
	if(quelle.location) {
		quellOrt = quelle.location.href;
	}
	else if (quelle.src) {
		quellOrt = quelle.src;
	}

	if (quellOrt.lastIndexOf((ichFolderURL + linkOrte[i][0])) != -1) {
		if(quelle.altItemName) {
			this.selectFLink = selectFLink;
			this.selectFLink (quelle,quelle.altItemName,"check");
		}
		return true;
	}
	return false;
}

// Windowmethode
// Gibt den URL-Pfad zum Ordner des gerade in dieses Window geladenen Dokumentes zurueck
// Oder den Pfadanteil eines beliebiegen Dateipfades
function getFolderURL(sourceURL) {
	if (sourceURL) {
		return sourceURL.substring(0,(sourceURL.lastIndexOf("/") + 1));
	}
	else {
		return this.location.href.substring(0,(this.location.href.lastIndexOf("/") + 1));
	}
}

// Liefert den Dateinamenbestandteil aus einem kompletten DateisystemPfad
// Ist pfadName leer ist der Dateiname der Name des gerade geladenen Dokumentes
function getFileName(pfadName) {
	if (pfadName && pfadName.indexOf("\\") != -1) {
		return pfadName.substring((pfadName.lastIndexOf("\\") + 1));
	}
	else if (pfadName){
		return pfadName.substring((pfadName.lastIndexOf("/") + 1));
	}
	else {
		return this.location.href.substring((this.location.href.lastIndexOf("/") + 1));
	}
}

// Legt einen an das aufrufende Dokument uebergebenen Suchstring
// in der Variablen "wert" ab
// Dieser ist dann im Dokument verfuegbar.
function getSearchValue() {
	if(n || ExplorerAb5) {
		this.wert = this.document.location.search.substring(1);
	}
	else {
		this.wert = such;
	}
}

// Steuert die Aufschrift eines Buttons
function changeButt(buttonObj,buttonValue1,buttonValue2) {
	if (buttonObj.value == buttonValue1) {
		buttonObj.value = buttonValue2;
	}
	else {
		buttonObj.value = buttonValue1;
	}
}

function doHistory(direction,func,funcArgs) {
	var position;
	
	if (!this.jumpAgain) {
		this.jumpAgain = jumpAgain;
	}
	
	switch (direction) {
		case 0:
			actionHistoryMaxPos = actionHistoryPosition + 1;
			actionHistoryPosition = actionHistoryMaxPos;
			navigateActionHistory[actionHistoryMaxPos] = actionHistory.length;
			actionHistory[actionHistory.length] = new Array(mother,func,funcArgs);
			break;
		case -1:
			if ((actionHistoryPosition - 1) >= 0) {
				position = navigateActionHistory[actionHistoryPosition - 1];
				actionHistoryPosition--;
				doHistoryFlag = false;
				this.jumpAgain(actionHistory[position][0],actionHistory[position][1],actionHistory[position][2]);
			}
			break;
		case 1:
			if (actionHistoryPosition < actionHistoryMaxPos) {
				position = navigateActionHistory[actionHistoryPosition + 1];
				actionHistoryPosition++;
				doHistoryFlag = false;
				this.jumpAgain(actionHistory[position][0],actionHistory[position][1],actionHistory[position][2]);
			}
			break;
	}
}

// Wird von der Historyfunktion benutzt
function jumpAgain (frameWinObj,func,funcArgs) {
	var i;
	var trenner;
	var funcArgsString = "";

	for (i = 0; i < funcArgs.length; i++) {
		trenner = (i < (funcArgs.length - 1)) ? "," : "";
		funcArgsString += "'" + funcArgs[i] + "'" + trenner;
	}
	eval("frameWinObj." + func + "(" + funcArgsString + ")");
}
