﻿/// <reference path="~/scripts/jquery-1.3.2-vsdoc2.js"/>

$.fn.vTicker = function(options) {
    var defaults = {
        speed: 900,
        pause: 5000,
        showItems: 9,
        animation: '',
        mousePause: true,
        isPaused: false
    };

    var options = $.extend(defaults, options);

    moveUp = function(obj2, height) {
        if (options.isPaused)
            return;

        var obj = obj2.children('ul');

        first = obj.children('li:first').clone(true);

        $(obj).animate({ top: '-=' + height + 'px' }, '1000', 'linear', function() {
            $(this).children('li:first').remove();
            $(this).css('top', '0px');
        });

        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() {
        var obj = $(this);
        var maxHeight = 0;

        obj.css({ overflow: 'hidden', position: 'relative' })
			.children('ul').css({ position: 'absolute', margin: 0, padding: 2 })
			.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 * options.showItems);

        var interval = setInterval(function() { moveUp(obj, maxHeight); }, options.pause);

        if (options.mousePause) {
            obj.bind("mouseenter", function() {
                options.isPaused = true;
            }).bind("mouseleave", function() {
                options.isPaused = false;
            });
        }
    });
};
