﻿/// <reference path="jquery-vsdoc.js" />
/// <reference path="lw.js" />
lw.AppendLoad(function () {
    lw.projects = $(".projects-list a");
    lw.visibleItems = 4;
    lw.currentPositions = [];
    lw.currentItems = [];
    lw.nextItems = [];
    lw.current = 0;
    if (!lw.AnimationType) {
        lw.AnimationType = Math.random() < 0.5;
    }
    for (var i = 0; i < lw.visibleItems; i++) {
        var pos = ($(lw.projects[i]).position());
        lw.currentPositions.push(pos);
    }
    for (var i = 0; i < lw.visibleItems; i++) {
        var pos = lw.currentPositions[i];
        $(lw.projects[i]).css({ top: 0, left: pos.left, position: "absolute" });
        lw.currentItems.push(lw.projects[i]);
    }
    for (var i = lw.visibleItems; i < lw.projects.length; i++) {
        $(lw.projects[i]).css({ position: "absolute", top: 300, opacity: 0 });
    }
    function Step(dir) {
        if (lw.isAnimating)
            return;
        lw.isAnimating = true;
        lw.nextItems = [];
        if (dir > 0) {
            lw.current += lw.visibleItems;
            if (lw.current >= lw.projects.length) {
                lw.current = lw.current - lw.projects.length;
            }
            var i = lw.current;
            for (; i < Math.min(lw.current + lw.visibleItems, lw.projects.length); i++) {
                lw.nextItems.push(lw.projects[i]);
            }
            if (lw.current + lw.visibleItems >= lw.projects.length) {
                var i = 0;
                for (; i < lw.current + lw.visibleItems - lw.projects.length; i++) {
                    lw.nextItems.push(lw.projects[i]);
                }
                //lw.current = i;
            }
            if (lw.AnimationType) {
                for (var i = 0; i < lw.visibleItems; i++) {
                    $(lw.currentItems[i]).stop().delay(100 * i).animate({ top: 300, opacity: 0 }, { duration: 500 });
                    $(lw.nextItems[i]).css({ opacity: 0, left: lw.currentPositions[i].left, top: 300 });
                    $(lw.nextItems[i]).stop().delay(lw.visibleItems * 100 + 100 * i).animate({ top: 0, opacity: 1 }, { duration: 500 });
                }
            } else {
                for (var i = 0; i < lw.visibleItems; i++) {
                    $(lw.currentItems[i]).stop().delay(lw.visibleItems * 100 - 100 * i).animate({ left: lw.currentPositions[i].left + 1000 }, { duration: 700 });
                    $(lw.nextItems[i]).css({ opacity: 1, top: 0, left: lw.currentPositions[i].left - 1000 });
                    $(lw.nextItems[i]).stop().delay(lw.visibleItems * 100 + lw.visibleItems * 100 - 100 * i).animate({ left: lw.currentPositions[i].left }, { duration: 700 });
                }
            }
        } else {
            var items = 0;
            var start = lw.current;
            lw.current--;
            var c = lw.visibleItems - 1;
            lw.nextItems = new Array(lw.visibleItems);
            for (; lw.current >= Math.max(0, start - lw.visibleItems); lw.current--) {
                lw.nextItems[c] = lw.projects[lw.current];
                items++;
                c--;
            }
            if (items < 4) {
                lw.current = lw.projects.length - 1;
                for (; lw.current > lw.projects.length - 1 - lw.visibleItems + items; lw.current--) {
                    lw.nextItems[c] = lw.projects[lw.current];
                    c--;
                }
            }
            lw.current++;
            if (lw.AnimationType) {
                for (var i = 0; i < lw.visibleItems; i++) {
                    $(lw.currentItems[i]).stop().delay(100 * i).animate({ top: 300, opacity: 0 }, { duration: 500 });
                    $(lw.nextItems[i]).css({ opacity: 0, left: lw.currentPositions[i].left, top: 300 });
                    $(lw.nextItems[i]).stop().delay(lw.visibleItems * 100 + 100 * i).animate({ top: 0, opacity: 1 }, { duration: 500 });
                }
            } else {
                for (var i = 0; i < lw.visibleItems; i++) {
                    $(lw.currentItems[i]).stop().delay(100 * i).animate({ left: lw.currentPositions[i].left - 1000 }, { duration: 700 });
                    $(lw.nextItems[i]).css({ opacity: 1, top: 0, left: lw.currentPositions[i].left + 1000 });
                    $(lw.nextItems[i]).stop().delay(lw.visibleItems * 100 + 1 * 100 * i).animate({ left: lw.currentPositions[i].left }, { duration: 700 });
                }
            }
        }



        setTimeout(function () {
            lw.currentItems = lw.nextItems;
            lw.isAnimating = false;
        }, 1);
    }
    $(".forward").click(function () { Step(1); });
    $(".back").click(function () { Step(-1); });
});
