// BrowserChecks
var w3c = (typeof(document.getElementById) != 'undefined') ? 1 : 0;
var ie5plus = ((typeof(document.getElementById) != 'undefined') && (document.all)) ? 1 : 0;
var ns6 = ((navigator.userAgent.indexOf('Netscape6') != -1) && (typeof(document.getElementById) != 'undefined')) ? 1 : 0;
var ns7 = ((navigator.userAgent.indexOf('Netscape7') != -1) && (typeof(document.getElementById) != 'undefined')) ? 1 : 0;
var moz = ((navigator.userAgent.indexOf('Gecko') != -1) && (typeof(document.getElementById) != 'undefined')) ? 1 : 0;
var ie4plus = (document.all) ? 1 : 0;
var ns4 = (document.layers) ? 1 : 0;
var opera = (navigator.userAgent.indexOf('Opera') != -1) ? 1 : 0;
var ie5 = (navigator.userAgent.indexOf('MSIE 5.0') != -1) ? 1 : 0;
var ie4 = (navigator.userAgent.indexOf('MSIE 4') != -1) ? 1 : 0;

var MasterKat;
var LastOpenKatNummer = new Array;
var LastMarkAsOpenNummer;
var LastMark;
var LastMarkOldClassName;

// Standardwerte fr Konfigurations-Optionen */
if (typeof(Einzug) == 'undefined') var Einzug = 14;
if (typeof(AufklappenBis) == 'undefined') var AufklappenBis = 10;
if (typeof(AlleAufgeklappt) == 'undefined') var AlleAufgeklappt = false;
if (typeof(MehrereKatsOffen) == 'undefined') var MehrereKatsOffen = true;
if (typeof(KlickKatOffen) == 'undefined') var KlickKatOffen = true;
if (typeof(Bez1Anzeigen) == 'undefined') var Bez1Anzeigen = false;
if (typeof(Bez1BR) == 'undefined') var Bez1BR = false;
if (typeof(IsKatUebersicht) == 'undefined') var IsKatUebersicht = false;
if (typeof(Border) == 'undefined') var Border = 0;
if (typeof(MainFrame) == 'undefined') var MainFrame = 'mainframe';
if (typeof(AutoScroll) == 'undefined') var AutoScroll = false;
if (typeof(MenuBildanzeige) == 'undefined') var MenuBildanzeige = false;
if (typeof(KatBildanzeige) == 'undefined') var KatBildanzeige = false;

// Standard-Bilder
if (typeof(GfxPlus) == 'undefined' || GfxPlus == '') GfxPlus = 'jsmenu_plus.gif';
if (typeof(GfxMinus) == 'undefined' || GfxMinus == '') GfxMinus = 'jsmenu_minus.gif';
if (typeof(GfxNormal) == 'undefined' || GfxNormal == '') GfxNormal = 'jsmenu_normal.gif';
if (typeof(GfxPlusSub) == 'undefined' || GfxPlus == '') GfxPlusSub = 'jsmenu_minipfeil_plus.gif';
if (typeof(GfxMinusSub) == 'undefined' || GfxMinusSub == '') GfxMinusSub = 'jsmenu_minipfeil_minus.gif';
if (typeof(GfxNormalSub) == 'undefined' || GfxNormalSub == '') GfxNormalSub = 'jsmenu_minipfeil_normal.gif';
if (typeof(GfxKatNormal) == 'undefined' || GfxKatNormal == '') GfxKatNormal = 'jsmenu_katuebersicht.gif';
if (typeof(GfxKatNormalSub) == 'undefined' || GfxKatNormalSub == '') GfxKatNormalSub = 'jsmenu_katuebersicht.gif';

// Image Preloader
(new Image()).src = ibis_PicturePath + '/' + GfxPlus;

(new Image()).src = ibis_PicturePath + '/' + GfxMinus;
(new Image()).src = ibis_PicturePath + '/' + GfxNormal;
(new Image()).src = ibis_PicturePath + '/' + GfxPlusSub;
(new Image()).src = ibis_PicturePath + '/' + GfxMinusSub;
(new Image()).src = ibis_PicturePath + '/' + GfxNormalSub;
(new Image()).src = ibis_PicturePath + '/' + GfxKatNormal;
(new Image()).src = ibis_PicturePath + '/' + GfxKatNormalSub;

// In der Katalogbersicht wird immer der ganze Baum aufgeklappt
if (IsKatUebersicht) AlleAufgeklappt = true;


