Javascript: IE event.preventDefault es nulo o no es un objeto

Mi código funciona bien en FF / Chrome / Everything excepto IE (falló en ambos 7/8, no se molestó en ir hacia abajo). Debido a restricciones, no puedo usar jQuery y estoy codificando el Javascript. El problema es con IE, obtengo "preventDefault es nulo o no es un objeto". Esperando que uno de ustedes tenga la respuesta, y aquí hay un código relevante:

Método AddEvent:

function addEvent( obj, type, fn ) {  
  if ( obj.attachEvent ) {  
    obj['e'+type+fn] = fn;  
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}  
    obj.attachEvent( 'on'+type, obj[type+fn] );  
  } else  
    obj.addEventListener( type, fn, false );  
};

Error de lanzamiento del controlador de eventos:

function mousedown(e){  
  if(e.preventDefault){  
    e.preventDefault();  
  } else {  
    e.returnValue = false;  
    e.cancelBubble=true;  
  }
  //Processing   
};

También DOCTYPE y charset están configurados en la página HTML que realiza la llamada. Cualquier idea sería apreciada. El error se genera en la instrucción if para el método de mousedown.

EDITAR:

Debido al hecho de que agarrar window.event "solucionó" el problema principal, descubrí que el problema era una sección diferente del código. Básicamente estoy agregando un elemento encima de un elemento previamente colocado, y luego estoy registrando eventos mousedown / mousemove en ese div. Al disparar el evento en el<div>, ESO es donde se arroja el error.

¿Podría ser esto debido al hecho de que tengo eventos registrados en 2

rect = document.createElement('div');  
rect.className='square';  
rect.id='chooser_rectangle';  
rect.style.left=initx+'px';  
rect.style.top=inity+'px';  

addEvent(rect,"mousemove",mousemove);  
addEvent(rect,"mousedown",mousedown);  

Respuestas a la pregunta(2)

Su respuesta a la pregunta