/*
 * Tadas Juozapaitis ( kasp3rito@gmail.com )
 */
(function($){
    $.fn.vTicker = function(options){
        var defaults = {
            speed: 700,
            pause: 4000,
            showItems: 2,
            animation: '',
            mousePause: true
        };
        
        var options = $.extend(defaults, options);
        
        moveUp = function(obj, height){
            obj = obj.children('ul');
            first = obj.children('li:first').clone(true);
            
            obj.animate({
                top: '-=' + height + 'px'
            }, options.speed, function(){
                $(this).children('li:first').remove();
                $(this).css('top', '0');
            });
            
            if (options.animation == 'fade') {
                obj.children('li:first').fadeOut(options.speed);
                obj.children('li:last').hide().fadeIn(options.speed);
            }
            
            first.appendTo(obj);
        };
        
        return this.each(function(){
            obj = $(this);
            maxHeight = 0;
            
            obj.css({
                overflow: 'hidden',
                position: 'relative'
            }).children('ul').css({
                position: 'absolute',
                margin: 0,
                padding: 0
            }).children('li').css({
                margin: 0,
                padding: 0
            });
            
            obj.children('ul').children('li').each(function(){
                if ($(this).height() > maxHeight) {
                    maxHeight = $(this).height();
                }
            });
            
            obj.children('ul').children('li').each(function(){
                $(this).height(maxHeight);
            });

            
            obj.height(maxHeight);
            
            interval = setInterval('moveUp(obj, maxHeight)', options.pause);
            
            if (options.mousePause) {
                obj.bind("mouseenter", function(){
                    clearInterval(interval);
                }).bind("mouseleave", function(){
                    interval = setInterval('moveUp(obj, maxHeight)', options.pause);
                });
            }
        });
    };
})(jQuery);
