﻿/*
WebUI Script
CreateBy  : JinYaJun
CreateTime: 2009-7-25 13:06
Content   : 
连续滚动效果实现
注意数据行高度与总高度的关系为:数据行高度条数总高度

--------调用与选项格式:
$(table).scrollIt({
overcss:{} //外框的CSS
offset:20, //每次移动量
itemCount:0, //项目数
speed:500, //滚动速度
delay:1000, //停顿时间
innerEL:"td", //项目的 selector
outerEL:null, //项目的包容器的 selector 如果为null则等同于调用者
hover:true, //鼠标移过是否停止
v:false //横向还是纵向
});
--------实例:
$("#goodmoviediv").scroll({
overcss:{width:"600px",overflow:"hidden",height:"220px",position:"absolute"},
itemCount:4,
speed:1000,
delay:2000,
offset:190,
innerEL:"td",
outerEL:"tr",
hover:true,
v:false
});
*/
(function($) {
    $.fn.scrollIt = function(options) {
        options = $.extend({
            overcss: { position: "absolute", width: "200px", height: "20px", overflow: "hidden" },
            offset: 20,
            itemCount: 0,
            speed: 500,
            delay: 1000,
            innerEL: "td",
            outerEL: null,
            hover: true,
            v: false
        }, options);
        options.overcss = $.extend(options.overcss, {overflow: "hidden" });
        options.el = $(this);
        $(this).wrap($("<div></div>").css(options.overcss)).css({ overflow: "hidden" });
        if (options.itemCount == 0)
            options.itemCount = $(this).find(options.innerEL).length;
        var pos = 0;
        if (options.outerEL)
            options.outerEL = $(this).find(options.outerEL);
        else
            options.outerEL = $(this);
        $(this).find(options.innerEL).clone(true).appendTo(options.outerEL);
        var scrollHandler;
        if (options.v) {
            scrollHandler = setInterval(function() {
                if (pos == options.itemCount) {
                    pos = 0;
                    options.el.get(0).style.marginTop = "0";
                }
                options.el.animate({ marginTop: "-=" + options.offset + "px" }, options.speed);
                pos++;
            }, options.delay);
        }
        else {
            scrollHandler = setInterval(function() {
                if (pos == options.itemCount) {
                    pos = 0;
                    options.el.get(0).style.marginLeft = "0";
                }
                options.el.animate({ marginLeft: "-=" + options.offset + "px" }, options.speed);
                pos++;
            }, options.delay);
        }
        if (options.hover) {
            $(this).find(options.innerEL).hover(function() {
                clearInterval(scrollHandler);
            }, function() {
                if (options.v) {
                    scrollHandler = setInterval(function() {
                        if (pos == options.itemCount) {
                            pos = 0;
                            options.el.get(0).style.marginTop = "0";
                        }
                        options.el.animate({ marginTop: "-=" + options.offset + "px" }, options.speed);
                        pos++;
                    }, options.delay);
                }
                else {
                    scrollHandler = setInterval(function() {
                        if (pos == options.itemCount) {
                            pos = 0;
                            options.el.get(0).style.marginleft = "0";
                        }
                        options.el.animate({ marginleft: "-=" + options.offset + "px" }, options.speed);
                        pos++;
                    }, options.delay);
                }
            });
        }
    }
})(jQuery);

