// Time-stamp: <pdc 2003-06-09> -*-java-*-

// The following functions are intended to provide
// a consistent API for the specific DOM functions I need.
function DOM_getImage(id) {
  return document.getElementById(id);
}
function OLD_getImage(id) {
  return document.images[id];
}
var getImage = (document.getElementById 
		? DOM_getImage : OLD_getImage);

function DOM_replaceText(id, text, href, coda) {
  var e = document.getElementById(id);
  while (e.childNodes.length > 0) {
    e.removeChild(e.firstChild);
  }
  if (href) {
    var a;
    /*	
	if (document.createElementNS) {
	a = document.createElementNS(XHTML, 'a');
	} else {
    */
    a = document.createElement('a');
    /*
      }
    */
    a.setAttribute('href', href);
    a.appendChild(document.createTextNode(text));
    e.appendChild(a);
  } else {
    e.appendChild(document.createTextNode(text));
  }
  e.appendChild(document.createTextNode(coda));
}
function MSIE_replaceText(id, text, href, coda) {
  var e = document.all[id];
  if (href) {
    e.innerHtml = '<a href="' + href + '">' + text + coda;
  } else {
    e.innerText = text + coda;
  }
}
function NOP_replaceText(id, text, href, coda) {
}
var replaceText = (document.getElementById 
		   ? DOM_replaceText
		   : document.all
		   ? MSIE_replaceText
		   : NOP_replaceText);

var buttonImage = new Image();
var disabledImage = new Image();

function cycle(ipanel) {
  var panel = panels[ipanel];
  if (panel.images.length <= 1) {
    // No cycling possible.
    return;
  }

  if (++panel.iimage >= panel.images.length) {
    panel.iimage = 0;
  }
  var inf = panel.images[panel.iimage];
  var im = getImage('image' + ipanel);
  im.src = inf.im.src;
  im.width = inf.width;
  im.height = inf.height;

  replaceText('text' + ipanel, inf.text, inf.href, ' ' + inf.approval + '%');
}

function preloadImages(baseDir) {                
  // Preload images.
  buttonImage.src = baseDir + 'cycle.png';
  disabledImage.src = baseDir + 'disabled.png'

  for (var ipanel in panels) {
    var panel = panels[ipanel];
    if (panel.images.length == 0) {
      // Pass -- nothjing to see
    } else if (panel.images.length == 1) {
      // No cycling possible
      var e = document.getElementById('button' + ipanel);
      e.src = disabledImage.src;
    } else {
      panel.iimage = 0;		// Which image is showing right now.
      panel.nloading = panel.images.length;
      for (var iinf = 0; iinf < panel.images.length; ++iinf) {
	var inf = panel.images[iinf];
	var im  = new Image();
	im.ipanel = ipanel;	// For the sake of the onload handler
	im.onload = function () { preloadOnload(this.ipanel); }
	im.src = inf.src;
	inf.im = im;
      }
    }
  }
} 

function preloadOnload(ipanel) {
  var panel = panels[ipanel];
  if (--panel.nloading == 0) {
    var e = document.getElementById('button' + ipanel);
    e.src = buttonImage.src;
  }
}

