var Slideshow = {
	_slides: null,
	_curSlide: null,
	_interval: null,
	
	Initialize: function(sPanel)
	{
		var oPanel = $(sPanel);
		if (!oPanel)
		{
			return;
		}
		
		Slideshow._slides = oPanel.select('div.slide');
		
		for (var i = 0; i < Slideshow._slides.length; i++)
		{
			var slide = Slideshow._slides[i];
			slide._caption = $(slide.id + "_caption");
			slide._slideIndex = i;
			slide.hide();
			slide._caption.hide();
		}
		
		Slideshow.NextSlide();
		Slideshow._interval = window.setInterval('Slideshow.NextSlide()', 7000);
	},	
	
	HideAll: function()
	{
		for (var i = 0; i < Slideshow._slides.length; i++)
		{
			var slide = Slideshow._slides[i];
			if (Slideshow._isVisible(slide))
			{
				Slideshow._transitionOut(slide);
			}
		}
	},
	
	_isVisible: function(slide)
	{
		return slide.visible();
	},
	
	_transitionOut: function(slide)
	{
		var targetTop = 0;
		var targetLeft = 0;

		new Effect.Parallel([
			new Effect.Opacity(slide, { sync: true, from: 1, to: 0 })
			], {duration: 3.5});
	},
	
	_transitionIn: function(slide)
	{
		var targetTop = 0;
		var targetLeft = 0;
				
		slide.setStyle({opacity: '0'});
		slide.setStyle({left: (targetLeft - 0) + 'px', top: (targetTop + 0) + 'px', opacity: '0'});
		slide.show();
		new Effect.Parallel([
			new Effect.Move(slide, { sync: true, x: targetLeft, y: targetTop, mode: 'absolute' }),
			new Effect.Opacity(slide, { sync: true, from: 0, to: 1 })
			], {duration: 3.5, delay: 0});
	},
	
	ShowSlide: function(index)
	{
		if (Slideshow._curSlide && index == Slideshow._curSlide._slideIndex)
		{
			return;
		}
			
		if (Slideshow._curSlide)
		{
			Slideshow._transitionOut(Slideshow._curSlide);
		}
		
		Slideshow._transitionIn(Slideshow._slides[index]);
		Slideshow._curSlide = Slideshow._slides[index];
	},
	
	NextSlide: function()
	{
		var nextId = 0;
		if (Slideshow._curSlide)
		{
			nextId = Slideshow._curSlide._slideIndex + 1;
			if (nextId >= Slideshow._slides.length) { nextId = 0; }
		}
		
		if (Slideshow._slides.length > 0)
		{
			Slideshow.ShowSlide(nextId);
		}
	},
	
	doStuff: function()
	{
		var oCapt = $('slideCaption_0');
		
		new Effect.Move(oCapt, { x: 0, y: 0, mode: 'absolute' });
		new Effect.SwitchOff(oCapt);
	}
	
}

Event.observe(window, 'load', function() { Slideshow.Initialize('slidePanel'); });