function Slideshow(slideshowArea)
{	
	this.slideshowArea = $(slideshowArea);
	this.slides        = this.slideshowArea.select('div.slide');
	this.actualSlide   = 0;
	this.active        = false;
	this.timeInterval  = 3;   //sec
	this.fadeInterval  = 1; //sec
	this.pe            = null;
	this.block		   = false;
} 


Slideshow.prototype.run = function()
{
	if(this.slides.size() > 0 && $(this.slideshowArea.parentNode).visible())
	{
		Event.observe(window, 'scroll', this.onWindowScroll.bind(this));
		this.onWindowScroll();
	}
}

Slideshow.prototype.onWindowScroll = function()
{
	var elementOffset = this.slideshowArea.cumulativeOffset();
	var scrollOffset = document.viewport.getScrollOffsets();
	if(document.viewport.getHeight() + scrollOffset.top > elementOffset.top && this.slideshowArea.getHeight() + elementOffset.top > scrollOffset.top)
	{
		//slideshow sa pusti az ked je vo viditelnej zone obrazovky
		this.start();
	}
	else
	{
		//ak nie je vidielna tak sa zastavi;
		this.stop();
	}
}

Slideshow.prototype.start = function()
{
	if(!this.pe && !this.userStopAction)
	{
		this.pe = new PeriodicalExecuter(this.slide.bind(this, null), this.timeInterval);
	}
}

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

Slideshow.prototype.slide = function(slideNumber)
{
	if(this.block == 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.userStopAction = true;
			this.stop();
		}
		if(slideNumber != this.actualSlide)
		{
			this.block = true;
			var newSlide = $('slide_' + slideNumber);
			var oldSlide = $('slide_' + this.actualSlide);
//			$('slideImage_' + this.actualSlide).src = $('slideImage_' + this.actualSlide).src.replace('active-', '');
//			$('slideImage_' + slideNumber).src = $('slideImage_' + slideNumber).src.replace('thumb', 'active-thumb');
//			$('slideLink_' + this.actualSlide).removeClassName('active');
//			$('slideLink_' + slideNumber).addClassName('active');
			if(newSlide && oldSlide)
			{
				this.slideshowArea.insertBefore(newSlide, oldSlide);
				newSlide.show();
				this.actualSlide = slideNumber;
				new Effect.Fade(oldSlide.identify(),{duration:this.fadeInterval, afterFinish: this.unblock.bindAsEventListener(this)});
			}			
		}
	}
}

Slideshow.prototype.show = function(slideNumber)
{
	if(this.block == false)
	{
		this.stop();
		
		if(slideNumber != this.actualSlide)
		{
			var newSlide = $('slide_' + slideNumber);
			var oldSlide = $('slide_' + this.actualSlide);
			$('slideImage_' + this.actualSlide).src = $('slideImage_' + this.actualSlide).src.replace('active-', '');
			$('slideImage_' + slideNumber).src = $('slideImage_' + slideNumber).src.replace('thumb', 'active-thumb');
			$('slideLink_' + this.actualSlide).removeClassName('active');
			$('slideLink_' + slideNumber).addClassName('active');
			if(newSlide && oldSlide)
			{
				this.slideshowArea.insertBefore(newSlide, oldSlide);
				newSlide.show();
				this.actualSlide = slideNumber;
				oldSlide.hide();
			}			
		}
	}
}


Slideshow.prototype.unblock = function()
{
	this.block = false;
}


