// Rainbo Design Moving Panes Slideshow v1.2  July 18, 2009
// Copyright (C) 2009 by Richard L. Trethewey rick@rainbo.net
// All rights reserved.  http://www.rainbodesign.com/
// Use is granted as long as this notice remains intact.

// preload images
 myImages = new Array;
  for (i=0;i<gallery.length;i++) {
   myImages[i] = new Image;
   myImages[i].src = gallery[i];   // comment out this line to prevent preloading
   }

var gallerySize = gallery.length;
var curSlide = "slide1";  // current visible slide id
var nextSlide = "1";      // next visible slide index to gallery array
var opIncrement = 5;      // position change increment in pixels
var maxCycles = 3;        // maximum number of slideshow cycles (0 = no limit)
var cycleCount = 0;       // current cycle count
var showObject = null;    // init slideshow object variable
var s1Object = null;      // init slide1 object var
var s2Object = null;      // init slide2 object var
var t1BoxObject = null;   // Init title1 DIV object
var t2BoxObject = null;   // Init title2 DIV object
var t1Object = null;      // Init title1 object
var t2Object = null;      // Init title2 object
var statsBox = null;      // init Stats box object
var switchFlag = 0;	  // Switched slides flag
var timeoutID = null;     // ID for timeout handler
var timer = 0;            // Init transition delay timer
var pauseFlag = 0;        // Init pause start/stop flag
var s1TopInit = 0	  // slide #1 initial top position
var s1LeftInit = 0;	  // slide #1 initial left position
var s2TopInit = 0	  // slide #2 initial top position
var s2LeftInit = 0;	  // slide #2 initial left position
var t1BottomInit = 5;	  // title #1 initial bottom position
var t1LeftInit = 5;	  // title #1 initial left position
var t2BottomInit = 5;	  // title #1 initial bottom position
var t2LeftInit = 5;	  // title #1 initial left position
var s1Top = s1TopInit;            // slide #1 top position
var s1Left = s1TopInit;           // slide #1 left position
var s2Top = s2TopInit;            // slide #2 top position
var s2Left = s2LeftInit;          // slide #2 left position
var t1Bottom = t1BottomInit;      // title #1 bottom position
var t1Left = t1LeftInit;          // title #1 left position
var t2Bottom = t2BottomInit;      // title #2 bottom position
var t2Left = t2LeftInit;          // title #2 left position


 function startShow(showName) {
   cycleCount = 0;
   nextSlide = 1;
   curSlide = "slide1";
   if (document.getElementById) { // no show on older browsers
   showObject = document.getElementById(showName);
   showObject.innerHTML = "<div id=\"imageBox1\"></div><div id=\"titleBox1\"></div><div id=\"imageBox2\"></div><div id=\"titleBox2\"></div>";
   s1BoxObject = document.getElementById("imageBox1");
   s2BoxObject = document.getElementById("imageBox2");
   s1BoxObject.innerHTML = "<img src=\"" + gallery[0] + "\" width=\"" + slideWidth + "\" height=\"" + slideHeight + "\" id=\"slide1\">\n";
   s2BoxObject.innerHTML = "<img src=\"" + gallery[1] + "\" width=\"" + slideWidth + "\" height=\"" + slideHeight + "\" id=\"slide2\">\n";
   s1Object = document.getElementById("slide1");
   s2Object = document.getElementById("slide2");
   t1BoxObject = document.getElementById("titleBox1");
   t2BoxObject = document.getElementById("titleBox2");
   t1BoxObject.innerHTML = "<div id=\"title1\"></div>\n";
   t2BoxObject.innerHTML = "<div id=\"title2\"></div>\n";
   t1Object = document.getElementById("title1");
   t1BoxObject.style.zIndex = '25';
   t2Object = document.getElementById("title2");
   t2BoxObject.style.zIndex = '23';
   statsBox = document.getElementById("status");
   s1BoxObject.style.width = String(slideWidth) + 'px';
   s1BoxObject.style.height = String(slideHeight) + 'px';
   s1BoxObject.style.zIndex = '24';
   s2BoxObject.style.width = String(slideWidth) + 'px';
   s2BoxObject.style.height = String(slideHeight) + 'px';
   s2BoxObject.style.zIndex = '22';
   s1Object.style.width = String(slideWidth) + 'px';
   s1Object.style.height = String(slideHeight) + 'px';
   s2Object.style.width = String(slideWidth) + 'px';
   s2Object.style.height = String(slideHeight) + 'px';
   s1Object.src = gallery[0];
   if (titles.length > 0) { t1Object.innerHTML = titles[0]; }    // fetch title 1 text
   s2Object.src = gallery[1];
   if (titles.length > 0) { t2Object.innerHTML = titles[1]; }     // fetch title 2 text
   lightup(s2Object,100);        // override stylesheet for opacity on slide2
   lightup(t2Object,100);  // initialize 2nd title opacity, too
   s1Top = s1TopInit;
   s1Left = s1LeftInit;
   s2Top = s2TopInit;
   s2Left = s2LeftInit;
   t1Bottom = t1BottomInit;      // title #1 bottom position
   t1Left = t1LeftInit;          // title #1 left position
   t2Bottom = t2BottomInit;      // title #2 bottom position
   t2Left = t2LeftInit;          // title #2 left position
   timeoutID = setTimeout('doIdle()', idleTime * 1000);
   if (showStats) { stats(); } // display variables data
   } // endif (document.getElementById)
 } // end startShow()

