﻿if (jQuery) (function(jQuery) {
    jQuery.extend(jQuery.fn, {
        scrollfun: function(params) {
            var setT;
            var settings;
            jQuery(this).each(function() {
                settings = jQuery.extend({
                    fangxiang: "left", //滚动方向  ！！注意：滚动的对象的对应的margin要有默认值！！left top right bottom
                    time: 2000, //滚动间隔时间毫秒
                    timeXiaoGuo: 1000, //滚动效果持续时间
                    value: 100, //滚动量px
                    upleftid: "", //往上或者往左滚动操作id
                    downright: "", //往下或者往右滚动操作id
                    xuanhuan: true, //是否无限循环
                    defaultLoad: true, //默认的数据初始（订单高和宽度）
                    onmousestop: true, //鼠标移动到上面是否停止
                    onmouseover: function() { }, //鼠标到达滚动对象触发的动作
                    onmouseout: function() { }, //鼠标离开时触发的动作
                    type: "soll", //滚动方式 soll tiao
                    sollvalue: 1//连续滚动的值 影响滚动的平滑度
                }, params);
                var obj = jQuery(this).children();
                var childrenlength = obj.children().length; //滚动的数量
                var sumval = "+";
                var marginStr = "";
                switch (settings.fangxiang) {
                    case "left":
                        marginStr = "marginLeft";
                        sumval = "-";
                        break;
                    case "top":
                        marginStr = "marginTop";
                        sumval = "-";
                        break;
                    case "right":
                        marginStr = "marginLeft";
                        sumval = "+";
                        break;
                    case "bottom":
                        marginStr = "marginTop";
                        sumval = "+";
                        break;
                    default:
                        marginStr = "marginLeft";
                        sumval = "-";
                        break;
                }
                //数据初始化
                if (settings.defaultLoad) {
                    if (settings.fangxiang == "left" || settings.fangxiang == "right")
                        obj.css("width", childrenlength * settings.value + "px");
                    else {
                        obj.css("height", childrenlength * settings.value + "px");
                    }
                }
                //数据初始化

                var qianchaDom = function() {//无线循环往前插入最后一个dom
                    if (settings.xuanhuan) {
                        obj.children().eq(childrenlength - 1).prependTo(obj);
                        eval("obj.css({ " + marginStr + ": '-" + settings.value + "px' })");
                    }
                }
                var houchaDom = function() {//无线循环往后才插入最前面一个dom
                    if (settings.xuanhuan) {
                        obj.children().eq(0).appendTo(obj);
                        eval("obj.css({ " + marginStr + ": '0px' })");
                    }
                }

                var lianxuFun = function() {//连续滚动
                    if (settings.fangxiang == "right" || settings.fangxiang == "bottom") {
                        var nowmarginval = parseInt(obj.css(marginStr));
                        if (nowmarginval >= 0) {
                            qianchaDom();
                        }
                        var nowValue = eval(parseInt(obj.css(marginStr)) + sumval + settings.sollvalue);
                        eval("obj.css(marginStr, nowValue+'px')");
                    } else {
                        var nowmarginval = parseInt(obj.css(marginStr));
                        if (nowmarginval <= -settings.value) {
                            houchaDom();
                        }
                        $("#ddd").html(nowmarginval + "|" + settings.value);
                        var nowValue = eval(parseInt(obj.css(marginStr)) + sumval + settings.sollvalue);
                        eval("obj.css(marginStr, nowValue+'px')");
                    }
                }

                var mainFun = function() {//主滚动方法
                    if (settings.type == "soll") {
                        lianxuFun();
                    } else {
                        if (settings.fangxiang == "right" || settings.fangxiang == "bottom") {
                            qianchaDom();
                            var nowValue = eval(parseInt(obj.css(marginStr)) + sumval + settings.value);
                            eval("obj.animate({" + marginStr + ": nowValue + 'px' }, settings.timeXiaoGuo)");
                        } else {
                            var nowValue = eval(parseInt(obj.css(marginStr)) + sumval + settings.value);
                            eval("obj.animate({" + marginStr + ": nowValue + 'px' }, settings.timeXiaoGuo,function(){houchaDom()})");
                        }
                    }
                }

                var start = function() {//开始滚动
                    setT = setInterval(function() {
                        mainFun();
                    }, settings.time);
                }
                var stop = function() {//停止滚动
                    clearInterval(setT);
                }

                this.scrollStop = function() { stop(); }; //给当前的javascript对象绑定开始结束方法
                this.scrollStart = function() { start(); };

                if (settings.upleftid != "" && settings.type != "soll") {//是否有按钮id  有就绑定事件
                    $("#" + settings.upleftid).bind("click", function() {//往下右滚动
                        stop();
                        obj.stop(false, true);
                        mainFun();
                    }).bind("mouseout", function() {
                        stop();
                        start();
                    })
                }
                if (settings.downright != "" && settings.type != "soll") {//是否有按钮id  有就绑定事件
                    $("#" + settings.downright).bind("click", function() {//往上左滚动
                        obj.stop(false, true);
                        stop();
                        if (settings.fangxiang == "right" || settings.fangxiang == "bottom") {
                            var nowValue = eval(parseInt(obj.css(marginStr)) + (sumval == "+" ? "-" : "+") + settings.value);
                            eval("obj.animate({" + marginStr + ": nowValue + 'px' }, settings.timeXiaoGuo,function(){houchaDom()})");
                        } else {
                            qianchaDom();
                            var nowValue = eval(parseInt(obj.css(marginStr)) + (sumval == "+" ? "-" : "+") + settings.value);
                            eval("obj.animate({" + marginStr + ": nowValue + 'px' }, settings.timeXiaoGuo)");
                        }

                    }).bind("mouseout", function() {
                        stop();
                        start();
                    })
                }

                obj.bind("mouseover", function() {
                    settings.onmouseover();
                    if (settings.onmousestop) {
                        stop();
                    }
                }).bind("mouseout", function() {
                    settings.onmouseout();
                    if (settings.onmousestop) {
                        stop();
                        start();
                    }
                });
                start();
            });
        }
    });
})(jQuery);
