var delay = 10000;
var start_frame = 0;
var arImages = {};
var arPreloadedImages = [];
var blnCaptions = false;

function init() {
	if (document.getElementById('slide-show')) {
		var images = document.getElementById('slide-show').getElementsByTagName('img');
		
		
		if(images.length == 1) { return false; }
		
		for (i = 0; i < images.length; i++) {
			arImages[i] = {'src': images[i].src, 'alt': images[i].alt};
			
			if(images[i].alt.length > 0) {
				blnCaptions = true;
			}
			
			
			//begin preloading this image...
			objPreloader = new Preloader;
			objPreloader.add(images[i].src);
			objPreloader.onFinish(preload_finished(i));
			objPreloader.load();
			
			if (i != 0) {
				images[i].style.display = 'none';
			}
		}
		$('slide-show').removeChild($('slide-show').getElementsByTagName('ul')[0]);
		
		img = new Element('img', {'src': arImages[0]['src'], 'alt':arImages[0]['alt']});
		$('slide-show').appendChild(img);
		
		if(blnCaptions) {
			Insertion.After('slide-show', '<p id="slide-show-caption">' + arImages[0]['alt'] + '</p>');
		}
			
		end_frame = i - 1;
		start_slideshow(start_frame, end_frame, delay);
	}
}

function start_slideshow(start_frame, end_frame, delay) {
	setTimeout(fadeInOut(start_frame,start_frame,end_frame, delay), delay);
}

function preload_finished(imgKey) {
	arPreloadedImages[imgKey] = true;
}

function fadeInOut(frame, start_frame, end_frame, delay) {
	return (function() {
		if (frame == end_frame) { frame = start_frame; } else { frame++; }

		if(typeof(arPreloadedImages[frame]) != "undefined") {
			oimg = new Image;
			oimg.src = arImages[frame]['src'];
			
			img = new Element('img', {'src': arImages[frame]['src'], 'alt':arImages[frame]['alt'],'style':'display:none; position:absolute; left:0; top:0;'});
			$('slide-show').appendChild(img);
			
			oImgOld = $('slide-show').getElementsByTagName('img')[0];
			oImgNew = $('slide-show').getElementsByTagName('img')[1];

			oimg.onload = function() {
				$('slide-show').style.height = "200px";

				
				new Effect.Fade(oImgOld, {afterFinish: function(effect) { effect.element.remove(); }});
				
				if(blnCaptions) {
					if($('slide-show-caption')) { $('slide-show-caption').remove(); }
					
					if (arImages[frame]['alt'].length > 0) {
						Insertion.After('slide-show', '<p id="slide-show-caption">' + arImages[frame]['alt'] + '</p>');
					}
				}
				
				new Effect.Appear(oImgNew);
			}
			
		}else{
			//image is not ready yet, wait...
			frame--;
			if(frame < 0) {
				frame = 0;
			}
		}
		
		setTimeout(fadeInOut(frame, start_frame, end_frame, delay), delay + 1850);
	})
	
}

document.observe("dom:loaded", init);