// цвета

menuColorMainOverC = '#FF0';  // подсвеченный пункт основного меню
menuColorMainOverB = '#000';

menuColorMain1C = '#FFF';  // активный пункт основного меню
menuColorMain1B = '';

menuColorMain0C = '#FFF';  // неактивный пункт основного меню
menuColorMain0B = '';

menuColorSlave1C = '#000';  // активное подменю
menuColorSlave1B = '#FFF';

menuColorSlave0C = '#FFF';  // неактивное подменю
menuColorSlave0B = '#557cbf';

// zIndex
var menuZIndex = 100;

// текущий путь
var menuPath = '';

// активность меню
var menuActive = 0;

// для статуса клика
var menuStatusClick = 0;

var menuListS, menuListQ;

function MenuOnClick()
 {
  if(menuStatusClick == 0) MenuDeactive();

  menuStatusClick = 0;
 }

// нажатие на пункте меню
function MenuClick(id)
 {
  id *= 1;  menuActive = 1;  menuStatusClick++;

  var descendant = GetDescendantId(id), pathLength = GetPathLength(id);
  //alert(GetBlockId(id));

  if(descendant <= 0)
   {
    MenuDeactive();
    //eval('Menu' + id + '();');
    return;
   }

  MenuShow(id);

  if(GetBlockId(id) == 0)
   {
    eval("d" + id + ".style.color = '" + menuColorMain1C + "';");
    eval("d" + id + ".style.background = '" + menuColorMain1B + "';");
   }
 }

// показать пункт меню
function MenuShow(id, obj)
 {
	// -------
	menuActive = 1;
	//obj.style.cursor = 'HAND';
	// -------

  id *= 1;
  var
    descendant = GetDescendantId(id), pathLength = GetPathLength(id),
    s = menuPath.split(','), k;

  if(menuPath == '')
   {
    eval("d" + id + ".style.color = '" + menuColorMainOverC + "';");
    eval("d" + id + ".style.background = '" + menuColorMainOverB + "';");
   }

  if(menuActive == 0) return;

  pathLengthPred = s.length - 1;

  if(pathLengthPred > pathLength)
   {
    menuPath = '';

    for(k = 0; k < pathLength; k++)
     {
      menuPath += s[k] + ',';
     }

    for(k = pathLength; k < pathLengthPred; k++)
     {
      ds = GetDescendantId(s[k]);

      if(ds > 0) eval("d" + ds + ".style.display = 'none';");

      eval("d" + s[k] + ".style.color = '';");
      eval("d" + s[k] + ".style.background = '';");

	  // ---
      eval("if(document.all['d" + s[k] + "a']) d" + s[k] + "a.style.color = '';");
	  // ---
     }
   }

  if(descendant > 0) eval("d" + descendant + ".style.display = 'block';");

  if(GetBlockId(id) > 0)
   {
    eval("d" + id + ".style.color = '" + menuColorSlave1C + "';");
    eval("d" + id + ".style.background = '" + menuColorSlave1B + "';");
	
	// ---
    eval("if(document.all['d" + id + "a']) d" + id + "a.style.color = '" + menuColorSlave1C + "';");
	// ---
   }
   else
   {
    eval("d" + id + ".style.color = '" + menuColorMain1C + "';");
    eval("d" + id + ".style.background = '" + menuColorMain1B + "';");
   }

  menuPath += id + ',';
}

function MenuOut(id)
 {
  if(menuPath == '')
   {
    eval("d" + id + ".style.color = '';");
    eval("d" + id + ".style.background = '';");
   }
 }

// сделать меню неактивным
function MenuDeactive()
 {
  menuActive = 0;

  var s = menuPath.split(','), k;
  pathLength = s.length - 1;

  for(k = 0; k < pathLength; k++)
   {
    ds = GetDescendantId(s[k]);

    if(ds > 0) eval("d" + ds + ".style.display = 'none';");

    eval("d" + s[k] + ".style.color = '';");
    eval("d" + s[k] + ".style.background = '';");

	// ---
    eval("if(document.all['d" + s[k] + "a']) d" + s[k] + "a.style.color = '';");
	// ---
   }

  menuPath = '';
 }

// получение id блока по id меню
function GetBlockId(id)
 {
  id *= 1;
  var blockId = 0;

  for(k = 0; k < menuListQ; k++)
   {
    var b = menuListS[k*3 + 1];
    if(b > id) return blockId;
    blockId = b;
   }

  return blockId;
 }

// получить id блока потомка по id меню
function GetDescendantId(id)
 {
  id *= 1;

  for(k = 0; k < menuListQ; k++)
   {
    if(menuListS[k*3] == id) return menuListS[k*3 + 1];
   }

  return -1;
 }

// получение длинны пути к элементу меню по id меню
function GetPathLength(id)
 {
  id *= 1;
  var pathLength = 0;

  for(k = 0; k < menuListQ; k++)
   {
    if(menuListS[k*3 + 1] > id) return pathLength;
    pathLength = menuListS[k*3 + 2];
   }

  return pathLength;
 }


function MenuOnLoad()
 {
  d0.style.position = 'absolute';  d0.style.zIndex = menuZIndex;
  d0.style.left = 0;  d0.style.top = 0;

  d0.style.color = menuColorMain0C;
  d0.style.background = menuColorMain0B;


  menuListS = menuList.split(',');
  menuListQ = Math.floor(menuListS.length/3);

  var now, parent, block, x, y, k;

  for(k = 0; k < menuListQ; k++)
   {
    now = menuListS[k*3 + 1];
    parent = menuListS[k*3];

    eval("d" + now + ".style.position = 'absolute';");
    eval("d" + now + ".style.zIndex = menuZIndex;");

    block = GetBlockId(parent);

    eval("x = d" + parent + ".offsetLeft;");
    eval("y = d" + parent + ".offsetTop;");
    eval("y += d" + block + ".offsetTop;");
	
    if(block == 0)
     {
      eval("y += d" + block + ".offsetHeight;");
     }
     else
     {
      eval("x += d" + block + ".offsetLeft;");
      eval("x += d" + block + ".offsetWidth;");

      x -= 5;
     }

    eval('d' + now + '.style.left = ' + x + ';');
    eval('d' + now + '.style.top = ' + y + ';');
   }

  for(k = 0; k < menuListQ; k++)
   {
    now = menuListS[k*3 + 1];
    eval("d" + now + ".style.display = 'none';");
    eval("d" + now + ".style.border = 'windowtext 1pt solid';");

    eval("d" + now + ".style.color = '" + menuColorSlave0C + "';");
    eval("d" + now + ".style.background = '" + menuColorSlave0B + "';");
   }
 }
