// JavaScript-Funktionen fuer die Bilder-Galerie
// Copyright (C) 2005 Alexander Mueller
// Autor: Alexander Mueller
// Web:   http://www.EvoComp.de/
// Datei: galerie.js
// The copyright notice must stay intact for use!
// You can obtain this and other scripts at http://www.EvoComp.de/scripts/skripte.html
//
// This program is distributed in the hope that it will be useful,
// but without any warranty, expressed or implied.

// Datenstruktur, in der die einzelnen Bilddaten gespeichert werden,
// in Form eines assoziativen Arrays anlegen
var Photos = new Array();

// Photo zur Galerie hinzufuegen
// thumbnail - URL zum Thumbnail
// bild - URL zum Detailbild
// alt - Beschreibung die angezeigt werden soll, wenn man mit der Maus ueber das Bild faehrt
// beschreibung - Beschreibung des Bildes, welches als Beschriftung unter dem Detailbild angezeigt werden soll
function addPhoto (thumbnail, bild, beschreibung, beschreibung2, beschreibung3)
{
	Photos[Photos.length] = new Object();
	// URL des Thumbnail
	Photos[Photos.length - 1]["datei"] = thumbnail;
	// URL des Bildes
	Photos[Photos.length - 1]["datei_gross"] = bild;
	// Kurze Bildbeschreibung zum jeweiligen Bild
	Photos[Photos.length - 1]["beschreibung"] = beschreibung;
	// Zweiter Teil der Bildbeschreibung
	Photos[Photos.length - 1]["beschreibung2"] = beschreibung2;
	// Dritter Teil der Bildbeschreibung
	Photos[Photos.length - 1]["beschreibung3"] = beschreibung3;
}

// Zaehlt Bilder mit IDs, die mit 'thumbnail' beginnen und einer ganzen Zahl
// enden und liefert die Anzahl als Rueckgabewert.
// Diese ID muessen die Image-Tags haben, die als Thumbnails verwendet werden.
function zaehle_thumbnails ()
{
	var tn = 0;

	for (i = 0; i < document.images.length; i++)
		if ((document.images[i].id).match (/^thumbnail[0-9]+$/))
			tn++;
	return tn;
}

// Thumbnails automatisch erzeugen, um Fehler zu vermeiden
function erzeuge_thumbnails ()
{
	// 'anzahl_thumbnails' Thumbnails erzeugen
	for (i = 0; i < anzahl_thumbnails; i++)
	{
		// Ein Thumbnail besteht aus einem LI-Tag, ...
		eintrag = document.createElement ("li");
		// einem Link ...
		link = document.createElement ("a");
				link.id = "athumb" + (i + 1);
		// , der per JavaScript das entsprechende Bild austauscht
		link.href = "javascript:grosses_bild_anzeigen (" + (i + 1) + ")";
		// und einem IMG-Tag fuer den eigentlichen Thumbnail
		bild = document.createElement ("img");
		bild.border = "0";
		bild.id = "thumbnail" + (i + 1);

		// erzeugtes hierarchisch zusammenfuegen
		link.appendChild (bild);
		eintrag.appendChild (link);

		// und unter Tag mit der ID 'thumb' ins Dokument einhaengen
		document.getElementById ("thumbs").appendChild (eintrag);
	}
}

// Thumbnails gemaess aktuellem index_erstes_bild anzeigen
function thumbnails_auffrischen ()
{
	// Bei allen Thumbnails Daten des jeweiligen IMG-Tags (b1..b3) auffrischen
	for (i = 0; i < anzahl_thumbnails; i++)
	{
			// Bild muss nur dargestellt werden, wenn die Bilderliste noch Bilder enthält
		if (typeof Photos[index_erstes_bild + i] != 'undefined') {
		// Bild austauschen
		document.getElementById ('thumbnail' + (i + 1)).src = Photos[index_erstes_bild + i]["datei"];
		// Thumbnail des ausgewaehlten Bildes entsprechend darstellen und andere zuruecksetzen
		if (index_grosses_bild == index_erstes_bild + i)
		    document.getElementById ('thumbnail' + (i + 1)).className = "sel";
		else
		    document.getElementById ('thumbnail' + (i + 1)).className = "";
			// Thumbnail mit Link einblenden
			document.getElementById ('athumb' + (i + 1)).style.visibility = "visible";
		}
		// Keine Bilder mehr in der Liste
		else {
			// Thumbnail samt Link auf diesen ausblenden
			document.getElementById ('thumbnail' + (i + 1)).src = "";
			document.getElementById ('thumbnail' + (i + 1)).alt = "";
			document.getElementById ('thumbnail' + (i + 1)).title = "";
			document.getElementById ('thumbnail' + (i + 1)).className = "";
			document.getElementById ('athumb' + (i + 1)).style.visibility = "hidden";
		}
	}
	// Navigationslinks fuer Thumbnails anzeigen
	if (index_erstes_bild > 0)
	{
		document.getElementById ('pgup').src = pfad_zu_navbildern + "/pgup.gif";
	}
	else
	{
		document.getElementById ('pgup').src = pfad_zu_navbildern + "/pgup_first.gif";
	}
	if (index_erstes_bild + anzahl_thumbnails < anzahl_bilder)
	{
		document.getElementById ('pgdown').src = pfad_zu_navbildern + "/pgdown.gif";
	}
	else
	{
		document.getElementById ('pgdown').src = pfad_zu_navbildern + "/pgdown_last.gif";
	}

}


