var facts = {
	
	interval: 5000,
	container: "facts",
	
	init: function()
	{
		// Get elements
		facts.messages = $("li",document.getElementById(facts.container));
		facts.number_of_messages = facts.messages.length;
		if (facts.number_of_messages == 0)
		{
			facts.showError(); return false;
		}
		facts.current_message = facts.getRand();
		facts.previous_message = null;
		facts.hideMessages();
		facts.showMessage();
		// Install timer
		facts.timer = setInterval('facts.showMessage()', facts.interval);
	},
	showMessage: function()
	{
		$(facts.messages[facts.current_message]).fadeIn("slow");
		setTimeout('facts.fadeMessage()', facts.interval-500);
		facts.previous_message = facts.current_message;
		facts.current_message = facts.getRand();		
	},
	fadeMessage: function()
	{
		$(facts.messages[facts.previous_message]).fadeOut("slow");
	},
	hideMessages: function()
	{
		$(facts.messages).hide();
	},
	getRand: function()
	{
		var rand = Math.floor(Math.random()*(facts.number_of_messages));
		if(facts.previous_message!=rand) {
			return rand;
		} else {
			rand = (rand+1<facts.number_of_messages) ? rand+1 : rand-1;
			return rand;
		}
	},
	showError: function()
	{
		if (facts.container.getElementsByTagName("ul").length == 0)
		{
			facts.list = document.createElement("ul");
			facts.container.appendChild(facts.list);
		} else {
			facts.list = facts.container.getElementsByTagName("ul")[0];
		}
		facts.errorMessage = document.createElement("li");
		facts.errorMessage.className = "error";
		facts.errorMessage.innerHTML = "Could not retrieve data";
		facts.list.appendChild(facts.errorMessage);
	},
	pause: function()
	{
		$("#facts").find("li").hide();
	},
	play: function()
	{
		$("#facts").show();
		facts.timer = setInterval('facts.showMessage()', facts.interval);
	}
}


$(document).ready(facts.init);