// Browser Slide-Show script. With image cross fade effect for those browsers


// that support it.


// Script copyright (C) 2004-2010 www.cryer.co.uk.


// Script is free to use provided this copyright header is included.


var FadeDurationMS=800;


var slideCache = new Array();





function SetOpacity(object,opacityPct)


{


  // IE.


  object.style.filter = 'alpha(opacity=' + opacityPct + ')';


  // Old mozilla and firefox


  object.style.MozOpacity = opacityPct/100;


  // Everything else.


  object.style.opacity = opacityPct/100;


}





function ChangeOpacity(id,msDuration,msStart,fromO,toO)


{


  var element=document.getElementById(id);


  var msNow = (new Date()).getTime();


  var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;


  if (opacity>=100)


  {


    SetOpacity(element,100);


    element.timer = undefined;


  }


  else if (opacity<=0)


  {


    SetOpacity(element,0);


    element.timer = undefined;


  }


  else 


  {


    SetOpacity(element,opacity);


    element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",10);


  }


}





function FadeInImage(foregroundID,newImage,backgroundID)


{


  var foreground=document.getElementById(foregroundID);


  if (foreground.timer) window.clearTimeout(foreground.timer);


  if (backgroundID)


  {


    var background=document.getElementById(backgroundID);


    if (background)


    {


      if (background.src)


      {


        foreground.src = background.src; 


        SetOpacity(foreground,100);


      }


      background.src = newImage;


      background.style.backgroundImage = 'url(' + newImage + ')';


      background.style.backgroundRepeat = 'no-repeat';


      var startMS = (new Date()).getTime();


      foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",10);


    }


  } else {


    foreground.src = newImage;


  }


}








function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs)


{


  var imageSeparator = imageFiles.indexOf(";");


  var nextImage = imageFiles.substring(0,imageSeparator);


  if (slideCache[nextImage] && slideCache[nextImage].loaded)


  {


    FadeInImage(pictureID,nextImage,backgroundID);


    var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)


      + ';' + nextImage;


    setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")",


      displaySecs*1000);


    // Identify the next image to cache.


    imageSeparator = futureImages.indexOf(";");


    nextImage = futureImages.substring(0,imageSeparator);


  } else {


    setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+imageFiles+"',"+displaySecs+")",


      250);


  }


  // Cache the next image to improve performance.


  if (slideCache[nextImage] == null)


  {


    slideCache[nextImage] = new Image;


    slideCache[nextImage].loaded = false;


    slideCache[nextImage].onload = function(){this.loaded=true};


    slideCache[nextImage].src = nextImage;


  }


}

function wopen(url, name, w, h)
{
// Fudge factors for window decoration space.
 // In my tests these work well on all platforms & browsers.
w += 32;
h += 96;
 var win = window.open(url,
  name,
  'width=' + w + ', height=' + h + ', ' +
  'location=no, menubar=no, ' +
  'status=no, toolbar=no, scrollbars=no, resizable=no');
 win.resizeTo(w, h);
 win.focus();
}

