var s_timeOut              = 200;
var colorActive            = '#AAE3E4';
var colorNormal            = '#C9ECED';


var s_menuIndex            = -1;
var s_menuTopActive        = false;
var s_menuSubActive        = false;



function menuUpdate()
{
  // No one active sub-menu: do nothing  
  if (s_menuIndex == -1)
    return;

  // If mouse is stay on top level item or on sub menu: do nothing
  if (s_menuTopActive || s_menuSubActive)
    return;
  
  // Turn off current sub-menu
  menuSubOff(s_menuIndex);
  s_menuTopActive = false;
  s_menuSubActive = false;
  s_menuIndex     = -1;
}



function MenuTimerStart() 
{ 
  // Reusable timer
  menuTimer = setTimeout("menuTimerProxy()", s_timeOut);
}
function menuTimerProxy()
{
  // Actual functionality
  menuUpdate();
  // Setup timer again
  MenuTimerStart();
}

function menuSubOn(index)
{
  id = 'sub_menu' + index;
  elem = document.getElementById(id);
  if (elem != null)
  {
    elem.style.visibility = 'visible' ;
  }
}
function menuSubOff(index)
{
  id = 'sub_menu' + index;
  elem = document.getElementById(id);
  if (elem != null)
  {
    elem.style.visibility = 'hidden' ;
  }
}
function menuTopColorOn(index)
{
  id = 'top_menu' + index;
  elem = document.getElementById(id);
  if (elem != null)
  {
    elem.style.backgroundColor = colorActive;
  }
}

function menuTopColorOff(index)
{
  id = 'top_menu' + index;
  elem = document.getElementById(id);
  if (elem != null)
  {
    elem.style.backgroundColor = colorNormal;
  }
}

function menuItemColorOn(indexSub, index)
{
  id = 'item_menu' + indexSub + '_' + index;
  elem = document.getElementById(id);
  if (elem != null)
  {
    elem.style.backgroundColor = colorActive;
  }
}

function menuItemColorOff(indexSub, index)
{
  id = 'item_menu' + indexSub + '_' + index;
  elem = document.getElementById(id);
  if (elem != null)
  {
    elem.style.backgroundColor = colorNormal;
  }
}





// Callbacks, invoked from HTML events
function MenuTopOnOver(index)
{
  if (s_menuIndex != -1)
  {
    menuSubOff(s_menuIndex);
    menuTopColorOff(s_menuIndex);
  }
  menuSubOn(index);
  menuTopColorOn(index);
  s_menuIndex  = index;
  s_menuTopActive = true;
}

function MenuTopOnOut(index)
{
  if (index == s_menuIndex) 
    s_menuTopActive = false;
  menuTopColorOff(index);
}

function MenuSubOnOver(index)
{
  if (index == s_menuIndex) 
    s_menuSubActive = true;
}
function MenuSubOnOut(index)
{
  if (index == s_menuIndex) 
    s_menuSubActive = false;
}

function MenuItemOnOver(indexSub, index)
{
  menuItemColorOn(indexSub, index);
}

function MenuItemOnOut(indexSub, index)
{
  menuItemColorOff(indexSub, index);
}


