/*

Rollovers
Depend on the quirksmode object script for cross-browser objects

rolls : [ id, id, id,... [id, idA,idB...]]
mouse events on id do rollovers on an image called I_id
if there's an array instead of id, mouse events on id do rollovers 
on idA, idB etc.

*/

function initrolls(rolls) { 
  // sigh
  //  if (bugRiddenCrashPronePieceOfJunk) return ;
  for (i in rolls) {
    var s = (isArray(rolls[i])) ? rolls[i][0] : rolls[i] ;
    var A = document.getEl( s) ; 
    if (A) {
      var r = (isArray(rolls[i])) ?
	new multiroller( A, rolls[i]) :
	new roller( A, "I_" + A.id) ;
      if (! r.ok) continue ;
      if ((!A.href) || (A.href == window.location)) {
	A.onclick = function() { return false ; } ;
	A.style.cursor = 'default' ;
      }
      else {
	A.onmouseover = r.rollon ;
	A.onmouseout = r.rolloff ;

      }
    }
  }
}

function roller(A, id) {
  this.ok = false ;
  var I =document.getEl( id) ;
  if (! I) return ;
  var off = I.src ;
  var cache = new Image() ;
  var on = cache.src = off.replace(/_off/,"_on") ;
  this.rollon = function() { I.src = on ; } ;
  this.rolloff = function() { I.src = off ; } ;
  this.ok = true ;
}

function multiroller(A, ims) {
  this.ok = false ;
  var rolls = [] ;
  for (var i=1; i<ims.length; i++) {
    rolls[ i-1] = new roller( A, ims[i]) ;
  }
  this.rollon = function() {
    for (var i=0; i<rolls.length; i++) {
      rolls[i].rollon() ;
    }
  }
  this.rolloff = function() {
    for (var i=0; i<rolls.length; i++) {
      rolls[i].rolloff() ;
    }
  }
  this.ok = true ;
}
	  
function isArray(t) {
  return (t.constructor == [].constructor) ; 
  // t.constructor.toString().match(/array/i)) ;
}