// Thumbnails um 'anzahl_thumbnails' zurueckblaettern
function pgup ()
{
	if (index_erstes_bild != 0) {
		index_erstes_bild = index_erstes_bild - anzahl_thumbnails;
		// Anzeige der Thumbnails aktualisieren
		thumbnails_auffrischen ();
		index_grosses_bild = index_erstes_bild;
		grosses_bild_auffrischen ();
	}
}

// folgende 'anzahl_thumbnails' Thumbnails anzeigen
function pgdown ()
{
	if (index_erstes_bild + anzahl_thumbnails < anzahl_bilder) {
		index_erstes_bild = index_erstes_bild + anzahl_thumbnails;
		// Anzeige der Thumbnails aktualisieren
		thumbnails_auffrischen ();
		index_grosses_bild = index_erstes_bild;
		grosses_bild_auffrischen ();
	}
}

// Index des aus den Thumbnails ausgewaehlten grossen Bildes setzen und Anzeige des grossen Bildes auffrischen
function grosses_bild_anzeigen (i)
{
	// neuer Index des grossen Bildes
	index_grosses_bild = index_erstes_bild + i - 1;
	// Anzeige des grossen Bildes auffrischen
	grosses_bild_auffrischen ();
}

// grosses Bild und zugehoerige Beschriftung im IMG mit der ID 'gross' anzeigen (nach index_grosses_bild)
function grosses_bild_auffrischen ()
{
	// URL des Bildes setzen
	document.getElementById ('gross').src = Photos[index_grosses_bild]["datei_gross"];
	// Falls das P-Tag mit der ID 'beschriftung' keine Kind-Elemente hat muss eines erzeugt werden,
	// damit die Beschriftungsdaten darin gespeichert werden koennen
	if (!document.getElementById ('beschriftung').firstChild)
		document.getElementById ('beschriftung').appendChild (document.createTextNode (""));

	// Beschriftung des Bildes im zugehoerigen P-Tag setzen
	//document.getElementById ('beschriftung').firstChild.data = tstr;
	document.getElementById ('b1').firstChild.data = Photos[index_grosses_bild]["beschreibung"];
	document.getElementById ('b2').firstChild.data = Photos[index_grosses_bild]["beschreibung2"];
	document.getElementById ('b3').firstChild.data = Photos[index_grosses_bild]["beschreibung3"];

	// Navigationslinks fuer grosse Bilder anzeigen
	if (index_grosses_bild > 0)
		document.getElementById ('zurueck_gross').src = pfad_zu_navbildern + "/back.gif";
	else
		document.getElementById ('zurueck_gross').src = pfad_zu_navbildern + "/first.gif";

	if (anzahl_bilder > index_grosses_bild + 1)
		document.getElementById ('weiter_gross').src = pfad_zu_navbildern + "/forward.gif";
	else
		document.getElementById ('weiter_gross').src = pfad_zu_navbildern + "/last.gif";
	// Thumbnails auffrischen
	thumbnails_auffrischen ();
}

// vorheriges Bild (gross) aus Bilderliste anzeigen
function zurueck_gross ()
{
	// nur noetig, wenn nicht schon das erste Bild angezeigt wird
	if (index_grosses_bild > 0)
	{
		// zum vorherigen Bild
		index_grosses_bild--;
		// grosses Bild aktualisieren
		grosses_bild_auffrischen ();
	}
}

// naechstes Bild (gross) aus Bilderliste anzeigen
function weiter_gross ()
{
	// nur wenn nicht schon beim letzten Bild angekommen
	if (index_grosses_bild + 1 < anzahl_bilder)
	{
		// zum naechsten Bild
		index_grosses_bild++;
		// grosses Bild aktualisieren
		grosses_bild_auffrischen ();
	}
}

