// scroller bancaire voordelen
var scroller = function() {
    var currentPosition = 0;
    var lock;

    var sinoidal = function(val) {
      return (-Math.cos(val * Math.PI) / 2) + 0.5;
    }
		
    var scroll = function(index) {
        var totalOffset = index * scroller.scrollPanelWidth;
        var desiredOffset = totalOffset - currentPosition;
        var scrollee = $(scroller.scrollPanel);
        var tick = scroller.scrollTime / scroller.ticks;
        var timeIndex = 0;
        var inter;

        function animate() {
            timeIndex += tick;
            var delta = sinoidal(timeIndex / scroller.scrollTime) * desiredOffset;
            if (timeIndex > scroller.scrollTime) {
                clearInterval(inter);
                currentPosition = scrollee.scrollLeft;
                lock = false;
                return;
            } 
            scrollee.scrollLeft = currentPosition + delta;
        }
        
        inter = setInterval(function() { animate(); }, tick);
    }

    var getScrollLinks = function() {
        var links = $$('a[rel=scroll]');
        links.each(function(elem, index) {
            elem.observe('click', function() {
                if (lock) {
                    return;
                }
                lock = true;
                scroll(index);
            });
        });
    };
    
    return { 
        scrollTime: 0,
        ticks: 0,
        scrollPanel: '',
        scrollPanelWidth: 0,
    
        init: function(panel, duration, frames, panelWidth) {
            scroller.scrollPanel = panel;
            scroller.scrollTime = duration || 500;
            scroller.ticks = frames || 32;
            scroller.scrollPanelWidth = panelWidth || 289;
            getScrollLinks();
        }
    };
}();


// scroller 4 diverse voordelen 
var scroller4 = function() {
    var currentPosition = 0;
    var lock;

    var sinoidal = function(val) {
      return (-Math.cos(val * Math.PI) / 2) + 0.5;
    }
		
    var scroll = function(index) {
        var totalOffset = index * scroller4.scrollPanelWidth;
        var desiredOffset = totalOffset - currentPosition;
        var scrollee = $(scroller4.scrollPanel);
        var tick = scroller4.scrollTime / scroller4.ticks;
        var timeIndex = 0;
        var inter;

        function animate() {
            timeIndex += tick;
            var delta = sinoidal(timeIndex / scroller4.scrollTime) * desiredOffset;
            if (timeIndex > scroller4.scrollTime) {
                clearInterval(inter);
                currentPosition = scrollee.scrollLeft;
                lock = false;
                return;
            } 
            scrollee.scrollLeft = currentPosition + delta;
        }
        
        inter = setInterval(function() { animate(); }, tick);
    }

    var getScrollLinks = function() {
        var links = $$('a[rel=scroll4]');
        links.each(function(elem, index) {
            elem.observe('click', function() {
                if (lock) {
                    return;
                }
                lock = true;
                scroll(index);
            });
        });
    };
    
    return { 
        scrollTime: 0,
        ticks: 0,
        scrollPanel: '',
        scrollPanelWidth: 0,
    
        init: function(panel, duration, frames, panelWidth) {
            scroller4.scrollPanel = panel;
            scroller4.scrollTime = duration || 500;
            scroller4.ticks = frames || 32;
            scroller4.scrollPanelWidth = panelWidth || 289;
            getScrollLinks();
        }
    };
}();
