Event.observe(document, 'dom:loaded', function(){new Trocador(noticias_ids);});
var Trocador = Class.create({
	DURACAO: 0.3,
	INTERVALO: 4,
	na: null, pna:null, PE: null, ids:null, ac: null, trocando: false, clicado: false, proximo: false,
	initialize: function(ids)
	{
		this.ids = ids;
		if(this.ids[0] == "")
		{
			$('noticias_rolando').remove();
		}
		else if(this.ids.length > 1)
		{
			this.na = 1;
			for(var i = 0; i < ids.length; i++)
			{
				$('a'+ids[i]).observe('mouseout', this.iniciaTrocador.bind(this));
				$('a'+ids[i]).observe('mouseover', this.paraTrocador.bind(this));
				$('li'+ids[i]).observe('mouseout', this.iniciaTrocador.bind(this));
				$('li'+ids[i]).observe('mouseover', function(ev)
				{
					this[0].paraTrocador();
					if(this[0].na != this[1])
					{
						this[0].clicado = true;
						if(this[0].PE){this[0].PE.stop();this[0].PE = null;}
						this[0].PE = new PeriodicalExecuter(function(){this[0].mostra(this[1])}.bind(this), 0.2);
					}
				}.bind([this,i]));
			}
			this.mostra(0);
		}
	},
	iniciaTrocador: function(ev){
		if(ev){ev.stop();}
		if(this.PE){this.PE.stop();this.PE = null;}
		if(!this.clicado) this.PE = new PeriodicalExecuter(this.mostraProxima.bind(this), this.INTERVALO);
		this.clicado = false;
	},
	paraTrocador: function(ev){
		if(ev){ev.stop();}
		if(this.PE){this.PE.stop();this.PE = null;}
	},
	escondeNoticia: function ()
	{
		this.paraTrocador();
		this.trocando = true;
		
		$('li'+this.ids[this.na]).removeClassName('selecionado');
		$('li'+this.ids[this.pna]).addClassName('selecionado');
		
		$('a'+this.ids[this.na]).fade({
			afterFinish: this.mostraNoticia.bind(this),
			duration: this.DURACAO
		});
		this.na = this.pna;
	},
	mostraNoticia: function()
	{
		this.iniciaTrocador();
		$('a'+this.ids[this.na]).appear({
			afterFinish: function()
			{
				this.trocando = false;
				if(this.proximo !== false)
					this.mostra(this.proximo);
			}.bind(this),
			duration: this.DURACAO
		});
	},
	mostra: function(id)
	{
		this.proximo = false;
		if(this.trocando || id == this.na)
		{
			this.proximo = id;
			return;
		}
		this.pna = id;
		if(this.pna == -1){this.pna = this.ids.length-1};
		if(this.pna == this.ids.length){this.pna = 0;}
		
		this.escondeNoticia();
	},
	mostraProxima: function ()
	{
		this.mostra(this.na+1);
	}
});