if (typeof(Kataloge) == 'undefined') 
{
	if (typeof(parent.menu.Kataloge) != 'undefined')
		var Kataloge = parent.menu.Kataloge;
	else
		var Kataloge = new Array;
}


function AddME(Katalognummer, Name1, Bezeichnung1, Ebene, Oberkatalog, Anzeigen, Bild) 
{
	
	Kataloge[Katalognummer] = new MenueEintrag(Katalognummer, Name1, Bezeichnung1, '', Oberkatalog, Anzeigen, Bild);
	Kataloge[Katalognummer].Ebene = Ebene;
	
	if (StartKatalog == Katalognummer) return;
	
	if (Kataloge[Oberkatalog])
	{
		Kataloge[Oberkatalog].Unterkataloge[Kataloge[Oberkatalog].Unterkataloge.length] = Katalognummer;
		Kataloge[Oberkatalog].HatUnterkataloge = true;
	}
}


function GenerateKatalogDatabase()
{
	var KatsEbene1 = new Array; 
	var OberKat;
    
	Kataloge["00000"] != void 0 ? MasterKat = "00000" : MasterKat = "0000000000";				// OL oder CL?
	for (var Item in Kataloge)
	{
		if (Item == MasterKat) continue;
		
		OberKat = Kataloge[Item].Oberkatalog

		if (OberKat == MasterKat) 			// Kataloge der ersten Ebene suchen (Hauptkataloge)
		{
			Kataloge[Item].Ebene = 1;
			Kataloge[Item].Ready = true;
			KatsEbene1[Item] = Kataloge[Item];
			
			Kataloge[MasterKat].HatUnterkataloge = true;
			Kataloge[MasterKat].Unterkataloge[Kataloge[MasterKat].Unterkataloge.length] = Item;
		}

	}

	GenerateKat(KatsEbene1);				// Unterkataloge rekursiv generieren
}	

function GenerateKat(Kats)
{
	var OberKat;
	var EbenenKats = new Array;
	var Counter = 0;
	
	for (var Temp in Kataloge) {	
		if ((Kataloge[Temp].Ready) || (Temp == MasterKat)) continue;
		
		OberKat = Kataloge[Temp].Oberkatalog;
		
		if (typeof(Kats[OberKat]) != 'undefined') {
			Kataloge[Temp].Ebene = Kataloge[OberKat].Ebene + 1;
			Kataloge[Temp].Ready = true;
			
			Kataloge[OberKat].HatUnterkataloge = true;
			Kataloge[OberKat].Unterkataloge[Kataloge[OberKat].Unterkataloge.length] = Temp;
			
			EbenenKats[Temp] = Kataloge[Temp];
			Counter += 1;
		}
	}

	if (Counter > 0) GenerateKat(EbenenKats);
}

