var transitionTime = 5000;  //tempo entre transições em milisegundos
var fadeTimeSlide = 700;        //tempo de fade do slide em milisegundos
var fadeTimeClick = 300;        //tempo de fade quando for clicado nos números em milisegundos
var fadeTimeScroll = 700;   //lempo de fade quando for clicado nas setas em milisegundos
function fade(eid,op,tp) {
	TimeToFade = fadeTimeSlide;
			if(op == 1) {
					TimeToFade = fadeTimeClick;
			}
			if(op == 2) {
					TimeToFade = fadeTimeSlide;
			}
			if(op == 3) {
					TimeToFade = fadeTimeScroll;
			}
	var element = document.getElementById(eid);
			if(element == null) {
					return;
			}
			if(element.FadeState == null) {
					if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
							element.FadeState = 2;
					}else{
							element.FadeState = -2;
					}
			}
			if(element.FadeState == 1 || element.FadeState == -1) {
					element.FadeState = element.FadeState == 1 ? -1 : 1;
					element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
			}else {
					element.FadeState = element.FadeState == 2 ? -1 : 1;
					element.FadeTimeLeft = TimeToFade;
					setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
			}
}
function animateFade(lastTick, eid) {
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
	var element = document.getElementById(eid);
			if(element.FadeTimeLeft <= elapsedTicks) {
					element.style.opacity = element.FadeState == 1 ? '1' : '0';
					element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
					element.FadeState = element.FadeState == 1 ? 2 : -2;
					return;
			}
	element.FadeTimeLeft -= elapsedTicks;
	var newOpVal = element.FadeTimeLeft/TimeToFade;
			if(element.FadeState == 1) {
					newOpVal = 1 - newOpVal;
			}
	element.style.opacity = newOpVal;
	element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
	setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}


var tempo;
var intervalo = transitionTime;
function $(campo) {
		return document.getElementById(campo);
}
//Trecho de código criado por Wilker, pego em http://forum.imasters.com.br/index.php?s=&showtopic=198704&view=findpost&p=660522
var $A = Array.from = function(iterable) {
		if (!iterable) return [];
		if (iterable.toArray) {
				return iterable.toArray();
		} else {
				var results = [];
				for (var i = 0; i < iterable.length; i++)
						results.push(iterable[i]);
				return results;
		}
};
Function.prototype.bind = function() {
		var __method = this, args = $A(arguments), object = args.shift();
		return function() {
				return __method.apply(object, args.concat($A(arguments)));
		};
};
//Fim do trecho de código criado por Wilker
function addEvent(obj, evType, fn) { //Função adaptada da original de Christian Heilmann, em http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
		if (typeof obj == "string") {
				if (null == (obj = document.getElementById(obj))) {
						throw new Error("Elemento HTML não encontrado. Não foi possível adicionar o evento.");
				}
		}
		if (obj.attachEvent) {
				return obj.attachEvent(("on" + evType), fn);
		} else if (obj.addEventListener) {
				return obj.addEventListener(evType, fn, true);
		} else {
				throw new Error("Seu browser não suporta adição de eventos.");
		}
}
function rollerSlide(d) {
	fade('fade',3);
	window.setTimeout(function() {
			 var divs = $('slides').getElementsByTagName('div');
			 var i;
			 for (i = 0; i < divs.length; i++) {
					 if (divs[i].className == 'visible') {
							 divs[i].className = 'hidden';
							 $('link' + (i + 1)).className = 'inativo';
							 if(d == 1) {
									 i = (i == divs.length - 1) ? 0 : i + 1;
							 }else {
									 i = (i == divs.length - 5) ? 4 : i - 1;
							 }
							 divs[i].className = 'visible';
							 $('link' + (i + 1)).className = 'ativo';
							 fade('fade',3);
							 clearInterval(tempo);
							 break;
					 }
			 }
	}, fadeTimeScroll);
}
function nextSlide() {
	fade('fade',2);
	window.setTimeout(function() {
			 var divs = $('slides').getElementsByTagName('div');
			 var i;
			 for (i = 0; i < divs.length; i++) {
					 if (divs[i].className == 'visible') {
							 divs[i].className = 'hidden';
							 $('link' + (i + 1)).className = 'inativo';
							 i = (i == divs.length - 1) ? 0 : i + 1;
							 divs[i].className = 'visible';
							 $('link' + (i + 1)).className = 'ativo';
							 fade('fade',2);
							 break;
					 }
			 }
	}, fadeTimeSlide);
}
function init() {
	var as = $('links').getElementsByTagName('b');
	var i;
	for (i = 0; i < as.length; i++) {
			var f = function(v) {
					setSlide(as[v]);
			}
			addEvent(as[i], 'click', f.bind(this, i));
	}
	tempo = setInterval('nextSlide()', intervalo);
}
function setSlide(link) {
	fade('fade',1);
	window.setTimeout(function() {
			var divs = $('slides').getElementsByTagName('div');
			var i;
			for (i = 0; i < divs.length; i++) {
					divs[i].className = 'hidden';
			}
											var lis = $('links').getElementsByTagName('li');
			for (i = 0; i < lis.length; i++) {
					lis[i].className = 'inativo';
			}
			link.parentNode.className = 'ativo';
			i = parseInt(link.firstChild.data);
			$('slide' + i).className = 'visible';
			fade('fade',1);
			clearInterval(tempo);
	}, fadeTimeClick);
}
addEvent(window, 'load', init);
