function ppr_bild_vorladen(){
  var d=document; if(d.images){ if(!d.ppr_p) d.ppr_p=new Array();
    var i,j=d.ppr_p.length,a=ppr_bild_vorladen.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.ppr_p[j]=new Image; d.ppr_p[j++].src=a[i];}}
}

function ppr_bild_wiederherstellen(){
  var i,x,a=document.ppr_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function ppr_bild_suchen(n, d){
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=ppr_bild_suchen(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function ppr_bild_tauschen(){
  var i,j=0,x,a=ppr_bild_tauschen.arguments; document.ppr_sr=new Array;
  for(i=0;i<(a.length-1);i+=1){
    if ((x=ppr_bild_suchen(a[i]))!=null){
      document.ppr_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+1];
    }
  }
}



////////////////////////////////////////////////////////////////////////////
//Leiste zum Blättern der Bilder erzeugen
////////////////////////////////////////////////////////////////////////////
function ppr_auswahlleiste(parameter, position){
  var IE4=document.all&&!document.getElementById;
  var DOM2=document.getElementById;
  var rueckgabe="";
  var posneu, start, seiten, mitte, i, x;
  
  var steuerung = parameter["steuerung"];
  var auswahlebene = parameter["auswahlebene"];
  var anzahl = parameter["anzahl"];
  var auswahlanzahl = parameter["auswahlanzahl"];
  
  
  //bei ungültigen Werten korrigieren
  if (position > anzahl)
    position = anzahl;
  else if (anzahl < 2){
    if (DOM2)
      document.getElementById(auswahlebene).innerHTML='';
    else if (IE4)
      document.all[auswahlebene].innerHTML='';
    return;
  }
  
  //Anzahl der "Seiten" sowie aktuelle Auswahl ermitteln
  seiten = Math.ceil(anzahl / auswahlanzahl);
  
  
  //////////////////////////////////////////////////////////////////////////
  //Leiste erzeugen
  rueckgabe += "<ul> ";
  
  
  //Link mehrere Bilder zurück
  posneu = position - auswahlanzahl;
  if (posneu < 0)
    posneu = 0;
  
  if (position < 1)
    rueckgabe += '<li class="weitzurueck"><span>&laquo;</span></li> ';
  else
    rueckgabe += '<li class="weitzurueck"><a href="javascript:'+steuerung+'.steuerung(0,'+posneu+');">&laquo;</a></li> ';
  
  
  //Link ein Bild zurück
  posneu = position - 1;
  if (posneu < 0)
    posneu = 0;
  
  if (position < 1)
    rueckgabe += '<li class="zurueck"><span>&lsaquo;</span></li> ';
  else
    rueckgabe += '<li class="zurueck"><a href="javascript:'+steuerung+'.steuerung(0,'+posneu+');">&lsaquo;</a></li> ';
  
  
  //Startposition für Bildnummernausgabe ermitteln
  mitte = Math.floor(auswahlanzahl / 2);
  start = 0;
  if (anzahl > auswahlanzahl){
    if (position <= mitte)
      start = 0;
    else if (position >= (anzahl - mitte))
      start = anzahl - auswahlanzahl;
    else {
      start = position - mitte;
    }
    
    if (start < 0)
      start = 0;
  }
  
  
  //Bildnummern
  for (i=0; i<auswahlanzahl; i++){
    posneu = start + i;
    
    if (posneu >= anzahl)
      break;
    
    //aktuelle Seite kennzeichnen
    if (position == posneu)
      rueckgabe += '<li class="auswahl"><a href="javascript:'+steuerung+'.steuerung(0,'+posneu+');" class="bildnummer">'+(posneu+1)+'</a></li> ';
    else
      rueckgabe += '<li><a href="javascript:'+steuerung+'.steuerung(0,'+posneu+');" class="bildnummer">'+(posneu+1)+'</a></li> ';
  }
  
  
  //Link ein Bild weiter
  posneu = position + 1;
  if (posneu >= anzahl)
    posneu = anzahl - 1;
  
  if (position >= (anzahl-1))
    rueckgabe += '<li class="vor"><span>&rsaquo;</span></li> ';
  else
    rueckgabe += '<li class="vor"><a href="javascript:'+steuerung+'.steuerung(0,'+posneu+');">&rsaquo;</a></li> ';
  
  
  //Link mehrere Bilder weiter
  posneu = position + auswahlanzahl;
  if (posneu >= anzahl)
    posneu = anzahl - 1;
  
  if (position >= (anzahl-1))
    rueckgabe += '<li class="weitvor"><span>&raquo;</span></li> ';
  else
    rueckgabe += '<li class="weitvor"><a href="javascript:'+steuerung+'.steuerung(0,'+posneu+');">&raquo;</a></li> ';
  
  
  rueckgabe += "</ul>";
  
  
  if (DOM2)
    document.getElementById(auswahlebene).innerHTML=rueckgabe;
  else if (IE4)
    document.all[auswahlebene].innerHTML=rueckgabe;
  
  return;
  
}  //Ende function ppr_auswahlleiste



////////////////////////////////////////////////////////////////////////////
//Bilder automatisch oder manuell austauschen
////////////////////////////////////////////////////////////////////////////
function ppr_bildwechsler(klasse){
  var IE4=document.all&&!document.getElementById;
  var DOM2=document.getElementById;
  var inhaltezaehler=0;
  var uebergangsintervall;
  var timeoutintervall;
  var schritt=0;
  var blendrichtung=1;
  var blenderinhalte=new Array();
  
  this.standzeit = 5000; //Zeit zwischen den Inhaltswechseln (Millisekunden)
  this.schritte = 30; //Anzahl der Abstufungen zwischen unsichtbar und sichtbar (Millisekunden)
  this.schrittabstand = 30; //Zeit zwischen den einzelnen Abstufungswechseln (Millisekunden)
  this.einblenden = true; //Inhalte einblenden
  this.ausblenden = true; //Inhalte ausblenden
  this.manuellhart = true; //true: beim manuellen Bilderwechsel Ein- und Ausblenden abschalten, false: keine Änderung
  this.inhaltemischen = true; //Inhalte mischen
  this.inhalt = 'blenderdaten'; //Name des Inhaltsarrays (ohne Anführungszeichen) bzw. Klassenname der DIVs (in Anführungszeichen)
  this.auswahlparameter = false; //Array mit Parametern für die Auswahlleiste
  this.ebenenid = 'blender'; //ID der Blender-Ebene
  this.aktiv = true;  //automatischer Wechsel aktiv (true) oder inaktiv (false)
  this.vorladen = true;  //nächstes Bild vorladen
  
  
  //Inhalte austauschen
  this.inhaltswechsel=function(ausb){
    if (ausb){
      uebergangsintervall=setInterval(klasse+".uebergang()", this.schrittabstand);
      return;
    }
    
    if (inhaltezaehler>=blenderinhalte.length){
      inhaltezaehler = 0;
      this.vorladen = false;
    }
    
    if (DOM2){
      this.transparenz(this.ebenenid, 100);
      ppr_bild_tauschen(this.ebenenid, blenderinhalte[inhaltezaehler]);
      schritt = 1;
      uebergangsintervall=setInterval(klasse+".uebergang()", this.schrittabstand);
    }
    else if (IE4){
      ppr_bild_tauschen(this.ebenenid, blenderinhalte[inhaltezaehler]);
      timeoutintervall=setTimeout(klasse+".inhaltswechsel()", this.standzeit);
    }
    
    ppr_auswahlleiste(this.auswahlparameter, inhaltezaehler);
    inhaltezaehler++;
    
    //nächstes Bild vorladen
    if (this.vorladen && inhaltezaehler<blenderinhalte.length)
      ppr_bild_vorladen(blenderinhalte[inhaltezaehler]);
  }  //Ende function inhaltswechsel
  
  
  //manuell nächsten Inhalt vorgeben oder automatischen Wechsel stoppen
  this.steuerung=function(wiedergabe, auswahl){
    if (wiedergabe){
      this.aktiv=true;
    }
    else {
      this.aktiv=false;
    }
    
    if (auswahl!==false){
      if (this.manuellhart){
        this.einblenden = false;
        this.ausblenden = false;
      }
      
      if (timeoutintervall){
        clearTimeout(timeoutintervall);
        timeoutintervall = false; //delete nicht benutzt, da dies in manchen Browsern voraussetzt, die Variable nicht mit var zu initialisieren
      }
      inhaltezaehler = auswahl;
      if (!uebergangsintervall)
        this.inhaltswechsel(1);
    }
  }  //Ende function steuerung
  
  
  //Transparenzübergänge
  this.uebergang=function(){
    if (blendrichtung==1 && !this.einblenden){
      prozentwert = 0;
      schritt = this.schritte;
    }
    else if (blendrichtung == 1){
      var prozentwert = 100 - Math.ceil(100 / this.schritte * schritt);
    }
    if (blendrichtung==2 && !this.ausblenden){
      prozentwert = 100;
      schritt = this.schritte;
    }
    else if (blendrichtung == 2){
      var prozentwert = Math.ceil(100 / this.schritte * schritt);
    }
    
    this.transparenz(this.ebenenid, prozentwert);
    schritt++;
    if(schritt>this.schritte){
      if (blendrichtung == 1){
        blendrichtung=2;
        schritt=1;
        clearInterval(uebergangsintervall);
        uebergangsintervall = false; //delete nicht benutzt, da dies in manchen Browsern voraussetzt, die Variable nicht mit var zu initialisieren
        if (this.aktiv)
          timeoutintervall=setTimeout(klasse+".inhaltswechsel(1)", this.standzeit);
      }
      else {
        blendrichtung=1;
        schritt=1;
        clearInterval(uebergangsintervall);
        uebergangsintervall = false; //delete nicht benutzt, da dies in manchen Browsern voraussetzt, die Variable nicht mit var zu initialisieren
        this.inhaltswechsel();
      }
    } 
  }  //Ende function uebergang
  
  
  //Transparenzgrad ändern
  this.transparenz=function(element,prozentwert){
    // Lokale Variablen definieren
    var i, anzahl, stil, filterwert, tranparenzwert;
    
    // Browser unterstuetzt (W3C-)DHTML?
    if(DOM2){
      
      // Wurde Objekt uebergeben und existiert es?
      if(typeof(element)=="object" && element) { objekt=element; }
      // Ansonsten: Existiert (mindestens) ein HTML-Element mit passendem NAME-Attribut?
      else if (document.getElementsByName(element) && document.getElementsByName(element)[0]) { objekt=document.getElementsByName(element); }
      // Ansonsten: Existiert ein HTML-Element mit passendem ID-Attribut?
      else if (document.getElementById(element)) { objekt=document.getElementById(element); }
      // Ansonsten: Existiert (mindestens) ein passendes HTML-Element?
      else if (document.getElementsByTagName && document.getElementsByTagName(element) && document.getElementsByTagName(element)[0]) { objekt=document.getElementsByTagName(element); }
      // Ansonsten: Kein passendes Objekt gefunden
      else { objekt=false; }
      
      // Wenn ein Objekt existiert
      if(objekt) {
        // Gueltigen Prozentwert definieren (Deckungswert)
        prozentwert=(typeof(prozentwert)=="undefined")?50:100-prozentwert;
        // Wert fuer (IE-)Filter
        filterwert="Alpha(opacity="+prozentwert+")";
        // Wert fuer CSS opacity
        tranparenzwert=""+prozentwert/100;
        // Anzahl der passenden Elemente bestimmen
        anzahl=(objekt.length)?objekt.length:1;
        // Diese Elemente durchgehen
        for(i=0;i<anzahl;i++) {
          // (Arbeits-)Stylesheet-Objekt definieren
          stil=(objekt.length)?objekt[i].style:objekt.style;
          // "filter(Alpha)"-Style setzen (fuer IE)
          stil.filter=filterwert;
          // "-moz-opacity"-Style setzen (fuer Mozilla)
          stil.MozOpacity=tranparenzwert;
          // "-khtml-opacity"-Style setzen (fuer Konqueror/Safari)
          stil.KhtmlOpacity=tranparenzwert;
          // "opacity"-Style setzen (fuer CSS-3-Browser)
          stil.opacity=tranparenzwert;
        }
      }
    }
  }  //Ende function transparenz
  
  
  //Arrayinhalte mischen
  function mischen(arr){
    var tmp, zufall;
    for(var i =0; i < arr.length; i++){
      zufall = Math.floor(Math.random() * arr.length);
      tmp = arr[i]; 
      arr[i] = arr[zufall]; 
      arr[zufall] =tmp;
    }
    return arr;
  }  //Ende function mischen
  
  
  //Initialisierung
  this.start=function(){
    if (typeof(this.inhalt) == "object"){
      blenderinhalte = this.inhalt;
    }
    else {
      var elemente = document.getElementsByTagName("div");
      for (var i=0; i<elemente.length; i++){
        if (elemente[i].className==this.inhalt)
          blenderinhalte.push(elemente[i].innerHTML);
      }
    }
    
    if (blenderinhalte.length < 1)
      return;
    
    if (this.inhaltemischen)
      blenderinhalte = mischen(blenderinhalte);
    
    this.inhaltswechsel();
    
  }  //Ende function start
  
}  //Ende ppr_bildwechsler