/*
 * jquery.newsTicker 0.2
 *
 * Copyright (c) 2009 
 * Matt Jenkins (http://www.rees-jenkins.co.uk)
 */

$.fn.wait = function(time, type) {
    time = time || 1000;
    type = type || "fx";
    return this.queue(type, function() {
        var self = this;
        setTimeout(function() {
            $(self).dequeue();
        }, time);
    });
};	

var NewsTicker = {
	_init: function() {	 
		_el = this.element;		
		_itemArray = new Array();		
		_count = 0;
		
		$(_el).children().filter(".msg").each(function(){		
			_itemArray[_count] = this;
			$(this).css("left",$(_el).width()*2);
			++_count;		
		});		
		if (_itemArray.length > 0)
			this._doTicker(_itemArray[0]);
	},
	
	_doTicker: function(activeTicker)
	{
		$(activeTicker).css("opacity", 0);
		$(activeTicker).animate({
			opacity: 1,
			left: this._getData("edgeDistance")
		},this._getData("introSpeed"),"easeOutCubic");
		$(activeTicker).wait(this._getData("pause"));
		var self = this;		
		$(activeTicker).fadeOut(this._getData("exitSpeed"), function()
		{
			$(activeTicker).toggle();		
			$(activeTicker).css("left",$(_el).width()*2);			
			for(i=0;i<_itemArray.length;i++)
				if (_itemArray[i] == activeTicker)
					break;
			++i;
			if (i == _itemArray.length)
				self._doTicker(_itemArray[0]);
			else
				self._doTicker(_itemArray[i]);				
		});	
	}	
};

$.widget("ui.newsTicker", NewsTicker);
$.ui.newsTicker.defaults = {
	introSpeed: 750,
	pause: 3000,
	exitSpeed: 1000,
	edgeDistance: "9em"
};