// Create namespace
if (sos == undefined) var sos = {};

// ticker Class
sos.ticker = Class.create();
sos.ticker.prototype = {
	initialize: function()
	{
		// Get elements
		this.interval = 8000;
		this.container = $("ticker");
		this.messages  = $A(this.container.getElementsByTagName("li"));
		this.number_of_messages = this.messages.length;
		if (this.number_of_messages == 0)
		{
			this.showError();
			return false;
		}
		this.current_message = 0;
		this.previous_message = null;
		this.hideMessages();
		this.showMessage();
		// Install timer
		this.timer = setInterval(this.showMessage.bind(this), this.interval);
  	},
	initNext: function()
	{
		new Effect.Move('ticker', {y: 0, duration: 0.01, delay: 0, mode: 'absolute', queue: 'front'} );
		clearInterval(this.timer);
		if ( this.clr_animation != 1 ) {			
			this.current_message = this.current_message - 1;
			this.clr_animation = 1;
		}  
		this.current_message = this.current_message;
		this.previous_message = this.current_message-1;
		this.hideMessages();
		
		if (this.current_message == this.number_of_messages-1) {
			Effect.Appear(this.messages[0]);	
			this.current_message = 0;
		} else {
			Effect.Appear(this.messages[this.current_message+1]);
			this.current_message = this.current_message+1;	
		}
  },
	initPrev: function()
	{
		new Effect.Move('ticker', {y: 0, duration: 0.01, delay: 0, mode: 'absolute', queue: 'front'} );
		clearInterval(this.timer);
		this.current_message = this.current_message;
		this.previous_message = this.current_message-1;
		this.hideMessages();
		
		if (this.current_message == 0) {
			Effect.Appear(this.messages[this.number_of_messages-1]);	
			this.current_message = this.number_of_messages-1;
		} else {
			Effect.Appear(this.messages[this.previous_message]);
			this.current_message = this.current_message-1;	
		}
  },
	showMessage: function()
	{
		new Effect.Appear(this.messages[this.current_message]);

		new Effect.Move('ticker', {y: 0, duration: 0.01, delay: 0, mode: 'absolute'} );



		new Effect.Move('ticker', {y: -100, duration: 4, delay: 3, mode: 'absolute'} );


		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()
	{
		Effect.Fade(this.messages[this.previous_message]);
	},
	hideMessages: function()
	{
		this.messages.each(function(message)
		{
			Element.hide(message);
		})
	},
	toggle: function()
	{
		Effect.BlindUp(this.container, 1000);
	},
	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);
	}
}

function initTicker() {
	sosf = new sos.ticker();
	document.getElementById('ticker').style.display = 'block';
}
