(function($){
     $.fn.stopAutoMarquee = function(){
        var intervalId = $("#" + $(this).getAutoMarqueeHiddenId()).val();
        if(intervalId != ""){
            window.clearInterval(intervalId);
        }
        $("#" + $(this).getAutoMarqueeHiddenId()).val("");
     }
     $.fn.getAutoMarqueeHiddenId = function(){
        return $(this).attr("id") + "_hd_Interval_Id";
     }
     $.fn.startAutoMarquee = function(func,delay){
        $(this).stopAutoMarquee();
        var tempId = setInterval(func, delay);
        $("#" + $(this).getAutoMarqueeHiddenId()).val(tempId);
     }

     $.fn.autoMarquee = function(options){
         var opts = $.extend({},$.fn.autoMarquee.defaults, options);
        
         function setInterValId(objId,intervalId){
            var hdId = getHiddenId(objId);
            $("#" + hdId).val(intervalId);
         }
        
         this.each(function(){
             var hdId = $(this).getAutoMarqueeHiddenId();
             if ($("#" + hdId).attr("id") != hdId) {
                $("body").append("<div id=\"" + hdId + "\" style=\"display:none;\"></div>");
             }
        
             var $marquee = $(this);//滚动元素容器
             var _scrollObj = $marquee.get(0);//滚动元素容器DOM
      
             var scrollW = $marquee.width();//滚动元素容器的宽度
             var scrollH = $marquee.height();//滚动元素容器的高度
             var $element = $marquee.children(); //滚动元素
             var $kids = $element.children();//滚动子元素
        
             var scrollSize=0;//滚动元素尺寸
             var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滚动类型，1左右，0上下
            
             //防止滚动子元素比滚动元素宽而取不到实际滚动子元素宽度
             $element.css(_type?'width':'height',10000);
             //获取滚动元素的尺寸
             if (opts.isEqual) {
                 scrollSize = $kids[_type?'outerWidth':'outerHeight']() * $kids.length;
             }else{
                 $kids.each(function(){
                     scrollSize += $(this)[_type?'outerWidth':'outerHeight']();
                 });
             }
             //滚动元素总尺寸小于容器尺寸，不滚动
             if (scrollSize<(_type?scrollW:scrollH)) return; 
             //克隆滚动子元素将其插入到滚动元素后，并设定滚动元素宽度
             $element.append($kids.clone()).css(_type?'width':'height',scrollSize*2);
            
             var numMoved = 0;
             function scrollFunc(){
                 var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';
                 if (opts.loop > 0) {
                     numMoved+=opts.scrollAmount;
                     if(numMoved>scrollSize*opts.loop){
                         _scrollObj[_dir] = 0;
                         return clearInterval(moveId);
                     } 
                 }
                 if(opts.direction == 'left' || opts.direction == 'up'){
                     if(_scrollObj[_dir] >= scrollSize){
                        _scrollObj[_dir] = _scrollObj[_dir] - scrollSize;
                     }
                     else{
                        _scrollObj[_dir] += opts.scrollAmount;   
                     }
                 }
                 else{
                     if(_scrollObj[_dir] <= 0){
                         _scrollObj[_dir] = _scrollObj[_dir] + scrollSize;
                     }
                     else{
                        _scrollObj[_dir] -=opts.scrollAmount;
                     }
                 }
             }
             //滚动开始
             $(this).startAutoMarquee(scrollFunc, opts.scrollDelay);
             //鼠标划过停止滚动
             $marquee.hover(
                 function(){
                     $(this).stopAutoMarquee("");
                 },
                 function(){
                     $(this).startAutoMarquee(scrollFunc, opts.scrollDelay);
                 }
             );
         });
     };
     $.fn.autoMarquee.defaults = {
         isEqual:true,//所有滚动的元素长宽是否相等,true,false
         loop: 0,//循环滚动次数，0时无限
         direction: 'left',//滚动方向，'left','right','up','down'
         scrollAmount:1,//步长
         scrollDelay:10//时长

     };
     $.fn.autoMarquee.setDefaults = function(settings) {
         $.extend( $.fn.autoMarquee.defaults, settings );
     };
     
     $.fn.autoMarquee.Stop
})(jQuery);

