s_speed = 3000; // time in milliseconds between pictures
s_speedFactor = 100; // time in milliseconds to increase / decrease by when speeding up or slowing down
s_playMode = 2; // 1 = play once, 2 = loop
s_playDirection = 1; // 1 = forward, -1 = backwards
s_playing = true; // true to start automatically, false to force start
s_currentImage = 0; // image to start with. NOTE: starts at 0

s_numLoaded = 0;

var images = new Array();

function initSlideshow(){
// preload images
    for(n=0;n<s_images.length;n++){
        images[n]=new Image();
        images[n].src=s_images[n];
        setTimeout('checkIfLoaded('+n+')' ,100);
    }    
}

function checkIfLoaded(imgNumber){
// check if image is loaded
    (images[imgNumber].complete)? updatePercentage() : setTimeout('checkIfLoaded('+imgNumber+')', 10);
}

function updatePercentage(){
// update number of images loaded and update percentage of total
    s_numLoaded++;
    s_percentageLoaded = parseInt((s_numLoaded/s_images.length)*100);
//    document.getElementById("s_imageContainer").innerHTML = s_loadText+s_percentageLoaded+"%";
//	window.document.title = s_percentageLoaded+" %";
    (s_percentageLoaded >= 100) ? startSlideshow() : s_void = 0 ;
}

function startSlideshow(){
// start slideshow in correct direction
    play();
    showImage(s_currentImage);
}

function play(){
// play the slideshow
    if(s_playing){
        showImage(s_currentImage);
        if(s_currentImage + s_playDirection >= 0 && s_currentImage + s_playDirection <= s_images.length-1){
        // next number exists
            s_currentImage += s_playDirection;
        } else {
        // next number doesn't exist
            if(s_playMode == 2){
            // looping
                if(s_playDirection == 1){
                // 1st image
                    s_currentImage = 0;
                } else if (s_playDirection == -1){
                // last image
                    s_currentImage = s_images.length-1;                
                }
            } else {
            // stop playing        
                stopPlaying();
                s_currentImage += s_playDirection
                showImage(s_currentImage);
            }
        }
    }
    setTimeout("play("+s_playDirection+")",s_speed);
}

function showImage(imageNumber){
// show image with imageNumber
    document.getElementById("s_imageContainer").innerHTML = "<a href='#' onClick='return nextImage()'><img src='"+s_images[imageNumber]+"' border='0' /></a>";
//    alert( document.getElementById("s_imageContainer").innerHTML);
/*    var nums = "";
    
    for(n=0;n<s_images.length;n++){
        nums += (n == imageNumber) ? (n+1)+" " : "<a href='#'  onClick='return showImage("+n+")'>"+(n+1)+"</a> "
    }        
    
//    document.getElementById("s_numContainer").innerHTML = nums;
    
//    document.getElementById("s_descriptionContainer").innerHTML = s_images[imageNumber][1];
    if(imageNumber+1 < s_images.length){
//        document.getElementById("s_nextContainer").innerHTML = "<a href='#' onClick='return nextImage()'>"+s_nextText+"</a>";
    } else {
//        document.getElementById("s_nextContainer").innerHTML = "&nbsp;";
    }
    if(imageNumber-1 >= 0){
//        document.getElementById("s_prevContainer").innerHTML = "<a href='#' onClick='return previousImage()'>"+s_prevText+"</a>";
    } else {
//        document.getElementById("s_prevContainer").innerHTML = "&nbsp;";
    }    */
    
    s_currentImage = imageNumber;
    return false;
}

function nextImage(){
// display next image, stop playback
    (s_playing == true) ? s_currentImage -= s_playDirection : s_void = 0;
    s_playing = false; 
    if(s_currentImage+1 < s_images.length){
        s_currentImage++;
    } else {
        s_currentImage = 0;
    }
    return showImage(s_currentImage);
}

function previousImage(){
// show previous image, stop playback
    (s_playing == true) ? s_currentImage -= s_playDirection : s_void = 0;
    s_playing = false;
    s_currentImage--;
    return showImage(s_currentImage);
}