//------------------------------------------------ copyright by base factory (2003) -------
//-- Klasse: NavRepository
//-----------------------------------------------------------------------------------------

//-- Konstruktormethode.
function NavRepository() {
	this.NavPkte = new Array();
	this.Anz = -1;
	this.TmpEltern = new Array();
	this.TmpEbene = -1;
	this.AktDoku = -1;
	this.AktAst = new Array();
}

//-- Methode 'add()'.
function NavRepository_add( ebene, hatSub, bez, url, info, ziel ) {

	var elternRef = null;
	if ( this.TmpEbene < ebene ) {
		//-- Es geht eine Ebene höher. Neuer Eintrag im temp. ElternArray:
		this.TmpEltern[ebene] = this.Anz;
	}

	if ( ebene > 0 ) {
		elternRef = this.NavPkte[this.TmpEltern[ebene]];
	}

	this.TmpEbene = ebene;
	this.Anz = this.Anz + 1;	//-- Index des neuen NavItem.
	this.NavPkte[this.Anz] = new NavItem( this.Anz, ebene, hatSub, bez, url, info, ziel, elternRef, this );
}

//-- Methode 'getItem()'.
function NavRepository_getItem( idx ) {
	return this.NavPkte[idx];
}

//-- Methode 'getAnzahl()'.
function NavRepository_getAnzahl() {
	return this.Anz;
}

//-- Methode 'setAktAst()'.
function NavRepository_setAktAst( ebene, idx ) {
	this.AktAst[ebene] = idx;
}

//-- Methode 'setAktDoku()'.
function NavRepository_setAktDoku( idx ) {
	this.AktDoku = idx;
}

//-- Methode 'ermittleAktElternZurEbene()'.
function NavRepository_ermittleAktElternZurEbene( ebene ) {
	var ret = -1;
	if ( ebene > 0 ) { ret = this.AktAst[ebene - 1]; }
	return ret;
}

//-- Methode 'waehleItem()'.
function NavRepository_waehleItem( idx ) {
	this.NavPkte[idx].waehlePage();
}

//-- Klassen-Methoden der Klasse (Prototyp) bekannt geben.
NavRepository.prototype.add = NavRepository_add;
NavRepository.prototype.getItem = NavRepository_getItem;
NavRepository.prototype.getAnzahl = NavRepository_getAnzahl;
NavRepository.prototype.setAktAst = NavRepository_setAktAst;
NavRepository.prototype.setAktDoku = NavRepository_setAktDoku;
NavRepository.prototype.ermittleAktElternZurEbene = NavRepository_ermittleAktElternZurEbene;
NavRepository.prototype.waehleItem = NavRepository_waehleItem;


//-----------------------------------------------------------------------------------------
//-- Klasse: NavItem
//-----------------------------------------------------------------------------------------

//-- Konstruktormethode.
function NavItem(	idx,
					ebene,
					hatSub,
					name,
					url,
					info,
					ziel,
					elternRef,
					repRef		) {
	this.Idx = idx;
	this.Ebene = ebene;
	if ( hatSub == 1 ) { this.HatSub = true; }
	else { this.HatSub = false; }
	this.Name = name;
	this.Url = url;
	this.Info = info;
	this.Ziel = ziel;
	this.Aufgeklappt = false;
	this.Angezeigt = false;
	this.ElternRef = elternRef;
	this.RepRef = repRef;
	this.Kinder = new Array();
	this.AnzKinder = 0;

	//-- Handelt es sich hier um das aktive Dokument, dann aktiven Ast zusammenstellen.
	if ( this.Url == NavItem.AKT_DOKU ) {
		this.Angezeigt = true;
		this.RepRef.setAktDoku( this.Idx );
		this.fuelleAktAst();
	}

	//-- Sich selbst im ElternItem als Kind eintragen.
	if ( this.ElternRef != null ) {
		this.ElternRef.addKind( this.Idx );
	}
}

//-- Klassenvariablen.
NavItem.IMG_PFAD = "";
NavItem.AKT_DOKU = "";
NavItem.SYMBOL_B = 0;
NavItem.SYMBOL_H = 0;
NavItem.NAV_AUF = false;

//-- Methode 'addKind()'.
function NavItem_addKind( idx ) {
	this.Kinder[this.AnzKinder] = idx;
	this.AnzKinder = this.AnzKinder + 1;
}

//-- Methode 'getEbene()'.
function NavItem_getEbene() {
	return this.Ebene;
}

//-- Methode 'getAnzKinder()'.
function NavItem_getAnzKinder() {
	return this.AnzKinder;
}

//-- Methode 'getEltern()'.
function NavItem_getEltern() {
	return this.ElternRef;
}

//-- Methode 'getKind()'.
function NavItem_getKind( idx ) {
	return this.RepRef.getItem( this.Kinder[idx] );
}

//-- Methode 'getUrl()'.
function NavItem_getUrl() {
	return this.Url;
}

//-- Methode 'getName()'.
function NavItem_getName() {
	return this.Name;
}

//-- Methode 'getIdx()'.
function NavItem_getIdx() {
	return this.Idx;
}

