function Slideshow(slideshowArea)
{	
	this.slideshowArea = $(slideshowArea);
	this.slides        = this.slideshowArea.select('img');
	this.actualSlide   = 0;
	this.animation     = false;
	this.timeInterval  = 4;   //sec
	this.fadeInterval  = 1; //sec
	this.pe            = null;

    this.actualPage = $$('.slideshowNav .actual').first();
} 

Slideshow.prototype.run = function()
{
	if($('productHomeVideo'))
	{
		$('productHomeVideo').hide();
		$('productHomeVideoLoader').hide();
	}
	
	if(this.slides.size() > 0 && $(this.slideshowArea.parentNode).visible())
	{
		this.pe = new PeriodicalExecuter(this.slide.bind(this, null), this.timeInterval);
	}
}

Slideshow.prototype.stop = function()
{
	if(this.pe)
	{
		this.pe.stop();
	}
}

Slideshow.prototype.slide = function(slideNumber)
{
	if(this.animation == false)
	{
		//pri nacasovanom volani automatickej slideshow je fcia volana s 2 argumentami
		if($(arguments).length == 2)
		{
			slideNumber = (this.actualSlide + 1) % this.slides.size();
		}
		else
		{
			this.stop();
		}
		if(slideNumber != this.actualSlide)
		{
			this.animation = true;
			var newSlide = $('slide_' + slideNumber);
			var oldSlide = $('slide_' + this.actualSlide);
			if($('slide_button_' + this.actualSlide))
			{
				$('slide_button_' + this.actualSlide).removeClassName('selected');
			}
			if($('slide_button_' + slideNumber))
			{
				$('slide_button_' + slideNumber).addClassName('selected');
			}
			if(newSlide && oldSlide)
			{
				this.slideshowArea.insertBefore(newSlide, oldSlide);
				newSlide.show();
				this.actualSlide = slideNumber;
				new Effect.Fade(oldSlide.identify(),{duration:this.fadeInterval, afterFinish: this.animationEnd.bindAsEventListener(this)});

                this.actualPage.update(this.actualSlide + 1);
			}			
		}
	}
}


Slideshow.prototype.show = function(slideNumber)
{
	if(this.animation == false)
	{
		this.stop();
		
		if(slideNumber != this.actualSlide)
		{
			var newSlide = $('slide_' + slideNumber);
			var oldSlide = $('slide_' + this.actualSlide);
			if($('slide_button_' + this.actualSlide))
			{
				$('slide_button_' + this.actualSlide).removeClassName('selected');
			}
			if($('slide_button_' + slideNumber))
			{
				$('slide_button_' + slideNumber).addClassName('selected');
			}
			if(newSlide && oldSlide)
			{
				this.slideshowArea.insertBefore(newSlide, oldSlide);
				newSlide.show();
				this.actualSlide = slideNumber;
				oldSlide.hide();
			}			
		}
	}
}

Slideshow.prototype.animationEnd = function()
{
	this.animation = false;
}

Slideshow.prototype.next = function()
{
	if(!this.animation)
	{
		this.slide((this.actualSlide + 1) % this.slides.size());
	}
}

Slideshow.prototype.previous = function()
{
	if(!this.animation)
	{
		this.slide((this.actualSlide - 1 + this.slides.size()) % this.slides.size());
	}
}