function GenerateKatalog(Nummer, Init)
{
	var Unterkataloge = Kataloge[Nummer].Unterkataloge;
	var IsHauptPunkt = false;
	var KatZeile = '';
	var KatNummerString;
	var KatEinzug;

	// Alle Unterkataloge des zu generierenden Oberkataloges durchlaufen
	for (var i=0; i < Unterkataloge.length; i++) {
		// Katalognummern immer mit fhrenden Nullen auf die L?e des Masterkatalogs (OL oder CL) erweitern
		KatNummerString = Unterkataloge[i].toString();
		while (KatNummerString.length < MasterKat.length) KatNummerString = '0' + KatNummerString;
				
		// Einzug berechnen
		KatEinzug = Einzug * (Kataloge[Unterkataloge[i]].Ebene - Kataloge[MasterKat].Ebene - 1);
		if (KatEinzug < 0) KatEinzug = 0;
		
		// Ist der aktuelle Eintrag ein Hauptpunkt (Ebene = 1) oder ein Unterpunkt (Ebene > 1)?
		IsHauptPunkt = (Kataloge[Unterkataloge[i]].Ebene == 1);

		if (IsKatUebersicht)	{
			// Bilder dem zuweisen (fr Katalogbersicht)
			Kataloge[Unterkataloge[i]].PlusBild = ibis_PicturePath + '/' + (!IsHauptPunkt ? GfxKatNormalSub : GfxKatNormal);
			Kataloge[Unterkataloge[i]].MinusBild = ibis_PicturePath + '/' + (!IsHauptPunkt ? GfxKatNormalSub : GfxKatNormal);
			Kataloge[Unterkataloge[i]].NormalBild = ibis_PicturePath + '/' + (!IsHauptPunkt ? GfxKatNormalSub : GfxKatNormal);
		}
		else {
			if (!IsHauptPunkt) {
				// Bilder zuweisen (fr Unterpunkte)
				Kataloge[Unterkataloge[i]].PlusBild = ibis_PicturePath + '/' + GfxPlusSub;
				Kataloge[Unterkataloge[i]].MinusBild = ibis_PicturePath + '/' + GfxMinusSub;
				Kataloge[Unterkataloge[i]].NormalBild = ibis_PicturePath + '/' + GfxNormalSub;
			}
			else {
				// Bilder zuweisen (fr Hauptpunkte)
				Kataloge[Unterkataloge[i]].PlusBild = ibis_PicturePath + '/' + GfxPlus;
				Kataloge[Unterkataloge[i]].MinusBild = ibis_PicturePath + '/' + GfxMinus;
				Kataloge[Unterkataloge[i]].NormalBild = ibis_PicturePath + '/' + GfxNormal;
			}
		}

		if (IsKatUebersicht) {
			TempStylePunktKomplett = 'JSMenu-KatUebersicht-Hauptpunkt-Komplett';
			TempStylePunktSpacer = 'JSMenu-KatUebersicht-Hauptpunkt-Spacer';
			TempStylePunkt = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt' : 'JSMenu-KatUebersicht-Hauptpunkt';
			TempStylePic = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt-KatalogPic' : 'JSMenu-KatUebersicht-Hauptpunkt-KatalogPic';
			TempStyleBez1 = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt-Bez1' : 'JSMenu-KatUebersicht-Hauptpunkt-Bez1';
			TempStyleName1Bez1 = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt-Name1Bez1' : 'JSMenu-KatUebersicht-Hauptpunkt-Name1Bez1';
			TempStyleName1 = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt-Name1' : 'JSMenu-KatUebersicht-Hauptpunkt-Name1';
			TempStyleBorderLeft = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt-BorderLeft' : 'JSMenu-KatUebersicht-Hauptpunkt-BorderLeft';
			TempStyleBorderRight = !IsHauptPunkt ? 'JSMenu-KatUebersicht-Unterpunkt-BorderRight' : 'JSMenu-KatUebersicht-Hauptpunkt-BorderRight';
		}
		else {
			if (!AlleAufgeklappt) {
				TempStylePunktKomplett = "JSMenu-Hauptpunkt-Komplett";
				TempStylePunkt = !IsHauptPunkt ? 'JSMenu-Unterpunkt' : 'JSMenu-Hauptpunkt';
			}
			else {
				TempStylePunktKomplett = "JSMenu-Hauptpunkt-Komplett-Aufgeklappt";
				TempStylePunkt = !IsHauptPunkt ? 'JSMenu-Unterpunkt' : 'JSMenu-Hauptpunkt-Aufgeklappt';
			}

			// CCS-Stile ausw?en, jenachdem ob der Katalog Unterpunkt oder ein Hauptpunkt ist
			TempStylePunktSpacer = 'JSMenu-Hauptpunkt-Spacer';
			TempStylePic = !IsHauptPunkt ? 'JSMenu-Unterpunkt-KatalogPic' : 'JSMenu-Hauptpunkt-KatalogPic';
			TempStyleBez1 = !IsHauptPunkt ? 'JSMenu-Unterpunkt-Bez1' : 'JSMenu-Hauptpunkt-Bez1';
			TempStyleName1Bez1 = !IsHauptPunkt ? 'JSMenu-Unterpunkt-Name1Bez1' : 'JSMenu-Hauptpunkt-Name1Bez1';
			TempStyleBorderLeft = !IsHauptPunkt ? 'JSMenu-Unterpunkt-BorderLeft' : 'JSMenu-Hauptpunkt-BorderLeft';
			TempStyleBorderRight = !IsHauptPunkt ? 'JSMenu-Unterpunkt-BorderRight' : 'JSMenu-Hauptpunkt-BorderRight';

			// Zuletzt gew?ten Katalog beim erneuten generieren wieder ausw?en
			if (Unterkataloge[i] == LastMarkAsOpenNummer) {
				TempStyleName1 = !IsHauptPunkt ? 'JSMenu-Unterpunkt-Name1-Sel' : 'JSMenu-Hauptpunkt-Name1-Sel';
			}
			else {
				if (!AlleAufgeklappt || (!Kataloge[Unterkataloge[i]].HatUnterkataloge && AlleAufgeklappt)) {
					TempStyleName1 = !IsHauptPunkt ? 'JSMenu-Unterpunkt-Name1' : 'JSMenu-Hauptpunkt-Name1';
				}
				else {
					TempStyleName1 = !IsHauptPunkt ? 'JSMenu-Unterpunkt-Name1-Aufgeklappt' : 'JSMenu-Hauptpunkt-Name1-Aufgeklappt';
				}
			}
		}

		// Nur ausfhren, wenn das Men zum erten Mal generiert wird
		if (Init) {
			KatZeile += '<tr>';
			KatZeile += '<td>';
		}

		if (IsHauptPunkt) {
			// Spacer zwischen den Hauptpunkten
			KatZeile += '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
			KatZeile += '<tr><td class="' + TempStylePunktSpacer + '"></td></tr>';
			KatZeile += '</table>';

			// Tabellenstart
			KatZeile += '<table border="0" cellpadding="0" cellspacing="0" width="100%" id="' + Unterkataloge[i] + '" class="' + TempStylePunktKomplett + '">';
			KatZeile += '<tr><td>';
		}

		// Start Hauptpunkt oder Unterpunkt
		KatZeile += '<table border="0" cellpadding="0" cellspacing="0" width="100%" id="Pkt_' + Unterkataloge[i] + '" class="' + TempStylePunkt + '">';
		KatZeile += '<tr>';
		
		// Linker Rand
		KatZeile += '<td valign="top" class="' + TempStyleBorderLeft + '"><img src="' + ibis_PicturePath + '/spacer.gif" width="0" height="0"></td>';
					
		// Einzug
		if (KatEinzug > 0) KatZeile += '<td class="JSMenu-Unterpunkt-Einzug"><img src="' + ibis_PicturePath + '/spacer.gif" width="' + KatEinzug + '" height="1"></td>';
		
		// Bild
		KatZeile += '<td valign="top" class="' + TempStylePic + '">';
	
		if ((Kataloge[Unterkataloge[i]].HatUnterkataloge) && (Kataloge[Unterkataloge[i]].Ebene <= AufklappenBis - 1) && (!AlleAufgeklappt)) 
			KatZeile += '<img src="' + Kataloge[Unterkataloge[i]].PlusBild + '" style="cursor:pointer; cursor:hand" onMouseOver="SetStatusZeile(\'' + KatNummerString + '\'); return true;" onMouseOut="ClearStatusZeile();" onClick="OpenCloseKat(\'' + KatNummerString + '\'); return true;" id="Bild_' + Unterkataloge[i] + '">';
		else
		    KatZeile += '<img src="' + Kataloge[Unterkataloge[i]].NormalBild + '" onMouseOver="ClearStatusZeile();">';
		KatZeile += '</td>';	
		if ((Kataloge[Unterkataloge[i]].Bild != '') && (typeof(Kataloge[Unterkataloge[i]].Bild) != 'undefined' ) && (((MenuBildanzeige) && (!IsKatUebersicht)) || ((KatBildanzeige) && (IsKatUebersicht)))) 
		         KatZeile += '<td><img src="'  + ibis_IconPicturePath + '/' + Kataloge[Unterkataloge[i]].Bild + '"></td>';
		
		// Link
		KatZeile += '<td valign="top" width="100%" id="Name1Bez1_' + Unterkataloge[i] + '" class="' + TempStyleName1Bez1 + '">';
		KatZeile += '<a class="' + TempStyleName1 + '" ';
		
		if (KlickKatOffen && !AlleAufgeklappt && Kataloge[Unterkataloge[i]].HatUnterkataloge && (Kataloge[Unterkataloge[i]].Ebene <= AufklappenBis - 1)) {
			KatZeile += 'onClick="OpenCloseKat(\'' + KatNummerString + '\'); ClearStatusZeile(); return ' + (Kataloge[Unterkataloge[i]].Anzeigen == 3 ? 'true' : 'false') + ';" '; 
		}
		else
			KatZeile += 'onClick="MarkAsOpen(\'' + KatNummerString + '\'); ClearStatusZeile();" '; 
			
		KatZeile +=	'onMouseOver="SetStatusZeile(\'' + Kataloge[Unterkataloge[i]].Name1 + '\'); return true;" target="' + FrameMain + '" onMouseOut="ClearStatusZeile();" href="katalog_ansicht.asp?suchtyp=Kat&suchkatalog=' + Unterkataloge[i] + '" id="Link_' + Unterkataloge[i] + '">' + Kataloge[Unterkataloge[i]].Name1;
		
		// Bezeichnung 1 optional im Link anzeigen
		if ((Kataloge[Unterkataloge[i]].Bezeichnung1 != '') && (Bez1Anzeigen)) {
			KatZeile += Bez1BR ? '<br>' : ' | '
			KatZeile += '<span class="' + TempStyleBez1 + '">' + Kataloge[Unterkataloge[i]].Bezeichnung1 + '</span>';
		}
		
		KatZeile += '</a>';
		KatZeile += '</td>';

		// Rechter Rand
		KatZeile += '<td valign="top" class="' + TempStyleBorderRight + '"></td>';
					
		// Ende Hauptpunkt oder Unterpunkt
		KatZeile += '</tr>';
		KatZeile += '</table>';

		// Tabellenende
		if (IsHauptPunkt) {
			KatZeile += '</td></tr></table>';
		}

		// Nur ausfhren, wenn das Men zum erten Mal generiert wird
		if (Init) {
			KatZeile += '</td>';
			KatZeile += '</tr>';
		}

		// Als "Wird gerade angezeigt" markieren
		Kataloge[Unterkataloge[i]].IstAngezeigt = true;
	}
	return KatZeile;
}

