/*
*
* 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: 2007-05-29 11:31:36 +0100 (Tue, 29 May 2007) $
* $Rev: 2005 $
*
*/

(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);