var tt_supported = false;
var tt_tooltipEl = null;
var tt_maxWidth  = 0;
var tt_delay     = 0;

function tt_ajax_error (req) {
  alert (req.responseText);
}

function tt_init(maxWidth, delay, classname) {

  if (!document.getElementById) return;
  tt_supported = true;
  tt_maxWidth = maxWidth;
  tt_delay = delay;
  tt_tooltipEl = document.createElement("div");
  tt_tooltipEl.id = "tt_tooltipEl";
  tt_tooltipEl.style.position   = "absolute";
  tt_tooltipEl.style.visibility = "hidden";
  tt_tooltipEl.className        = classname;
  if (typeof(tt_tooltipEl.style.maxWidth) != "undefined") tt_tooltipEl.style.maxWidth = maxWidth + "px";
  document.getElementsByTagName("body")[0].appendChild(tt_tooltipEl);
  if(document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
  document.onmousemove = tt_mouseMove;
}

function tt(msg) {
  if (!tt_supported) return;
  if (!msg) { tt_hideTooltip(); return; }
  tt_tooltipEl.innerHTML = msg;
  tt_tooltipEl.style.width = "auto";
  if (!tt_tooltipEl.style.maxWidth && tt_tooltipEl.clientWidth > tt_maxWidth)
    tt_tooltipEl.style.width = tt_maxWidth + "px";
  tt_tooltipEl.style.visibility = "visible";
}

function tt_ajax (url) {
  setTimeout ("tt_ajax_int('"+url+"');", tt_delay);
}

function tt_ajax_int (url) {
  if (!tt_supported) return;
  tt ("Lade...");
  tmp = url.split ("?");
  url = tmp[0];
  pars = "";
  if (tmp.length > 1) pars = tmp[1];
    
  var myAjax = new Ajax.Updater(
      {success: 'tt_tooltipEl'},
      url, 
      {
        method: 'get',
        parameters: pars, 
        onFailure: tt_ajax_error
      });
}

function tt_mouseMove(e) {
  var x = e ? e.pageX : event.x + document.body.scrollLeft;
  var y = e ? e.pageY : event.y + document.body.scrollTop;
  tt_tooltipEl.style.left = x + 10;
  tt_tooltipEl.style.top  = y + 5;
  
}

function tt_hideTooltip() {
  if (!tt_supported) return;
  setTimeout ("tt_tooltipEl.style.visibility = \"hidden\";", tt_delay / 2);
}

