Normalização de objeto de evento entre navegadores?

Estou procurando um bom recurso na normalização de eventos no objeto de evento. Estou tentando fazer isso sozinho, mas sinto que vou perder alguma coisa.

Aqui está o que eu tenho até agora, me diga se eu perdi alguma coisa.

var eFix = function(e) {
    e = e || window.event;
    e.target = e.target || e.srcElement;
    e.offsetX = e.offsetX || e.layerX;
    e.offsetY = e.offsetY || e.layerY;
    e.relatedTarget = e.relatedTarget ||
        e.type == 'mouseover' ? e.fromElement : e.toElement;
    e.target = e.target || e.srcElement;
    if (target.nodeType === 3) target = target.parentNode; //Safari bug
    return e;
};

Alguém viu uma função completa de normalização? Eu perdi alguma coisa? (Escusado será dizer que vamos para o modelo W3C e não para o IE)

questionAnswers(1)

yourAnswerToTheQuestion