/*	javascript-Funktionssammlung

		init ()									Initialisierung für Gewerkeseiten
		scroll_pics ()					Durchwechseln der Kopfbilder für Gewerkeseiten
		hsm (id)								HighlightStartMenue
		nsm (id)								NormalizeStartMenue
		scp (obj, id)						ShowColorPicture
		sgp (obj)								ShowGrayPicture
		preload_kopfbilder ()		Vorausladen farbiger Kopfbilder
		scroll_pics ()					Durchwechseln der grafischen Links im Kopfberich
		get_first_index (href)	liest den numerischen Wert des ersten Links aus
		get_filename_gray (s)		liefert den Namen des Graustufen-Bildes
		get_link (i)						bildet Link für nicht html-codierte Knoten
		set_mouseover (img, i)	erzeugt javascript-Code für das onmouseover-Ereignis

		Kompatibilitäts-Hinweis:
		- Das Setzen von Werten für ein javascript-Ereignis-Attribut (z.B. onmouseover) klappt bei den IEs erst ab IE8 !
			Deswegen wird in scp (obj, id) der Parameter id quasi außer Kraft gesetzt, indem er eine eigene Zuweisung erfährt.
			Im Gegenzug wird in scroll_pics() der Aufruf von set_mouseover() auskommentiert.
			Die html-Codierung des unnötigen 2. Parameters bleibt erhalten, man weiß ja nie.
			Dieses Deppen-Workaround funktioniert ab IE 5.5.
*/

var SignalColor = '#ffa949';	// Highlight
var NormalColor = '';					// nur dass Leeren des .style.color-Strings restauriert die css-Pseudoklassen-Eigenschaften

var gray = "gray";						// Dateinamen-Platzhalter für Graustufen-Bilder
var small = "sm";							// Dateinamen-Platzhalter für kleine Kopfbilder
var interval = 3000;					// Intervall in ms zum Durchwechseln der Bilder
var suffix_html = ".htm";			// Dateinamen-Endung für html-Dokumente
var bildnamen = new Array();	// Datenfeld zur Aufnahme der Namen der farbigen Kopfbild-Grafikdateien
var maxanzahlbilder = 5;			// max. Anzahl der Kopfbilder
var indexofcenterpic = 2;			// Indexnummer des mittleren, farbig dargestellten Bildes (von 0 an!)

var my_event = "onmouseover";	// Name des javascript-Events, dessen Inhalt mit ausgetauscht werden muß
var epraefix = "scp (this, ";	// erster Teil des Eventcodes
var esuffix = ")";						// letzter Teil des Eventcodes
var idpraefix = "id";					// Buchstabenpraefix der Link-Ids für xhtml-Konformität
var sDebug = "";
var StaticIndex = 0;					// globaler Zählerindex
var MyInterval;								// globaler Interval-Handler

function init ()
{
	// der Browser muß Mindestvoraussetzungen erfüllen

	if (!document.getElementById)
		return;

	if (!bildnamen.length)
		return;

	preload_kopfbilder ();

	// scroll_pics();		// benötigt ' onclick="scroll_pics ();"' im img id="gross"

	// javascript-Interval nur starten, wenn es auch etwas zu scrollen gibt
	if (bildnamen.length >= maxanzahlbilder)
		MyInterval = window.setInterval("scroll_pics()", interval);
}


function hsm (id)
{
	document.getElementById(id).style.color = SignalColor;
}


function nsm (id)
{
	document.getElementById(id).style.color = NormalColor;
}


function scp (obj)
{
	var id = get_first_index (obj.src);	// IE<8

	if (bildnamen[id])
		obj.src = bildnamen[id];
}


function sgp (obj)
{
	obj.src = get_filename_gray (obj.src);
}


function preload_kopfbilder ()
{
	var bildobjekte = new Array();	// Datenfeld zur Aufnahme der Javascript-Bildobjekte

	/* die benannten Grafikdateien einem javascript-Objekt zuweisen und damit 'heimlich' vom Server holen */

	for (i=0; i < bildnamen.length; i++)
	{
		bildobjekte[i] = new Image();
		bildobjekte[i].src = bildnamen[i];
	}
}


function scroll_pics ()
{
	var i = 0;
	var Link1;
	var Link2;
	var Image1;
	var Image2;
	var ImageSrc;
	var ColorIndex;

	// Wechselvorgangs-Schleife abarbeiten, wenn mindestens soviele Bilder hinterlegt wurden, wie angezeigt werden können

	if (bildnamen.length >= maxanzahlbilder)
	{
		for (i=0; i < maxanzahlbilder; i++)
		{
			// Objekte zuweisen
			Link1 = document.getElementById(idpraefix + i);

			// Zuweilen will z.B. ein id0 nicht erkannt werden.
			// Einmal aufgetreten läßt sich der Fehler wiederholen, ansonsten heißt es warten.
			// Das hier ist nicht einmal ein Workaround, sondern die Diashow läuft halt lediglich nicht.
			if (Link1 == null)
			{
				window.clearInterval(MyInterval);
				return;
			}

			Image1 = Link1.firstChild;

			// statischen Zähler beim ersten Mal auslesen oder inkrementieren
			if (i == 0)
				StaticIndex = get_first_index (Link1.href) + 1;
			else
				StaticIndex = StaticIndex + 1;

			// und vor Überlauf bewahren
			if (StaticIndex >= bildnamen.length)
				StaticIndex = StaticIndex - bildnamen.length;

			if ((i+1) == maxanzahlbilder)
			{
				// Werte bilden für nicht-html-codierte Knoten
				Link1.href = get_link (StaticIndex);
				ImageSrc = get_filename_gray (bildnamen[StaticIndex]);
			}
			else
			{
				// Werte aus html-codierten Folgeobjekten auslesen
				Link2 = document.getElementById(idpraefix + (i+1));
				Image2 = Link2.firstChild;
				Link1.href = Link2.href;

				// mittleres Bild in der farbigen Variante
				if (i == indexofcenterpic)
					ImageSrc = bildnamen[StaticIndex];
				else
					ImageSrc = get_filename_gray (Image2.src);
			}
			Image1.src = ImageSrc;
			// set_mouseover (Image1, StaticIndex);
		}
	}
}


function get_first_index (href)
{
	var i = href.lastIndexOf("-");
	var x = href.slice(i+1);

	i = parseInt (x);

	if (i == NaN)
		return 0;
	else
		return i;
}


function get_filename_gray (s)
{
	if (s.lastIndexOf(gray) >= 0)
		return s;

	var i = s.lastIndexOf(".");
	var n = s.slice(0, i);
	var e = s.slice(i);

	return n + gray + e;
}


function get_link (i)
{
	var s = bildnamen[i];
	var i = s.lastIndexOf(small);
	var n = s.slice(0, i);

	return n + suffix_html;
}


function set_mouseover (img, i)
{
	for (j=0; j < img.attributes.length; j++)
	{
		if (img.attributes[j].nodeName == my_event)
		{
			img.attributes[j].nodeValue = epraefix + (i) + esuffix;
			break;
		}
	}
}

