/*
 *
 * 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$
 * modified by zijin.huang@caboodledigital.co.uk
 *
 */
(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 || 10000;
        initTicker = function(el) {
            stopTicker(el);
            el.items = $(".rotateitem", 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]).slideUp("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);
