var Slideshow = {
	_slides: null,
	_curSlide: null,
	_interval: null,
	_centered: false,
	
	Initialize: function(sPanel)
	{
		var oPanel = $(sPanel);
		var maxHeight = 0;
		
		var navPanel = $('slideControls');
		
		if (!navPanel)
		{
			navPanel = new Element('div',{'id':'slideControls'});
			oPanel.insert({after:navPanel});
		}

		Slideshow._slides = $(sPanel).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;
			var slideHeight = slide.getHeight();
			maxHeight = (slideHeight > maxHeight) ? slideHeight : maxHeight;
			slide.hide();
			if (slide._caption)
			{
				slide._caption.hide();
			}

			slide._navButton = new Element('span').update(i+1);
			navPanel.insert(slide._navButton);
			Event.observe(slide._navButton, 'click', Slideshow.NavClick.bindAsEventListener(this, i));
		}
		
		oPanel.setStyle({'height': maxHeight + 'px'});
				
		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;

		if (Slideshow._centered)
		{
			targetTop = (266 - slide.getHeight()) / 2;
			targetLeft = (316 - slide.getWidth()) / 2;
		}

		if (slide._navButton)
		{
			slide._navButton.removeClassName('current');
		}

		new Effect.Parallel([
			new Effect.Move(slide, { sync: true, x: (targetLeft - 500), y: (targetTop + 0), mode: 'absolute' }),
			new Effect.Opacity(slide, { sync: true, from: 1, to: 0 })
			//new Effect.Move(slide._caption, { sync: true, x: 326, y: -50, mode: 'absolute' }),
			//new Effect.Opacity(slide._caption, { sync: true, from: 1, to: 0 })
			], {duration: 1.0});
	},
	
	_transitionIn: function(slide)
	{
		var targetTop = 0;
		var targetLeft = 0;

		if (Slideshow._centered)
		{
			targetTop = (266 - slide.getHeight()) / 2;
			targetLeft = (316 - slide.getWidth()) / 2;
		}

		slide.setStyle({left: (targetLeft + 500) + 'px', top: (targetTop + 0) + 'px', opacity: '0'});
		if (slide._caption)
		{
			slide._caption.setStyle({left:'326px',top:'50px', opacity: '0'});
			slide._caption.show();
		}
		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 })
	//		new Effect.Move(slide._caption, { sync: true, x: 326, y: 0, mode: 'absolute' }),
	//		new Effect.Opacity(slide._caption, { sync: true, from: 0, to: 1 })
			], {duration: 1.0, delay: 0, afterFinish: function(){if (slide._navButton) { slide._navButton.addClassName('current'); }}});
	},

	NavClick: function(e, index)
	{
//		Slideshow._slide_transition = 0.5;
		Slideshow.ShowSlide(index, true);
	},

	ShowSlide: function(index, bStop)
	{
		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];

		if (bStop)
		{
			if (Slideshow._interval)
			{
				window.clearTimeout(Slideshow._interval);
			}
		}
		if (!bStop)
		{
			Slideshow._interval = window.setTimeout('Slideshow.NextSlide()', 7000);
		}
	},
	
	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, false);
		}
	},
	
	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'); });
