var slideDelay = 6000;
var slideImageList = [];
var slideFirstImage = [];

function preloadImages(imagesPath, imgList, parentNode)
{
	slideImageList[parentNode] = [];
	
	for(var i = 0; i < imgList.length; i ++ )
	{
		var img = new Image();
		
		if( typeof imagesPath != 'undefined' )
		{
			imgList[i] = imagesPath	+ imgList[i];
		}
		
		img.src = imgList[i];
		
		slideImageList[parentNode].push(img);
	} 
}

function renderImages(imagesPath, imgList, parentNode)
{
	
	preloadImages(imagesPath, imgList, parentNode);
	
	slideFirstImage[parentNode] = Math.round(Math.random() * (imgList.length - 1));
	
	for( var i = 0; i < imgList.length; i ++ )
	{
		renderImage(imgList[i], parentNode, parentNode + "slideimage" + i, (slideFirstImage[parentNode] != i) );
	}
}

function renderImage(img, parentNode, id, hidden)
{
	parentNode = document.getElementById(parentNode);
	
	var d = document.createElement('div');
	d.id = id;
	
	d.style.position = "absolute";
	
	var im = document.createElement('img');
	im.src =img;
	with(im.style)
	{
		width = parentNode.style.width;
		height = parentNode.style.height;
	}
	
	d.appendChild(im);
	
	if( hidden )
	{
		Valraiso.util.changeOpacity(d, 0);
	}
	
	parentNode.appendChild(d);
}

function slideImages(imgList, parentNode, delay, fromIdx)
{
	if( imgList.length < 2 )
	{
		return;	
	}
	
	if( typeof parentNode == 'string' )
	{
		parentNode = document.getElementById(parentNode);
	}
	
	if( delay == null )
	{
		delay = slideDelay;	
	}
	
	if( fromIdx == null )
	{
		fromIdx = slideFirstImage[parentNode.id];
	}
	
	var nextIdx = fromIdx + 1;
	
	if( nextIdx > imgList.length - 1 )
	{
		nextIdx = 0;
	}
	
	if( slideImageList[parentNode.id] == null || !slideImageList[parentNode.id][nextIdx].complete )
	{
		setTimeout( function() { slideImages(imgList, parentNode, delay, fromIdx) } , 200 );
		return;
	}
	
	Valraiso.util.fading(parentNode.id + "slideimage" + fromIdx, 100, 0, 4000);
	Valraiso.util.fading(parentNode.id + "slideimage" + nextIdx, 0, 100, 3000);
	
	setTimeout(function() { slideImages(imgList, parentNode, delay, nextIdx)}, delay + 1500);
}
