// Create namespace
if (at == undefined) var at = {};
if (at.bartelme == undefined) at.bartelme = {};

// Newsticker Class

at.bartelme.newsticker = Class.create();
at.bartelme.newsticker.prototype = {
	initialize: function()
	{
		// Get elements
		
		this.interval = stiempo;
		this.container = $("newsticker");
		this.messages  = $A(this.container.getElementsByTagName("li"));
		this.number_of_messages = this.messages.length;
		this.stop = false;
		if (this.number_of_messages == 0)
		{
			this.showError();
			return false;
		}
		this.current_message = 0;
		this.previous_message = null;
		// Create toggle button
		//this.toggle_button = document.createElement("a");
		//this.toggle_button.href = "#";
		//this.toggle_button.id = "togglenewsticker";
		//this.toggle_button.innerHTML = "Toggle";
		//Event.observe(this.toggle_button, "click", this.toggle.bindAsEventListener(this), false);
		//this.container.appendChild(this.toggle_button);
		Event.observe(this.container, "mouseover", this.parar.bindAsEventListener(this), false);
        Event.observe(this.container, "mouseout", this.reanudar.bindAsEventListener(this), false);
		this.hideMessages();
		this.showMessage();
		// Install timer
		this.timer = setInterval(this.showMessage.bind(this), this.interval);
  	},
	showMessage: function()
	{
		if (this.stop == true)
		{
			this.current_message=this.previous_message;
		}
		else
		{
			Effect.Appear(this.messages[this.current_message]);
			setTimeout(this.fadeMessage.bind(this), this.interval-2000);
			if (this.current_message < this.number_of_messages-1)
			{
				this.previous_message = this.current_message;
				this.current_message = this.current_message + 1;
			} else {
				this.current_message = 0;
				this.previous_message = this.number_of_messages - 1;
			}
		}
	},
	fadeMessage: function()
	{
	   if (this.stop == true)
	   		return;
			
	   switch (smodDesta)
	  {
		case 1: { Effect.Fade(this.messages[this.previous_message]); break }
		case 2: { Effect.Appear(this.messages[this.previous_message]); break }
		case 3: { Effect.Puff(this.messages[this.previous_message]); break }
		case 4: { Effect.BlindUp(this.messages[this.previous_message]); break }
		case 5: { Effect.BlindDown(this.messages[this.previous_message]); break }
		case 6: { Effect.SwitchOff(this.messages[this.previous_message]); break }
		case 7: { Effect.DropOut(this.messages[this.previous_message]); break }
		case 8: { Effect.Shake(this.messages[this.previous_message]); break }
		case 9: { Effect.SlideDown(this.messages[this.previous_message]); break }
		case 10: { Effect.SlideUp(this.messages[this.previous_message]); break }
		case 11: { Effect.Squish(this.messages[this.previous_message]); break }
		case 12: { Effect.Grow(this.messages[this.previous_message]); break }
		case 13: { Effect.Shrink(this.messages[this.previous_message]); break }
		case 14: { Effect.Pulsate(this.messages[this.previous_message]); break }
		case 15: { Effect.Fold(this.messages[this.previous_message]); break }
		default: { Effect.Fade(this.messages[this.previous_message]); break }
	  }
	
	},
	hideMessages: function()
	{
		this.messages.each(function(message)
		{
			Element.hide(message);
		})
	},
	toggle: function()
	{
		Effect.BlindUp(this.container, 1000);
	},
	parar: function()
	{
		this.stop=true;
	},
	reanudar: function()
	{
		this.stop=false;
	},
	showError: function()
	{
		if (this.container.getElementsByTagName("ul").length == 0)
		{
			this.list = document.createElement("ul");
			this.container.appendChild(this.list);
		} else {
			this.list = this.container.getElementsByTagName("ul")[0];
		}
		this.errorMessage = document.createElement("li");
		this.errorMessage.className = "error";
		this.errorMessage.innerHTML = "Could not retrieve data";
		this.list.appendChild(this.errorMessage);
	}
}

Event.observe(window, "load", function(){new at.bartelme.newsticker()}, false);
