/* (c) 2003 Markus Hillig
 * This is free software according to the General Public Licence (GPL)
 * available at www.gnu.org
 */

/*
 * Zusaetzlich zu dieser Datei muessen im HEAD-Bereich eines HTML-Dokuments
 * noch folgende JavaScript-Dateien geladen werden:
 *
 * - tb_buttons.js
 *     definiert die Funktionen:
 *     - changePic()
 *     
 * - browsercheck.js
 *     definiert die Variablen:
 *     - NS4, NS6, IE4
 *     definiert die Funktionen:
 *     - checkBrowser()
 *     - NS4Warning()
 *     
 * - setXX_photo_data.js
 *     definiert die Arrays:
 *     - photos[] -> alle Dateinamen der zu ladenden Fotos
 *     - captions[] -> alle zugehoerigen Captions (als Strings)
 *     
 * - img_preloader.js
 *     definiert die Arrays:
 *     - cachedPhotos[] -> alle gecacheten Fotos in Form von Image-Objekten
 *     definiert die Variablen:
 *     - imagesdone -> 'true', wenn alle Fotos fertig geladen
 */

function copyStatementEn()
{
   alert("(C) Hermann Bredehorst.\nNo picture may be copied without written\npermission from Hermann Bredehorst.");
}

function copyStatementDe()
{
   alert("(C) Hermann Bredehorst.\nOhne schriftliche Genehmigung durch Hermann Bredehorst\ndarf kein Foto kopiert werden.");
}

// Anfang Slideshow-Programm

// Variablen zur Konfiguration der Slideshow
var pause=3; // wie lange ein Bild angezeigt wird; Angabe in Sekunden
var autoPlay=true; // speichert den aktuellen Modus, automat. o. manuelle Slideshow

// Definition und Initialisierung der anderen Variablen der Slideshow
var currImgNo=0; // speichert die Nummer des aktuell angezeigten Fotos
var fwdButtonDisabled=false; // speichert aktuellen Zustand des Buttons
var bwdButtonDisabled=false; // speichert aktuellen Zustand des Buttons
var slideshowRunning;
var slideshowArea; // Bereich der Seite, in dem die Slideshow laeuft

// Variablen zur Konfiguration des Progressbars
var barTopPadding=60; // Hoehe der Navigation, um Progbar um diesen Betrag nach unten zu verschieben
var barHeight=25;           // HEIGHT OF PROGRESS BAR IN PIXELS
var barWidth=350;           // WIDTH OF THE BAR IN PIXELS  
var bordercolor='black';    // COLOR OF THE BORDER
var loadedcolor='gray' ;    // PROGRESS BAR COLOR
var unloadedcolor='white';  // BGCOLOR OF UNLOADED AREA
var followUpFunction="showSlideshowArea()"; // Funktion, die nach Ausblenden des PB aufgerufen wird
// den Funktionsnamen INKLUSIVE '()' als STRING zuweisen;
// bei Zuweisung NICHT als String und OHNE () wird offensichtlich ein Pointer auf die Funktion uebergeben
// letzteres funktioniert allerdings nicht mit IE 5.x/Mac, sondern nur mit IE/Win und Moz/Linux

// Buttonsymbole fuer Vorwaertsblaettern
btn_fwd = new Image();
btn_fwd.src = "/pics/fix/btn_fwd.gif";       /* Standardversion des Buttons */
btn_fwd_hl = new Image();
btn_fwd_hl.src = "/pics/fix/btn_fwd_hl.gif"; /* Version fuer Button ausgewaehlt */
btn_fwd_dis = new Image();
btn_fwd_dis.src = "/pics/fix/btn_fwd_dis.gif"; /* Version fuer Button disabled */

// Buttonsymbole fuer Rueckwaertsblaettern
btn_bwd = new Image();
btn_bwd.src = "/pics/fix/btn_bwd.gif";       /* Standardversion des Buttons */
btn_bwd_hl = new Image();
btn_bwd_hl.src = "/pics/fix/btn_bwd_hl.gif"; /* Version fuer Button ausgewaehlt */
btn_bwd_dis = new Image();
btn_bwd_dis.src = "/pics/fix/btn_bwd_dis.gif"; /* Version fuer Button disabled */

