// ---- begin class: Rollover ----
function Rollover(normal_url,mouseover_url) {
 this.normal_url=normal_url;
 this.mouseover_url=mouseover_url;
 this.mouseover_image=0;
}

function Rollover_load_mouseover_image() {
 if (document.images) {
  this.mouseover_image = new Image();
  this.mouseover_image.src=this.mouseover_url;
 }
}

Rollover.prototype.load_mouseover_image=Rollover_load_mouseover_image;
// ---- end class: Rollover ----

// rollovers[name] is a Rollover object. Use addRollover() (see below) to populate
var rollovers=new Object();

// ==== public functions ====

// == preloadRollovers()
//    called as body's onload
var BEFORE_PRELOAD=0;
var DURING_PRELOAD=-1;
var AFTER_PRELOAD=1;
var preloadFlag = BEFORE_PRELOAD;

function onLoadHook() {
 // you can override this.
 // will be called after preload is done
}

function preloadRollovers() {
 if (preloadFlag!=BEFORE_PRELOAD)
  return;

 preloadFlag=DURING_PRELOAD;
 if (document.images) {
  for (name in rollovers) {
   rollovers[name].load_mouseover_image();
  }
  preloadFlag=AFTER_PRELOAD;
  onLoadHook();
 } else {
  preloadFlag=BEFORE_PRELOAD;
 }
}

// == addRollover(name,normal_url,mouseover_url)
//    should be called for each roll-over image
//    name:
//      name of an IMG tag that has normal_url as src
//      inside a link with rollIn() and rollOut() as mouseover and mouseout
//    normal_url,mouseover_url:
//      URLs of the 2 images
function addRollover(name,normal_url,mouseover_url) {
 rollovers[name]=new Rollover(normal_url,mouseover_url);
}

// == rollIn(obj)
//    usage: <img src="..." onMouseOver="return rollIn(this)" onMouseOut="return rollOut(this)"
function rollIn(obj) {
 if (preloadFlag==AFTER_PRELOAD) {
  obj.src=rollovers[obj.id].mouseover_url;
 } else {
  if (preloadFlag==BEFORE_PRELOAD) {
   setTimeout('preloadRollovers()',5000); // maybe we'll get lucky next time :)
  }
 };
 return true;
}

// == rollIn(obj)
//    usage: <img src="..." onMouseOver="return rollIn(this)" onMouseOut="return rollOut(this)"
function rollOut(obj) {
 if (preloadFlag==AFTER_PRELOAD) {
  obj.src=rollovers[obj.id].normal_url;
 } else {
  if (preloadFlag==BEFORE_PRELOAD) {
   setTimeout('preloadRollovers()',5000); // maybe we'll get lucky next time :)
  }
 };
 return true;
}
