/***************************************************
module:				highBoxing
zweck: 				Highboxen auf- und zuklappen
vorraussetzungen:	Jede eingebundene Highbox muss in einer Tabelle stehen
					Diese Tabelle hat die id: "idTbl" + namederhighbox
					Bsp: id="idTblimpressum"
					Die Tabelle ist in die drei bereiche
					1. <thead>kopf</thead>
					2. <tbody>inhalt</tbody>
					3. <tfoot>fuß</tfoot>
					eingeteilt.
					Der Bereich <tbody>inhalt</tbody> ist der Bereich,
					der an- und ausgeschaltet wird.
					Der tag <tbody> hat eine id nach folgendem Schema:
					id="idTbody" + namederhighbox
					Bsp: <tbody id="idTbodyimpressum">
Einbindung:			Nachdem die Highbox - Tabelle mit HTML beschrieben ist,
					muss das Highbox - Modul initialiseirt werden (s. function initHighbox)
					Die Überschrift der Highbox - Tabelle muss mit einem Link auf
					die function changeHighbox versehen werden (siehe dort)
Globals:			arrStatus: assoziatives Array, in dem für jede Highbox ein Status
					(1 = aufgeklappt, -1 = zugeklappt) abgelegt ist.
					key des Array ist der namederhighbox
					Bsp: arrStatus["impressum"] = 1;
					
					colEle: Collection von HTML - Elementen zur Steuerung der Highboxen
					in Form eines zwei - dimansionalen assoziativen Arrays
					Bsp: colEle["impressum"]["table"] -> HTML - Tabellen - Element der Highbox
						 colEle["impressum"]["tbody"] -> HTML - tbody - Element der Highbox (wird an- oder ausgeschaltet)
					
					intHbDelay: integer in Millisekunden, s. bei function initHighboxing
history:			date		modification				author
					24.12.2003	module written				kfs
***************************************************/
/***************************************************
function:			initHighboxing
zweck: 				Initialisierung der Highboxen
Input:				idHighbox: namederhighbox, z.B "impressum";
					optional ein zweites Argument:
					wenn dieser der boolsche Wert true ist, wird die entsprechende Highbox
					nach intHbDelay Millisekunden automatisch zusammengeklappt
					optional ein drittes Argument:
					wenn dieser der boolsche Wert true ist, wird die entsprechende Highbox
					unter linux nicht zusammengeklappt (z.B. wenn Inhalt der Highbox ein Flashfilm ist.)
Globals:			arrStatus: in diesem assoziativen Array wird initial für jede Highbox
					der Status 1 (aufgeklappt) angelegt
					Bsp: arrStatus["impressum"] = 1;
					colEle: Collection von HTML - Elementen zur Steuerung der Highboxen
					in Form eines zwei - dimansionalen assoziativen Arrays
					initilal wird für jede Highbox ein Array der ersten Ebene mit dem namenderhighbox angelegt
					dann wird die zweite Ebene befüllt mit den HTML - Elementen
					Bsp: colEle["impressum"]["table"] -> HTML - Tabellen - Element der Highbox
						 colEle["impressum"]["tbody"] -> HTML - tbody - Element der Highbox (wird an- oder ausgeschaltet)
history:			date		modification				author
					24.12.2003	function written			kfs
***************************************************/
/***************************************************
function:			changeHighbox
zweck: 				Highboxen auf- und zuklappen
Input:				idHighbox: namederhighbox, z.B "impressum";
Globals:			arrStatus: je nach Status der Highbox wird sie auf- oder zugeklappt
							   der Status wird entsprechend geändert
					colEle: Collection von HTML - Elementen zur Steuerung der Highboxen
					in Form eines zwei - dimensionalen assoziativen Arrays
					
					colEle["impressum"]["table"] -> HTML - Tabelle, in der eine Veränderung
					stattfinden soll
					colEle["impressum"]["tbody"] -> HTML - tbody, der von der HTML - Tabelle
					entfernt oder zugefügt werden soll

history:			date		modification				author
					24.12.2003	function written			kfs
***************************************************/
var arrStatus = new Array();
var colEle = new Array();
var intHbDelay = 1;

var blnLinux = navigator.platform.toLowerCase().indexOf("win") != -1 || navigator.platform.toLowerCase().indexOf("mac") != -1 ? false : true;
function changeHighbox(idHighbox)
{
	if(document.getElementById)
	{
		if(blnLinux && colEle[idHighbox]["flash"])
		{
			return;
		}
		else
		{
			arrStatus[idHighbox] == 1 ? colEle[idHighbox]["table"].removeChild(colEle[idHighbox]["tbody"]) : arrStatus[idHighbox] == -1 ? colEle[idHighbox]["table"].appendChild(colEle[idHighbox]["tbody"]) : arrStatus[idHighbox] = 1; 
			colEle[idHighbox]["table"].style.visibility = "visible";
			arrStatus[idHighbox] *= -1;
		}
	}
	else
	{
		alert("Du kannst das nicht\nDu schaffst das nicht\nLass das sein!");
	}
}
function initHighboxing(idHighbox)
{
	colEle[idHighbox] = new Array();
	colEle[idHighbox]["table"] = document.getElementById("idTbl" + idHighbox);
	colEle[idHighbox]["tbody"] = document.getElementById("idTbody" + idHighbox);
	colEle[idHighbox]["flash"] = initHighboxing.arguments[2] == true ? true : false;
	arrStatus[idHighbox] = 1;
	if(initHighboxing.arguments[1] == true)
	{
		setTimeout("changeHighbox('" + idHighbox + "')",intHbDelay);
		setTimeout("colEle['"+idHighbox+"']['table'].style.visibility = 'visible';",intHbDelay);
	}
}
