function Slideshow(slideshowArea, slideshowPane)
{	
	this.slideshowArea = $(slideshowArea);
	this.slideshowPane = $(slideshowPane);
	this.slides        = this.slideshowArea.select('div.slide');
	this.slideWidth	   = this.slides[0].getWidth();
	this.slideHeight	   = this.slides[0].getHeight();
	this.actualSlide   = 0;
	this.timeInterval  = 4;   //sec
	this.duration  = 0.4;   //sec
	this.pe            = null;
	this.animation		   = 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.next.bind(this, null), this.timeInterval);
	}
}

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

Slideshow.prototype.next = function()
{
	var index = (this.actualSlide + 1) % this.slides.size();
	this.show(index, false);
}

Slideshow.prototype.show = function(slideNumber, userStopAction)
{
	if(this.animation) return;
	
	if(userStopAction)
	{
		this.stop();
		this.userStopAction = userStopAction;
	}
	
	if(slideNumber == this.actualSlide) return;
	
	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)
	{
		if(newSlide.cumulativeOffset()['top'] <  oldSlide.cumulativeOffset()['top'])
		{
			this.slideshowPane.style.top = parseInt(this.slideshowPane.style.top) + this.slideHeight + 'px';
		}
		oldSlide.insert({'after': newSlide});
		
		this.animation = true;
		new Effect.Move(this.slideshowPane, { x: 0, y: -this.slideHeight, mode: 'relative',duration:this.duration, transition: Effect.Transitions.sinoidal, afterFinish: this.animationEnd.bind(this)});
		this.actualSlide = slideNumber;
	}			
}


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


