// Photoshow
// Copyright Robert Lee 2005
// All rights reserved

var undefined;

var numThumbs;
var maxThumbs;
var currentpage;
var currentpicture;
var slideiscurrent;
var remainder;
var fade_id;
var ss_id;
var ss_on;
var load = new Image;

var mainimageheight=400;
var ss_time=5;
var borderstyleon="3px solid orange";
var borderstyleoff="3px solid #efefef";
var blank = '/images/blank.gif';
var imageslideon="/images/buttons/slideshow-turnon.jpg";
var imageslideoff="/images/buttons/slideshow-turnoff.jpg";
//var loading="/images/loading.gif";

function setup(num) {

  setnumThumbs(num);
  //document.onkeyup = keys;
  currentpage=0;
  currentpicture=null;
  slideiscurrent=false;
  ss_on=false;

  //load.src=loading;

  if (pictures[pictures.length-1]==undefined) {
    //pictures.pop();
    //thumbs.pop();
    pictures.length-=1;
    thumbs.length-=1;
  }
  remainder = pictures.length%numThumbs;
  if (remainder>0) {
    maxThumbs = ((pictures.length)-remainder)+numThumbs; // was pic.len-1
  } else {
    maxThumbs = pictures.length;                              
  }
  imageSetup();

}

function setnumThumbs(num) {
  numThumbs=num;
}

function setblankimagename(imagename) {
  blank=imagename;
}

function setborderstyleon(style) {
  borderstyleon=style;
}

function setborderstyleoff(style) {
  borderstyleoff=style;
}

function setimageslideon(imagename) {
  imageslideon=imagename;
}

function setimageslideoff(imagename) {
  imageslideoff=imagename;
}

function setMainImageHeight(heightval) {
  mainimageheight=heightval;
}

function updatemainimage() {

  var imagedisplayname="";
  var pagetext="";
  var temp = new Image;
  var mainImageobj=null;

  //clearInterval(fade_id);

  //pagetext = " - "+(currentpicture+1)+" of "+(pictures.length);
  pagetext = "Image "+(currentpicture+1)+" of "+(pictures.length);

  slideiscurrent=true;

  setCurrentMark();
  imagename = pictures[currentpicture];
  imagedisplayname = imagename.substring((imagename.lastIndexOf("/")+1),imagename.length);
  changetext("imagedata", pagetext);
  changetext("imagetext", desc[currentpicture]);

  //document.mainImage.height=100;
  //document.mainImage.src=loading;

  //mainImageobj = getElement("mainImage");
  //if (mainImageobj==null) {
    document.mainImage.height=mainimageheight;
    document.mainImage.src=pictures[currentpicture];
  //} else {
  //  setOpacity("mainImage", 0);
  //  document.mainImage.src="";
  //  document.mainImage.height=400;
  //  document.mainImage.src=pictures[currentpicture];
  //  fadeIn("mainImage", 0);
  //}

}

function imageSetup() {

  var slide;

  for(var index=0; index<numThumbs; index++) { 
    slide=null;
    slide=getElement("slide"+index);

    if (slide.style) {
      slide.style.borderLeft=borderstyleoff;
      slide.style.borderRight=borderstyleoff;
    }
    if ((currentpage+index)>=pictures.length) {
      slide.src=blank;
    } else {
      slide.src=thumbs[currentpage+index];
    }
  }
  setPageNum();

}

function imageChange(index) {

  if ((currentpage+index)<(pictures.length)) {
    currentpicture = currentpage+index;
    updatemainimage();
  }

}

function nextImage() {

  if (currentpicture==null) {
    currentpicture=currentpage;
  } else if (slideiscurrent==false) {
    currentpicture=currentpage;
  } else {
    if ((currentpicture+1)>(pictures.length-1)) {
      // Gone past last picture
      nextPage();
      currentpicture = currentpage;
    } else {
      currentpicture=currentpicture+1;
      if (nextCheckPage()) {
        nextPage();
        currentpicture = currentpage;
      } 
    }
  }
  updatemainimage();

  if (ss_on==true) {
    clearInterval(ss_id);
    ss_id = setInterval("nextImage()",ss_time*1000);
  }

}

function prevImage() {

  if (currentpicture==null) {
    // Handle case where we have yet to define a currentpicture
    if (lastCheckPage()) {
      currentpicture=currentpage+(numThumbs-1);
    } else {
      if (remainder==0) {
        currentpicture=currentpage+(numThumbs-1);
      } else {
        currentpicture=(currentpage-(numThumbs-remainder))+(numThumbs-1);
      }
    }
    updatemainimage();
    return;
  }

  if (slideiscurrent==false) {
    if (lastCheckPage()) {
      currentpicture=currentpage+(numThumbs-1);
    } else {
      if (remainder==0) {
        currentpicture=currentpage+(numThumbs-1);
      } else {
        currentpicture=(currentpage-(numThumbs-remainder))+(numThumbs-1);
      }
    }
  } else {
    currentpicture-=1;
    if (currentpicture<0) {
      currentpicture=pictures.length-1;
    }
    if (prevCheckPage()) {
      prevPage();
      if (lastCheckPage()) {
        currentpicture = currentpage+(numThumbs-1);
      } else {
        if (remainder==0) {
          currentpicture=currentpage+(numThumbs-1);
        } else {
          currentpicture=(currentpage-(numThumbs-remainder))+(numThumbs-1);
	}
      }
    }
  }
  updatemainimage();

}

