/* Global Variables */


var imagePath = 'slideshow/';  // Relative path to images
var playerImages = new Array(6);           // Set this to the amount of images to display
var playerDelay = 4000;                       // Delay between frames in milliseconds
var playerState = 0;
var currentFrame = 0;
var playerName = 'slideShow';
var tHandler;

/*
 * Player initialization
 * Builds an array of images and preloads them
 * Enters a ascending, iterative loop through the the array of images
 */
function initImagePlayer() {

    /* If the browser doesn't support images, exit cleanly. */
    if ( !document.images ) {
        return 0;
    }

    buildImageList();
    frameForward(1);
}

/*
 * Build list of images using imagePath and playerImages
 * Preload images with page load
 */
function buildImageList() {
    var i;
    for ( i = 0; i != playerImages.length; i++ ) {
        try {
        playerImages[i] = new Image;
        playerImages[i].src = imagePath + i + '.jpg';
        } catch (err) {

            return -1;
        }
    }
    return 0;
}

/*
 *
 *
 */
function getNextFrame(direction) {
    switch ( direction ) {
        case 0:
            if ( currentFrame ==  playerImages.length - 1 ) {
                currentFrame = 0;
            } else {
                currentFrame++;
            }
            break;
        case 1:
            if ( currentFrame == 0 ) {
                currentFrame = playerImages.length - 1;
            } else {
                currentFrame--;
            }
            break;
        default:
            return -1;
    }
    return currentFrame;
}

/*
 *
 */
function frameForward(doLoop) {

    curFrame = getNextFrame(0);

    switch ( doLoop ) {
        case 0:
            switch ( playerState ) {
                case 0:
                    break;
                case 1:
                    unloopSlideShow();
                    break;
            }
            break;
        case 1:
            var recursiveHack = "frameForward(1)";
            switch ( playerState ) {
                case 0:
                    playerState = 1;
                    tHandle = setTimeout(recursiveHack, playerDelay);
                    return 0;
                    break;
                case 1:
                    unloopSlideShow();
                    tHandle = setTimeout(recursiveHack, playerDelay);
                    break;
            }
            break;
    }

    document[playerName].src = playerImages[curFrame].src;
}

/*
 *
 */
function frameBackward(doLoop) {
    curFrame = getNextFrame(1);

    switch ( doLoop ) {
        case 0:
            switch ( playerState ) {
                case 0:
                    break;
                case 1:
                    unloopSlideShow();
                    break;
            }
            break;
        case 1:
            var recursiveHack = "frameBackward(1)";
            switch ( playerState ) {
                case 0:
                    playerState = 1;
                    tHandle = setTimeout(recursiveHack, playerDelay);
                    return 0;
                    break;
                case 1:
                    unloopSlideShow();
                    tHandle = setTimeout(recursiveHack, playerDelay);
                    break;
            }
            break;
    }

    document[playerName].src = playerImages[curFrame].src;
}

function unloopSlideShow() {
    clearTimeout(tHandle);
}
