If this weren't MSIE, I'd agree with you alykins.
But MSIE *does* treat objects (of any kind...including <div> and <tr> and so on, not just <object>) as global variables when you refer to them by their ID.
In other words, where other browsers would want you to do
var Scanner = document.getElementById("Scanner");
MSIE makes that assignment, implicitly. (At least it did so up until MSIE 8....your mileage my vary in MSIE 9, which tries to be more standards compliant.)
My *gut* feeling is that the ActiveX control is not installed on the machine that is trying to use this script. But that's just a feeling.