// namen der nav-punkte (tabellenzellen; kopie aus nav.js)
cells  = Array('cell0','cell1','cell2','cell3','cell4','cell5','cell6','nofade');

// globales flag für fade: 1=aktiv, 0=inaktiv
nav = 1;
// globale arbeitsvariablen
bottomDoc = null; elem = null; selectedEl = null;
interval  = 10; rDec = 0; gDec = 0; bDec = 0;
rTarget   = 0; gTarget = 0; bTarget=0;

// fade vorbereiten
function prepareFade() {
	// listener registrieren
	cellCount = cells.length;
	for (i=0; i < cellCount; i++) {
		el = document.getElementById(cells[i]);
		el.onmouseover = toggle;
		el.onmouseout  = restore;
	}
	// zielwert für fade aus highlightcolor berechnen:
	rTarget = parseInt(fadeColor.substr(0,2), 16); 
	gTarget = parseInt(fadeColor.substr(2,2), 16); 
	bTarget = parseInt(fadeColor.substr(4,2), 16);
}

// leitet fading ein (onmouseover)
function toggle(e) 
{
	// element ermitteln, das event ausgelöst hat
	el = (window.event) ? window.event.srcElement : e.target;
	// nur einblenden, wenn aktuelles e. != selektiertes e.
	elem = el;
	if (el != selectedEl) {
		// ausgangsfarbwert ermitteln
		color = colors[el.id];
		if (!color) {
			return;
		}
		// hexdezimale werte in dezimale wandeln
		rDec = parseInt(color.substr(0,2), 16);
		gDec = parseInt(color.substr(2,2), 16);
		bDec = parseInt(color.substr(4,2), 16);
		// intervall abhängig von anzahl nötiger steps berechnen (einblenden soll immer gleich lang dauern)
		maxspan  = Math.max(rTarget-rDec, Math.max(gTarget-gDec, bTarget-bDec));
		interval = 1000/maxspan;
		setTimeout("fade()", interval);
	}
}

// stellt ursprüngliche farbe wieder her (onmouseout)
function restore(e)
{
	// element ermitteln, das event ausgelöst hat
	el = (window.event) ? window.event.srcElement : e.target;
	// nur, wenn aktuelles e. != selektiertes e.:
	if (el && el.id && el != selectedEl && document.getElementById(el.id)) {
		el.style.backgroundColor = colors[el.id];
		// border-fade für selektierte elemente innerhalb der content-seiten
		el.style.borderColor = colors[el.id];
		if (bottomDoc && bottomDoc.getElementById(el.id)) {
			bottomDoc.getElementById(el.id).style.backgroundColor = colors[el.id];
		}
	}
}

// stellt alle farbe wieder her (onmouseover content-frame)
function restoreAll()
{
	cellCount = cells.length;
	for (i=0; i < cellCount; i++) {
		el = document.getElementById(cells[i]);
		if (el == selectedEl) {
			continue;
		}
		el.style.backgroundColor = colors[el.id];
		// border-fade für selektierte elemente innerhalb der content-seiten
		el.style.borderColor = colors[el.id];
		if (bottomDoc && bottomDoc.getElementById(el.id)) {
			bottomDoc.getElementById(el.id).style.backgroundColor = colors[el.id];
		}
	}
}

// fade-funktion
function fade()
{
	// äußere regionen nicht highlighten:
	if (elem.id == '' || elem.id == 'cell0' || elem.id == 'nofade') {
		return;
	}
	// wenn navifade aktiv und selektiertes e. != aktuelles e. und zielfarben noch nicht erreicht:
	if (nav==1 && selectedEl != elem && (rDec != rTarget || gDec != gTarget || bDec != bTarget)) {
		//window.status = 'fade: '+el.id;
		if (rDec < rTarget) rDec++; else if (rDec > rTarget) rDec--;
		if (gDec < gTarget) gDec++; else if (gDec > gTarget) gDec--;
		if (bDec < bTarget) bDec++; else if (bDec > bTarget) bDec--;
		rHex = rDec.toString(16);
		gHex = gDec.toString(16);
		bHex = bDec.toString(16);
		elem.style.backgroundColor = rHex+''+gHex+''+bHex;
		// border-fade für selektierte elemente innerhalb der content-seiten
		elem.style.borderColor = rHex+''+gHex+''+bHex;
		if (bottomDoc && bottomDoc.getElementById(elem.id)) {
			bottomDoc.getElementById(elem.id).style.backgroundColor=rHex+''+gHex+''+bHex;
		}
		setTimeout("fade()", interval);
	}
}

// selektiert einen link
function select(el, url, newWindow)
{
	// zuletzt selektiertes e. wiederherstellen:
	if (selectedEl != null && el != selectedEl) {
		selectedEl.style.backgroundColor = colors[selectedEl.id];
		selectedEl.style.borderColor = colors[selectedEl.id];
		if (bottomDoc && bottomDoc.getElementById(selectedEl.id)) {
			bottomDoc.getElementById(selectedEl.id).style.backgroundColor = colors[selectedEl.id];
		}
	}
	// neu selektiertes e. hervorheben:
	selectedEl = el;
	if (selectedEl) {
		selectedEl.style.backgroundColor = selectColor;
		selectedEl.style.borderColor = selectColor;
		if (bottomDoc && bottomDoc.getElementById(selectedEl.id)) {
			bottomDoc.getElementById(selectedEl.id).style.backgroundColor = selectColor;
		}
	}
	if (url != "") {
		(newWindow) ? window.open(url, 'pic') : top.frames['content'].location.replace(url);
	}
}