function ZeigeKatalog(Nummer)
{	
	MasterKat = Nummer;
	var AllCats = '';

	if (ie4 || ie5) {
		// Katalogbaum generieren fr einen bestimmten Startkatalog (Nummer)
		document.write(GenerateKatalog(Nummer, true));
		
		// Wenn alle Unterpunkte auch aufgeklappt werden sollen, diese aufklappen (LANGSAME VARIANTE, ABER KOMPATIBEL)
		if (AlleAufgeklappt)	{
			// Alle Ebenen durchlaufen von 0 bis Max-Ebene
			for (var i=1; i<AufklappenBis; i++)	{
				// Alle Kataloge durchgehen und alle mit dieser Ebene aufklappen
				for(var Item in Kataloge) { 
					if ((Kataloge[Item].Ebene == i) && (Kataloge[Item].HatUnterkataloge)) {
						OeffneKatalog(Item); 
					}
				}
			}
		}
	}
	else {
		// Katalogbaum generieren fr einen bestimmten Startkatalog (Nummer) - Jedoch NiCHT ausgeben
		AllCats = GenerateKatalog(Nummer, true);

		// Wenn alle Unterpunkte auch aufgeklappt werden sollen, diese aufklappen (SCHNELLE VARIANTE mit Regul?n Ausdrcken)
		// In dieser Variante wird das aufklappen nur simuliert, alle Operationen arbeiten mit dem String AllCats
		// Dadurch muss weniger aufs DOM des Browsers zugegriffen werden un der Vorgang wird schneller
		if (AlleAufgeklappt) {
			// Alle Ebenen durchlaufen von 0 bis Max-Ebene
			for (var i=1; i<AufklappenBis; i++) {
				// Alle Kataloge durchgehen und alle mit dieser Ebene aufklappen
				for(var Item in Kataloge) { 
					if ((Kataloge[Item].Ebene == i) && (Kataloge[Item].HatUnterkataloge)) {
						// Aufklappen simulieren (durch suchen und ersetzen)
						var Search = new RegExp('<table[^>]*id="Pkt_' + Item + '"[^>]*>.*?<\/table>', 'i');
						var Match = AllCats.match(Search);
						
						AllCats = AllCats.replace(Match, Match + GenerateKatalog(Item, false));
					
						// Merken das der jeweilige Unterpunkt aufgeklappt wurde (wird sonst von OeffneKatalog gemacht)
						if (!IsKatUebersicht) Kataloge[Item].IstAufgeklappt = true;
					}
				}
			}
		}

		// Generierten Katalogbaum ausgeben
		document.write(AllCats);
	}

	// Tabellenbreite neu setzen falls jetzt ein Scrollbalken angezeigt wird
	window.setTimeout('RefreshTableWidth()', 5);
}

