$(
	function()
	{
		window.slider=new slider();
		window.slider.aplikuj();
	}
);
function slider()
{
	this.autoSlideTime=5000;
	this.active=0;
	
	this.slides=$('div#slider ul.slider li.slider');  
	this.slidedStarted=new Date();
	this.slideWaited=0;
	this.slidePausedAt=null;
}
slider.prototype.aplikuj = function()
{
	$(slider.slides.get(this.active)).addClass('selected');
	setTimeout('slider.autoSlide()',slider.autoSlideTime);
	$('div#slider').append('<div class="pointer"></div>');
	for (var i=0;i<this.slides.length;i++)
	{
		$('div#slider div.pointer').append('<span>&nbsp;</span>');
	}
	$('div#slider div.pointer span').slice(this.active,this.active+1).addClass('selected');
	$('div#slider').mouseenter(slider.waitStart);
	$('div#slider').mouseleave(slider.waitEnd);
	$('div#slider div.pointer span').click(
		function()
		{
			slider.slide($('div#slider div.pointer span').index(this));
		}
	);
}
slider.prototype.slide = function(toSlide)
{
	if (typeof(toSlide)=='undefined' || toSlide>=this.slides.length)
	{
		alert('error');
		return;
	}
	
	var toSlideObject=slider.slides.slice(toSlide,toSlide+1);
	toSlideObject.addClass('next');
	var selectedObject=slider.slides.filter('.selected');
	selectedObject.css('opacity','1.0');
	selectedObject.animate({opacity:0.0},1500,
		function()
		{
			selectedObject.css('opacity','');
			slider.slides.removeClass('selected');
			toSlideObject.removeClass('next');
			toSlideObject.addClass('selected');
			var pointers=$('div#slider div.pointer span');
			pointers.removeClass('selected');
			pointers.slice(toSlide,toSlide+1).addClass('selected');
			slider.slideWaited=0;
			slider.slidedStarted=new Date();
		}
	);
}
slider.prototype.autoSlide = function()
{
	var actualTime=new Date();
	var waitFor=slider.slideWaited+(actualTime.getTime()-slider.slidedStarted.getTime());
	if (slider.slidePausedAt!=null)
	{
		waitFor+=(slider.slidePausedAt.getTime()-actualTime.getTime());
		setTimeout('slider.autoSlide()',Math.max(100,Math.min(slider.autoSlideTime,slider.autoSlideTime-waitFor)));
		return;
	}
	if (waitFor-100<slider.autoSlideTime)
	{
		setTimeout('slider.autoSlide()',Math.max(100,slider.autoSlideTime-waitFor));
		return;
	}
	slider.active=(slider.active+1)%slider.slides.length;
	slider.slide(slider.active);
	setTimeout('slider.autoSlide()',slider.autoSlideTime);
}
slider.prototype.waitStart=function()
{
	if (slider.slidePausedAt==null)
	{
		slider.slidePausedAt = new Date();
	}
}
slider.prototype.waitEnd=function()
{
	if (slider.slidePausedAt!=null)
	{
		slider.slideWaited = slider.slidedStarted.getTime()-slider.slidePausedAt.getTime();
		slider.slidedStarted = new Date();
		slider.slidePausedAt = null;
	}
}


