﻿/***********************************************
* Author: Chris Smith
* Date created: 17/08/2009
***********************************************/
// variable declaration
var listSlideshows = new Array();
/*
*/
function initSlideshow(elementId, listImages, imageWidth, imageHeight, fadeDelay, imageClass, random) {
    if (isNaN(fadeDelay)) {
        // default 3 seconds
        fadeDelay = 3000
    }
    if (!listImages.length > 1) {
        // must have more than one image to fade between
        return;
    }
    if (random == null) {
        random = false;
    }
    var el = document.getElementById(elementId)
    if (el == null) {
        // image slide show container not found
        return;
    }
    // store properties for later
    var objProps = new Object()
    listSlideshows.push(objProps)
    var slideshowId = listSlideshows.length - 1;
    objProps.slideshowId = slideshowId;
    objProps.elementId = elementId;
    objProps.listImages = listImages;
    objProps.width = imageWidth;
    objProps.height = imageHeight;
    objProps.delay = fadeDelay;
    objProps.random = random
    var startIndex = 0
    if (random == true) {
        startIndex = Math.floor(Math.random() * listImages.length);
    }
    objProps.currentImage = startIndex;
    // create images to be used;
    var dvRoot, dvImage, img
    dvRoot = document.createElement("div");
    dvRoot.style.position = "relative"
    dvRoot.style.width = imageWidth;
    dvRoot.style.height = imageHeight;
    el.appendChild(dvRoot);
    // first image
    dvImage = document.createElement("div");
    dvImage.id = "slideshow" + slideshowId + "_container0";
    dvImage.style.position = "absolute";
    img = document.createElement("img");
    img.id = "slideshow" + slideshowId + "_img0";
    img.src = listImages[startIndex];
    setImageAlpha(img, 1);
    dvImage.appendChild(img);
    dvRoot.appendChild(dvImage)
    // second image
    dvImage = document.createElement("div");
    dvImage.id = "slideshow" + slideshowId + "_container1";
    dvImage.style.position = "absolute";
    img = document.createElement("img");
    img.id = "slideshow" + slideshowId + "_img1";
    dvImage.appendChild(img);
    dvRoot.appendChild(dvImage);
    // load first images
    loadNextSlideshowImage(objProps);
    setImageAlpha(img, 0);
    // start
    objProps.intervalFade = setInterval("startSlideshowFade(" + slideshowId + ");", fadeDelay);
}
/*
*/
function loadNextSlideshowImage(objProps) {
    var img
    img = document.getElementById("slideshow" + objProps.slideshowId + "_img1");
    var imageIndex
    if (objProps.random) {
        imageIndex = objProps.currentImage
        while (imageIndex != objProps.currentImage) {
            imageIndex = Math.floor(Math.random() * listImages.length);
        }
    } else {
        imageIndex = objProps.currentImage + 1;
        if (imageIndex >= objProps.listImages.length) {
            imageIndex = 0;
        }
    }
    img.src = objProps.listImages[imageIndex];
    objProps.currentImage = imageIndex;
}
/*
*/
function getImageAlpha(img) {
    var alpha 
    if (img.style.opacity != null) {
        // Firefox
        alpha = img.style.opacity
    } else {
        // IE
        var strAlpha = img.style.filter.substr(img.style.filter.indexOf("alpha"))
        strAlpha = strAlpha.substr(strAlpha.indexOf("=") + 1)
        alpha = parseInt(strAlpha) / 100;
    }
    if (isNaN(alpha)) {
        return 1;
    }
    return alpha;
}
function setImageAlpha(img, alpha) {
    if (img.style.opacity != null) {
        // Firefox
        img.style.opacity = alpha;
    } else {
        // IE
        img.style.filter = "alpha(opacity=" + (alpha * 100) + ")";
    }
}
/*
*/
function startSlideshowFade(slideshowId) {
    var objProps = listSlideshows[slideshowId]
    if (objProps.intervalFadeNext != null) {
        clearInterval(objProps.intervalFadeNext)
    }
    objProps.intervalFadeNext = setInterval("fadeNextSlideshowImage(" + slideshowId + ");", 50);
}
/*
*/
function fadeNextSlideshowImage(slideshowId) {
    var objProps = listSlideshows[slideshowId]
    var img0, img1
    var alpha
    img0 = document.getElementById("slideshow" + objProps.slideshowId + "_img0");
    img1 = document.getElementById("slideshow" + objProps.slideshowId + "_img1");
    alpha = getImageAlpha(img0)
    if (alpha > 0) {
        setImageAlpha(img0, alpha - 0.025)
        setImageAlpha(img1, 1 - alpha + 0.025)
    } else {
        // image fade complete
        clearInterval(objProps.intervalFadeNext);
        img0.src = img1.src;
        setImageAlpha(img0, 1)
        setImageAlpha(img1, 0)
        loadNextSlideshowImage(objProps);
    }
}