/*
* vertical news ticker
* Tadas Juozapaitis ( kasp3rito@gmail.com )
* http://www.jugbit.com/jquery-vticker-vertical-news-ticker/
*/
(function ($) {
    $.fn.vTicker = function (options) {
        var defaults = {
            speed: 700,
            pause: 4000,
            showItems: 3,
            animation: '',
            mousePause: true,
            isPaused: false,
            direction: 'up',
            height: 0
        };
        var 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
            })
            .children('li').css({
                margin: 0,
                padding: 0
            });
            if (options.height == 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 * options.showItems);
            } else
            {
                obj.height(options.height);
            }
            var interval = setInterval(function () {
                if (options.direction == 'up')
                {
                    moveUp(obj, maxHeight, options);
                } else
                {
                    moveDown(obj, maxHeight, options);
                }
            }, options.pause);
            if (options.mousePause)
            {
                obj.bind("mouseenter", function () {
                    options.isPaused = true;
                }).bind("mouseleave", function () {
                    options.isPaused = false;
                });
            }
        });
    };
})(jQuery);

