﻿/*
*
* 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);
