// Globale Variablen

var status = 2; // Aktueller Zustand: 0 Ruhezustand, 1 Vorgang laeuft, 2 Noch nicht initialisiert
var schritte = 10; // Anzahl der Iterationen (kann spaeter aber abweichen, wenn Abstand groesser!)
var verzoegerung = 0; // Timeout

// Schrittweiten
var schrittweite = new Array(); // Schrittweiten der Zoom-Elemente
schrittweite[0] = 3; // ele-2
schrittweite[1] = 6; // ele-1
schrittweite[2] = 9; // ele
schrittweite[3] = schrittweite[1]; // ele+1
schrittweite[4] = schrittweite[0]; // ele+2
var standardschritt = schrittweite[1]; // Schrittweite, mit der unbeteiligte Elemente zurueckskaliert werden

// Soll-Schriftgroessen
var standardsize = 100; // Standardschriftgroesse in Prozent
var soll = new Array(); // Soll-Werte der Zoom-Elemente
soll[0] = standardsize + schritte * schrittweite[0]; // ele-2
soll[1] = standardsize + schritte * schrittweite[1]; // ele-1
soll[2] = standardsize + schritte * schrittweite[2]; // ele
soll[3] = standardsize + schritte * schrittweite[3]; // ele+1
soll[4] = standardsize + schritte * schrittweite[4]; // ele+2

var ist = new Array(); // Aktuelle Ist-Werte aller Elemente

// Funktionen

function schriftgroesse(ele){
  var result = document.getElementById('splash'+ele).style.fontSize;
  result = result.substr(0, result.indexOf('%'));
  return parseInt(result);
}

function zoom(ele){
  
  var check = 1;
  var zoomele = ele - 2; // Aktuelles Zoom-Element (absolut)
  var z1 = 0; // Aktuelles Splash-Element
  var z2 = 0; // Aktuelles Zoom-Element (relativ)
  
  if(zoomele < 0){ // Linker Randfall
    z2 = 0 - zoomele;
    zoomele = 0;
  }
  
  while(ist[z1]!='X'){ // Alle Splash-Elemente durchgehen
    
    if(z1==zoomele){ // Zoom-Element gefunden?
      
      if(ist[z1] - soll[z2] > schrittweite[z2]){ // Zu gross
        //ist[z1] = ist[z1] - schrittweite[z2];
        ist[z1] = ist[z1] - standardschritt;
        check = 0;
      } else if(ist[z1] < soll[z2]){ // Zu klein
        ist[z1] = ist[z1] + schrittweite[z2];
        check = 0;
      } else { // Perfekt einpassen
        ist[z1] = soll[z2];
      }
      
      if(z2 < 4){ // Naechstes Zoom-Element, falls vorhanden
        zoomele++;
        z2++;
      }
      
    } else { // Unbeteiligtes Element auf Standardgroesse zoomen

      if(ist[z1] - standardsize > standardschritt){ // Zu gross
        ist[z1] = ist[z1] - standardschritt;
        check = 0;
      } else { // Perfekt einpassen
        ist[z1] = standardsize;
      }
      
    }
    
    document.getElementById('splash'+z1).style.fontSize = ist[z1] + '%'; // Aenderung umsetzen
    z1++;
    
  }
  
  if(check==0){ // Naechste Iteration
    window.setTimeout('zoom('+ele+')', verzoegerung);
  } else { // Zoom abgeschlossen
    status = 0;    
  }

}

function zoom_starten(ele){
  
  if(status==2){ // Erster Aufruf der Funktion 
    var z1 = 0;
    while(document.getElementById('splash'+z1)){ // Alle Splash-Elemente durchgehen, da wir deren Anzahl nicht kennen
      ist[z1] = standardsize;
      z1++;
    }
    ist[z1] = 'X'; // Ende markieren
    status = 0;
  }
  
  if(status==0 && schriftgroesse(ele)!=soll[2]){ // Ein bereits laufender Vorgang darf nicht unterbrochen werden; Zoom nur einmal auf gleiches Objekt ausfuehren
    status = 1; // Status aendern
    zoom(ele); // Zoom-Vorgang starten
  }
  
}
