/*
 * Kunstrasen-Projekt v0.1 TuS Hiltrup 1930 e.V.
 * http://www.kunstrasen-tushiltrup.de/
 *
 * Copyright (c) 2009 Gerhard Jansen, Hagen Gröbner,
 * http://www.gdevelop.de
 * Dual licensed under the MIT and GPL licenses.
 *
 * Document   : jquery.digg.js
 * Created on : 14.02.2009, 01:37:50
 * Description: Spy-component aka Digg- Spy.
 *
 * $Date: 2009-03-15 16:41:44 +0100 (So, 15 Mrz 2009) $
 * $Author: gerhard $
 * $Rev: 36 $
 */

(function ($) {

$.fn.simpleSpy = function (limit, interval) {
    limit = limit || 4;
    interval = interval || 4000;
    animateSpy=true;

    return this.each(function () {
        // 1. setup
            // capture a cache of all the list items
            // chomp the list down to limit li elements
        var $list = $(this),
            items = [], // uninitialised
            currentItem = limit,
            total = 0, // initialise later on
            height = $list.find('> li:first').height();

        // capture the cache
        $list.find('> li').each(function () {
            items.push('<li>' + $(this).html() + '</li>');
        });

        total = items.length;

        $list.wrap('<div class="spyWrapper" />').parent().css({ height : height * limit });

        $list.find('> li').filter(':gt(' + (limit - 1) + ')').remove();

        // 2. effect
        function spy() {
            if (animateSpy) {
                // insert a new item with opacity and height of zero
                var $insert = $(items[currentItem]).css({
                    height : 0,
                    opacity : 0,
                    display : 'none'
                }).prependTo($list);

                // fade the LAST item out
                $list.find('> li:last').animate({ opacity : 0}, 1000, function () {
                    // increase the height of the NEW first item
                    $insert.animate({ height : height }, 1000).animate({ opacity : 1 }, 1000);

                    // AND at the same time - decrease the height of the LAST item
                    // $(this).animate({ height : 0 }, 1000, function () {
                        // finally fade the first item in (and we can remove the last)
                        $(this).remove();
                    // });
                });

                currentItem++;
                if (currentItem >= total) {
                    currentItem = 0;
                }
            } 
            setTimeout(spy, interval)

        }

        spy();

        $('#pauseSpy').mouseover(function(){
            animateSpy = false;
            clearTimeout(spy, interval)
        });

        $('#pauseSpy').mouseout(function(){
            animateSpy = true;
            setTimeout(spy, interval)
        });
    });

};

})(jQuery);