// Symbole fuer Startbutton
btn_start = new Image();
btn_start.src = "/pics/fix/btn_start.gif";       /* Standardversion des Buttons */
btn_start_hl = new Image();
btn_start_hl.src = "/pics/fix/btn_start_hl.gif"; /* Version fuer Button ausgewaehlt */

// Symbole fuer Stoppbutton
btn_stop = new Image();
btn_stop.src = "/pics/fix/btn_stop.gif";       /* Standardversion des Buttons */
btn_stop_hl = new Image();
btn_stop_hl.src = "/pics/fix/btn_stop_hl.gif"; /* Version fuer Button ausgewaehlt */

// diese Funktion wird aufgerufen, wenn der Progressbar fertig ist, d.h. alle
// Fotos geladen sind
function showSlideshowArea()
{
// DEBUG START
//alert("in slideshow.js: Aufruf showSlideshowArea");
// DEBUG END
   slideshowArea.style.visibility="visible"; // Slideshow-Bereich einblenden

   // wenn, automat. Slideshow-Modus, dann Slideshow starten
   if(autoPlay) {
      // Buttonsymbole fuer Vor-/Rueckwaertsblaettern abblenden
      disableFwdButton();
      disableBwdButton();
      slideshowRunning=window.setInterval("forward()", pause*1000);
// DEBUG START
//alert("slideshowRunning: "+slideshowRunning);
// DEBUG END
   }      
}

function initSlideshow()
{
   // Browser checken
   checkBrowser();
   // Warnen, falls Netscape 4.x detektiert wird
   if(NS4) {
      NS4Warning();
      return false;
   }

   //Maus-Events behandeln
   if(NS4) {
      document.captureEvents(Event.MOUSEDOWN);
      document.onmousedown=function (evt) {
         //if(evt.which == 3) {
            copyStatementEn();
            return false;
         //}
      }
   } else if(NS6) {
   } else if(IE4) {
      document.images.photoslider.onmousedown=function () {
//         if((event.button == 1)||(event.button == 2)||(event.button == 4)) {
//            copyStatementEn();
//            return false;
alert(event.button);
//         }
      }
   }
   
   // Progressbar vorbereiten
   if(NS6) {
      slideshowArea=document.getElementById('slideshowArea');
   }
   if(IE4) {
      slideshowArea=document.all.slideshowArea;
   }
   
   // Progressbar einblenden und Fotos cachen
   startProgressbar();

   // Das 1. Bild der Slideshow wird schon innerhalb der HTML-Seite geladen,
   // so dass zugehoerige Bildnummer und Caption hier noch nachgeliefert werden
   // Bildnummer fuer erstes Bild anzeigen
   showCurrImgNo();
   // Caption fuer erstes Bild anzeigen
   showCaption();
}

function showCurrImgNo()
{
   document.getElementById("currImg").firstChild.nodeValue = (currImgNo+1)+"/"+photos.length;
}

function showCaption()
{
   document.getElementById("caption").firstChild.nodeValue = captions[currImgNo];
}

function forward()
{
   if(currImgNo<photos.length-1) {
      currImgNo++;
      document.images.photoslider.src=cachedPhotos[currImgNo].src;
      showCurrImgNo();
      showCaption();
      if(currImgNo == photos.length-1) { // wenn letztes Bild der Serie angezeigt wird
         if(autoPlay) { // Slideshow beenden, falls sie lief
            switchMode();
         }
         // Button fuer Vorwaertsblaettern abblenden
         disableFwdButton();
      }
      if(currImgNo>0) {
         if(!autoPlay)
            enableBwdButton();
      }
   }
}

