// -------------------------------------------------------------
// slideshow_c.js 
// Rev. 20060519
// Slideshow with Captions
// Copyright (c) 2006  NetChromatics.com.  All rights reserved.
// -------------------------------------------------------------
// The following values are defaults that can be overridden with 
// function slideSetup().

var image_prefix = "img_";
var file_type = "jpg";
var number_of_images = 2;
var sig_digs = 2;
var the_image = "theImage";
var interval = 3000; // milliseconds

var running = false;
var ImageIndex = -1; // -1 = uninitialized, 0-based index
imageArray = new Array();
var captionArray;

// Initialization Functions

for (var i=0; i<number_of_images; i++) {
 imageArray[i] = -1;
}

// Internal Functions

function imageItem(image_location) {
 this.image_item = new Image();
 this.image_item.src = image_location;
}

function getImageArrayElem(ndx) {
 if (imageArray[ndx] == -1) {
   var number = ndx + 1;
   var lz_number = number;
   if (sig_digs >= 6 && number < 100000) lz_number = '0' + lz_number;
   if (sig_digs >= 5 && number < 10000) lz_number = '0' + lz_number;
   if (sig_digs >= 4 && number < 1000) lz_number = '0' + lz_number;
   if (sig_digs >= 3 && number < 100) lz_number = '0' + lz_number;
   if (sig_digs >= 2 && number < 10) lz_number = '0' + lz_number;
   imageArray[ndx] = new imageItem(image_prefix + lz_number + "." + file_type);
 }
 return(imageArray[ndx]);
}

function getCaption(ndx) {  // retrieves external static caption data
   var ndx_local = ndx + 1;
   return(String(ndx+1) + ". "+ caption[ndx_local] );
}

function get_ImageItemLocation(imageObj) {
 return(imageObj.image_item.src);
}

function getNextIndex() {
 ImageIndex = (ImageIndex+1) % number_of_images;
 return ImageIndex;
}

function getPrevIndex() {
 if (ImageIndex <= 0) { ImageIndex = number_of_images-1; }
 else { ImageIndex -= 1; }
 return ImageIndex;
}

function getImage(ndx) {
 var src = get_ImageItemLocation(getImageArrayElem(ndx));
 return(src);
}

function setImageSrcAndCaption(index, src, caption) {
 document[index].src = src;
 var paragraphs = document.getElementsByTagName("p");
// alert(paragraphs.caption_p.innerHTML);
 paragraphs.caption_p.innerHTML = caption;
}

// Global Functions

function nextImage(index) {
 var ndx = getNextIndex();
 var src = getImage(ndx);
 var caption = getCaption(ndx);
 setImageSrcAndCaption(index, src, caption);
}

function prevImage(index) {
 var ndx = getPrevIndex();
 var src = getImage(ndx);
 var caption = getCaption(ndx);
 setImageSrcAndCaption(index, src, caption);
}

function rotateImages(index) {
 nextImage(index);
 var recur_call = "rotateImages('"+index+"')";
 timerID = setTimeout(recur_call, interval);
 running = true;
}

function firstImage(index) {
 var recur_call = "rotateImages('"+index+"')";
 timerID = setTimeout(recur_call, interval);
 running = true;
}

// Global Functions

function startShow(index) {
 if (!running) {
  rotateImages(index);
  running = true;
 }
}

function stopShow() {
 clearTimeout(timerID)
 running = false;
}

// Setup Functions

function captionSetup( in_captionStrings, in_numCaptions) {
 captionArray = new Array(in_numCaptions+1);
 for (var i=0; i<=in_numCaptions; i++) {
   captionArray[i] = in_captionStrings[i];
 }
}

function slideSetup(p1, p2, p3, p4, p5, p6) {
 running = false;
 image_prefix = p1;
 number_of_images = p2;
 file_type = p3;
 interval = p4;
 sig_digs = p5;
 the_image = p6;
 for (var i=0; i<number_of_images; i++) {
  imageArray[i] = -1;
 }
 startShow(the_image);
}


