function dispatch( targetElement, eventName, handlerName )
{ 
  var originalHandler;
	if (targetElement.addEventListener) { 
    targetElement.addEventListener(eventName, function() { return targetElement[handlerName](); }, false);
  } else if (targetElement.attachEvent) { 
    targetElement.attachEvent("on" + eventName, function() { return targetElement[handlerName](); });
  } else { 
    originalHandler = targetElement["on" + eventName];
    if (originalHandler) { 
      targetElement["on" + eventName] = function() { originalHandler(); return targetElement[handlerName](); };
    } else { 
      targetElement["on" + eventName] = function() { return targetElement[handlerName](); };
    }
  }
}

function addButtonEvent( b )
{
  b.mouseOverHandler = flip;
	b.mouseOutHandler = flip;
  b.active = false;
  b.pSrc = b.src;
	b.aSrc = b.src.replace(/link/, "hover");
  dispatch(b, "mouseover", "mouseOverHandler");
	dispatch(b, "mouseout", "mouseOutHandler");
	if(document.images){p=new Image; p.src=b.aSrc};
}

function flip()
{
  if(this.active){this.src = this.pSrc;}
  else{this.src = this.aSrc;}
  this.active = !this.active;
}