<!--
var errorCount = 0;
var email="info@artlibrarian.com";

function reportError(msg,url,line) {
  var w = window.open("","error","width=610,height=300,toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no");
  var d = w.document;
  d.writeln('<html>');
  d.writeln('<head>');
  d.writeln('<script language="Javascript">');
  d.writeln('function mailIt() {');
  d.writeln('document.Bug.action = "mailto:info@artlibrarian.com?subject={Javascript Error}";');
  d.writeln('window.close();');
  d.writeln('}');
  d.writeln('</script>');
  d.writeln('</head>');
  d.writeln('<body>');
  d.writeln('<div align=center>');
  d.writeln('<font size=4 face="helvetica"><B>');
  d.writeln('A JavaScript Error Has Occurred!');
  d.writeln('</b></font><br><hr size=4 width="80%">');
  d.writeln('<form name="Bug" action method=post enctype="text/plain">');
  d.writeln('<font size=3>');
  d.writeln('<i>Please click the "Report Error" button to send a bug report.</I><br>');
  d.writeln('<input type="submit" value="Report Error" onClick="mailIt();"; self.close; return true;">');
  d.writeln('<input type="button" value="Dismiss" onClick="self.close()">');
  d.writeln('</div>');
  d.writeln('<div align=right>');
  d.writeln('<br>Your name <i>(optional)</i>: ');
  d.writeln('<input size=42 name="name" value="">');
  d.writeln('<br>Error Message: ');
  d.writeln('<input size=42 name="message" value="'+msg+'">');
  d.writeln('<br>Document: <input size=42 name="url" value="'+url+'">');
  d.writeln('<br>Line Number: <input size=42 name="line" value="'+line+'">');
  d.writeln('<br>Browser Version: ');
  d.writeln('<input size=42 name="version" value="'+navigator.userAgent+'">');
  d.writeln('<div></font></form>');
  d.writeln('</body></html>');
  d.close();
  return true;
}

window.onerror=reportError

// Figure out whether this is Navigator or IE. Assume version 4.
isNav = (navigator.appName.indexOf("Netscape") != -1);
isIE = (navigator.appName.indexOf("Microsoft") != -1);

//setMonitor();

function handler(e) {
    var msg;
    // If we're in Navigator, report event details in this way.
    if (isNav) {
       msg = "Type: " + e.type + '\n';
       if (e.target) msg = msg + "Target: " + Object.prototype.toString.apply(e.target) + '\n';
       if (e.target.name) msg = msg + "Target name: " + e.target.name + '\n';
       if (e.x || e.y) msg = msg + "X: " + e.x + " Y: " + e.y + '\n';
       if (e.which) msg = msg + "which: " + e.which + '\n';
       if (e.modifiers) msg = msg + "modifiers: " + e.modifiers + '\n';
    }
    // If we're in Internet Explorer, first copy the event from the 
    // global event variable, then report its details. Finally, set
    // the cancelBubble property so it doesn't bubble and get reported 
    // multiple times.
    if (isIE) {
        e = window.event;   // Grab the event.
        msg = "Type: " + e.type + '\n';
        if (e.srcElement && e.srcElement.name)
            msg = msg + "srcElement name: " + e.srcElement.name + '\n';
        if (e.clientX || e.clientY)
            msg = msg + "X: " + e.clientX + " Y: " + e.clientY +'\n';
        if (e.button) msg = msg + "mouse button: " + e.button + '\n';
        if (e.keyCode) msg = msg + "keyCode: " + e.keyCode + '\n';
        if (e.altKey) msg = msg + "altKey" + '\n';
        if (e.ctrlKey) msg = msg + "ctrlKey"+ '\n';
        if (e.shiftKey) msg = msg + "shiftKey" + '\n';
        // We've reported this event, and don't want our container to
        // report it too, so don't let it bubble up any further.
        e.cancelBubble = true;
    }
    alert(msg);
    // !!! mail here
}//end handler()

// This function registers the event handler defined above on all possible
// event handlers for the specified object.
function addhandlers(o) {
    //o.onerror = handler;
    o.onerror = reportError;
    //o.onresize =handler;
}

function setMonitor(){
// Now use addhandlers() to register all event handlers on all
// objects of interest in the document.
//addhandlers(window);

 addhandlers(document);
// Add handlers to all links.
for(var a = 0; a < document.links.length; a++)
  addhandlers(document.links[a]);
// Add handlers to all images.
for(var b = 0; b < document.images.length; b++)
  addhandlers(document.images[b]);
// Add handlers on all forms and all form elements.
for(var f = 0; f < document.forms.length; f++) {
  addhandlers(document.forms[f]);
  for(var g = 0; g < document.forms[f].elements.length; g++)
     addhandlers(document.forms[f].elements[g]);
  } 
  // Add handlers to body.
  if (isIE) {
    for(var c = 0; c < document.body.all; c++) {
      addhandlers(document.body[c]);
    }
  }

}// end set_monitor()
//-->