var slideshowTimer;	 
var slideshowSlides = new Array();
var slideshowIndex = 0;
var slideshowSlidecount = 0;  
var slideshowImagePuffer = new Array();	 
var slideshowSpeed = 8000;

function GetRandom( min, max ) 
{
	if( min > max ) return( -1 );
	if( min == max ) return( min );
	return( min + parseInt( Math.random() * ( max-min+1 ) ));
}

function slideshow_add(file)
{
	slideshowSlides[slideshowSlidecount] = file;
	slideshowSlidecount++;
}
 
function slideshow_start(id, speed, nopuffercorrection)
{	
	if (typeof speed != "undefined") slideshowSpeed = speed;					 

	if (slideshowSlidecount < 1) return;

	// Startindex: zufällig
	slideshowIndex = GetRandom(0,(slideshowSlidecount-1));
	
	// Erstes Bild als Hintergrund setzen
	elem = document.getElementById(id);	   
	elem.style.backgroundImage = "url("+slideshowSlides[slideshowIndex]+")";	

	// Puffer-div anlegen			  
	var puffer = document.createElement("div");
	puffer.id = elem.id+"_puffer";
	puffer.className = elem.className;
	puffer.style.position = "absolute";
	if (nopuffercorrection != 1) puffer.style.left = "-1px"; 
	elem.appendChild(puffer);
			   
	if (slideshowSlidecount > 1)
	{					   
		// Bilder preloaden
		for (i=0; i < slideshowSlidecount; i++) 
		{				   
			slideshowImagePuffer[i] = new Image();
			slideshowImagePuffer[i].src = slideshowSlides[i];
		}
		
		// Slideshow starten
		slideshowTimer = setInterval("slideshow_change('"+id+"')",slideshowSpeed);
	}
}	   

function slideshow_cancel()
{
	clearInterval(slideshowTimer);
	slideshowSlidecount = 0;
}

function slideshow_change(id)
{
	// Puffer transparent machen
	changeOpac(0,id);
	
	slideshowIndex++;
	if (slideshowIndex >= slideshowSlidecount) slideshowIndex = 0;
	puffer = document.getElementById(id+"_puffer"); 
	puffer.style.backgroundImage = "url("+slideshowSlides[slideshowIndex]+")";	
	opacity(id,0,100,2000);
}		   

function opacity(id, opacStart, opacEnd, millisec) 
{ 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    if(opacStart > opacEnd) 
	{ 
        for(i = opacStart; i >= opacEnd; i--) { 	   
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } 
	else 
	if(opacStart < opacEnd) 
	{ 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    }
} 

function changeOpac(opacity, id) 
{ 
    var object = document.getElementById(id+"_puffer").style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
	
	if (opacity == 100)
	{
		// Transition beendet: Image nach hinten verschieben
		document.getElementById(id).style.backgroundImage = document.getElementById(id+"_puffer").style.backgroundImage;
	}
}
