var Scroll=new Class ({
    Implements:[Options],
    options:{
        name:'scrollbox',
        imgWidth:100,
        imgHeight:100,
        imgNumber:15,
        imgShowNumber:3,
        imgNumScroll:1,
        imgMarginLR:12,
        FXduration:1500,
        loop: 0,
        postfix:1,
        mouseover:0,
        MOduration:300,
        mostoparea:10
    },
        
        initialize:function(options){
            this.setOptions(options);
            name=this.options.name;
            d=this.options.postfix;
            this.initScroll();
            this.prepeareHTML(this);
            this.b=(this.options.imgNumber-this.options.imgShowNumber)*(this.options.imgWidth+((this.options.imgMarginLR*2)+2)); //right edge coordinata
            this.c=this.options.loop;
        },
        
        initScroll:function(){
            var step = 0;
            this.contwidth = (this.options.imgWidth+((this.options.imgMarginLR*2)+2))*this.options.imgShowNumber;
            
            $('scrollbox_main'+d).setStyle('width',((this.options.imgWidth+((this.options.imgMarginLR*2)+2))*this.options.imgShowNumber)+56);
            $('scrollbox_main'+d).setStyle('width',((this.options.imgWidth+((this.options.imgMarginLR*2)+2))*this.options.imgShowNumber)+56);
            $('scrollbox_main'+d).setStyle('height',this.options.imgHeight+20);
            $('content'+d).setStyle('width',(this.options.imgWidth+((this.options.imgMarginLR*2)+2))*this.options.imgNumber);
            $('content'+d).setStyle('height',this.options.imgHeight+10);
            $('sb_container'+d).setStyle('height',this.options.imgHeight+10);
            $(name).setStyle('width',(this.options.imgWidth+((this.options.imgMarginLR*2)+2))*this.options.imgShowNumber);
            $$('#content'+d+' .img_scrollbox').setStyle('margin-left',this.options.imgMarginLR);
            $$('#content'+d+' .img_scrollbox').setStyle('margin-right',this.options.imgMarginLR);
            $$('#content'+d+' .img_scrollbox  img').setStyle('width',this.options.imgWidth);
            $$('#content'+d+' .img_scrollbox  img').setStyle('height',this.options.imgHeight);
            //this.myFx = new Fx.Scroll(name,{duration:this.options.FXduration,wait:false});},
            this.myFxMouseOver = new Fx.Tween('content'+d,{
                duration: this.options.FXduration,
                wait:true,
                busy:false
            });
        },
            
        prepeareHTML:function(obj){  //obj is instance of the scroll class
            var a=0;
            var mindelta = obj.options.imgWidth+((obj.options.imgMarginLR*2)+2);
            var delta=(obj.options.imgWidth+((obj.options.imgMarginLR*2)+2))*obj.options.imgNumScroll;
            obj.leftarrdiv=new Element('div',{'id':'leftarrdiv'+d}).inject($(name),'before');
            obj.rightarrdiv=new Element('div',{'id':'rightarrdiv'+d}).inject($(name),'after');
            obj.leftarr=new Element('a',{'id':'leftarr'+d,'styles':{'opacity':1,'visibility':'visible'},
                'events':{'click':function(e){
                    //obj.myFxMouseOver.set('left',move(delta));
                    obj.myFxMouseOver.duration = obj.options.FXduration;
                    obj.myFxMouseOver.start('left',move(delta));
                }}}).inject('leftarrdiv'+obj.options.postfix,'top');
                    if (obj.options.loop==1){$('leftarr'+obj.options.postfix).setAttribute('class','enarr');}
                    else {$('leftarr'+obj.options.postfix).setAttribute('class','disarr');}
            obj.rightarr=new Element('a',{'id':'rightarr'+obj.options.postfix,'styles':{'opacity':1,'visibility':'visible'},
                'events':{'click':function(e){ 
                    //obj.myFxMouseOver.set('left',move(-delta));
                    obj.myFxMouseOver.duration = obj.options.FXduration;
                    obj.myFxMouseOver.start('left',move(-delta));
                }}}).inject('rightarrdiv'+obj.options.postfix,'top');
                $('rightarr'+d).setAttribute('class','enarr');
            function move(delta){//направление и величина сдвига
                     if (obj.options.loop!='1'){
                         if(delta>0){$('rightarr'+obj.options.postfix).setAttribute('class','enarr');}//right direction
                         else {$('leftarr'+obj.options.postfix).setAttribute('class','enarr');}//left direction
                     }
                     a=a+delta;
                     if (a>=0){
                         if (obj.options.loop!='1'){
                             a=0;
                             $('leftarr'+obj.options.postfix).setAttribute('class','disarr');
                         }
                         else {a=-obj.b;}
                         return Math.ceil(a);                         
                     }
                     if (a<=-obj.b){
                      if (obj.options.loop!='1'){
                          a=-obj.b;
                          $('rightarr'+obj.options.postfix).setAttribute('class','disarr');
                      }
                      else {a=0;}
                     }
                     return Math.ceil(a);                     
            }
            obj.box = $('sb_container'+d).getCoordinates(); //координаты для mouseover 
            
            
           
                
                obj.mousemove = function(e)
    {
        //e.stop();
        //var box = this.getCoordinates();
         obj.boxmiddle=obj.box.left+(obj.box.right-obj.box.left)/2;
        if (e.page.x > obj.box.left && e.page.x < obj.box.right && e.page.y > obj.box.top && e.page.y < obj.box.bottom ) 
        {
            //step = (((e.page.x - obj.box.left) - (module_width/2)) * 0.06 * (slide_speed/100));
            saw = obj.options.mostoparea/2; //         MouseOver
            if (e.page.x > obj.boxmiddle+saw || e.page.x < obj.boxmiddle-saw){
            obj.step = (((e.page.x - obj.box.left) - ((obj.contwidth-saw)/2)) * 0.06 * (obj.options.MOduration/100));
            }
            else {obj.step = 0;}
        }
         else
        {
            
            obj.step = 0;
            obj.part = Math.ceil(a%mindelta);
            //alert(move(part) + '     остаток=' + part);
            if(obj.part!=0){
                //document.removeEvent('mousemove');
                $clear(obj.timer);
                if(mindelta/2-obj.part > 0){
                    obj.myFxMouseOver.start('left',Math.ceil(move(-obj.part))).chain(function() {
                        obj.timer = scan.periodical(30);
                    })
                    }
                else {
                    obj.myFxMouseOver.start('left',Math.ceil(move(obj.part))).chain(function() {
                        obj.timer = scan.periodical(30);
                    })
                }
                //document.addEvent('mousemove', obj.mousemove);
                
            } 
            
        }
    }.bind($('sb_container'+d));
     if (obj.options.mouseover===1) { 
    document.addEvent('mousemove', obj.mousemove);
    obj.step=0;
    var scan = function(e)
    {
        if (obj.step!=0)
        {   
            
            obj.myFxMouseOver.duration = 30;
            obj.myFxMouseOver.set('left',move(-obj.step));
            //$('res').innerHTML= ' a=' + a + '   step=' +step;            
                        
        }
    };
    obj.timer = scan.periodical(30);    

    }
        
        }
});