function OpenCloseKat(Nummer)
{
	// Existiert der ?ergebene Katalog?
	if (typeof(Kataloge[Nummer]) != 'undefined') {
		if (Kataloge[Nummer].IstAufgeklappt == false || Kataloge[Nummer].IstAufgeklappt == null)
			// Wenn der Katalog noch nicht aufgeklappt ist, aufklappen
			OeffneKatalog(Nummer);
		else
			// Sonst wieder zuklappen
			SchliesseKatalog(Nummer);
		
		// Tabellenbreite neu setzen falls jetzt ein Scrollbalken angezeigt wird
		if (!ie5)
			RefreshTableWidth();
		else
			window.setTimeout('RefreshTableWidth()', 5);
	}
}


function OeffneKatalog(Nummer)
{
	// Beim Klick auf einen geffneten Hauptpunkt wird der zuletzt geffnete geschlossen falls MehrereKatsOffen = false ist
	if (LastOpenKatNummer.length != 0 && LastOpenKatNummer[Kataloge[Nummer].Ebene] != void 0) {
		if ((Kataloge[Nummer].Ebene <= Kataloge[LastOpenKatNummer[Kataloge[Nummer].Ebene]].Ebene) && !AlleAufgeklappt && !MehrereKatsOffen)	{
			SchliesseKatalog(LastOpenKatNummer[Kataloge[Nummer].Ebene]);
		}
	}

	LastOpenKatNummer[Kataloge[Nummer].Ebene] = Nummer;


	if (Kataloge[Nummer].Ebene > 1) {
		// Stile und Bilder wechseln fr Unterpunkte			
		if (GetElemRef('Bild_' + Nummer)) GetElemRef('Bild_' + Nummer).src = ibis_PicturePath + '/' + (IsKatUebersicht ? GfxKatNormal : GfxMinusSub);
		if (GetElemRef('Link_' + Nummer)) GetElemRef('Link_' + Nummer).className = 'JSMenu-Unterpunkt-Name1-Aufgeklappt';
		if (GetElemRef('Pkt_' + Nummer)) GetElemRef('Pkt_' + Nummer).className = 'JSMenu-Unterpunkt-Aufgeklappt';
	}
	else {
		// Stile und Bilder wechseln fr Hauptpunkte
		if (GetElemRef('Bild_' + Nummer)) GetElemRef('Bild_' + Nummer).src = ibis_PicturePath + '/' + (IsKatUebersicht ? GfxKatNormal : GfxMinus);
		if (GetElemRef('Link_' + Nummer)) GetElemRef('Link_' + Nummer).className = 'JSMenu-Hauptpunkt-Name1-Aufgeklappt';
		if (GetElemRef('Pkt_' + Nummer)) GetElemRef('Pkt_' + Nummer).className = 'JSMenu-Hauptpunkt-Aufgeklappt';
		if (GetElemRef(Nummer)) GetElemRef(Nummer).className = 'JSMenu-Hauptpunkt-Komplett-Aufgeklappt';
	}

	if (opera) {
		// Opera-Bugfix: Funktion fr OnClick zwischenspeichern, da sie nach dem Zuweisen von OuterHTML nicht mehr fuktioniert s.u.
		if (GetElemRef('Link_' + Nummer)) OnClickSave = GetElemRef('Link_' + Nummer).onclick;
	}
	
	// Generierung der Unterpunkte fr IE und Opera per OuterHTML
	if ((ie4plus || opera) && GetElemRef('Pkt_' + Nummer)) {
		var OuterHTML = GetElemRef('Pkt_' + Nummer).outerHTML
		GetElemRef('Pkt_' + Nummer).outerHTML = OuterHTML + GenerateKatalog(Nummer, false);
	}

	// Generierung der Unterpunkte fr Mozilla und Netscape per DOM
	if (!ie4plus && !opera && GetElemRef('Pkt_' + Nummer)) {	
		var range = document.createRange();
		range.setStartAfter(GetElemRef('Pkt_' + Nummer));
		var fragment = range.createContextualFragment(GenerateKatalog(Nummer, false));
		range.insertNode(fragment);
	}
	
	if (opera) {
		// Opera-Bugfix: Funktion fr OnClick wiederherstellen s.o.
		if (GetElemRef('Link_' + Nummer)) GetElemRef('Link_' + Nummer).onclick = OnClickSave;

		// Opera-Bugfix: Stil fr Bilder wird nach dem zuweisen von OuterHTML ignoriert
		if (GetElemRef('Bild_' + Nummer)) GetElemRef('Bild_' + Nummer).style = 'cursor:pointer; cursor:hand';

		// Opera-Bugfix: Breite fr einige Zellen wird nach dem zuweisen von OuterHTML ignoriert
		if (GetElemRef('Pkt_' + Nummer)) GetElemRef('Pkt_' + Nummer).width = '100%';
		if (GetElemRef('Name1Bez1_' + Nummer)) GetElemRef("Name1Bez1_" + Nummer).width = '100%';
	}
	
	// Katalog als aufgeklappt kennzeichnen
	if (!IsKatUebersicht) Kataloge[Nummer].IstAufgeklappt = true;

	// Wenn der Katalog auch im Hauptframe angezeigt werden soll, Link als aufgeklappt markieren
	if (Kataloge[Nummer].Anzeigen == 3) MarkAsOpen(Nummer);
	
	
	if (AutoScroll && GetElemRef('Link_' + Nummer)) {
		Coords = GetTopLeft(GetElemRef('Link_' + Nummer));
		window.scrollTo(0, Coords.top - 5);
	}
}


