function tooltip_init(id, classname) 
{
  var element = $(id);

  var tooltip = element.next("div." + (classname ? classname : "tooltip_balloon"));
  tooltip.show();

  var timeout = new Number(0);

  element.observe("mouseout", function(e) {
    timeout.startTimeout(createCloseHandler(tooltip), 500, true);
  });

  element.observe("mousemove", function(e) {
    timeout.cancelTimeout();
  });
  
  tooltip.observe("mousemove", function(e) {
    timeout.cancelTimeout();
  });

  tooltip.observe("mouseout", function(e) {
    timeout.startTimeout(createCloseHandler(tooltip), 500, true);
  });
}


function createCloseHandler(tooltip)
{
  return function()
  {
    tooltip.hide();
  };
}

Number.prototype.startTimeout = function(callback, duration, restart)
{
  if(!this.value || restart) {
    this.value = window.setTimeout(callback, duration);
  }
}

Number.prototype.cancelTimeout = function()
{
  if(this.value)
  {
    window.clearTimeout(this.value);
    this.value = 0;
  }
}