(function() {
  if (!Utils.available) return;
  var cache = {}, r_on = /_\.[a-z]+$/, r_off = /\.[a-z]+$/;
  function find(src) {
    if (cache[src] == null) (cache[src] = new Image).src = src;
    return cache[src];
  }
  function on(img) {
    return function() {
      if (r_on.test(img.src)) return;
      img.src = find(img.src.replace(r_off, '_.png')).src;
    };
  }
  function off(img) {
    return function() {
      img.src = find(img.src.replace(r_on, '.png')).src;
    };
  }
  var a, r = Utils.classRegExp('rollover'), n, f;
  Utils.each(Utils.elements('IMG'), function(x) {
    if (r.test((a = x.parentNode).className)) {
      find(x.src.replace(r_off, '_.png'));
      Utils.addEvent(a, 'mouseover', (n = on(x)));
      Utils.addEvent(a, 'focus', n);
      Utils.addEvent(a, 'mouseout', (f = off(x)));
      Utils.addEvent(a, 'blur', f);
    }
  });
})();
