/*
doublebuffered.js
copyright by fugu GmbH 2004, Berne, Switzerland
*/

document.doDoubleBufferedImage = true;
//Mac IE will crash on div.innerHTML -> do not double buffer images
if(navigator.appName.toUpperCase().indexOf("MICROSOFT")>=0 && navigator.platform.toUpperCase().indexOf("MAC")>=0){
  document.doDoubleBufferedImage = false;
}

document.doubleBufferedErrors = new Array();

function doubleBufferedLoaded(placeholderName,imgObj,nextImageName){
  
   if(placeholderName==null || imgObj==null)
     return;
   if(MM_findObj==null)
     return;
   var img = MM_findObj(placeholderName);
   if(img!=null){
     img.src = imgObj.src;
   }
      
   if((nextImageName+"").length>0)
     doubleBufferedNextImage(nextImageName);
}

function doubleBufferedNextImage(nextImageName){
  if(nextImageName==null || nextImageName.length==0)
     return;
  
   var div = MM_findObj(nextImageName+"_dbdiv");
   if(div==null){
     if(document.doubleBufferedErrors[nextImageName]==null)
       document.doubleBufferedErrors[nextImageName] = 0;
     document.doubleBufferedErrors[nextImageName]++;
     
     if(document.doubleBufferedErrors[nextImageName]==5)
       return;

     window.setTimeout('doubleBufferedNextImage(\''+nextImageName+'\')', 250); 
     return;
   }
     
   var buffer = document[nextImageName+"DoubleBuffer"];

   if(div!=null && buffer!=null && div.innerHTML!=null){
     div.innerHTML = buffer;
   }
}

function doubleBufferedSlideLoaded(name,imgObj){
  if(name==null || imgObj==null)
     return;
  if(MM_findObj==null)
     return;
   
  if(document[name+"SlideNr"]==null)
    document[name+"SlideNr"] = 0;
  if(document[name+"SlidesSRC"]==null)
    document[name+"SlidesSRC"] = new Array();
  
  //Append
  var src = document[name+"SlidesSRC"];
  if(src!=null)
    document[name+"SlidesSRC"][src.length] = imgObj.src;
    
  var img = MM_findObj(name);
  //Show first slide immediately
  if(img!=null && document[name+"SlideNr"]==0)
    img.src = document[name+"SlidesSRC"][0];
  
  doubleBufferedNextSlide(name);
}

function doubleBufferedNextSlide(name){
  if(name==null)
    return;
  
  var startTimeout = false;
  
  //alert(document[name+"Slides"].length+" "+document[name+"SlidesSRC"].length);
  
  //Load next slide to buffer
  if(document[name+"SlidesSRC"].length<document[name+"Slides"].length){
    //Load next slide
    var slide = MM_findObj(name+"Slide"+document[name+"SlidesSRC"].length);
    if(slide!=null && slide.innerHTML.length==0){
      //Load last image in SRC
      slide.innerHTML = '<img src="'+document[name+"Slides"][document[name+"SlidesSRC"].length]+'" onLoad="doubleBufferedSlideLoaded(\''+name+'\',this)">'; 
    }
  }
  
  //Timeout elapsed
  if(document[name+"SlidesID"]==null){
    var img = MM_findObj(name);
    //Show slide
    if(img!=null){
      img.src = document[name+"SlidesSRC"][document[name+"SlideNr"]];
    }
      
    var startTimeout = false;
    switch(document[name+"SlideType"]){
      case 1:
        if(document[name+"SlidesSRC"][((document[name+"SlideNr"] + 1) % document[name+"Slides"].length)]!=null)
          startTimeout = true;
      break;
      case 2:
        if(document[name+"Slides"].length==document[name+"SlidesSRC"].length)
          startTimeout = true;  
      break;
      default:
        startTimeout = true;
    }
          
    if(startTimeout)
      document[name+"SlidesID"] = window.setTimeout ('doubleBufferedSlideTimeout(\''+name+'\')', document[name+"SlideInterval"]);  
  }
}

function doubleBufferedSlideTimeout(name){
  if(name==null)
    return;
  
  document[name+"SlideNr"] = ((document[name+"SlideNr"] + 1) % document[name+"SlidesSRC"].length);
  document[name+"SlidesID"] = null;
  doubleBufferedNextSlide(name);
}

