/*
 * Based on:
 * Copyright (c) 2006 Sam Collett (http://www.texotela.co.uk)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 */
 
/*
 * 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 jQuery("#news").newsticker(5000);
 *
 */
jQuery.fn.newsTicker = jQuery.fn.newsticker = function(delay)
{
	return this.each(
		function()
		{
			if(this.nodeName.toLowerCase()!= "ul") return;
			delay = delay || 4000;
			var self = this;
			self.items = jQuery("li", self);
			
			//jQuery(this).siblings('div').toggle(
			jQuery(self).siblings('div').toggle(
				function (){
					// Show all items
					self.pause = true;
					clearInterval(self.interval);
					jQuery(self).children().show().end();
					jQuery(self).parent().parent().height((self.items.length * 15) + 57);
				},
				function()
				{
					showFirstItem();
					jQuery(self).parent().parent().height(67);
				}
			)
			.parent().hover(
				function()
				{
					// pause if hovered over
					self.pause = true;
				},
				function()
				{
					// unpause when not hovered over
					self.pause = false;
				}
			);
			
			var showFirstItem = function()
			{
				// Show only first item
				self.items.not(":eq(0)").hide().end();
				self.currentitem = 0;
				self.interval = setInterval(doTick,delay);
			}
			
			var doTick = function()
			{
				jQuery.newsticker(self);
			}
			
			showFirstItem();
		}
	)
	.addClass("newsticker");
}
jQuery.newsticker = function(el)
{
	// return if hovered over
	if(el.pause) return;
	// 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");
		}
	);
}