$(function () {
    $('ul.spy').simpleSpy().bind('mouseenter', function () {
        $(this).trigger('stop');
    }).bind('mouseleave', function () {
        $(this).trigger('start');
    });
});

(function ($) {
    
$.fn.simpleSpy = function (limit, interval) {
    limit = limit || vertLimit;
    interval = interval || vertInterval;
    if (vertTotalPages > 1)
    {
                $pagenumber = 2;
    } else
                {
                                $pagenumber = 1;
                }
                
    function getSpyItem($source) {
        var $items = $source.find('> li');
        
        if ($items.length == 1) {
            // do an hit to get some more
            
            $source.load(getNextPageUrl($pagenumber));
            if (vertTotalPages > 1)
            {
                if ($pagenumber == vertTotalPages)
                {
                                $pagenumber = 1;
                } else {
                                $pagenumber++;
                }
            } else
                {
                                $pagenumber = 1;
                }
        } else if ($items.length == 0) {
            return false;
        }
        
        // grab the first item, and remove it from the $source
        return $items.filter(':first').remove();
    }
    
    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),
            running = true,
            height = $list.find('> li:first').height();
            
        // TODO create the $source element....
        var $source = $('<ul />').hide().appendTo('body');
                    
        $list.wrap('<div class="spyWrapper" />').parent().css({ height : height * limit });
        
        $list.find('> li').filter(':gt(' + (limit - 1) + ')').appendTo($source);

        $list.bind('stop', function () {
            running = false;
        }).bind('start', function () {
            running = true;
        });

        // 2. effect
        function spy() {
            if (running) {
                var $item = getSpyItem($source);

                if ($item != false) {
                    // insert a new item with opacity and height of zero
                    var $insert = $item.css({
                        height : 0,
                        opacity : 0,
                        display : 'none'
                    }).prependTo($list);

                    // fade the LAST item out
                    $list.find('> li:last').animate({ opacity : 0}, 100, function () {
                        // increase the height of the NEW first item
                        $insert.animate({ height : height }, 800).animate({ opacity : 1 }, 100);

                        // 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();
                        // });
                    });             
                }                
            }
            
            setTimeout(spy, interval);
        }
        
        spy();
    });
};
    
})(jQuery);




function getNextPageUrl(intLocPage)
{
                var strTmpVertSource;
                strTmpVertSource = vertSource + '&rspage=' + intLocPage;
                return strTmpVertSource;
}

