/*
 *
 * Copyright (c) 2006/2007 Sam Collett (http://www.texotela.co.uk)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Version 2.0
 * Demo: http://www.texotela.co.uk/code/jquery/newsticker/
 *
 * $LastChangedDate$
 * $Rev$
 *
 */
 
(function($){
/*
 * A basic news ticker.
 *
 * @name     newsticker (or newsTicker)
 * @param    delay      Delay (in milliseconds) between iterations. Default 4 seconds (4000ms)
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @example  $("#news").newsticker(); // or $("#news").newsTicker(5000);
 *
 */
	$.fn.newsTicker = $.fn.newsticker = function(delay){
		delay = delay || 4000;
		initTicker = function(el){
			stopTicker(el);
			el.items = $("li", el);
			// hide all items (except first one)
			el.items.not(":eq(0)").hide().end();
			// current item
			el.currentitem = 0;
			startTicker(el);
		};
		startTicker = function(el){
			el.tickfn = setInterval(function(){
				doTick(el);
			},
			delay)
		};
		stopTicker = function(el){
			clearInterval(el.tickfn);
		};
		pauseTicker = function(el){
			el.pause = true;
		};
		resumeTicker = function(el){
			el.pause = false;
		};
		doTick = function(el){
			// don't run if paused
			if(el.pause) return;
			// pause until animation has finished
			el.pause = true;
			// hide current item
			$(el.items[el.currentitem]).fadeOut("slow", function(){
				$(this).hide();
				// move to next item and show
				el.currentitem = ++el.currentitem % (el.items.size());
				$(el.items[el.currentitem]).fadeIn("slow", function(){
					el.pause = false;
				});
			});
		};
		this.each(function(){
			if(this.nodeName.toLowerCase()!= "ul") return;
			initTicker(this);
		})
		.addClass("newsticker")
		.hover(function(){// pause if hovered over
			pauseTicker(this);
		},
		function(){// resume when not hovered over
			resumeTicker(this);
		});
		return this;
	};
})(jQuery);
