// Die Bibliothek compat.js bietet einige sehr einfache Hilfsfunktionen für browser­unabhängige Entwicklung:

var Compat = {
  addEventHandler: function(element, event, handler) {
    var _tmp, _onevent;
    if (!element || !event )
      return false;
    if (element.addEventListener)   // DOM-konform
      element.addEventListener(event, handler, false);
    else {
      _onevent = 'on'+event;
      if (element.attachEvent)      // IE
        element.attachEvent(_onevent, handler);
      else {                        // ältere Browser
        _tmp = element[_onevent];
        element[_onevent] = typeof _tmp == 'function'
          ? (function() { _tmp(); handler(); })
          : handler;
      }
    }
  },
  removeEventHandler: function (element, event, handler) {
    var _tmp, _onevent;
    if (!element || !event )
      return false;
    if (element.removeEventListener)   // DOM-konform
      element.removeEventListener(event, handler, false);
    else {
      _onevent = 'on'+event;
      if (element.detachEvent)      // IE
        element.detachEvent(_onevent, handler);
      else {                        // ältere Browser
        element[_onevent] = "";
      }
    }
  },
  getTarget: function (event) {
    return typeof event.target == "undefined"
    ? window.event.srcElement
    : event.target;
  },
  clientX: function (event) {
    return window.event ? window.event.clientX : event.clientX;
  },
  clientY: function (event) {
    return window.event ? window.event.clientY : event.clientY;
  },
  stopPropagation: function(event) {
    if (typeof event.target == "undefined")
      window.event.cancelBubble = true;
    else if (event.stopPropagation)
      event.stopPropagation();
  },
  /* utility functions */
  log: function(text,replace) {
    var logarea = document.getElementById("log");
    if (!logarea) return;
    if (replace) {
      while(logarea.hasChildNodes())
        logarea.removeChild(logarea.firstChild);
    }
    logarea.appendChild(document.createElement("p").
                 appendChild(document.createTextNode(text)));
  }
}
function xpos(event) {
  return window.event
    ? (window.event.clientX +
       document.documentElement.scrollLeft +
       document.body.scrollLeft)
    : event.clientX + window.scrollX;
}
function ypos(event) {
  return window.event
    ? (window.event.clientY +
       document.documentElement.scrollTop +
       document.body.scrollTop)
    : event.clientY + window.scrollY;
}

