var opacity = 100;      // start with full opacity
var fadeDuration = 1;   // 1 second
var frameRate = 30;     // 30 frames per second;
var delay = 6000;       // in miliseconds
var ndx = 0;
var fadeEl;             // global variable to specify fade element
var lastImg;
var imageArray = new Array();

/**
 * Preload the iamges in the array for the slideshow
 * 
 */
function preLoad(imgArray) {
    icache = new Array();
    for(i = 0; i < imgArray.length; i++) {
        icache[i] = new Image();
        icache[i].src = imgArray[i];
    }
}

// sets a global variable for use by fade routines. 
// takes a parameter of the image id value
function setFadeElement(fadeImg) {
    fadeEl = document.getElementById(fadeImg);
    
}
	
// fadeEl is a global variable set before calling fade functions
function fadeUp() {
    fadeDelta = 100 / (frameRate * fadeDuration);
    if(opacity > 100 - fadeDelta) {
        setOpacity(fadeEl, 100);
        return;
    }
    else {
        opacity += fadeDelta;
        
        setOpacity(fadeEl, opacity);
        setTimeout("fadeUp()", 30);
    }

}

function fadeDown() {
    fadeDelta = 100 / (frameRate * fadeDuration);
    if(opacity < fadeDelta) {
        setOpacity(fadeEl, 0);
        return;
    }
    else {
        opacity -= fadeDelta;
        setOpacity(fadeEl, opacity);
        setTimeout("fadeDown(fadeEl)", 33);
    }
}

function fadeToNext() {
   
   fadeDelta = 100 / (frameRate * fadeDuration);
   
   if(opacity < fadeDelta) {
        opacity = 100;
        setOpacity(fadeEl, 0);		// just to finish it off
        
        if(ndx < imageArray.length) {
            fadeEl.src = imageArray[ndx];
            
            ndx++;
            setOpacity(fadeEl, 0);
            opacity = 0;
            
            setTimeout("fadeUp()", 250);   // give it time to load new image
            setTimeout("fadeToNext()", fadeDuration * delay);
            
        }
        else {
            fadeEl.src = lastImg;
            setOpacity(fadeEl, 0);
            setTimeout("fadeUp()", 250);
            clearTimeout();
            ndx = 0;
            return;
        }
        
    }
    else {
        opacity -= fadeDelta;
        setOpacity(fadeEl, opacity);
        setTimeout("fadeToNext()", 33);
    }
}
	
function initPos() {
    tpos = 0;
    lpos = 0;
}

function setImageArray(imgArray) {
   imageArray = imgArray;
}
	
function setOpacity(obj, opacity) {
    opacity = (opacity == 100) ? 99.999 : opacity;
    
    // IE/Win
    obj.style.filter = "alpha(opacity:"+opacity+")";
    
    // Safari<1.2, Konqueror
    obj.style.KHTMLOpacity = opacity/100;
    
    // Older Mozilla and Firefox
    obj.style.MozOpacity = opacity/100;
    
    // Safari 1.2, newer Firefox and Mozilla, CSS3
    obj.style.opacity = opacity/100;
}
