(function(window, document, undefined){
  var XBTooltip = function( element, userConf, tooltip) {
    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) {
      tooltip.style.display = "block";
    },
    out = function(event) {
      tooltip.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);
      }
      tooltip.style.top = (event.pageY+config.y) + "px";
      tooltip.style.left = (event.pageX+config.x) + "px";
    }
    if (tooltip === undefined && config.id) {
      tooltip = document.getElementById(config.id);
      if (tooltip) tooltip = tooltip.parentNode.removeChild(tooltip)
    }
    if (tooltip === undefined && config.text) {
      tooltip = document.createElement("div");
      if (config.id) tooltip.id= config.id;
      tooltip.innerHTML = config.text;
    }
    if (config.className) tooltip.className = config.className;
    tooltip = document.body.appendChild(tooltip);
    tooltip.style.position = "absolute";
    element.onmouseover = over;
    element.onmouseout = out;
    element.onmousemove = move;
    over();
  };
  window.XBTooltip = window.XBT = XBTooltip;
})(this, this.document);
