document.observe("dom:loaded",function(){
	var images = $$('#carrossel .preview');
	var texts = $$('#carrossel-label .preview-text');
	var dots = $$('#carrossel-label .dot');
	var pe = null;
	var i = 0;
	var curr = 0;
	var round_robin = function(index,len){
		return ((Math.abs(parseInt( (index) / len))+1)*len + (index)) % len;
	}
	var animate = function(lower,upper){
		images[lower].setStyle({
			'zIndex': 0
		});
		images[upper].setStyle({
			'zIndex': 1
		});
		new Effect.Opacity(images[upper], {
			from: 0, 
			to: 1, 
			afterSetup: function(){
				texts[lower].hide();
				texts[upper].show();
				dots[lower].removeClassName('selected');
				dots[upper].addClassName('selected');
			},
			afterFinish: function(){
				images[lower].setOpacity(0);
			}
		});
	}
	var loop = function(increment){
		var prev = curr;
		curr = round_robin(curr + increment, images.length);
		animate(prev, curr);
	};
	
	var pe_gen = function(){
		return new PeriodicalExecuter(function(e){
			loop(1);
		}, 8);
	}
	
	for(;i < images.length; i++){
		images[i].setOpacity(0);
		texts[i].hide();
		(function(j){
			dots[j].observe('click', function(){
				pe.stop();
				var prev = curr;
				curr = j;
				animate(prev,curr);
				pe = pe_gen();
			});
		})(i);
	}
	
	$('prev').observe('click', function(){
		pe.stop();
		loop(-1);
		pe = pe_gen();
	});
	$('next').observe('click', function(){
		pe.stop();
		loop(1);
		pe = pe_gen();
	});
	animate(1,0);
	pe = pe_gen();
});