function GetTopLeft(ElementObj)
{
   var Coords = {left: 0, top: 0};

   while (ElementObj) {																												// Obere linke Koordinaten der Tabelle berechnen
     Coords.left += ElementObj.offsetLeft;
     Coords.top += ElementObj.offsetTop;
     ElementObj = ElementObj.offsetParent;
   }
	
	return Coords;	
}


function SchliesseKatalog(Nummer)
{
	var Unterkataloge = Kataloge[Nummer].Unterkataloge;

	// Alle Unterkataloge des angeklickten Katalogs durchgehen
	for (var i=0; i<Unterkataloge.length; i++) {
		// Wenn der Unterkatalog seinerseits wieder Unterkataloge hat, diese auch schlie?n (Rekursion!!)
		if (Kataloge[Unterkataloge[i]].HatUnterkataloge) SchliesseKatalog(Unterkataloge[i]);

		// Wenn der Unterkatlaog angezeigt wird
		if (Kataloge[Unterkataloge[i]].IstAngezeigt == true && GetElemRef('Pkt_' + Unterkataloge[i])) {
			// Entfernen der Unterpunkte fr IE und Opera mittels OuterHTML
			if (ie4plus || opera) {
				GetElemRef('Pkt_' + Unterkataloge[i]).outerHTML = '';
			}
			
			// Entfernen der Unterpunkte fr Mozilla und Netscape mittels DOM
			if (!ie4plus && !opera) {
				GetElemRef('Pkt_' + Unterkataloge[i]).parentNode.removeChild(GetElemRef('Pkt_' + Unterkataloge[i]));
			}

			// Unterkatalog wird nicht mehr angezeigt
			Kataloge[Kataloge[Nummer].Unterkataloge[i]].IstAngezeigt = false;
		}
	}

	// Stile des angeklickten Kataloges ?ern soda?er zugeklappt erscheint
	if (Kataloge[Nummer].IstAngezeigt) {
		if (Kataloge[Nummer].Ebene > 1) {		
			// Stile und Bilder ausw?en fr Unterpunkte
			if (GetElemRef('Bild_' + Nummer)) GetElemRef('Bild_' + Nummer).src = ibis_PicturePath + '/' + (IsKatUebersicht ? GfxKatNormal : GfxPlusSub);
			if (GetElemRef('Pkt_' + Nummer)) GetElemRef('Pkt_' + Nummer).className = 'JSMenu-Unterpunkt';
			
			if (GetElemRef('Link_' + Nummer)) GetElemRef('Link_' + Nummer).className = 'JSMenu-Unterpunkt-Name1';
		}
		else {
			// Stile und Bilder ausw?en fr Hauptpunkte
			if (GetElemRef('Bild_' + Nummer)) GetElemRef('Bild_' + Nummer).src = ibis_PicturePath + '/' + (IsKatUebersicht ? GfxKatNormal : GfxPlus);
			if (GetElemRef('Pkt_' + Nummer)) GetElemRef('Pkt_' + Nummer).className = 'JSMenu-Hauptpunkt';
			if (GetElemRef(Nummer)) GetElemRef(Nummer).className = 'JSMenu-Hauptpunkt-Komplett';

			// Farbe des Links nicht zurcksetzen wenn der Katalog im Hauptframe aufgeklappt werden soll
			if (Kataloge[Nummer].Anzeigen != 3) {			
				if (GetElemRef('Link_' + Nummer)) GetElemRef('Link_' + Nummer).className = 'JSMenu-Hauptpunkt-Name1';
			}
		}
	}

	// Angeklickten Katalog als nicht angezeigt markieren
	if (!IsKatUebersicht) Kataloge[Nummer].IstAufgeklappt = false;

	// Wenn der Katalog auch im Hauptframe angezeigt werden soll, Link als aufgeklappt markieren
	if (Kataloge[Nummer].Anzeigen == 3) MarkAsOpen(Nummer);
}

