/* ------------------------------------------------------------
 * PROJECT        : FHSC Interface Standard
 * FILENAME       : jqticker.js
 * ------------------------------------------------------------
 * DATE CREATED   : 24 Jan 2007
 * LAST UPDATED   : 27 Apr 2007
 * ------------------------------------------------------------
 * AUTHOR(S)      : Sam Collett (http://www.texotela.co.uk)
 *                : Kevin Scholl (http://www.ksscholl.com/)
 * ------------------------------------------------------------ */

(function($) {

/* ------------------------------------------------------------
 * @name     newsticker (or newsTicker)
 * @param    delay (in milliseconds, default 4 seconds
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @example  $("#news").newsticker(); // or 
 *           jQuery("#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);

