// 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 = 14000;
	this.container = $("newsticker");
	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;
	// 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);
	this.hideMessages();
	this.showMessage();
	// Install timer
	this.timer = setInterval(this.showMessage.bind(this), this.interval);
    },
    showMessage: function()
    {
	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()
    {
	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);
    }
}

    Event.observe(window, "load", function(){new at.bartelme.newsticker()}, false);