function MarkAsOpen(Nummer)
{	
	if (IsKatUebersicht) return;
	
	// Link-Farbe des zuletzt gew?ten Katalogs zurcksetzen
	if (GetElemRef('Link_' + LastMarkAsOpenNummer)) {
		GetElemRef('Link_' + LastMarkAsOpenNummer).className = GetElemRef('Link_' + LastMarkAsOpenNummer).className.toLowerCase().replace('-sel', '');
	}
	
	MarkAsOpenSonderKat(void 0);

	// Link-Farbe des neuen Katalogs setzen
	if (GetElemRef('Link_' + Nummer)) GetElemRef('Link_' + Nummer).className += '-Sel';
	
	// Aktuell geffneten/gew?ten Katalog merken
	LastMarkAsOpenNummer = Nummer;
}

function MarkAsOpenSonderKat(Elem)
{	
	// Farbe des zuletzt gew?ten Sonderkatalogs zurcksetzen
	for (i=0; i < 10000; i++) {
		if (GetElemRef('Sonderkat_' + i)) {
			GetElemRef('Sonderkat_' + i).className = 'JSMenu-Hauptpunkt-Name1';
		}
		else {
			break;
		}
	}
	
	// Farbe des zuletzt gew?ten Katalogs zurcksetzen
	if (GetElemRef('Link_' + LastMarkAsOpenNummer) != void 0) {
		GetElemRef('Link_' + LastMarkAsOpenNummer).className = GetElemRef('Link_' + LastMarkAsOpenNummer).className.toLowerCase().replace('-sel', '');
	}

	if (Elem != void 0) Elem.className = 'JSMenu-Hauptpunkt-Name1-Sel';
}

