  (function(window, document, undefined){
    var MAUS =  function( element, userConf, mausover) {
      var config = {
        id: userConf.id|| undefined,
        className: userConf.className || undefined,
        x: userConf.x || 20,
        y: userConf.y || 20,
        text: userConf.text || undefined
      };
      var over = function(event) {
        mausover.style.display = "block";
      },
      out = function(event) {
        mausover.style.display = "none";
      },
      move = function(event) {
        event = event ? event : window.event;
        if ( (event.pageX == null) && (event.clientX != null) ) {
          var doc = document.documentElement, body = document.body;
          event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
          event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
        }
        mausover.style.top = (event.pageY+config.y) + "px";
        mausover.style.left = (event.pageX+config.x) + "px";
      }
      if (mausover === undefined && config.id) {
        mausover = document.getElementById(config.id);
        if (mausover) mausover = mausover.parentNode.removeChild(mausover)
      }
      if (mausover === undefined && config.text) {
        mausover = document.createElement("div");
        if (config.id) mausover.id= config.id;
        mausover.innerHTML = config.text;
      }
      if (config.className) mausover.className = config.className;
      mausover = document.body.appendChild(mausover);
      mausover.style.position = "absolute";
      element.onmouseover = over;
      element.onmouseout = out;
      element.onmousemove = move;
      over();
    };
    window.MAUS = MAUS;
  })(this, this.document);

