function NewsSlideshow()
{	
	this.slideshowArea = $('newsHolder');
	this.slides        = this.slideshowArea.select('.news');
	this.actualSlide   = 0;
	this.animation     = false;
	this.timeInterval  = 4;   //sec
	this.slideInterval  = 1; //sec
	this.fadeInterval  = 0.3; //sec
	this.pe            = null;
} 

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

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

NewsSlideshow.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)
		{
			var newSlide = $('news_' + slideNumber);
			var oldSlide = $('news_' + this.actualSlide);
			if($('news_button_' + this.actualSlide))
			{
				$('news_button_' + this.actualSlide).removeClassName('selected');
			}
			if($('news_button_' + slideNumber))
			{
				$('news_button_' + slideNumber).addClassName('selected');
			}
			if(newSlide && oldSlide)
			{
				this.slideshowArea.insertBefore(newSlide, oldSlide);

				Effect.Fade('news_date_' + this.actualSlide, {duration: this.fadeInterval});
				$('news_date_' + slideNumber).hide();
				
				this.actualSlide = slideNumber;
				
				new Effect.SlideUp(oldSlide.identify(),{duration:this.slideInterval, afterFinish: this.animationEnd.bindAsEventListener(this)});
				new Effect.SlideDown(newSlide.identify(),{duration:this.slideInterval, direction: -1, afterFinish: this.animationEnd.bindAsEventListener(this)});
				this.showDate.bind(this).delay(this.slideInterval - this.fadeInterval);
			}			
		}
	}
}

NewsSlideshow.prototype.showDate = function()
{
	Effect.Appear('news_date_' + this.actualSlide, {duration: this.fadeInterval});
}

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

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

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

