var timer;
var current_location = 1;
var next_location = 1;
var pics_loaded = 0;
var onoff = 0;
var fullsized = 0;
var direction = 1;
var timeout_value;
var images = new Array;
var photo_urls = new Array;
var full_photo_urls = new Array;
var photo_captions = new Array;
var transitionNames = new Array;
var transitions = new Array;
var current_transition = 0;
var loop = 1;
var timeout = 3000;

transitions[0] = "progid:DXImageTransform.Microsoft.Fade(duration=1)";
transitions[1] = "progid:DXImageTransform.Microsoft.Blinds(Duration=1,bands=20)";
transitions[2] = "progid:DXImageTransform.Microsoft.Checkerboard(Duration=1,squaresX=20,squaresY=20)";
transitions[3] = "progid:DXImageTransform.Microsoft.Strips(Duration=1,motion=rightdown)";
transitions[4] = "progid:DXImageTransform.Microsoft.Barn(Duration=1,orientation=vertical)";
transitions[5] = "progid:DXImageTransform.Microsoft.GradientWipe(duration=1)";
transitions[6] = "progid:DXImageTransform.Microsoft.Iris(Duration=1,motion=out)";
transitions[7] = "progid:DXImageTransform.Microsoft.Wheel(Duration=1,spokes=12)";
transitions[8] = "progid:DXImageTransform.Microsoft.Pixelate(maxSquare=10,duration=1)";
transitions[9] = "progid:DXImageTransform.Microsoft.RadialWipe(Duration=1,wipeStyle=clock)";
transitions[10] = "progid:DXImageTransform.Microsoft.RandomBars(Duration=1,orientation=vertical)";
transitions[11] = "progid:DXImageTransform.Microsoft.Slide(Duration=1,slideStyle=push)";
transitions[12] = "progid:DXImageTransform.Microsoft.RandomDissolve(Duration=1,orientation=vertical)";
transitions[13] = "progid:DXImageTransform.Microsoft.Spiral(Duration=1,gridSizeX=40,gridSizeY=40)";
transitions[14] = "progid:DXImageTransform.Microsoft.Stretch(Duration=1,stretchStyle=push)";
transitions[15] = "special case";
var transition_count = 15;
var photo_count = 10;

// - IE5.5 and up can do the blending transition.
var browserCanBlend = (is_ie5_5up);

function stopOrStart() {
if (onoff) {
stop();
} else {
play();
}
}

function fullOrNormal() {
images = new Array;
pics_loaded=0;
if (fullsized) {
normal();
} else {
full();
}
next_location = current_location;
preload_photo(next_location);
go_to_next_photo();
}

function toggleLoop() {
if (loop) {
loop = 0;
} else {
loop = 1;
}
}

function changeElementText(id, newText) {
element = document.getElementById(id);
element.innerHTML = newText;
}

function stop() {
//changeElementText("stopOrStartText", "play");

onoff = 0;
status = "The slide show is stopped, Click [play] to resume.";
clearTimeout(timer);

}

function play() {
//changeElementText("stopOrStartText", "stop");

onoff = 1;
status = "Slide show is running...";
go_to_next_photo();
}

function full() {
//changeElementText("fullOrNormalText", "normal size");
fullsized = 1;
status = "The slide is showing full sized images, Click [normal size] to view resized images.";
}

function normal() {
//changeElementText("fullOrNormalText", "full size");

fullsized = 0;
status = "The slide is showing normal sized images, Click [full size] to view full sized images.";
}

function changeDirection() {
if (direction == 1) {
direction = -1;
//changeElementText("changeDirText", "forward direction");
} else {
direction = 1;
//changeElementText("changeDirText", "reverse direction");
}
preload_next_photo();

}

function change_transition() {
current_transition = document.TopForm.transitionType.selectedIndex;
}

function preload_complete() {
}

function reset_timer() {
clearTimeout(timer);
if (onoff) {
timeout_value = timeout;
timer = setTimeout('go_to_next_photo()', timeout_value);
}
}

function wait_for_current_photo() {

/* Show the current photo */
if (!show_current_photo()) {

/*
* The current photo isn't loaded yet.  Set a short timer just to wait
* until the current photo is loaded.
*/
status = "Picture is loading...(" + current_location + " of" + photo_count +
").  " + "Please Wait..." ;
clearTimeout(timer);
timer = setTimeout('wait_for_current_photo()', 500);
return 0;
} else {
status = "Slide show is running..." ;
preload_next_photo();
reset_timer();
}
}

function go_to_next_photo() {
/* Go to the next location */
current_location = next_location;

/* Show the current photo */
if (!show_current_photo()) {
wait_for_current_photo();
return 0;
}

preload_next_photo();
reset_timer();
}

function preload_next_photo() {

/* Calculate the new next location */
next_location = (parseInt(current_location) + parseInt(direction));
if (next_location > photo_count) {
next_location = 1;
if (!loop) {
 stop();
}
}
if (next_location == 0) {
    next_location = photo_count;
if (!loop) {
 stop();
}
}

/* Preload the next photo */
preload_photo(next_location);
}

function show_current_photo() {

/*
 * If the current photo is not completely loaded don't display it.
 */
if (!images[current_location] || !images[current_location].complete) {
preload_photo(current_location);
return 0;
}

/* transistion effects */
if (browserCanBlend){
var do_transition;
if (current_transition == (transition_count)) {
 do_transition = Math.floor(Math.random() * transition_count);
} else {
 do_transition = current_transition;
}
document.images.slide.style.filter=transitions[do_transition];
document.images.slide.filters[0].Apply();
}
document.slide.src = images[current_location].src;
setCaption(photo_captions[current_location]);

if (browserCanBlend) {
document.images.slide.filters[0].Play();
}

return 1;
}

function preload_photo(index) {

/* Load the next picture */
if (pics_loaded < photo_count) {

/* not all the pics are loaded.  Is the next one loaded? */
if (!images[index]) {
 images[index] = new Image;
 images[index].onLoad = preload_complete();
 if (fullsized) {
 	images[index].src = document.getElementById("full_photo_urls_" + index).href;
 } else {
 	images[index].src = document.getElementById("photo_urls_" + index).href;
 }
 pics_loaded++;
}
}
}

function setCaption(text) {
//changeElementText("caption", "[" + current_location + " of " + photo_count + "] " + text);
}
