p.left = e.pageX ? e.pageX : e.clientX + document.body.scrollLeft;
p.top = e.pageY ? e.pageY : e.clientY + document.body.scrollTop;
Das ist soweit korrekt.
aber scrollLeft/Top ist im IE 6 immer 0, d.h. die obere Ecke im Browserfenster ist sind nicht die Koordinaten des Dokumentes. Was will der IE 6 noch?
Doch, eigentlich schon. Zwei Dinge sind möglich (kenne Deinen Anwendugsfall nicht): entweder Du solltest eine Event-Überwachung auf SCROLL fahren, und jedes mal scrollLeft/Top in globale Variablen schreiben, die Du dann referenzierst... oder: was für eine DTD verwendest Du?