В функции cancelEvent(e) была досадная ошибка в этих двух строчках:
if (e.stopPropagation) e.stopPropagation();
else if (e.preventDefault) e.preventDefault();
А надо так:
if (e.stopPropagation) // отмена всплывания события (стандарт W3C)
e.stopPropagation();
else e.cancelBubble=true;
if (e.preventDefault) // отмена действия браузера по-умолчанию
e.preventDefault();
else e.returnValue=false;
А лучше так:
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble=true); // отмена всплытия события
e.preventDefault ? e.preventDefault() : (e.returnValue=false); // отмена действия браузера по-умолчанию
И FireFox заработал нормально. Одно не понятно: почему ошибка проявлялась только в FireFox, а в других броузерах нет?