var spanheights  = new Array();
var menutimer    = 0;
var menuactions  = new Array();
var menustatus   = new Array();
var current      = 0;
var fadeout      = 0;
var animation    = 0;
var displaytimer = 0;

function show_submenu_init(element)
  {
  menuactions[element] = 'show';
  current = 'show';

  if (menutimer != 0)
    window.clearTimeout(menutimer);

  menutimer = window.setTimeout("menu_action('" + element + "')", 20);
  }

function show_submenu(element)
  {
  if (menustatus[element] != 'show')
    {  
    if ((fadeout) && (menu_animations == 1))
      {
      animation.stop();
      window.clearTimeout(displaytimer);
      }

    dojo.query("span.gr_submenu").forEach("hide_submenu(item.id)");
    var menu = dojo.byId(element);
  
    menu.style.opacity='0.9'; 
    menu.style.display='block'; 
  
    if (typeof spanheights[element] == 'undefined') 
      {
      var coords = dojo.coords(menu);
      var height = coords['h'] - 2;
      spanheights[element] = height;
      }
    else
      {
      height = spanheights[element];
      }
  
    if (menu_animations == 1)
      {
      menu.style.height='7px';  
      menu.style.opacity = '0';
  
      dojo.fx.combine([
        dojo.anim(menu, {height: height}, 400),
        dojo.anim(menu, {opacity: 0.9}, 400)
      ]).play();
      }
  
    menustatus[element] = 'show';
    }
  }

function hide_submenu_init(element)
  {
  menuactions[element] = 'hide';
  current = 'hide';

  if (menutimer != 0)
    window.clearTimeout(menutimer);
    
  menutimer = window.setTimeout("menu_action('" + element + "')", 20);
  }

function hide_submenu(element)
  {
  var menu = dojo.byId(element);

  //console.log(current);

  if ((current == 'hide') && (menu_animations == 1))
    {
    animation = dojo.fadeOut({node : menu, duration: 1000});
    animation.play();

    displaytimer = window.setTimeout("dojo.byId('" + element + "').style.display='none'", 1000);
    fadeout = element;
    }
  else
    menu.style.display = 'none';
    
  menustatus[element] = 'hide';
  }

function menu_action(element)
  {
  block = 0;

  if (menustatus[element] != menuactions[element])
    {
    var job = menuactions[element] + "_submenu('" + element + "')";
    //console.log(job);

    eval(job);
    }
  }