function nextPage(current) {

  if (currentpage >= (pictures.length-numThumbs)) {
    currentpage=0
  } else {
    currentpage = currentpage+numThumbs;
  }
  slideiscurrent=false;
  imageSetup();

}

function prevPage(current) {

  if (currentpage <= 0) {
    if (remainder==0) {
      currentpage=maxThumbs-numThumbs;
    } else {
      currentpage=maxThumbs-numThumbs;
      //currentpage=(maxThumbs+(numThumbs-remainder))-numThumbs;
    }
  } else {
    currentpage = currentpage-numThumbs;
  }
  slideiscurrent=false;
  imageSetup();

}

function nextCheckPage() {

  if (currentpage==((maxThumbs+(numThumbs-remainder))-numThumbs)) {   // NO REMAINDER CHECK HERE
  // Handle last page
    if ((currentpicture>currentpage) & (currentpicture<(pictures.length))) {
      return 0;
    } else {
      return 1;
    }
  } else {
    if ((currentpicture>currentpage) & (currentpicture<(currentpage+numThumbs))) {
      return 0;
    } else {
      return 1;
    }
  }

}

function prevCheckPage() {

  if ((currentpicture>=currentpage) & (currentpicture<=(currentpage+numThumbs))) {
    return 0;
  } else {
    return 1;
  }

}

function lastCheckPage() {

  if (currentpage<(maxThumbs-numThumbs)) {
    return 1;
  } else {
    return 0;
  }

}

function setCurrentMark() {

  var slideid;
  var slide;

  if (currentpage==0) {
    slideid=currentpicture;
  } else {
    slideid=currentpicture-currentpage;
  }
 
  for(var index=0; index<numThumbs; index++) {
    slide=getElement("slide"+index);
    if (slide.style) {
      slide.style.borderLeft=borderstyleoff;
      slide.style.borderRight=borderstyleoff;
    }
  }

  slide=getElement("slide"+slideid);
  if (slide.style) {
    slide.style.borderLeft=borderstyleon;
    slide.style.borderRight=borderstyleon;
  }

}

function setPageNum() {

  var totalpages;
  var pagetext;
  var displaypage;

  if (remainder==0) {
    totalpages=maxThumbs/numThumbs;
  } else {
    totalpages=(((pictures.length)-remainder)/numThumbs)+1;
  }

  displaypage = (currentpage/numThumbs) + 1;
  pagetext = "Page "+displaypage+" of "+totalpages;

  changetext("pagenum",pagetext);

}

function startSlideShow() {
  nextImage();
}

function stopSlideShow() {
  clearInterval(ss_id);
}

function toggleSlideShow() {

  var ssimage;
  ssimage=getElement("control_ss");

  if (ss_on==true) {
    ss_on=false;
    ssimage.src=imageslideon;
    stopSlideShow();
  } else {
    ss_on=true;
    ssimage.src=imageslideoff;
    startSlideShow();
  }

}

function popImage() {

  var imagetopop = new Image;
  var newwin;
  var popstring;

  if (currentpicture==null) {
    return;
  }

  imagetopop.src=pictures[currentpicture];

  if (window.open) {
  newwin = window.open(pictures[currentpicture],"","height="+(imagetopop.height+20)+",width="+(imagetopop.width+20)+",menubar=no,location=no");
  }
}

function keys(key) {

  if (!key) {
    key = event;
    key.which = key.keyCode;
  }

  switch (key.which) {
    case 37: // leftkey
    prevImage();
    break;
    case 39: //rightkey
    nextImage();
    break;
    case 40: // downkey
    nextPage();
    break;
    case 38: // upkey
    prevPage();
    break;
  }

}

function changetext(elementname, texttodisplay) {

   var element=null;

   element=getElement(elementname);
   if (element==null) {
     return;
   }

  if (texttodisplay==undefined) {
    texttodisplay="";
  }

  if (document.getElementById || document.all) {
    element.firstChild.nodeValue=texttodisplay;
  }

}

function getElement(name) {

  var element=null;

  if (document.getElementById) {
    element=document.getElementById(name);
  } else if (document.all) {
    element=document.all[name];
  } else if (document.layers) {
    element=document.layers[name];
  } else if (eval("document."+name)) {
    slide=eval("document."+name);
  }

  return element;

}