function RefreshTableWidth()
{
	var FrameWidth;
	var ElementObj;
	var IsInDiv = false;

	if (IsKatUebersicht) return;
	
	if (GetElemRef('JSMenu-Table')) {
		ElementObj = GetElemRef('JSMenu-Table');
		
		if (ElementObj != null) {
			// Nachschauen ob das Men in einer Ebene angezeigt wird
			while (ElementObj) {
			  ElementObj = ElementObj.offsetParent;
			  
			  if (ElementObj != null && ElementObj.style.position != "") {
				  IsInDiv = true;
				  break;
			  }
			}

			if (!IsInDiv) {
				// Men wird in einer Ebene angezeigt, width auf festen Wert setzen (Framebreite abzglich Rand + Scrollbars)
				ie4plus ? FrameWidth = window.document.body.clientWidth : FrameWidth = window.document.body.offsetWidth
		
				if (GetElemRef('JSMenu-Table')) GetElemRef('JSMenu-Table').style.width = FrameWidth - Border + 'px';
				if (GetElemRef('JSMenu-Sonderkataloge')) GetElemRef('JSMenu-Sonderkataloge').style.width = FrameWidth - Border + 'px';
				if (GetElemRef('DemoShopLink')) GetElemRef('DemoShopLink').style.width = FrameWidth - Border + 'px';
			}
			else {
				// Men wird in einer Ebene angezeigt, width auf 100% setzen
				if (GetElemRef('JSMenu-Table')) GetElemRef('JSMenu-Table').style.width = '100%';
				if (GetElemRef('JSMenu-Sonderkataloge')) GetElemRef('JSMenu-Sonderkataloge').style.width = '100%';
				if (GetElemRef('DemoShopLink')) GetElemRef('DemoShopLink').style.width = '100%';
			}
		}
	}
}

function SetStatusZeile(Nummer) {
	// ?ergebener Text ist leer, Statuszeile lschen
	if (Nummer.toString() == '') {
		ClearStatusZeile();
		return;
	}
	
	if (isNaN(Nummer)) {
		// ?ergebener Text ist nicht numerisch, normal in der Statuszeile anzeigen
		window.status = Nummer;
	}
	else {
		// Prfen, ob ein Katalog mit der bergebenen Nummer existiert
		if (typeof(Kataloge[Nummer]) != 'undefined') {
			// Gefunden, entsprechenden Text in der Statuszeile fr das Auf/Zuklapp-Bild anzeigen
			window.status = Kataloge[Nummer].IstAufgeklappt ? 'Katalog zuklappen' : 'Katalog aufklappen';
		}
	}
}

function ClearStatusZeile()
{
	window.status = ' ';
	window.defaultStatus = ' ';
}


