﻿/*
* author by Allen Fu
* 2010-05-19
* mail:bestfc@163.com
* blog:www.cnblogs.com/bestfc
*/
(function ($) {
    $.fn.LineScroll = function (options) {
        var defaults = {
            btnUp: "",
            btnDown: "",
            lineNo: 1,
            speed: 500,
            timer: 2000
        };
        var opts = $.extend(defaults, options);

        var timerID;
        var $this = this.eq(0).find("ul:first");
        var lineH = $this.find("li:first").height();
        var upHeight = 0 - opts.lineNo * lineH;
        var _btnUp = $("#" + opts.btnUp);
        var _btnDown = $("#" + opts.btnDown);

        var scrollUp = function () {
            _btnUp.unbind("click", scrollUp);
            $this.animate({
                marginTop: upHeight
            }, opts.speed, function () {
                for (i = 1; i <= opts.lineNo; i++) {
                    $this.find("li:first").appendTo($this);
                }
                $this.css({ marginTop: 0 });
                _btnUp.bind("click", scrollUp);
            });
        }
        var scrollDown = function () {
            _btnDown.unbind("click", scrollDown);
            for (i = 1; i <= opts.lineNo; i++) {
                $this.find("li:last").show().prependTo($this);
            }
            $this.css({ marginTop: upHeight });
            $this.animate({
                marginTop: 0
            }, opts.speed, function () {
                _btnDown.bind("click", scrollDown);
            });
        }

        var autoPlay = function () {
            timerID = window.setInterval(scrollUp, opts.timer);
        };
        var autoStop = function () {
            window.clearInterval(timerID);
        };

        autoPlay();

        _btnUp.css("cursor", "pointer").click(scrollUp).hover(autoStop, autoPlay);
        _btnDown.css("cursor", "pointer").click(scrollDown).hover(autoStop, autoPlay);
        $this.hover(autoStop, autoPlay);
    };
})(jQuery);