// ----------------------------------------------------------------
var internet_explorer = navigator.appName.match(/^Microsoft\s+Internet\s+Explorer/i);
// ----------------------------------------------------------------
function $(id)
{
  return document.getElementById(id);
}
// ----------------------------------------------------------------
var interval_ID        = 0;
var interval_ms        = 250;
var interval_max_count = 1;
var interval_cancel    = 0;
var interval_counter   = 0;
var interval_sender    = 0;
// ----------------------------------------------------------------
function show_menu(sender)
{
  var submenu_obj = sender.id.match(/^sub_/i) ? sender                             : $("sub_" + sender.id);
  var menu_obj    = sender.id.match(/^sub_/i) ? $(sender.id.replace(/^sub_/i, "")) : sender;

  interval_cancel = 1;

  if (submenu_obj)
  {
    submenu_obj.style.display = "block";

    x_offset = (internet_explorer ? 0 : -11) + 18;
    submenu_obj.style.left = (get_obj_x_pos(menu_obj) + x_offset) + "px";
  }

  var obs = Array();
  obs = ['div'];
  for (var k = 0; k < obs.length; k++)
  {
    var o = document.getElementsByTagName(obs[k]);
    for (var i = o.length - 1; i >= 0; i--)
    {
      if (!o[i].className || o[i].className != "submenu" || submenu_obj == o[i])
        continue;
      o[i].style.display = "none";
    }
  }
}
// ----------------------------------------------------------------
function hide_menu(sender)
{
  clearInterval(interval_ID);
  if (sender && typeof(sender.id) != "undefined")
  {
    interval_counter = 0;
    interval_cancel  = 0;
    interval_sender  = sender;
  }
  if (++interval_counter <= interval_max_count)
  {
    interval_ID = setInterval(hide_menu, interval_ms);
    return;
  }
  if (!interval_cancel)
  {
    var submenu_obj = interval_sender.id.match(/^sub_/i) ? interval_sender                             : $("sub_" + interval_sender.id);
    var menu_obj    = interval_sender.id.match(/^sub_/i) ? $(interval_sender.id.replace(/^sub_/i, "")) : interval_sender;

    if (submenu_obj)
      submenu_obj.style.display = "none";
  }
}
// ----------------------------------------------------------------
function get_obj_x_pos(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft;
      obj = obj.offsetParent;
    }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}
// ----------------------------------------------------------------
function get_obj_y_pos(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop;
      obj = obj.offsetParent;
    }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}
// ----------------------------------------------------------------

