﻿Event.observe(window, 'load', startMovement);

elementIsOutOfViewport = function (element) {
    var leftOffset = element.cumulativeOffset()['left'];
    var carouselParent = $('carousel');

    return (leftOffset + element.getWidth()) <= carouselParent.cumulativeOffset()['left'];
}

function checkPosition() {
    var slides = $$('.slide');
    var lastSlide = slides.last();

    slides.each(function (slide) {
        if (elementIsOutOfViewport(slide)) {
            nextPosition = lastSlide.positionedOffset()['left'] + lastSlide.getWidth();

            slide.setStyle({
                left: nextPosition + 'px'
            });
            lastSlide = slide;
        }
    });
}

function startMovement() {
    $$('.slide').each(function (e) {
        new Effect.Move(e, {
            x: -200,
            y: 0,
            mode: 'relative',
            duration: 3,
            transition: Effect.Transitions.linear,
            afterFinish: function (effect) {
                restartSingleMovement(effect);
                checkPosition();
            }
        });

    });
}

function restartSingleMovement(effect) {
    new Effect.Move(effect.element, effect.options);
}
