newsticker = Class.create();
newsticker.prototype = {
	initialize: function(elem)
	{
		// Get elements
		this.interval = 8000;
		this.pause = false;
		this.container = $(elem);
		this.messages  = $A(this.container.getElementsByTagName("li"));
		this.number_of_messages = this.messages.length;
		if (this.number_of_messages == 0){return false;}
		this.current_message = 0;
		this.previous_message = null;
		
		Event.observe(this.container, "mouseover", this.fstop.bindAsEventListener(this), false);
		Event.observe(this.container, "mouseout", this.fstart.bindAsEventListener(this), false);

		this.hideMessages();
		this.showMessage();
		this.timer = setInterval(this.showMessage.bind(this), this.interval);
  	},
	showMessage: function()
	{
		Effect.Appear(this.messages[this.current_message]);
		this.to = setTimeout(this.fadeMessage.bind(this), this.interval-1000);
		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()
	{
		Effect.Fade(this.messages[this.previous_message]);
	},
	hideMessages: function()
	{
		this.messages.each(function(message)
		{
			Element.hide(message);
		})
	},
	fstop: function()
	{
		clearTimeout(this.timer);
		clearTimeout(this.to);
		this.previous_message = this.previous_message -1;
		if (this.previous_message < 0) {this.previous_message = this.number_of_messages - 1;}
		this.current_message = this.current_message - 1;
		if (this.current_message < 0) {this.current_message = this.number_of_messages - 1;}

	},
	fstart: function()
	{
		this.timer = setInterval(this.showMessage.bind(this), this.interval);
	}
}