﻿
function imageFade(elementID, imageArray){
    this.fadeStepTime = 50;
    this.waitTime = 4000;
    this.elementID = elementID;
    this.imageArray = imageArray;
    this.currentOpacity = 10;
    this.imageIndex = 0;
    this.opacityInterval = null;
    this.waitTimeout = null;
    setImageWait(this);
}

function decreaseOpacity(fadeObject) {
    clearTimeout(fadeObject.waitTimeout);
    fadeObject.currentOpacity = 10;
    fadeObject.opacityInterval = setInterval(function() {
        fadeObject.currentOpacity--;
        setOpacity(fadeObject, increaseOpacity);
    }, fadeObject.fadeStepTime);
}

function increaseOpacity(fadeObject) {
    clearTimeout(fadeObject.waitTimeout);
    fadeObject.currentOpacity = 0;
    var image = document.getElementById(fadeObject.elementID);
    if (image) {
        fadeObject.imageIndex++;
        if (fadeObject.imageIndex + 1 > fadeObject.imageArray.length) {
            fadeObject.imageIndex = 0;
        }
        image.src = fadeObject.imageArray[fadeObject.imageIndex];
    }
    fadeObject.opacityInterval = setInterval(function() {
        fadeObject.currentOpacity++;
        setOpacity(fadeObject, setImageWait);
    }, fadeObject.fadeStepTime);
}

function setImageWait(fadeObject) {
    fadeObject.waitTimeout = setTimeout(function() {
        decreaseOpacity(fadeObject);
    }, fadeObject.waitTime);
}

function setOpacity(fadeObject, callback) {
    if (fadeObject.currentOpacity >= 0 && fadeObject.currentOpacity <= 10) {
        var testObj = document.getElementById(fadeObject.elementID);
        if (testObj) {
                testObj.parentNode.style.opacity = fadeObject.currentOpacity / 10;
                testObj.parentNode.style.filter = 'alpha(opacity=' + fadeObject.currentOpacity * 10 + ')';
        }
    }
    else {
        clearInterval(fadeObject.opacityInterval);
        callback(fadeObject);
    }
}