molily: Zu viele onMouseouts!

Beitrag lesen

window.document.all[id].style.backgroundColor = color;

Verwende document.getElementById statt document.all.

document.all ist eine IE-5-spezifische Technik, die andere Browser nur aus Kompatibilitätsgründen unterstützen.
Firefox sollte dir auch eine entsprechende Warnung in der JavaScript-Konsole ausgeben.

}
function highlight(id)
  {
  window.setTimeout("forcecolor('"+id+"', '#aaaaaa')", 0);

Das kannst du so schreiben (anonyme Funktion übergeben):
window.setTimeout(function () { forcecolor(id, '#aaaaaa'); }, 123);
Und musst dir um das Zusammenbauen eines Strings keine Gedanken machen

Den ersten Aufruf musst du nicht verzögern (setTimeout mit 0 macht hier keinen Sinn).

var element = e.target;

Browserübergreifend:
var element = e.target || e.srcElement;
http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#currenttarget-target

while ((element != "[object HTMLTableRowElement]") && (element != null))

Du gehst hier davon aus, dass der Browser das Elementobjekt genau auf diese Weise zu einem String umwandelt. Das ist aber nicht der Fall, also prüfe

element.nodeName.toLowerCase() == 'tr'

Das Element kann nicht null sein, jedes Ereignis hat ein Zielelement. Wozu die Abfrage?

if (element == "[object HTMLTableRowElement]")

Siehe oben.

Mathias