Javascript: IE event.preventDefault имеет значение null или не является объектом

Мой код работает хорошо в FF / Chrome / Все, кроме IE (не удалось в обоих 7/8, не потрудившись идти дальше). Из-за ограничений я не могу использовать jQuery и жестко программирую Javascript. Проблема с IE, я получаю: «protectDefault - ноль или не объект». Надеюсь, у одного из вас есть ответ, и вот соответствующий код:

Метод 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 );  
};

Ошибка при обработке обработчика события:

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

Также DOCTYPE и charset устанавливаются на вызывающей HTML-странице. Любые идеи были бы хорошы. Ошибка выдается в операторе if для метода mousedown.

РЕДАКТИРОВАТЬ:

Из-за того, что захват window.event «исправил» основную проблему, я обнаружил, что проблема в другом разделе кода. По сути, я добавляю элемент поверх предварительно размещенного элемента, а затем регистрирую события mousedown / mousemove в этом div. При запуске мероприятия на<div>, Это где ошибка брошена.

Может ли это быть что-то из-за того, что у меня есть события, зарегистрированные на 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);  

Ответы на вопрос(2)

Ваш ответ на вопрос