/* Custom index page slideshow handler */
/* Written by Aelanna 2010-08-09 */
var __TOTAL_SLIDES__ = 4;

var slideshowIntervalId = -1;
var currentSlide = 0;
var currentSplash = 0;
var transitioning = true;

function changeSlideHighlight(id) {
    var i;
    for (i = 0; i < __TOTAL_SLIDES__; i ++) {
        $('slide' + i).className = (id == i ? 'selected' : 'slide');
    }
}

function switchSlide(anchor, id) {
    if (anchor != null) anchor.blur();
    if (!transitioning) {
        transitioning = true;
        changeSlideHighlight(id);

        var slideName = 'canvas' + currentSlide;
        currentSlide = id;
        Effect.Fade(slideName, {
            duration: 0.5,
            afterFinish: function() {
                var elemName = 'canvas' + currentSlide;
                Effect.Appear(elemName, {
                    duration: 0.5,
                    afterFinish: function() {
                        transitioning = false;
                    }
                });
            }
        });

        var splashName = 'splash' + currentSplash;
        currentSplash = id;
        Effect.Fade(splashName, {
            duration: 0.5,
            afterFinish: function() {
                var elemName = 'splash' + currentSplash;
                Effect.Appear(elemName, {
                    duration: 0.5,
                    afterFinish: function() {
                        transitioning = false;
                    }
                });
            }
        });
    }
}

function clickSlide(anchor, id) {
    stopSlideshow();
    switchSlide(anchor, id);
}

function previousSlide(anchor) {
    var id = (currentSlide < 1 ? __TOTAL_SLIDES__ : currentSlide) - 1;
    switchSlide(anchor, id);
}

function nextSlide(anchor) {
    var id = currentSlide + 1;
    if (id >= __TOTAL_SLIDES__) id = 0;
    switchSlide(anchor, id);
}

function clickPrevious(anchor) {
    stopSlideshow();
    previousSlide(anchor);
}

function clickNext(anchor) {
    stopSlideshow();
    nextSlide(anchor);
}

function startSlideshow() {
    if (slideshowIntervalId < 0) {
        slideshowIntervalId = setInterval('nextSlide(null)', 8000);
    }
}

function stopSlideshow() {
    if (slideshowIntervalId > -1) {
        clearInterval(slideshowIntervalId);
        slideshowIntervalId = -1;
    }
}

Effect.Appear('canvas0', {
    duration: 0.5,
    afterFinish: function() {
        transitioning = false;
        startSlideshow();
    }
});

