// roll.js: code-free rollovers

var roll_preloads= new Array();

function roll_bind(el) {
  var c= roll_getClass(el);
  if (c!='roll') return;
  var imgs= el.getElementsByTagName('img');
  if (imgs.length==0) return;
  el.im= imgs[0];
  el.onmouseover= roll_over;
  el.onmouseout= roll_out;
  el.onmousedown= roll_down;
  el.onmosueup= roll_up;
  var src= roll_resrc(el.im.src, '1');
  for (var i= roll_preloads.length; i-->0;)
    if (roll_preloads[i]==src)
      return;
  roll_preloads[roll_preloads.length]= src;
}

function roll_over() {
  this.im.src= roll_resrc(this.im.src, '1');
}
function roll_out() {
  this.im.src= roll_resrc(this.im.src, '0');
}
function roll_down() {
  this.onfocus= this.blur;
}
function roll_up() {
  this.onfocus= null;
}

function roll_resrc(src, state) {
  var ix;
  for (ix= src.length; ix-->0;)
    if (src.charAt(ix)=='.')
      break;
  if (ix==0) return src;
  return src.substring(0, ix-1)+state+src.substring(ix);
}

function roll_getClass(el) {
  // Opera doesn't support 'className', IE doesn't support getAttribute
  var c= el.className;
  if (c!=window.undefined) return c;
  if (!el.getAttribute) return '';
  c= el.getAttribute('class');
  return c;
}

function roll_preload() {
  var preloader= null;
  var img;
  if (document.createElement)
    preloader= document.createElement('div');
  if (preloader) {
    preloader.setAttribute('id', 'roll-preloader')
    preloader.style.position= 'absolute';
    preloader.style.top= '-1000px';
    document.body.insertBefore(preloader, document.body.firstChild);
  }
  for (var i= roll_preloads.length; i-->0;) {
    img= new Image();
    img.src= roll_preloads[i];
    if (preloader) preloader.appendChild(img);
  }
}

event_addBinding('a', roll_bind);
event_addListener(window, 'load', roll_preload);