//-- Methode 'getLink()'.
function NavItem_getLink( kl, kl_akt ) {

	var ret = '<a href="javascript:navPunkte.waehleItem(' + this.Idx + ')" class="';

	if ( typeof kl == "undefined" ) { kl = "nav_" + this.Ebene; }	//-- Klasse für Normal-Schrift.
	if ( typeof kl_akt == "undefined" ) { kl_akt = "navAkt_" + this.Ebene; } //-- Klasse für Aktiv-Schrift.

	if ( this.Aufgeklappt || this.Angezeigt ) {
		ret += kl_akt + '"';
	} else {
		ret += kl + '"';
		ret += ' onMouseOver="this.className=\'' + kl_akt + '\'"';
		ret += ' onMouseOut="this.className=\'' + kl + '\'"';
	}

	ret += '>' + this.Name + '</a>';
	return ret;
}

//-- Methode 'getEinzug()'.
function NavItem_getEinzug( einheit ) {
	var ret = "";
	if ( einheit > 0 ) {
		ret = '<img src="' + NavItem.IMG_PFAD + 'transPix.gif" border="0" height="1" width="' + ( this.Ebene * einheit ) + '">';
	}
	return ret;
}

//-- Methode 'getSymbol()'.
function NavItem_getSymbol( mitFkt ) {

	var beginMit = "";
	var endeMit = "";
	var aktSym = "";
	var subSym = "";

	if ( this.Ebene > 0 ) {
		if ( typeof mitFkt != "undefined" && mitFkt ) {
			beginMit = '<a href="javascript:navPunkte.waehleItem(' + this.Idx + ')">';
			endeMit = '</a>';
		}
	
		if ( this.Aufgeklappt || this.Angezeigt ) { aktSym = "Akt"; }
	
		if ( this.HatSub ) {
			subSym = "Zu";
			if ( this.Aufgeklappt ) { subSym = "Auf"; }
		}
	
		return beginMit + '<img src="' + NavItem.IMG_PFAD + 'nav' + subSym + aktSym + this.Ebene + '.gif" border="0" height="' + NavItem.SYMBOL_H + '" width="' + NavItem.SYMBOL_B + '">' + endeMit;
	} else {
		return "";
	}	
}

//-- Methode 'istAktiv()'.
function NavItem_setAufgeklappt( wert ) {
	this.Aufgeklappt = wert;
}

//-- Methode 'istAktiv()'.
function NavItem_istAufgeklappt() {
	return this.Aufgeklappt;
}

//-- Methode 'wirdAngezeigt()'.
function NavItem_wirdAngezeigt() {
	return this.Angezeigt;
}

//-- Methode 'hatSub()'.
function NavItem_hatSub() {
	return this.HatSub;
}

//-- Methode 'fuelleAktAst()'.
function NavItem_fuelleAktAst() {
	//-- Darf nicht in den Ast, wenn es das angezeigte Dokument ist und es nicht aufgeklappt werden soll.
	//-- Befindet es sich hingegen auf der ersten der anzuzeigenden Ebene, muss es auf jeden Fall in den Ast.
	if ( !this.Angezeigt || (NavItem.NAV_AUF && this.Angezeigt) || (anzeigenAbEbene - 1) == this.Ebene ) {
		this.RepRef.setAktAst( this.Ebene, this.Idx );
		this.Aufgeklappt = true;
	}
	//-- Falls ein Eltern-Item existiert, wird der Auftrag weitergereicht.
	if ( this.ElternRef != null ) {
		this.ElternRef.fuelleAktAst();
	}
}

//-- Methode 'ermittleElternIdx()'.
function NavItem_ermittleElternIdx() {
	var ret = "-1";
	//-- Falls ein Eltern-Item existiert, wird der Auftrag weitergereicht.
	if ( this.ElternRef != null ) {
		ret = this.ElternRef.Idx;
	}
	return ret;
}

//-- Methode 'waehlePage()'.
function NavItem_waehlePage() {
	if ( typeof istVorschau != "undefined" && istVorschau ) {
		alert("Go to Page \"" + this.Name + "\".\n\nSorry, not by Editing.");
	} else {
		if ( this.Ziel == "_blank" ) {
			window.open( this.getUrl(), "" );
		} else {
			var navAuf = "";
			if ( this.HatSub && !this.Aufgeklappt ) { navAuf += "navAuf=ja&"; }
			window.location.href =  this.getUrl() + "?" + navAuf;
		}
	}
}

//-- Klassen-Methoden der Klasse (Prototyp) bekannt geben.
NavItem.prototype.addKind = NavItem_addKind;
NavItem.prototype.getEbene = NavItem_getEbene;
NavItem.prototype.getAnzKinder = NavItem_getAnzKinder;
NavItem.prototype.getEltern = NavItem_getEltern;
NavItem.prototype.getKind = NavItem_getKind;
NavItem.prototype.getUrl = NavItem_getUrl;
NavItem.prototype.getName = NavItem_getName;
NavItem.prototype.getIdx = NavItem_getIdx;
NavItem.prototype.getLink = NavItem_getLink;
NavItem.prototype.getEinzug = NavItem_getEinzug;
NavItem.prototype.getSymbol = NavItem_getSymbol;
NavItem.prototype.setAufgeklappt = NavItem_setAufgeklappt;
NavItem.prototype.istAufgeklappt = NavItem_istAufgeklappt;
NavItem.prototype.hatSub = NavItem_hatSub;
NavItem.prototype.wirdAngezeigt = NavItem_wirdAngezeigt;
NavItem.prototype.fuelleAktAst = NavItem_fuelleAktAst;
NavItem.prototype.ermittleElternIdx = NavItem_ermittleElternIdx;
NavItem.prototype.waehlePage = NavItem_waehlePage;
