// this file contains functions for the slideshow
// author:    Dominik Scholz, schlotzz@go4u.de
// changed:   2009-08-18



// global variables
	// create temporary data array
	var ssa = new Array();

	// different settings
	ssa.timeout = 30;
	ssa.step = 5;
	ssa.interval = 5000;

	// other images
	ssa.slideshows = new Array();
// end of global variables


// create slideshow
function slideshow(id, images)
{
	if (images.length <= 0)
		return;
		
	// decode urlencoded strings
	for (var i=0; i<images.length; i++)
	{
		for (var j=0; j<=2; j++)
		{
			images[i][j] = decodeURIComponent(images[i][j]);
		}
	}

	var parent = document.getElementById('slideshow'+id);
	
	ssa.slideshows[id] = new Array();
	ssa.slideshows[id].images = images;
	ssa.slideshows[id].length = images.length;
	ssa.slideshows[id].count = 0;
	ssa.slideshows[id].animation = 0;
	ssa.slideshows[id].fade = 0;
	
	var insertPic1 = document.createElement('img');
	insertPic1.src = images[0][0];
	parent.appendChild(insertPic1);
	
	var insertPic2 = document.createElement('img');
	ss_opacity(insertPic2.style, 0);
	insertPic2.src = images[ss_break(1, images.length)][0];
	parent.appendChild(insertPic2);

	var insertBox1 = document.createElement('div');
	insertBox1.className = 'slideshow_slidebox';
	parent.appendChild(insertBox1);

	var insertBox2 = document.createElement('div');
	insertBox2.className = 'slideshow_textbox';
	insertBox1.appendChild(insertBox2);
	
	var insertTitle = document.createElement('p');
	insertTitle.className = 'slideshow_title';
	insertBox2.appendChild(insertTitle);
	
	var insertText = document.createElement('p');
	insertText.className = 'slideshow_text';
	insertBox2.appendChild(insertText);
	
	ssa.slideshows[id].parent = parent;
	ssa.slideshows[id].pic1   = insertPic1;
	ssa.slideshows[id].pic2   = insertPic2;
	ssa.slideshows[id].box1   = insertBox1;
	ssa.slideshows[id].box2   = insertBox2;
	ssa.slideshows[id].title  = insertTitle;
	ssa.slideshows[id].text   = insertText;
	
	window.setTimeout("ss_show_text("+id+");", ssa.timeout);
}

// fade slideshow in
function ss_fade_in(id)
{
	var o = ssa.slideshows[id];
	
	o.animation += ssa.step;
	
	ss_opacity(o.pic2.style, o.animation);
	ss_opacity(o.box1.style,  Math.max(100-o.animation*2, 0));

	if (o.animation < 100)
	{
		window.setTimeout("ss_fade_in("+id+");", ssa.timeout);
	}
	else
	{
		o.animation = 100;
		window.setTimeout("ss_show_text("+id+");", ssa.timeout);
	}
}

// fade slideshow out
function ss_fade_out(id)
{
	var o = ssa.slideshows[id];
	
	o.animation -= ssa.step;
	
	ss_opacity(o.pic2.style, o.animation);
	ss_opacity(o.box1.style,  Math.max(o.animation*2-100, 0));
	
	if (o.animation > 0)
	{
		window.setTimeout("ss_fade_out("+id+");", ssa.timeout);
	}
	else
	{
		o.animation = 0;
		window.setTimeout("ss_show_text("+id+");", ssa.timeout);
	}
}

// show text
function ss_show_text(id)
{
	var o = ssa.slideshows[id];
	
	if (o.fade == 0)
	{
		o.title.innerHTML = o.images[o.count][1];
		o.text.innerHTML  = o.images[o.count][2];
		o.count = ss_break(o.count+1, o.length);
		if (o.animation == 0)
			o.pic2.src = o.images[o.count][0];
		else
			o.pic1.src = o.images[o.count][0];
	}

	o.fade += ssa.step;
	
	var m = ss_magic(o.fade/100);

	ss_opacity(o.box1.style, o.fade);
	o.box1.style.left = Math.ceil(o.parent.offsetWidth - o.box1.offsetWidth * m) + 'px';
	
	if (o.fade < 100)
	{
		window.setTimeout("ss_show_text("+id+");", ssa.timeout);
	}
	else
	{
		o.fade = 0;
		if (o.animation == 0)
			window.setTimeout("ss_fade_in("+id+");", ssa.interval);
		else
			window.setTimeout("ss_fade_out("+id+");", ssa.interval);
	}
}


// do proper number break
function ss_break(i, max)
{
	return (i>=max)? 0:i;
}

// set opacity of any element, use (element.style, 0-100)
function ss_opacity(o, p)
{
	var pInt       = Math.ceil(p);
    o.filter       = 'Alpha(opacity='+pInt+')';
    o.MozOpacity   = '' + pInt/100;
    o.KTHMLOpacity = '' + pInt/100;
    o.opacity      = '' + pInt/100;
}


// convert with sinus-function for smoother animation
function ss_magic(pos)
{
	return ((-Math.cos(pos*Math.PI)/2) + 0.5);
}