(function($)
{
$.fn.vTicker = function(options) 
{
    var defaults = {
        speed : 700,
        pause : 4000,
        showItems : 3,
        animation : '',
        mousePause : true,
        isPaused : false,
        direction : 'up',
        height : 0
    };
    options = $.extend(defaults, options);
    moveUp = function(obj2, height, options) 
    {  
        if (options.isPaused)
        {return;}
        var obj = obj2.children('ul');
        var clone = obj.children('li:first').clone(true);
        if (options.height > 0) 
            {
            height = obj.children('li:first').height();
            }
        obj.animate({top : '-=' + height + 'px'}, options.speed, function() {
        $(this).children('li:first').remove();
        $(this).css('top', '0px');
        });
    if (options.animation == 'fade') 
        {
        obj.children('li:first').fadeOut(options.speed);
        if (options.height === 0) {
        obj.children('li:eq(' + options.showItems + ')').hide()
        .fadeIn(options.speed).show();
        }
        }
    clone.appendTo(obj);
    };
    moveDown = function(obj2, height, options) 
    {
        if (options.isPaused){
            return;}
        var obj = obj2.children('ul');
        var clone = obj.children('li:last').clone(true);
        if (options.height > 0) {
            height = obj.children('li:first').height();
        }
        obj.css('top', '-' + height + 'px').prepend(clone);
        obj.animate({top : 0}, options.speed, function() {
        $(this).children('li:last').remove();
        });
        if (options.animation == 'fade') 
        {
            if (options.height === 0) 
            {
                obj.children('li:eq(' + options.showItems + ')').fadeOut(
                options.speed);
            }
            obj.children('li:first').hide().fadeIn(options.speed).show();
        }
    };
    return this.each(function() 
    {
        var obj = $(this);
        var maxHeight = 0;
        obj.css({overflow : 'hidden',position : 'relative'}).children('ul').css({
        position : 'absolute',margin : 0,padding : 0
        });
        if (options.height < maxHeight) 
        {
            maxHeight = $(this).height();
        }
        if (options.height == -1) 
        {
            
        } 
        else 
        {        
            obj.height(options.height);
        }
        var interval = setInterval(function() 
        {
            var currentHeight = maxHeight;
            var ulObj = obj.children('ul');
            if (options.direction == 'up') 
            {
                if (options.height == -1) 
                {
                    currentHeight = ulObj.children('li:first').height();
                }
            moveUp(obj, currentHeight, options);
            } 
            else 
            {
                if (options.height == -1) 
                {
                    currentHeight = ulObj.children('li:last').height();
                }
                moveDown(obj, currentHeight, options);
            }
        }, options.pause);
        if (options.mousePause) 
        {
            obj.bind("mouseenter", function() 
            {
                options.isPaused = true;
            }).bind("mouseleave", function() {
            options.isPaused = false;
            });
        }
    });
};
})(jQuery);
