// 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(options){
		var newstickerId = options.newstickerId;
		var withToggle = options.withToggle;
		// Get elements
		this.interval = 10000;
		this.container = $(newstickerId);
		this.container.addClassName('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;
		// Create toggle button
		if(withToggle){
			this.toggle_button = document.createElement("a");
			this.toggle_button.href = "#";
			this.toggle_button.id = newstickerId+"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);
  	},
	start: function(){
		this.timer = setInterval(this.showMessage.bind(this), this.interval);
	},
	showMessage: function(){
		//Effect.Appear(this.messages[this.current_message]);

		Effect.SlideLeftIn(this.messages[this.current_message], { duration: 0.5 });

		//this.messages[this.current_message].show();
		setTimeout(this.fadeMessage.bind(this), this.interval-5000);
		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.SlideLeftOut(this.messages[this.previous_message], { duration: 0.5 });
		//this.messages[this.previous_message].hide();
		//Effect.Fade(this.messages[this.previous_message]);
	},
	showAllMessages: function(){
		this.messages.each(function(message){
			Element.show(message);
		});
	},
	stop: function(){
		clearInterval(this.timer);
	},
	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);
	}
}
