
var avScroll = new Class({

    options: {
        imgWidth: 0, // elements size
        scrollRange: 0, // number of elements to scroll each time
        elementTotalRange: 0, // total number of elements
        elementDisplayRange: 0, // visible number of elements
        leftHandle: null, // element to observe to scrolling left
        rightHandle: null, // element to observe to scrolling right
        container: null, // container element, the one overflown by its own container
        speed: 500 // time to scroll
    },
    
    initialize: function(options){
        this.setOptions(options)
    
        this.imgWidth = this.options['imgWidth'];
        this.scrollRange = this.options['scrollRange'];
        this.leftHandle = this.options['leftHandle'];
        this.rightHandle = this.options['rightHandle'];
        this.container = $(this.options['container']);
        this.currentOffset = 0;
        this.speed = this.options['speed'];
        this.elementRange = this.options.elementRange;
        this.elementDisplayRange = this.options.elementDisplayRange;
        
        if($(this.options['ff'])){
            this.ff = $(this.options['ff']);
            $(this.ff).addEvent('click',this.fastForward.bindWithEvent(this));
        }
        if($(this.options['rw'])){
            this.rw = $(this.options['rw']);
            $(this.rw).addEvent('click',this.speedReverse.bindWithEvent(this));
        }
        
        $(this.leftHandle).addEvent('click',this.leftClick.bindWithEvent(this));
        $(this.rightHandle).addEvent('click',this.rightClick.bindWithEvent(this));
    },
    
    leftClick: function(){
        
        if(this.currentOffset > 0) {
            var start = this.currentOffset * this.imgWidth;
            var end = ( this.currentOffset - this.scrollRange ) * this.imgWidth;
            $(this.container).effect('right',{ duration: this.speed, wait:true, transition:Fx.Transitions.Back.easeIn }).start(start,end);
            this.currentOffset -=  this.scrollRange;
        }    
                
    },
        
    rightClick: function() {
                
         if(this.currentOffset < this.elementRange - this.elementDisplayRange) {
            var start = this.currentOffset * this.imgWidth;
            var end = (this.currentOffset + this.scrollRange) * this.imgWidth;
            $(this.container).effect('right',{ duration: this.speed, wait:true, transition: Fx.Transitions.Back.easeIn }).start(start,end);
            this.currentOffset += this.scrollRange;
        }
        
    }
    
    /*
    fastForward: function(){
                // scroll 4 images to the right, calculate it on base of the clicks and the image width
                var start= (this.leftClicks) * this.imgWidth;            
                var end = (( this.leftClicks + 4 ) * this.imgWidth);
                $(this.container).effect('right',{ duration: this.speed, wait:true, transition:Fx.Transitions.Back.easeIn }).start(start,end);
                this.leftClicks = this.leftClicks +  4;
                
                
    },
    
    speedReverse: function(){
                var start= (this.leftClicks *  this.imgWidth );
                var end = ((this.leftClicks  - 4 ) * this.imgWidth);
                $(this.container).effect('right',{ duration: this.speed, wait:true, transition: Fx.Transitions.Back.easeIn }).start(start,end);
                this.leftClicks-= 4;
                
    }
    */          
});
avScroll.implement(new Options, new Events);

