/* 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 PrevMainKat;
var LastMarkAsOpenClass;


/* Konfigurations-Optionen + Standardwerte */
if (Einzug == void 0) var Einzug = 1;
if (AufklappenBis == void 0) var AufklappenBis = 999;
if (AlleAufgeklappt == void 0) var AlleAufgeklappt = false;
if (MehrereKatsOffen == void 0) var MehrereKatsOffen = true;
if (KlickKatOffen == void 0) var KlickKatOffen = false;
if (Bez1Anzeigen == void 0) var Bez1Anzeigen = true;
if (Bez1BR == void 0) var Bez1BR = false;
if (IsKatUebersicht == void 0) var IsKatUebersicht = false;

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 GfxKatNormal == "undefined" || GfxKatNormal == '') GfxKatNormal = 'jsmenu_katuebersicht.gif'

//if (opera) AufklappenBis = 1;


/* 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 + '/' + GfxKatNormal;


function GetElemRef(ElemString)
{
	if (w3c)
		return document.getElementById(ElemString);
	else if (ie4plus)
		return document.all[ElemString];
}

function GenerateKatalogDatabase()
{
	var OberKat = new Array;
	
	for (var Item in Kataloge)
	{
		var Found = false;
		var ItemOberkatalog = Kataloge[Kataloge[Item].Oberkatalog];
		var ItemOberkatalogNummer = Kataloge[Item].Oberkatalog;

		if (ItemOberkatalog == void 0) break;

		if (ItemOberkatalog.Anzeigen == 0)
		{
			Kataloge[Item].Anzeigen = 0;
		}
		else
		{
			for (var i=0; i<OberKat.length; i++)
			{
				if (ItemOberkatalogNummer == OberKat[i]) { Found = true; break; }
			}
			
			if ((!Found) || (OberKat.length == 0)) 
			{
				OberKat[OberKat.length] = ItemOberkatalogNummer;

				for (var Temp in Kataloge)
				{
					var TempOberkatalogNummer = Kataloge[Temp].Oberkatalog;
					var LastOberkatalogNummer = OberKat[OberKat.length-1];

					if (TempOberkatalogNummer == LastOberkatalogNummer)
					{
						if (Kataloge[LastOberkatalogNummer])
						{
							Kataloge[LastOberkatalogNummer].HatUnterkataloge = true;
							if ((Kataloge[Temp].Katalognummer == "00000") || (Kataloge[Temp].Katalognummer == "0000000000"))
							{
								Kataloge[Temp].Ebene = 0;
							}
							else
							{
								Kataloge[LastOberkatalogNummer].Unterkataloge[Kataloge[LastOberkatalogNummer].Unterkataloge.length] = Kataloge[Temp].Katalognummer;
								Kataloge[Temp].Ebene = Kataloge[LastOberkatalogNummer].Ebene + 1;
							}
						}
					}
				}
			}

			if (IsKatUebersicht)
			{
				Kataloge[Item].PlusBild = ibis_PicturePath + '/' + GfxKatNormal;
				Kataloge[Item].MinusBild = ibis_PicturePath + '/' + GfxKatNormal;
				Kataloge[Item].NormalBild = ibis_PicturePath + '/' + GfxKatNormal;
			}
			else
			{
				Kataloge[Item].PlusBild = ibis_PicturePath + '/' + GfxPlus;
				Kataloge[Item].MinusBild = ibis_PicturePath + '/' + GfxMinus;
				Kataloge[Item].NormalBild = ibis_PicturePath + '/' + GfxNormal;
			}
		}
	}
}

function GenerateKatalog(Nummer, Init)
{
	for (i in Kataloge) i++
	if (i == 0) return "";

	var strZeile = "";
	var Unterkataloge = Kataloge[Nummer].Unterkataloge
	
	if (IsKatUebersicht) 
	{
		TempStyleName1 = 'head_black2';
		TempStyleBezeichnung1 = 'head_black2';
	}
	else
	{
		if ((AlleAufgeklappt) || (Init))
		{
			TempStyleName1 = 'head_black2';
			TempStyleBezeichnung1 = 'black2';
		}
		else
		{
			TempStyleName1 = 'black2';
			TempStyleBezeichnung1 = 'black2';
		}
	}
	
	for (var i=0; i<Unterkataloge.length; i++)
	{
		if ((Kataloge[Unterkataloge[i]].Anzeigen > 0))
		{
			if (Init) 
			{
				strZeile += '<tr>\n';
				strZeile += '<td>\n';
			}

			strZeile += '	<table style="margin-left: ' + (Einzug * (Kataloge[Unterkataloge[i]].Ebene - 1)) + 'px" border="0" height="14" cellpadding="0" cellspacing="0" id="' + Kataloge[Unterkataloge[i]].Katalognummer + '">\n';
			strZeile += '		<tr>\n';
			strZeile += '		<td width="1"><img src="../images/unvis.gif" width="1" height="14" border="0"></td>\n';
			strZeile += '			<td width="1" valign="top">\n';
		
			if ((Kataloge[Unterkataloge[i]].HatUnterkataloge) && (Kataloge[Unterkataloge[i]].Ebene <= AufklappenBis - 1) && (Kataloge[Unterkataloge[i]].Anzeigen == 1) && (!AlleAufgeklappt)) 
				strZeile += '			<img src="' + Kataloge[Unterkataloge[i]].PlusBild + '" style="cursor:pointer;cursor:hand" width="2" height="12" onMouseOver="SetStatusZeile(\'' + Kataloge[Unterkataloge[i]].Katalognummer + '\'); return true;" onMouseOut="self.status=\'\'; return true;" onClick="OpenCloseKat(\'' + Kataloge[Unterkataloge[i]].Katalognummer + '\'); return true;" id="Bild_' + Kataloge[Unterkataloge[i]].Katalognummer + '">\n';
			else
				strZeile += '			<img src="' + Kataloge[Unterkataloge[i]].NormalBild + '" width="2" height="12" onMouseOver="self.status=\'\'; return true;">\n';
			
			strZeile += '			</td>\n';
			strZeile += '			<td valign="top">\n';
			strZeile += '				<a class="' + TempStyleName1 + '" ';
			
			if (KlickKatOffen && Kataloge[Unterkataloge[i]].HatUnterkataloge)
				strZeile += 'onClick="OpenCloseKat(\'' + Kataloge[Unterkataloge[i]].Katalognummer + '\'); self.status=\'\'; return false;" '; 
			else
				strZeile += 'onClick="MarkAsOpen(this); self.status=\'\';return true" '; 
				
			strZeile +=	'onMouseOver="self.status=\'' + Kataloge[Unterkataloge[i]].Bezeichnung1 + '\';return true" onMouseOut="self.status=\'\';return true" target="content" href="cont_index.php?suchtyp=Kat&suchkatalog=' + Kataloge[Unterkataloge[i]].Katalognummer + '" id="Link_' + Kataloge[Unterkataloge[i]].Katalognummer + '">' + Kataloge[Unterkataloge[i]].Name1;
			strZeile += '<br>';
			if ((Kataloge[Unterkataloge[i]].Bezeichnung1 != '') && (Bez1Anzeigen)) 
			{
				!Bez1BR ? strZeile += '<br>' : strZeile += '	| '
				strZeile += '<span class="' + TempStyleBezeichnung1 + '">' + Kataloge[Unterkataloge[i]].Bezeichnung1 + '</span></a>\n';
			}
			else
				strZeile += '</a>\n';

			strZeile += '			</td>\n';
			strZeile += '		</tr>\n';

			if ((Kataloge[Unterkataloge[i]].Bezeichnung1 != '') && (Bez1Anzeigen) && (!Bez1BR)) strZeile += '<tr><td colspan="2" height="2"></td></tr>\n';

			strZeile += '	</table>\n';

			if (Init) 
			{
				strZeile += '</td>\n';
				strZeile += '</tr>\n';
			}

			Kataloge[Unterkataloge[i]].IstAngezeigt = true;
		}
	}
	return strZeile;
}

function ZeigeKatalog(Nummer)
{	
	document.write(GenerateKatalog(Nummer, true));
	
	if (AlleAufgeklappt)
	{
		for (var i=1; i<AufklappenBis; i++)
		{
			for(var Item in Kataloge)
			{ 
				if ((Kataloge[Item].Ebene == i) && (Kataloge[Item].HatUnterkataloge) && (Kataloge[Item].Anzeigen > 0)) OeffneKatalog(Kataloge[Item].Katalognummer); 
			}
		}
	}
}

function SetStatusZeile(Nummer)
{
	if (GetElemRef('Bild_' + Nummer).src.search(Kataloge[Nummer].MinusBild) == -1)
		window.status = 'Katalog aufklappen';
	else
		window.status = 'Katalog zuklappen';
}

function OpenCloseKat(Nummer)
{
	if (GetElemRef('Bild_' + Nummer).src.search(Kataloge[Nummer].MinusBild) == -1)
		OeffneKatalog(Nummer);
	else
		SchliesseKatalog(Nummer);
}

function OeffneKatalog(Nummer)
{
	var OberkatalogUnterkataloge = Kataloge[Kataloge[Nummer].Oberkatalog].Unterkataloge;
	
	if (Kataloge[Nummer].Ebene > 1)
	{
		for (var i=0; i<OberkatalogUnterkataloge.length; i++)
		{
			if (GetElemRef('Link_' + OberkatalogUnterkataloge[i]) && !IsKatUebersicht) GetElemRef('Link_' + OberkatalogUnterkataloge[i]).className = 'JSMenu-Name1';
		}
	}
	else
	{
		if (!AlleAufgeklappt && !MehrereKatsOffen && PrevMainKat != void 0) SchliesseKatalog(PrevMainKat);
		PrevMainKat = Nummer;
	}	

	if (!AlleAufgeklappt) 
	{
		GetElemRef('Bild_' + Nummer).src = Kataloge[Nummer].MinusBild;
		GetElemRef('Link_' + Nummer).className = 'JSMenu-Name1-Aufgeklappt';
	}

	if (ie4plus)
	{
		GetElemRef(Nummer).outerHTML = GetElemRef(Nummer).outerHTML + GenerateKatalog(Nummer, false);
	}
	else
	{	
		var range = document.createRange();
		range.setStartAfter(GetElemRef(Nummer));
		var fragment = range.createContextualFragment(GenerateKatalog(Nummer, false));
		range.insertNode(fragment);
	}
}

function SchliesseKatalog(Nummer)
{
	var Unterkataloge = Kataloge[Nummer].Unterkataloge;
	var OberkatalogUnterkataloge = Kataloge[Kataloge[Nummer].Oberkatalog].Unterkataloge;

	for (var i=0; i<Unterkataloge.length; i++)
	{
		if (Kataloge[Unterkataloge[i]].HatUnterkataloge) SchliesseKatalog(Unterkataloge[i]);

		if (Kataloge[Unterkataloge[i]].IstAngezeigt == true)
		{
			if (ie4plus)
				GetElemRef(Kataloge[Unterkataloge[i]].Katalognummer).outerHTML = "";
			else
				GetElemRef(Kataloge[Unterkataloge[i]].Katalognummer).parentNode.removeChild(GetElemRef(Kataloge[Unterkataloge[i]].Katalognummer));

			Kataloge[Kataloge[Nummer].Unterkataloge[i]].IstAngezeigt = false;
		}
	}

	if(Kataloge[Nummer].IstAngezeigt == true)
	{
		if (GetElemRef('Bild_' + Nummer) != void 0) GetElemRef('Bild_' + Nummer).src = Kataloge[Nummer].PlusBild;
		Kataloge[Nummer].Ebene > 1 ? GetElemRef('Link_' + Nummer).className = 'JSMenu-Name1-Aufgeklappt-Unterpunkte' : GetElemRef('Link_' + Nummer).className = 'JSMenu-Name1';

		if (Kataloge[Nummer].Ebene > 1)
		{
			for (var i=0; i<OberkatalogUnterkataloge.length; i++)
			{
				if (GetElemRef('Link_' + OberkatalogUnterkataloge[i])) GetElemRef('Link_' + OberkatalogUnterkataloge[i]).className = 'JSMenu-Name1-Aufgeklappt-Unterpunkte';
			}
		}
	}
}

function MarkAsOpen(Elem)
{	
	var LinkClass;
	
	for (var Item in Kataloge)
	{
		if ((GetElemRef("Link_" + Kataloge[Item].Katalognummer) != void 0) && (GetElemRef("Link_" + Kataloge[Item].Katalognummer).className == 'JSMenu-Name1-Sel'))
		{
			if (LastMarkAsOpenClass != void 0) GetElemRef("Link_" + Kataloge[Item].Katalognummer).className = LastMarkAsOpenClass;
		}
	}
	
	LastMarkAsOpenClass = Elem.className;
	Elem.className = 'JSMenu-Name1-Sel';
}
