var stageOptions = Object.extend ({
	slideNumber: 4,
	fadeSpeed: 1,
	slideDuration: 5000,
	stageContainerClass: 'stage-home',	
	slideContainerClass: 'slider-container',
	slideNavContainerClass: 'slider-nav',
	slideNavItemClass: 'item-slider-nav',	
	slideTextClass: 'texto-slider',
	slideHrefClass: 'stage-link'
	
}, window.sliderOptions || {});

var Stage = Class.create();

var nextSlide;

var lastTimeout;

var fadeIn;

var fadeOut;

Stage.prototype = {
	currentPic: 1,
	initialize: function () {
		$$("." + stageOptions.slideContainerClass + ' a').each(function (element) {
			element.setOpacity(0);
		});
		$$("." + stageOptions.slideContainerClass + ' a')[0].setOpacity(1);
		this.slideChanged($$("." + stageOptions.slideContainerClass + ' a')[0])
		$$("." + stageOptions.slideNavContainerClass + ' a').each(function (element) {
			element.observe('click', function (event) {
				event.stop();
				var offset = 0;
				var current = $(this);
				while(typeof current.previous() != "undefined")
				{
					current = current.previous();
					offset++;
					if(offset > 3)
						break;
				}
				var slide = $$('.' + stageOptions.slideContainerClass + ' a')[offset];
				Stage.prototype.setNextSlide(slide);
				Stage.prototype.fadeToNext();
			});
		});
		this.setTimer();
	},
	setTimer: function () {
		clearTimeout(lastTimeout);
		this.setNextSlide();
		lastTimeout = setTimeout('Stage.prototype.fadeToNext()', stageOptions.slideDuration);
	},
	fadeToNext: function () {
		currentSlide = this.getCurrentSlide();
		if(fadeIn != null)
		{
			fadeIn.cancel();
			fadeOut.cancel();
		}
		fadeOut = new Effect.Opacity(currentSlide, { from: 1.0, to: 0.0, duration: stageOptions.fadeSpeed });
		fadeIn  = new Effect.Opacity(nextSlide, { from: 0.0, to: 1.0, duration: stageOptions.fadeSpeed, afterFinish: function () { 
				Stage.prototype.setTimer();
			} 
		});
		this.slideChanged(nextSlide);
		
	},
	setNextSlide: function(slide) {
		if(typeof slide == "undefined")
		{
			var currentSlide = this.getCurrentSlide();
			nextSlide = currentSlide.next();
		}
		else
		{
			nextSlide = slide;
		}
		if(typeof nextSlide == "undefined")
		{
			nextSlide = $$("." + stageOptions.slideContainerClass + ' a')[0];
		}
	},
	getCurrentSlide: function () {
		var currentElement = null;
		$$('.' + stageOptions.slideContainerClass + ' a').each(function (element) {
			if(element.getOpacity() > 0)
			{
				currentElement = element
			}
		});
		return currentElement;
	},
	slideChanged: function (slide) {
		var navContainer = $$("." + stageOptions.slideNavContainerClass + " .selected");
		if(typeof navContainer[0] != "undefined")
		{
			navContainer[0].className = stageOptions.slideNavItemClass;
		}
		var offset = 0;
		var current = slide;
		while(typeof current.previous() != "undefined")
		{
			current = current.previous();
			offset++;
			if(offset > 3)
				break;
		}
		var navItem = $$("." + stageOptions.slideNavContainerClass + " a")[offset];
		navItem.className = navItem.className + " selected";
		$$("." + stageOptions.slideHrefClass)[0].href = slide.href;
		$$("." + stageOptions.slideTextClass)[0].innerHTML = slide.childElements()[1].innerHTML;
	}	
}
document.observe('dom:loaded', function () { new Stage(); });
