$(function () {

    $('ul.spy').simpleSpy().bind('mouseenter', function () {

        $(this).trigger('stop');

    }).bind('mouseleave', function () {

        $(this).trigger('start');

    });

});



(function ($) {

    

$.fn.simpleSpy = function (limit, interval) {

    limit = limit || 25;

    interval = interval || 4000;

    var $items;

	

    function getSpyItem($source) {

        $items = $source.find('> li');

       

        if ($items.length == 1 || $items.length == 0) {

            // do an hit to get some more

		stream = $("#streams").val();

		$("#loading").fadeIn(2000);

		if ( stream == "All" )
		
           { $source.load('functions.php', { action: "getmoretweets" }); $("a#previous").attr("href", "/PreviousAll"); }

		else if ( stream == "Recommended" )

			{ $source.load('functions.php', { action: "getmorerecommendtweets" }); $("a#previous").attr("href", "/PreviousRecommended");  }

		else if ( stream == "News" )

			{ $source.load('functions.php', { action: "getmorenewstweets" }); $("a#previous").attr("href", "/PreviousNews");  }
		
		else if ( stream == "Athletes" )

			{ $source.load('functions.php', { action: "getmoreathletestweets" }); $("a#previous").attr("href", "/PreviousAthletes");  }
		
		else if ( stream == "School" )

			{ $source.load('functions.php', { action: "getmoreschooltweets" }); $("a#previous").attr("href", "/PreviousSchool");  }
			
		else if ( stream == "Sports" )

			{ $source.load('functions.php', { action: "getmoresportstweets" }); $("a#previous").attr("href", "/PreviousSports");  }

		else

			{ $source.load('functions.php', { action: "getmoretweets" }); $("a#previous").attr("href", "/PreviousAll"); }

		$("#loading").fadeOut(100);

		}

        

        // grab the first item, and remove it from the $source
       if ($items.length == 1)
                return $items.filter(':first').remove();
       else
            return false;

    }

    

    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" style="height:100%;" />');

        

        $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}, 1000, function () {

                        // increase the height of the NEW first item

                        $insert.animate({ height : 75 }, 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)

							if ($items.length != 0) {

                            	$(this).remove();

							}

                        // });

                    });             

                }                

            }

			if ($items.length <= 1) {

            	setTimeout(spy, interval);

			}

        }

        

        spy();

    });

	

};



    

})(jQuery);
