
var __timers=new Array();

function __executeTimer(num)
{
	__timers[num].execute();
}

function Timer(_intervall)
{
	this.num=__timers.length;
	__timers[this.num]=this;
	this.interval=_intervall;
	this.sliders=new Array();

	this.addSlider=function(slider)
	{
		var intervalNum=Math.floor(unixTime / this.interval);
		slider.current=intervalNum % slider.divCount;
		slider.init();
		this.sliders[this.sliders.length]=slider;
	};

	this.execute=function(to)
	{
		window.setTimeout("__executeTimer("+this.num+");",(to) ? to : this.interval);
		this.remaining=-1;
		for (var i=0;i<this.sliders.length;i++)
		{
			this.sliders[i].slide();
		}
	};
	
	// Slider straten
	var unixTime=(new Date()).getTime();
	this.execute(unixTime % this.interval);
	
}

function Slider()
{
	this.divNamespace="";
	this.divCount=0;
	this.inited=false;
	this.divs=new Array();
	this.paused=false;

	this.slider=new SwitchSlider();
	this.current=0;
	this.pausedPos=0;

	this.init=function()
	{
		for (var i=0;i<this.divCount;i++)
		{
			var div=document.getElementById("slider-"+this.divNamespace+"-"+(i+1));
			if (div) this.divs[this.divs.length]=div;
		}
		this.slider.divs=this.divs;
		
		showOnly(this.divs,this.current);
	};

	this.slide=function()
	{
		if (!this.paused) this.slider.slide(this.current);

		this.current++;
		if (this.current>=this.divs.length) this.current=0;
	};

	this.pause=function()
	{
		if (this.paused) return;
		this.paused=true;
		this.pausedPos=this.current;
		if (this.onPause) this.onPause();
	};

	this.unPause=function()
	{
		if (!this.paused) return;
		this.paused=false;
		if (this.onUnPause) this.onUnPause();
	};
	
	this.skipLast=function()
	{
		this.pause();
		this.pausedPos--;
		if (this.pausedPos<0) this.pausedPos=this.divs.length-1;
		showOnly(this.divs,this.pausedPos);
	};
	
	this.skipNext=function()
	{
		this.pause();
		this.pausedPos++;
		if (this.pausedPos>=this.divs.length) this.pausedPos=0;
		showOnly(this.divs,this.pausedPos);
	};
}

function showOnly(divs,pos)
{
	for (var i=0;i<divs.length;i++)
	{
		divs[i].style.visibility=(i==pos) ? "visible" : "hidden";
	}
}

function SwitchSlider()
{
	this.divs=null;
	
	this.x=0;
	this.slide=function(pos)
	{
		showOnly(this.divs,pos);
	};
}
