/*
Author	: GUY MOREL + 
Date	: 2007-12-28
Function: I am a scriptaculous slideshow that has an optional extra image poller.
		
			Eg. of values to set:
			var slides = new Array('slideshow1', 'slideshow2', 'slideshow3', 'slideshow4', 'slideshow5'); 
			var iNext = 0; var iWait = 5000; var iFadeLength = 2000; var bPollImages = true; var iFullImageHeight = 197;
			
			Note: For x-fade to work, css styling of the divs needs an absolute positioning + width + height
			
			To debug, create a div with id = 'output' somewhere visible & uncomment some of the debug lines
*/

var bAllImagesDown = false;

// slideshow
function SlideShow() {
	iPrev = iNext;
	iNext++;
 	if (iNext == slides.length) iNext = 0;

	// check if the image exists first [ if we set this flag, do a check to see if the images exist first ]
	if( bPollImages && !bAllImagesDown && !imageCached(iNext) ) { iNext=iPrev;  return};
	
	Effect.Fade(slides[iPrev], { duration:iFadeLength/1000, from:1.0, to:0.0 });
	Effect.Appear(slides[iNext], { duration:iFadeLength/1000, from:0.0, to:1.0 });
} 

// the onload event handler that starts the fading. 
function start_slideshow() { setInterval('SlideShow()',iWait); }

// -- specialist poller functions: load images in our own order --
function LoadImage(imageName,imageFile){
	if (!document.images) return;
	
	// read the image data
	var oImgData = document.images[imageName];
	// create the new one
	var oNewImg = new Image();
	oNewImg.src = imageFile;
	oNewImg.name = imageName;
	oNewImg.id = imageName;
	oNewImg.alt = oImgData.alt;
	oNewImg.title = oImgData.title;
	
	// DOM swap / old with new
	oImgData.parentNode.replaceChild(oNewImg,oImgData);
}

// image poller	
function imageCached(iSlideIndex){
	
	arrImage = document.getElementById(slides[iSlideIndex]).getElementsByTagName("img");
	
	oImage = arrImage[0];
	
	// avoid errors & avoid check for first image
	if( !oImage ){  return false; } // error, pause

//$('output').innerHTML += " -- below img chek |" + oImage.src + " = " + oImage.height + "]" + oImage.style.height + "}" + iFullImageHeight+ "}" + oImage + "}<br>";
	//\ --- check if the image is in cache (we will know the dimensions)
		// if not loaded, pause
	if( oImage.height != iFullImageHeight ){
		return false;
	}
//$('output').innerHTML += " -- below height chek <br>";
	// set if we have all images, so no need to run this function
	if ( (iSlideIndex+1) == slides.length ) bAllImagesDown = true;
	
	// else resume, we now have the image
	return true;
	//\/ ----
}