/*
 * JavaScript-Funktionen für das Inhaltsverzeichnis
 */


// Objekte für Klappmenü
var Minus = new Image();
Minus.src = "/bilder/produktmenu/divs/t_cminus.gif";
var Plus = new Image();
Plus.src = "/bilder/produktmenu/divs/t_cplus.gif";


// Name des class-Attributs in den verschiedenen Browsern
var sClassAttrName;
if (navigator.appName == "Microsoft Internet Explorer") {
	sClassAttrName = "className";
} else {
	sClassAttrName = "class";
}


// Funktion zum Öffnen eines Dokuments
function doc(sItemId, sItemUrl) {
	if (sItemUrl != "" && sItemUrl != "0" && sItemId != "") {
		top.dokument.location.href = sItemUrl;
		// Highlighting
		var sClassAttrName;
		if (navigator.appName == "Microsoft Internet Explorer") {
		  sClassAttrName = "className";
		} else {
		  sClassAttrName = "class";
		}
		// Neu ausgewählten Knoten highlighten
		var oCurrentNode = document.getElementById(sItemId);
		var i = 0;
		var oTextSpan;
		do {
	    oTextSpan = oCurrentNode.childNodes[i++];
		} while (oTextSpan.nodeName != "SPAN");
		oTextSpan.setAttribute(sClassAttrName, "eb");
		// Alten Knoten normal machen
		if (sLastItemId != "") {
	    oCurrentNode = document.getElementById(sLastItemId);
	    i = 0;
	    do {
				oTextSpan = oCurrentNode.childNodes[i++];
	    } while (oTextSpan.nodeName != "SPAN");
	    oTextSpan.setAttribute(sClassAttrName, "ea");
		}
		sLastItemId = sItemId;
  }
}


// Funktion zur Steuerung des Klappmenüs
function folder(sItemId) {

	// Zustand des Knotens merken
	var oCurrentNode = document.getElementById(sItemId + "sub");
	var sNextClass;
	var bShow = false;
	if (oCurrentNode != null) {
		sNextClass = oCurrentNode.getAttribute(sClassAttrName);
		bShow = (sNextClass == "show");
	}

	// Alle zuklappen
	collapseAll();

	// Aufzuklappendes div suchen
	oCurrentNode = document.getElementById(sItemId);

	// Alle übergeordneten Elemente aufklappen
	var oNextNode = oCurrentNode;
	do {
		// Elternknoten von oNextNode suchen
		oNextNode = oNextNode.parentNode;

		// Ende der Schleife bei falschen Knoten
		if (oNextNode == null || oNextNode.nodeName != "DIV") {
			break;
		}

		// Vorheriges DIV wg. Bildern suchen
		var	oPrevSibling = oNextNode;
		do {
			oPrevSibling = oPrevSibling.previousSibling;
			if (oPrevSibling == null) {
				break;
			}
		} while (oPrevSibling.nodeName != "DIV");


		// ID des vorherigen Elements für Bilderindex bestimmen
		var sId = "";
		if (oPrevSibling != null) {
			sId = oPrevSibling.getAttribute("id") + "sub";
		}
		// Bilder tauschen
		if (sId != "") {
					swapImages(sId, "open");
		}

		// class-Attribut ändern
		sNextClass = oNextNode.getAttribute(sClassAttrName);
		oNextNode.setAttribute(sClassAttrName, "show");
	} while (true);

	// Element selber zu- oder aufklappen
	oCurrentNode = document.getElementById(sItemId + "sub");
	if (oCurrentNode != null) {
		if (bShow) {																	// Zuklappen
			oCurrentNode.setAttribute(sClassAttrName, "nshow");
			if (sItemId != "") {
				swapImages(sItemId, "close");
			}
		} else {																			// Aufklappen
			oCurrentNode.setAttribute(sClassAttrName, "show");
			if (sItemId != "") {
				swapImages(sItemId, "open");
			}
		}
	}
}


// Das gesamte Menü einklappen
function collapseAll() {
	for (var i = 0; i < id_array.length; i++) {
		var oNode = document.getElementById(id_array[i]);
		if (navigator.appName == "Microsoft Internet Explorer") {
			sClassAttrName = "className";
		} else {
			sClassAttrName = "class";
		}
		var sClass = oNode.getAttribute(sClassAttrName);
		oNode.setAttribute(sClassAttrName, "nshow");
		swapImages((id_array[i]).replace(/sub/, "img"), "close");
	}
}


// Hilfsfunktion um Bilder zu ändern
function swapImages(sItemId, sMode) {
	// Id korrigieren
	sItemId = sItemId.replace(/sub$/, "img");
	if (sItemId.search(/img$/) == -1) {
		sItemId += "img";
	}
	// Bilder tauschen
  var oImgSign = document.getElementById(sItemId);
  if (oImgSign != null && oImgSign.nodeName == "IMG") {
		if (sMode == "open") {
			oImgSign.setAttribute("src", Minus.src);
		} else {
			oImgSign.setAttribute("src", Plus.src);
		}
	}
}
