/*============================================================================
AUTOR(EN):                       
   copyright by Dr.-Ing. Dirk Fischer, Köln
-----------------------------------------------------------------------------
ZWECK:
Steuerung der skalierten Schriftgröße vom Body-Tag
Steuerung einer Foto-Show.
-----------------------------------------------------------------------------
AENDERUNGEN:
   Erstellung:         06.10.2009  DFI
   letzte Anderung:    09.10.2009  DFI
============================================================================*/

   // stoppt Flickern beim IE! Je nach Browser-Einstellung großes Ärgernis...
   /*@cc_on @*/ /*@if (@_win32 || @_win64)
   try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}
   @end @*/

var SizeName="SoltaniSize";

   // merkt sich aktuelle Fontsize im Fensternamen, lädt bei Änderung die Seite neu und
   // berechnet bei Abweichung zum Standard die gewünschte FontSize bevor diese initialisiert wird
   function NewSize(diff){
   var p=self.name.indexOf(SizeName),
      AktSize=diff==2?2:(p==-1?2:parseInt(self.name.substr(p+SizeName.length,1)))+diff;

      AktSize=AktSize>=0?AktSize%8:7;
      if (diff){
         if (p!=-1)
            self.name=self.name.substr(0,p-1)+self.name.slice(p+SizeName.length+1);
         self.name+=SizeName+AktSize;
         location.reload();
      }
      else if (AktSize!=2){
         document.write("\x3Cstyle type='text/css'>body{font-size:"
         +((document.ids?14.:62.5)*(0.6+AktSize*0.2))+(document.ids?'px':'%')
         +";}\x3C/style>");
      }
   }
   NewSize(0);

   // tauscht Images der Fotowahl-Pfeile bei Mausbewegungen
   function overout(o,over){
      if (o.src){
         if (over)   // Normal und Aktiv-Grafik unterschieden durch 'n' und 'a'
            o.src=o.src.replace(/_n/,"_a");
         else
            o.src=o.src.replace(/_a/,"_n");
      }
      return true;
   }

/*
Funktionen für Foto-Show
   Images werden möglichst nur bei Bedarf geladen. Ist ein Image aktiv, ist
   immer nur das nächste bereits geladen und das übernächste wird vorgeladen
   (preload-Funktion). Die Images werden anhand der FotoTexte gezählt.

Voraussetzungen:
   - Fotos müssen zweistellig beginnend mit '01' durchnummeriert sein (ggf.
     führende 0 zufügen!).
   - Die Nummer steht vor einem Punkt.
   - Es gibt keine weiteren Nummern im Pfad vor einem Punkt.
   - Der Pfad zu den Fotos steht korrekt im SRC-Attribut des Images
     namens 'FotoShow'
   - Jedes Foto braucht einen FotoText, ggf. "" in 'FotoTexte' eintragen!
*/
var FotoTexte=[],    // Feld für FotoTexte
ShowAktiv=false,     // Merker für FotoShow
aktivFoto=1,         // Merker aktives Foto
Fotos=new Array();   // Feld für initialisierte Fotos

   // Preload einzelner zu initialisierender Fotos (Es werden nicht jedesmal alle geladen!)
   function initFoto(nr,pfad){
      if (!Fotos[nr]){
         Fotos[nr]=new Image();
         Fotos[nr].src=pfad.replace(/\d\d\./,(nr<10?'0':'')+nr+".");
      }

   }

   // prüft die aktuelle Fotonummer und sorgt für umlaufende Zählung
   function testeFotoNr(nr){  // zu prüfende Foto-Nummer
   var max=FotoTexte.length;

      return nr<=0?max:(nr>max?1:nr);   // Maximalwert sonst wieder bei 1
   }

   // Setzt neue Image-Source und den zugehörigen Fototext. Außerdem wird
   // übernächstes Foto preloadet
   function setzeFoto(mehr){  // Weiterzählung der Fotonummer (meist -1 o. 1)
      if (Fotos){
      var foto=document.FotoShow,
         text=document.FotoForm?document.FotoForm.FotoText:false;

         aktivFoto=testeFotoNr(aktivFoto+mehr);
         initFoto(aktivFoto,foto.src);                       // ggf. aktivFoto initialisieren
         initFoto(testeFotoNr(aktivFoto+(2*mehr)),foto.src); // übernächstes Foto initialisieren
         foto.src=Fotos[aktivFoto].src;
         if (text)
            text.value=FotoTexte[aktivFoto-1];
      }
   }

   // gibt nächstes / vorheriges Foto aus. Falls FotoShow aktiv ist, wird diese gestoppt
   function weiter(mehr){  // Weiterzählung der Fotonummer (meist -1 o. 1)
      if (ShowAktiv){
         window.clearInterval(ShowAktiv);
         ShowAktiv=false;
      }
      setzeFoto(mehr);
   }

   // aktiviert die Foto-Show
   function FotoShow(){
      if (ShowAktiv)
         window.clearInterval(ShowAktiv);
      ShowAktiv=window.setInterval("setzeFoto(1)",4000);
   }

   // initialisiert zeitverzögert die Foto-Show
   function initFotoShow(){
      if (document.images&&document.FotoShow&&document.FotoShow.src){
      var src=document.FotoShow.src;

         setzeFoto(0);
         initFoto(testeFotoNr(aktivFoto-1),src);
         initFoto(testeFotoNr(aktivFoto+1),src);
         window.setTimeout("FotoShow()",5000);  // weitere Fotos nur bei Verweilen laden!
      }
      else
         Fotos=false;
   }

if (window.addEventListener)     // for modern Browsers as Mozilla
   window.addEventListener('load',initFotoShow,false);
else if (window.attachEvent)     // for IE
   window.attachEvent('onload',initFotoShow);
else
   window.onload=initFotoShow;   // for older Browsers
