window.addEvent("load", function(){
	var speed = 300;
	var infoSpeed = 300;
	var autoSpeed = 5500;
	var autoDelay = 5000;
	// Arrays for elements
	var tabs = $$("#slideshowTabs li");
	var infos = $$("#slideshowInfo div.slideshowInfo");
	var slides = $$("#slideshowSlides .slideshowSlide");
	// Arrays for morphs
	var infoMorph = new Array();
	var slideMorph = new Array();
	var defaultMorph = new Fx.Tween("slideshowDefault", {duration: speed, link: 'cancel', transition: Fx.Transitions.Linear, property: 'opacity'});
	// Variables to keep animation form breaking
	var activeTab = -1;
	var noWait = 1;
	// Variables to keep automation smooth
	var autoStart;
	var delayStart;
	var infoStart;
	
	//Animation function
	function animateSlide(newIndex)
	{
		if(activeTab != newIndex)
		{
			var oldTab = activeTab;
			activeTab = newIndex; // New active tab
			
			// Adjust class name of tabs, info, and image
			if(oldTab != -1)
			{
				tabs[oldTab].className = tabs[oldTab].className.replace(" active", "");
				infos[oldTab].className = infos[oldTab].className.replace(" active", "");
				slides[oldTab].className = slides[oldTab].className.replace(" active", "");
				(function(){ slides[oldTab].className = "slideshowSlide"; }).delay(speed);
			}
			else
			{
				$("slideshowDefault").className = "";
			}
			if(newIndex != -1)
			{
				tabs[newIndex].className += " active";
				infos[newIndex].className += " active";
				slides[newIndex].className += " active";
				slides[newIndex].className = slides[newIndex].className.replace(" hover", "");
			
				//Prepare slides for animation
				slideMorph[newIndex].start(1);
				infoMorph[newIndex].start(1);
			}
			else
			{
				defaultMorph.start(1);
				$("slideshowDefault").className = "active";
			}
			
			// Perform animations
			if(oldTab != -1)
			{
				slideMorph[oldTab].start(0);
				infoMorph[oldTab].start(0);
				/*
				infoMorph[oldTab].start({
					'right': -355
				});
				infoStart = (function(){
					infoMorph[newIndex].start({
						'right': 0
					});	
				}).delay(infoSpeed * 3);
				*/
			}
			else
			{
				defaultMorph.start(0);
				/*
				infoStart = (function(){
					infoMorph[newIndex].start({
						'right': 0
					});	
				}).delay(infoSpeed * 2);
				*/
			}
		}
	}
	
	tabs.each(function(tab,index){
		// Create morphs for slides and info
		//infoMorph[index] = new Fx.Morph(infos[index], {duration: infoSpeed, link: 'cancel', transition: Fx.Transitions.Linear});
		infoMorph[index] = new Fx.Tween(infos[index], {duration: infoSpeed, link: 'cancel', transition: Fx.Transitions.Linear, property: 'opacity'});
		slideMorph[index] = new Fx.Tween(slides[index], {duration: speed, link: 'cancel', transition: Fx.Transitions.Linear, property: 'opacity'});
		
		slides[index].fade('hide');
		infos[index].fade('hide');
		
		// Create events for each tab
		tab.addEvent('mouseover', function(){
			// Stop automation
			$clear(autoStart);
			$clear(delayStart);
			$clear(infoStart);
			
			animateSlide(index);
			
			delayStart = (function(){ autoStart = autoAnimate.periodical(autoSpeed) }).delay(autoDelay);
		});
/*
		tab.addEvent('mouseover', function(){
			// Stop automation
			$clear(autoStart);
			$clear(delayStart);
			
			if(activeTab != index) {
				slides[index].className += " hover";
				slideMorph[index].start(1);
			}
			
			delayStart = (function(){ autoStart = autoAnimate.periodical(autoSpeed) }).delay(autoDelay);
		});
		tab.addEvent('mouseout', function(){
			// Stop automation
			$clear(autoStart);
			$clear(delayStart);
			
			if(activeTab != index) {
				slideMorph[index].start(0).chain(function(){
					slides[index].className = slides[index].className.replace(" hover", "");
				});
			}
			
			delayStart = (function(){ autoStart = autoAnimate.periodical(autoSpeed) }).delay(autoDelay);
		});
*/
	});

/*
	// Initial morphing
	slides[activeTab].fade('show');
	infoMorph[activeTab].start({
		'left': 0
	});
*/
	

	// Automation
	var autoAnimate = function(){
		var newTab = activeTab + 1;
		if(newTab >= tabs.length) newTab = -1;
		animateSlide(newTab);
	}
	autoStart = autoAnimate.periodical(autoSpeed);

	
});
