﻿(function($) {
    $.extend($.fn, {
        ScrollBox: function(options) {
            //配置
            var config = $.extend({
                containerExpr: "",
                content1Expr: "",
                content2Expr: "",
                direction: "y",
                speed: 10,
                step: 1
            }, options);

            var container = $(config.containerExpr)
            var content1 = $(config.content1Expr);
            var content2 = $(config.content2Expr);

            var size = config.direction == "x" ? content1.width() : content1.height();
            var containerSize = config.direction == "x" ? container.width() : container.height();
            if (size < containerSize) return; 

            content2.html(content1.html());
            var ScrollStep = function(newScrollSize) {
                if (config.direction == "x") {
                    container.scrollLeft(newScrollSize);
                } else {
                    container.scrollTop(newScrollSize);
                }
            }

            var MyMar;
            var Mar = function() {
                var scrollSize = config.direction == "x" ? container.scrollLeft() : container.scrollTop();
                if (scrollSize > size) {
                    ScrollStep(scrollSize - size);
                }
                else {
                    if (config.direction == "x") {
                        ScrollStep(scrollSize + config.step);
                    } else {
                        ScrollStep(scrollSize + config.step);
                    }
                }

                if (scrollSize == size) {
                    container.offset(0);
                }
                MyMar = setTimeout(Mar, config.speed);
            }

            MyMar = setTimeout(Mar, config.speed);


            container.hover(
                function() {
                    clearTimeout(MyMar);
                },
                function() {
                    MyMar = setTimeout(Mar, config.speed);
                }
            );
        }
    });
})(jQuery);
