/**
 * @class	CS_Ticker
 * @author	Paul Kruijt
 */
var CS_Ticker = new Class(
{
	/**
	 * Constructor
	 * @param	string	root_node_id
	 * @param	integer	type_id
	 * @param	boolean	randomize
	 * @param	string	element_tag
	 * @return	void
	 */
	initialize: function(root_node_id, element_tag, type_id, interval, randomize)
	{
		// nodes
		this.root_node	= !root_node_id ? null : $(root_node_id);
		
		// settings
		this.element_tag	= !element_tag ? 'p' : element_tag; /* default: paragraph ticker */
		this.type_id		= !type_id ? 1 : type_id.toInt(); /* default: toggle */
		this.interval		= !interval ? 0 : interval.toInt(); /* default: no interval */
		this.randomize		= !randomize ? 0 : 1; /* default: don't randomize */
	},
	
	/**
	 * start
	 * @return	void
	 */
	start: function()
	{
		if (this.root_node && this.type_id > 0 && this.element_tag)
		{
			var element_nodes		= this.root_node.getElements(this.element_tag);
			var total_element_nodes	= element_nodes.length;
			
			if (total_element_nodes)
			{
				// show the right type of ticker
				switch (this.type_id)
				{
					// toggler
					case 1:
						this.toggle(element_nodes);
					break;
					
					// fader
					case 2:
						this.fader(element_nodes);
					break;
					
					// tween
					case 3:
						this.tween(element_nodes);
					break;
				}
			}
		}
	},
	
	/**
	 * toggle
	 * @param	array	element_nodes
	 * @param	object	previous_element_node
	 * @return	void
	 */
	toggle: function(element_nodes, previous_element_node)
	{
		// init vars
		var _this				= this;
		var start_element_node	= !this.randomize ? element_nodes[0] : element_nodes.getRandom();
		
		if (previous_element_node)
		{
			// hide node
			previous_element_node.setStyle('display', 'none');
			
			// get new node
			if (!this.randomize)
			{
				var start_element_node	= previous_element_node.getNext();
				
				if (!start_element_node) var start_element_node = element_nodes[0];
			}
		}
		
		if (start_element_node)
		{
			start_element_node.setStyle('display', 'block');
		}
		
		// call this method again
		if (this.interval > 0)
		{
			var toggle_timer = setTimeout(
				function ()
				{
					_this.toggle(element_nodes, start_element_node);
				}
				, _this.interval
			);
		}
	},
	
	/**
	 * fader
	 * @param	array	element_nodes
	 * @return	void
	 */
	fader: function(element_nodes)
	{
		
	},
	
	/**
	 * tween
	 * @param	array	element_nodes
	 * @return	void
	 */
	tween: function(element_nodes)
	{
		
	}
});