var currentSlide = 1;
var numSlides = 22;
var slidesPath = "assets/slides/";
var isBlending = false;

var slideSpeed = 10000;
var slideTimeout;
var blendingTimeout;

var autoSlide = true;
var slideshowContainer;
var currentSlideImage;
var nextSlideImage;
var blendQueue = [];

var setOpacity = function(elem, value) {
    elem.opacity = value;
    elem.style.opacity = value/100;
    elem.style.filter = "alpha(opacity=" + value + ")";
    elem.MozOpacity = (value / 100);
    elem.KhtmlOpacity = (value / 100);
};

var setAutomaticSliding = function(bool) {
    clearTimeout(slideTimeout);
    autoSlide = bool;
    document.getElementById("play-control").className = (bool) ? "pause" : "play";
    if (bool && (currentSlide == numSlides)) {
        document.getElementById("play-control").className = "play";    
    }
    if (bool && !isBlending) {
        slideTimeout = setTimeout("showSlide(" + (currentSlide + 1) + ", true);", 500);
    }
};

var showSlide = function(i, autoSliding) {
    clearTimeout(slideTimeout);
    autoSlide = autoSliding;
    if (!autoSliding || autoSliding == undefined) {
        document.getElementById("play-control").className = "play";    
    }

    if (i > numSlides || i < 1) {
        return;    
    }

    if (!isBlending) {
        nextSlideImage = document.createElement("IMG");
        nextSlideImage.index = i;
        nextSlideImage.src = slidesPath + (i) + ".jpg";
        setOpacity(nextSlideImage, 0);
        slideshowContainer.appendChild(nextSlideImage);
        blendSlides();
    } else {
        blendQueue.push(i);
    }
};

var blendSlides = function() {
    clearTimeout(blendingTimeout);
    if (nextSlideImage.opacity != 100) {
        isBlending = true;
        setOpacity(nextSlideImage, nextSlideImage.opacity + 10);
        blendingTimeout = setTimeout("blendSlides();", 50);
    } else {
        isBlending = false;
        currentSlide = nextSlideImage.index;

        if (currentSlide > 1) {
            document.getElementById("previous-control").className = "previous";
        } else if (currentSlide == 1) {
            document.getElementById("previous-control").className = "previous-disabled";
        }
        if (currentSlide == numSlides) {
            document.getElementById("next-control").className = "next-disabled";
        } else if (currentSlide < numSlides) {
            document.getElementById("next-control").className = "next";
        }

        slideshowContainer.removeChild(currentSlideImage);
        currentSlideImage = nextSlideImage;

        if (autoSlide) {
            clearTimeout(slideTimeout);
            var index = currentSlide + 1;
            if (index > numSlides) {
                currentSlide = 1;
                setTimeout("showSlide(" + currentSlide + ", true);", (slideSpeed * 3));
//                setAutomaticSliding(false);
            } else {
                slideTimeout = setTimeout("showSlide(" + index + ", true);", slideSpeed);
            }
            
        } else if (!autoSlide && blendQueue.length > 0) {
            var slide = blendQueue[0];
            blendQueue.splice(0, 1);
            showSlide(slide);
        }
    }
};

window.onload = function() {
    slideshowContainer = document.getElementById("slideshow-container");
    currentSlideImage = slideshowContainer.getElementsByTagName("img")[0];
    setOpacity(currentSlideImage, 100);
    slideTimeout = setTimeout("showSlide(" + 2 + ", true);", slideSpeed);
};
