/* Image Fader by smoi */

// Deklaration global
if (document.images) {
var myImages = new Array(
		  "splashes/ConceptualDesign1.jpg",
		  "splashes/ProductionRealtime1.jpg",
/*		  "splashes/FurExport1.jpg",*/
		  "splashes/ParticleSetup1.jpg",
		  "splashes/PRManShading2.jpg",
		  "splashes/ProceduralShader1.jpg");
/*		  "splashes/TechnicalPipeline1.jpg");*/
var progress = 0.0; // von 0 bis 1
var preImages = new Array();
var preLoadDone = false;
var checkRounds = 0;
var maxRounds = 32000;
var layer0Id = "imageLayer0";
var layer1Id = "imageLayer1"; // das liegt druerber und wird gefadet
var currentIdx = 0;
var doFade = true;
var isFading = false;
}

function FadePreStart() {
  
  // zu fadendes element vorhanden ?
  // bilder laden
  // vortschritssanzeigen
  // fade cylce starten, wenn geladen
 
  if (!document.getElementById(layer0Id) || !document.getElementById("loadProgressText")) {
    return;
  } else {
    FadePreLoader();
  }
}


function FadePreLoader() {
  
  /*
  if (!document.preImages) {
    preImages = new Array();
  }
  */
  
  for (i=0; i<myImages.length; i++) {
    preImages[i] = new Image();
    preImages[i].src = myImages[i];
  }
  FadeLoadCheckImages();

}


function FadeLoadCheckImages() {
  
  loadCount = 0;
  
  
  for (i=0; i < preImages.length; i++) {
    if (preImages[i].complete){
      loadCount++;
    }
  }
  
  // fade in progress image
  value = loadCount / preImages.length;
  document.getElementById(layer1Id).style.opacity = value;
  value *= 100;
  document.getElementById(layer1Id).style.filter = 'alpha(opacity="' + value + '")'; 
  // text
  document.getElementById("loadProgressText").firstChild.nodeValue = value;
  
  if (loadCount < preImages.length) {
    if (checkRounds > maxRounds) {
      return; // Abbruch wenn zu lange
    } else {
      checkRounds++;
      setTimeout("FadeLoadCheckImages()", 10); // Rekursion
    }
  } else {
      preLoadDone = true;
      document.getElementById("loadProgressText").style.visibility = "hidden";
      setTimeout("FadeInit()", 1000);
  }
  
}


function FadeInit() {

  // gerade eingefadetes bild auf unteren layer legen
  // opacity des oberen layer auf 0
  // neues bild auf oberen layer
  // fade in den oberen layer starten
 
  if (doFade) {
 
    document.getElementById(layer0Id).src = document.getElementById(layer1Id).src;
    document.getElementById(layer1Id).style.opacity = 0;
    document.getElementById(layer1Id).style.filter =  'alpha(opacity="0")';
    document.getElementById(layer1Id).src = myImages[currentIdx];
    currentIdx++;
    if (currentIdx >= preImages.length)
      currentIdx = 0;

    FadeStep(0.0);
 
  }
 
}


function FadeStep(step) {
 
  // opacity erhoehen
  // opacity zuweisen
  // warten
  // rekursiver aufruf
  // wenn volle opacity erreicht, dann warten und FadeInit aufrufen
 
  step += 0.01;
  value = step;
  document.getElementById(layer1Id).style.opacity = value;
  value *= 100;
  document.getElementById(layer1Id).style.filter = 'alpha(opacity="' + value + '")'; 
  
  if (step < 1.0) {
     window.setTimeout(function () { FadeStep(step); }, 20);  // Rekursion
  } else {
      setTimeout("FadeInit()", 2000);
  }
  
}


function FadeMoveInit() {
 
  // Neues ziel bestimmen
  // move starten
  
}

function FadeMove() {
 
  // position zuweisen
  // neues position bestimmen
  // warten
  // rekursiver aufruf
  // wenn ziel erreicht, dann FadeMoveInit aufrufen
  
}


function OverlayGalery(selectId) {
  
  if (!selectId)
    selectId = 0;
 
  for (i=0; i<myImages.length; i++) {
    preImages[i] = new Image();
    preImages[i].src = myImages[i];
  }
  currentIdx = selectId;

  doFade = false;
  
  document.getElementById(layer1Id).src = myImages[currentIdx];
  document.getElementById(layer0Id).src = myImages[currentIdx];
  document.getElementById("overlayBackground").style.visibility = "visible";
  document.getElementById("overlayContainer").style.visibility = "visible";
  // document.getElementById("overlayBigBlock").style.visibility = "visible";
  
}

function OverlayHide() {

  // document.getElementById("overlayBigBlock").style.visibility = "hidden"; 
  document.getElementById("overlayContainer").style.visibility = "hidden";
  document.getElementById("overlayBackground").style.visibility = "hidden";
  delete preImages;

}

function OverlayNext() {
  
  if (!isFading)  {
  
  currentIdx++;
  if (currentIdx >= myImages.length)
    currentIdx = 0;
  
  document.getElementById(layer0Id).src = document.getElementById(layer1Id).src;
  document.getElementById(layer1Id).style.opacity = 0;
  document.getElementById(layer1Id).style.filter =  'alpha(opacity="0")';
  document.getElementById(layer1Id).src = myImages[currentIdx];
  
  isFading = true;
  OverlayFadeStep(0.0);
  
  }
  
}

function OverlayPrevious() {

  if (!isFading)  {
      
  currentIdx--;
  if (currentIdx < 0)
    currentIdx = (myImages.length-1);

  document.getElementById(layer0Id).src = document.getElementById(layer1Id).src;
  document.getElementById(layer1Id).style.opacity = 0;
  document.getElementById(layer1Id).style.filter =  'alpha(opacity="0")';
  document.getElementById(layer1Id).src = myImages[currentIdx];

  isFading = true;
  OverlayFadeStep(0.0);
  
  }
  
}


function OverlayFadeStep(step) {
 
  // opacity erhoehen
  // opacity zuweisen
  // warten
  // rekursiver aufruf
  // wenn volle opacity erreicht, dann warten und FadeInit aufrufen
 
  step += 0.1;
  value = step;
  document.getElementById(layer1Id).style.opacity = value;
  value *= 100;
  document.getElementById(layer1Id).style.filter = 'alpha(opacity="' + value + '")'; 
  
  if (step <= 1.0) {
     window.setTimeout(function () { OverlayFadeStep(step); }, 20);  // Rekursion
  } else {
    isFading = false;
  }
  
}






