/*
*Author:karry
*Version:1.0
*Time:2008-11-20
*jquery1.2.6
*图片连续循环滚动
*/
(function($) {
    var flagRoll = false;
    $.fn.imageScroll = function(options) {
            var opts = $.extend({}, $.fn.imageScroll.defaults, options);
            $(this).each(function() {
                var $myThis = $(this);
                 $myThis.css("position","absolute");
                 var width =  $myThis.width();
                 $myThis.css("width","3000");
                 $myThis.css("top",0);
                    $myThis.css("left",0);
                       $myThis.css("text-align","left");
                 var wrapId = "imageScroll"+$myThis.attr("id");
                 $myThis.wrap("<div id='"+wrapId+"'></div>");
                 $("#"+wrapId).css("width",width+"px");
                 $("#"+wrapId).css("height",$myThis.height()+"px");
                 $("#"+wrapId).css("position","relative");
                 $("#"+wrapId).css("overflow","hidden");

                if(opts.scrollUnit==0)
                {
                    opts.scrollUnit = $myThis.children(":first-child").width();  
                }
                 if(opts.scrollSize==0)
                 {
                    opts.scrollSize =  $myThis.children().size();
                 }
                var html =   $myThis.html();
                  $myThis.append(html);

                if(opts.manualControl)
                {
                      $(opts.leftControlId).bind("click",function(){bindEvent($myThis,true);});
                      $(opts.rightControlId).bind("click",function(){bindEvent($myThis,false);});
                }else
                {
                 if(opts.direction=="left")
                 {
                       setInterval(function(){var left =  getScrollValue($myThis,$myThis.css("left"),true);
                           $myThis.animate({"left":(left+"px")},opts.scrollSpeed);
                       },opts.timeUnit);

                 }
                 else if (opts.direction == "right")
                 {
                     setInterval(function() {
                         var left = getScrollValue($myThis, $myThis.css("left"),false);
                         $myThis.animate({"left":(left + "px")}, opts.scrollSpeed);
                     }, opts.timeUnit);
                 }
                }
            });
        function bindEvent($myThis,isLeft) {
            if (!flagRoll)
            {
                flagRoll = true;
                var left = getScrollValue($myThis, $myThis.css("left"), isLeft);
                $myThis.animate({"left":(left + "px")}, opts.scrollSpeed, function() {
                    flagRoll = false;
                });
            }
        }
        //获取移动后的left值
        //isLeft--是否向右滚动
        function getScrollValue($obj,leftValue,isLeft)
        {

            var reg = /-?\d+/;
            leftValue =Number(leftValue.match(reg));
            if(isLeft)
            {leftValue -= opts.scrollUnit; }
            else {leftValue += opts.scrollUnit;}
            if (Math.abs(leftValue) > (opts.scrollSize) * opts.scrollUnit)
            {
                leftValue = 0;
            }

            if(leftValue>0)
            {
                leftValue = (opts.scrollSize) * opts.scrollUnit*(-1); 
            }

             return leftValue;
        }
    }
    $.fn.imageScroll.defaults = {
        direction:"left",
        manualControl:false, 
        leftControlId:".btnToLeft",
        rightControlId:".btnToRight",
        scrollUnit:0,
        scrollSize:0,
        timeUnit:2000,
        scrollSpeed:1000
    }
})(jQuery);