function backward()
{
   if(currImgNo>0) {
      currImgNo--;
      document.images.photoslider.src=cachedPhotos[currImgNo].src;
      showCurrImgNo();
      showCaption();
      if(currImgNo == 0) { // wenn erstes Bild der Serie angezeigt wird
         // Button fuer Rueckwaertsblaettern abblenden
         disableBwdButton();
      }
      if(currImgNo<photos.length-1) {
         if(!autoPlay)
            enableFwdButton();
      }
   }
}

// Events des Buttons zum manuellen Vorwaertsblaettern
function fwdButtonPressed()
{
   if(!fwdButtonDisabled) {
      forward();
   }
}

function fwdButtonMouseOver()
{
   if(!fwdButtonDisabled) {
      changePic("fwdButton", btn_fwd_hl);
   }
}

function fwdButtonMouseOut()
{
   if(!fwdButtonDisabled) {
      changePic("fwdButton", btn_fwd);
   }
}

// Events des Buttons zum manuellen Rueckwaertsblaettern
function bwdButtonPressed()
{
   if(!bwdButtonDisabled) {
      backward();
   }
}

function bwdButtonMouseOver()
{
   if(!bwdButtonDisabled) {
      changePic("bwdButton", btn_bwd_hl);
   }
}

function bwdButtonMouseOut()
{
   if(!bwdButtonDisabled) {
      changePic("bwdButton", btn_bwd);
   }
}

// Events des Buttons zum Starten/Stoppen der Slideshow
function startButtonMouseOver()
{
   if(!autoPlay) {
      changePic("startButton", btn_start_hl);
      document.getElementById("usageInfo").firstChild.nodeValue="start slideshow";
   } else {
      changePic("startButton", btn_stop_hl);
      document.getElementById("usageInfo").firstChild.nodeValue="stop slideshow";
   }
}

function startButtonMouseOut()
{
   if(!autoPlay) {
      changePic("startButton", btn_start);
      hideInfo("usageInfo");
   } else {
      changePic("startButton", btn_stop);
      hideInfo("usageInfo");
   }
}

// Vorwaertsbutton abblenden
function disableFwdButton()
{
   fwdButtonDisabled=true;
   changePic("fwdButton", btn_fwd_dis);
}

// Vorwaertsbutton aufblenden
function enableFwdButton()
{
   fwdButtonDisabled=false;
   changePic("fwdButton", btn_fwd);
}

// Rueckwaertsbutton abblenden
function disableBwdButton()
{
   bwdButtonDisabled=true;
   changePic("bwdButton", btn_bwd_dis);
}

// Rueckwaertsbutton aufblenden
function enableBwdButton()
{
   bwdButtonDisabled=false;
   changePic("bwdButton", btn_bwd);
}

// Umschalten zwischen den Modi 'Slideshow' und 'manuell'
function switchMode()
{
   autoPlay=!autoPlay; // hier erfolgt immer ein Moduswechsel!

   if(autoPlay) {
      // Buttons fuer Vor-/Rueckwaertsblaettern abblenden
      disableFwdButton();
      disableBwdButton();
      // Start- durch Stoppbuttonsymbol und Start- durch Stopptext ersetzen
      changePic("startButton", btn_stop);
      document.getElementById("usageInfo").firstChild.nodeValue="stop slideshow";

      if(currImgNo == photos.length-1) // wenn letztes Bild der Serie angezeigt wird
         currImgNo=-1; // Rücksprung auf Anfang; -1, damit forward() mit Bild 0 beginnt
      // Slideshow starten
      slideshowRunning=window.setInterval("forward()", pause*1000);
   } else {
      window.clearInterval(slideshowRunning);
      // Buttons fuer Vor-/Rueckwaertsblaettern aufblenden
      enableFwdButton();
      enableBwdButton();
      // Stopp- durch Startbuttonsymbol und Stopp- durch Starttext ersetzen
      changePic("startButton", btn_start);
      document.getElementById("usageInfo").firstChild.nodeValue="start slideshow";
   }
}

// Ende Slideshow-Programm