// $Id: slideshow.js,v 1.1 2006/04/19 19:42:32 timcn Exp $

if(isJsEnabled() && (typeof(slideshow) != 'undefined')) {
  addLoadEvent(initSlideshow);
}

function initSlideshow() {
	// hook into links
  var p = $('slideshow-previous'), n = $('slideshow-next');
  if(p) p.onclick = function() { slideshowPrevious(); return false; };
  if(n) n.onclick = function() { slideshowNext(); return false; };
    
  // check if the current image is saved in the anchor
  var imgNoInHash = document.location.hash.substr(1);
  if (imgNoInHash > 0 && slideshow[imgNoInHash]) {
  	slideshow.current = imgNoInHash;
  	slideshowUpdate();
  }
  
  // preload current, then next, then previous image
  slideshowPreload(slideshow.current);
  slideshowPreload(slideshow.current + 1);
  slideshowPreload(slideshow.current - 1);
  slideshowPreload(slideshow.current + 2);
  slideshowPreload(slideshow.current - 2);
}

function slideshowPreload(i) {
  var n = slideshow[i];
  if(n) {
    n.image = new Image();
    n.image.src = n.src;
  }
}

function slideshowPrevious() {
  if(!(slideshow[--slideshow.current])) slideshow.current = slideshow.total;
  slideshowUpdate();
  slideshowPreload(slideshow.current - 1);
  slideshowPreload(slideshow.current - 2);
}

function slideshowNext() {
  if(!(slideshow[++slideshow.current])) slideshow.current = 1;
  slideshowUpdate();
  slideshowPreload(slideshow.current + 1);
  slideshowPreload(slideshow.current + 2);
}

function slideshowUpdate() {
  var o = slideshow[slideshow.current], i = $('slideshow-image'), c = $('slideshow-current'),
  d = $('slideshow-desc'), t = $('slideshow-title'), a = $('slideshow-original-link');

  if(i && o.src) i.src = o.src;
  if(a && o.original) a.href= o.original;
  if(d && o.desc) d.innerHTML = o.desc;
  if(t && o.title) t.innerHTML = o.title;
  if(c) c.innerHTML = slideshow.current;
  document.location.hash = slideshow.current;
}
