var slideshows = new Array();
var slideshowId = 0;

function startSlideshow(obj)
{
	// set up vars
	var slideshow = {};
	slideshow.container = document.getElementById(obj.id);
	
	// just stop if there's no object
	if(slideshow.container == null)
		return;
	
	slideshow.container.style.width = obj.width + 'px';
	slideshow.container.style.height = obj.height + 'px';
	slideshow.container.style.display = 'block';
	slideshow.container.style.overflow = 'hidden';
	slideshow.speed = obj.speed;
	slideshow.delay = obj.delay;
	slideshow.frameRate = obj.frameRate;
	slideshow.items = new Array();
	for (var i = 0; i < slideshow.container.childNodes.length; i++) 
	{
		if (slideshow.container.childNodes[i].tagName != null) 
		{
			slideshow.container.childNodes[i].style.display = 'none';
			slideshow.container.childNodes[i].style.position = 'absolute';
			slideshow.container.childNodes[i].style.zIndex = '100';
			slideshow.items.push(slideshow.container.childNodes[i]);
		}
	}
	
	// just stop if there's not enough
	if(slideshow.items.length < 2)
		return;

	// pick first one
	slideshow.current = Math.floor(Math.random() * slideshow.items.length);
	slideshow.items[slideshow.current].style.display = 'block';

	// start
	slideshow.id = slideshowId++;
	slideshows.push(slideshow);
	var startDelay = obj.startDelay == null ? 0 : obj.startDelay;
	setTimeout('slideshowTransition(' + slideshow.id + ')', slideshow.delay + startDelay);
}

function slideshowTransition(id)
{
	var slideshow = slideshows[id];
	
	// pick next one
	do
	{
		slideshow.next = Math.floor(Math.random() * slideshow.items.length);
	}
	while(slideshow.next == slideshow.current);
	
	// next one is on top
	slideshow.items[slideshow.next].style.zIndex = 200;
	slideshow.nextOpacity = 0;
	setOpacity(slideshow.items[slideshow.next], slideshow.nextOpacity);
	slideshow.items[slideshow.next].style.display = 'block';
	
	slideshow.fadeInterval = setInterval('slideshowStep(' + slideshow.id + ')', 1000 / slideshow.frameRate);
}

function slideshowStep(id)
{
	var slideshow = slideshows[id];

	slideshow.nextOpacity += Math.ceil(100000 / (slideshow.frameRate * slideshow.speed));
	if (slideshow.nextOpacity >= 100) 
	{
		clearInterval(slideshow.fadeInterval);
		setOpacity(slideshow.items[slideshow.next], 100);
		slideshow.items[slideshow.current].style.display = 'none';
		slideshow.items[slideshow.next].style.zIndex = 100;
		slideshow.current = slideshow.next;
		setTimeout('slideshowTransition(' + slideshow.id + ')', slideshow.delay);
	}
	else
		setOpacity(slideshow.items[slideshow.next], slideshow.nextOpacity);
}

function setOpacity(id, opacity)
{
	// can pass an ID *OR* the object itself
	obj = typeof id == 'string' ? document.getElementById(id) : id;

	if(obj == null || obj.style == null)
		return;

	obj.style.opacity = (opacity/101).toFixed(4); 
	obj.style.MozOpacity = (opacity/101).toFixed(4); 
	obj.style.KhtmlOpacity = (opacity/100).toFixed(4); 
	obj.style.filter = "alpha(opacity="+opacity+")"; 
}