﻿
function startFade(config) {

    this.config = config;

    this.cIndex= 0;

    for (var i = 0; i < this.config.images.length; i++) {
        var a = new Image();
        a.src = this.config.images[i];
    }
    
    var setCellImage = function() {        
        Element.setStyle(this.config.cellId, {"background-image":  "url(" + this.config.images[this.cIndex] + ")"});    
    }
    
    var setFaderVisible = function(isVisible) {
        Element.setStyle(this.config.faderId, {display: isVisible === true ? "block" : "none"});
    }

    var getNextIndex = function() {
        if (this.cIndex+1 > this.config.images.length-1)
            return 0;
        else
            return this.cIndex + 1;
    }

    var beginChange = function() {
        //begin image download

        var elem = this.config.faderId;
        Element.setOpacity(elem, 0);
        setFaderVisible(true);
        
        if (this.config.setFaderBg===true)
            Element.setStyle(elem, { "background-image": "url(" + this.config.images[getNextIndex()] + ")" });
            
        var e = new Effect.Opacity(elem, { from: 0, to: 1, duration: this.config.fadeIn });
        
        
        setTimeout(endChange, this.config.fadeIn * 1000);        
    }

    var endChange = function() {
        this.cIndex = getNextIndex();
        var elem = this.config.faderId;
        setCellImage();
        var e = new Effect.Opacity(elem, { from: 1, to: 0, duration: this.config.fadeOut });
        scheduleChange(this.config.fadeOut);
    }

    var setBackground = function() {
    }
    
    

    var scheduleChange = function(delta) {
        setTimeout(beginChange, (this.config.timeSpan + delta) * 1000);
    }
            
    setCellImage();
    setFaderVisible(false);
    scheduleChange(0);
    
    
}
