(function(jQuery) {
	jQuery.fn.newsTicker = jQuery.fn.newsticker = function(delay)
	{
		delay = delay || 4000;
		initTicker = function(el)
		{
			stopTicker(el);
			el.items = jQuery("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
			jQuery(el.items[el.currentitem]).fadeOut("slow",
				function()
				{
					jQuery(this).hide();
					// move to next item and show
					el.currentitem = ++el.currentitem % (el.items.size());
					jQuery(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);

jQuery(document).ready(function() {
    jQuery("#ticker").newsTicker();
});