function lightup(imageobject, opacity){
 if ((document.getElementById) && !(document.all)) { imageobject.style.opacity=opacity/100; }
 if ((document.getElementById) && (document.all)) { 
	imageobject.style.filter = 'alpha(opacity=' + opacity + ')';
     } // endif IE
} // end lightup()

function moveSlide(imageDiv, sTop, sLeft) {
   imageDiv.style.top = String(sTop) + 'px';
   imageDiv.style.left = String(sLeft) + 'px';
 } // end moveSlide

function moveTitle(theDiv, tBottom, tLeft) {
   theDiv.style.bottom = String(tBottom) + 'px';
   theDiv.style.left = String(tLeft) + 'px';
 } // end moveSlide

function doIdle() {
    if (pauseFlag == 0) {                         // Are we paused?
       timeoutID = setTimeout('mover()', delay);  // No! Begin transition
      } else {
       timeoutID = setTimeout('doIdle()', 20);    // Yes! Check here again (soon!)
    } // endif pauseFlag   
 } // end doIdle

function mover() {
    if (pauseFlag == 0) {			  // Are we paused?
     switchFlag = 0;				  // No! Continue processing fade/transition sequence
    if (curSlide == "slide1") {
     s1Left -= opIncrement;			  // Move Slide 1 to the left by opIncrement
     t1Left -= opIncrement;			  // Move Title 1 to the left by opIncrement
     if (s1Left <= -slideWidth) {
        curSlide = "slide2";			  // switch current slide
        s2BoxObject.style.zIndex = '24';	  // swap z-indexes
	t2BoxObject.style.zIndex = '25';
        s1BoxObject.style.zIndex = '22';
	t1BoxObject.style.zIndex = '23';
        s1Top = 0;				  // slide #1 top position
        s1Left = 0;				  // slide #1 left position
	t1Bottom = t1BottomInit;
	t1Left = t1LeftInit;
        nextSlide++;				  // bump next slide #
        if (nextSlide == gallery.length) { nextSlide = 0; cycleCount++; }
        s1Object.src = gallery[nextSlide];
	if (titles.length > 0) { t1Object.innerHTML = titles[nextSlide]; }
        switchFlag = 1;				  // Show we switched slides
      } // endif op1 <= 0
     moveSlide(s1BoxObject, s1Top, s1Left);
     moveTitle(t1BoxObject, t1Bottom, t1Left);
   } else {
     s2Top -= opIncrement;
     t2Bottom += opIncrement;
     if (s2Top <= -slideHeight) {
        curSlide = "slide1";			  // switch current slide
        s1BoxObject.style.zIndex = '24';	  // swap z-indexes
	t1BoxObject.style.zIndex = '25';
        s2BoxObject.style.zIndex = '22';
	t2BoxObject.style.zIndex = '23';
        s2Top = 0;				  // slide #2 top position
        s2Left = 0;				  // slide #2 left position
	t2Bottom = t2BottomInit;
	t2Left = t2LeftInit;
        nextSlide++;				  // bump next slide #
        if (nextSlide == gallery.length) { nextSlide = 0; cycleCount++; }
        s2Object.src = gallery[nextSlide];
	if (titles.length > 0) { t2Object.innerHTML = titles[nextSlide]; }
        switchFlag = 1;				  // Show we switched slides
     } // endif op2 <= 0
     moveSlide(s2BoxObject, s2Top, s2Left);
     moveTitle(t2BoxObject, t2Bottom, t2Left);
   } // endif curSlide == "slide2"

   } // endif pauseFlag

   if ((cycleCount < maxCycles) || (maxCycles == 0)) { // Have we completed slideshow cycles?
      if (switchFlag == 0) {			       // No! Did we switch slides?
        timeoutID = setTimeout('mover()', delay);      // Not this time, so continue transition!
          } else {
        timeoutID = setTimeout('doIdle()', idleTime * 1000);  // We switched! Use doIdle() for idleTime setting;
      } // endif switchFlag
    } // endif cycleCount

   if (showStats) { stats(); } // display variables data

 } // end mover()

  function pauseShow() {
     pauseFlag = 1;
     return true;
   }

  function resumeShow() {
     pauseFlag = 0;
     return true;
  }

    function stats() {
         sMessage = '<p>s1Top = ' + s1Top + '<br>s1Left = ' + s1Left;
         sMessage += '<br>s2Top = ' + s2Top + '<br>s2Left = ' + s2Left;
         sMessage += '<br>t1Bottom = ' + t1Bottom + '<br>t1Left = ' + t1Left;
         sMessage += '<br>t2Bottom = ' + t2Bottom + '<br>t2Left = ' + t2Left;
         sMessage += '<br>s1BoxZIndex = ' + s1BoxObject.style.zIndex;
	 sMessage += '<br>s2BoxZIndex = ' + s2BoxObject.style.zIndex;
         sMessage += '<br>t1BoxZIndex = ' + t1BoxObject.style.zIndex;
	 sMessage += '<br>t2BoxZIndex = ' + t2BoxObject.style.zIndex;
         sMessage += '<br>curSlide = ' + curSlide;
         sMessage += '<br>nextSlide = ' + nextSlide;
         sMessage += '<br>Cycle = ' + cycleCount;
         sMessage += '</p>';
         statsBox.innerHTML = sMessage;
      } // end stats()



