// Цвет выпадающего меню (не выделенный)
var menuItemNonSelected = "#F4F5F6";

// Цвет выпадающего меню ( выделенный )
var menuItemSelected = "#C8D9E1";

// Цвет окантовки выпадающего меню
var menuBorderColor = "#C50F02";

// Класс шрифта на выпадающем меню (ссылка)
var menuA2Class = "dd_menu";

// Изображение треугольника-стрелки для следующего уровня меню
var triangleImg = '<img src="image/ar.gif" width="5" height="9" />';

// Ширина выпадающего меню
var menuWidth = 150;

// Смещение первого уровня меню отностительно вызывающего элемента
var menuTopDX = 0;
var menuTopDY = 23;

// Смещение следующего уровня меню отностительно предыдущего
var menuDX = menuWidth;
var menuDY = -1;

var pMenuDivCount = 0;
var pMenuTreeCount = 0;
var pMenuTrees = new Array();
var pMenuMenus = new Array();

var d = document;
var menuCurrentPos = 0;

var menuVersion = 2;
if (navigator.appName == "Microsoft Internet Explorer") {
   menuVersion = 1;
} else {
  if ( d.layers ) menuVersion = 0;
}

function GEByID(id) {
  if (menuVersion == 0) return null;
  if (menuVersion == 1) return d.all[id];
  if (menuVersion == 2) return d.getElementById(id);
}

function pMenu(Parent) {
  if (!Parent) Parent = null;
  if (Parent == null) this.zIndex = 50; else this.zIndex = Parent.zIndex+1;
  this.parentMenu = Parent;
  this.itemsCount = 0;
  this.parentTD = "";
  this.menuItems = new Array();
  this.divX = 0;
  this.divY = 0;
  pMenuDivCount++;
  this.divName = "pMenuDiv"+pMenuDivCount;
  this.divNumber = pMenuDivCount;
  pMenuMenus[pMenuDivCount] = this;
  this.openedMenu = null;
  this.divObject = null;
}

function pMenuItem(text,link) {
  this.subMenu = null;
  this.Text = text;
  if (!link) link = "";
  this.Link = link;
}

function addMenuItem(menu,menuItem) {
  menu.menuItems[menu.itemsCount++] = menuItem;
  return menuItem;
}


function relPosXX(elem) { 
  var pos=elem.offsetLeft;
  while (elem.offsetParent != null) { 
    elem=elem.offsetParent;
    pos+=elem.offsetLeft;
    if (elem.tagName == 'BODY') break;
  } 
  return pos;
}

function relPosYY(elem) { 
  var pos=elem.offsetTop;
  while (elem.offsetParent != null) { 
    elem=elem.offsetParent;
    pos+=elem.offsetTop;
    if (elem.tagName == 'BODY') break;
  }
  return pos;
}

function initSubArray(Parent,AName) {
  var curMenuArray = eval(AName);
  var AItemCount = curMenuArray.length/3;
  var menu = new pMenu(Parent);
  for (var i=0; i<AItemCount; i++) {
    var ii = i+1;
    var menuitem = addMenuItem(menu,new pMenuItem(curMenuArray[i*3],curMenuArray[i*3+1]));
    if (curMenuArray[i*3+2] != 0) menuitem.subMenu = initSubArray(menu,AName+"_" + ii);
  }
  return menu;
}

function initArrays() {
  var curMenu = 1;
  while (eval("window.arMenu"+curMenu)) {
     var menu = initSubArray(null,"window.arMenu"+curMenu);
     curMenu++;
     pMenuTreeCount++;
     pMenuTrees[pMenuTreeCount] = menu;
  }
}

function setTDSelected(tdname) {
  if (tdname == "") return;
  elem = GEByID(tdname);
  elem.style.backgroundColor = menuItemSelected;
  elem = GEByID(tdname+"t");
  elem.style.backgroundColor = menuItemSelected;
}

function setTDNonSelected(tdname) {
  if (tdname == "") return;
  elem = GEByID(tdname);
  if (elem == null) return;
  elem.style.backgroundColor = menuItemNonSelected;
  elem = GEByID(tdname+"t");
  elem.style.backgroundColor = menuItemNonSelected;
}

function showTree(menuTree) {
  var elem = menuTree.divObject;
  elem.style.visibility = "visible";
  var menuParent = menuTree.menuParent;
  if (menuParent != null) showTree(menuParent);
}

function hideTree(menuTree) {
  if (!menuTree) return;
  for (var i = 0; i < menuTree.itemsCount; i++) {
    var sm = menuTree.menuItems[i].subMenu;
    if (sm != null) {
       hideTree(sm);
       var elem = sm.divObject;
       elem.style.visibility = "hidden";
    }
  }
}

function hideAll() {
  if (menuCurrentPos == 0) {
    for( var i = 0; i < pMenuTreeCount; i++ ) {
      hideTree(pMenuTrees[i + 1]);
      var elem = pMenuTrees[i + 1].divObject;
      elem.style.visibility = "hidden";
    }
  }
}

function hideAllEx(elnum) {
  for( var i = 0; i < pMenuTreeCount; i++ ) {
    if (i + 1 != elnum) {
      hideTree(pMenuTrees[i + 1]);
      var elem = pMenuTrees[i + 1].divObject;
      elem.style.visibility = "hidden";
    }
  }
}

function mouseMenuOver(tdname, submenun, thisDiv) {
  menuCurrentPos = 1;
  var tD = pMenuMenus[thisDiv];
  hideTree(tD);
  setTDSelected(tdname);
  if (submenun >= 0) {
    smenu = pMenuMenus[submenun];
    smenu.parentTD = tdname;
    smenuDiv = smenu.divObject;
    elemTD = GEByID(tdname);
    showTree(smenu.parentMenu);
    var x = relPosXX(elemTD);
    var y = relPosYY(elemTD);
    smenuDiv.style.left = x+menuDX;
    smenuDiv.style.top  = y+menuDY;
    smenuDiv.style.visibility  = "visible";
  }
}

function menuShow(elementname, menun) {
  if (menuVersion == 0) return;
  menuCurrentPos = 1;
  hideAllEx(menun);
  var smenu = pMenuTrees[menun];
  if ( smenu ) {
    hideTree(smenu);
    var ielement = GEByID(elementname);
    var x = relPosXX(ielement);
    var y = relPosYY(ielement);
    var smenuDiv = smenu.divObject;
    smenuDiv.style.left = x+menuTopDX;
    smenuDiv.style.top  = y+menuTopDY;
    smenuDiv.style.visibility  = "visible";
  }
}


function menuHide() {
  if ( menuVersion == 0 ) return;
  menuCurrentPos = 0;
  setTimeout("hideAll();",300);
}



function mouseMenuOut(tdname,submenun) {
  menuCurrentPos = 0;
  setTDNonSelected(tdname);
  setTimeout("hideAll();",300);
}

function menuGo(Link) {
  location.href=Link;
}

function drawDiv(menu) {
  document.write("<div ID=",menu.divName," style='position:absolute;left:0px;top:0px;visibility:hidden;z-index:",menu.zIndex,";'>");
  document.write("<table cellspacing=0 cellpadding=1 bgcolor=",menuBorderColor,"><tr><td bgcolor=",menuBorderColor,"><table width=",menuWidth," cellspacing=0 cellpadding=0 bgcolor=",menuBorderColor,">");
  for( var i=0; i<menu.itemsCount; i++ ) {
    TDName = menu.divName+"td"+i;
    CDivNumber = menu.divNumber;
    if ( menu.menuItems[i].subMenu == null ) {
      DivNumber = -1;
    } else {
      DivNumber = menu.menuItems[i].subMenu.divNumber;
    }
    if ( i>0 ) document.write("<tr><td height=1 onMouseOver='menuCurrentPos=1;'><img src=image/0.gif width=1 height=1></td></tr>");
    document.write("<tr><td><table border=0 cellspacing=0 cellpadding=1 width=100%>");
    document.write("<tr><td ID=",TDName," bgcolor=",menuItemNonSelected," class=",menuA2Class);
    document.write(" onMouseOver='mouseMenuOver(\"",TDName,"\",",DivNumber,",",CDivNumber,")'");
    document.write(" onMouseOut='mouseMenuOut(\"",TDName,"\",",DivNumber,",",CDivNumber,")'");
    document.write(" onClick='menuGo(\"",menu.menuItems[i].Link,"\");'");
    document.write(">");
    document.write(menu.menuItems[i].Text);
    document.write("</td><td ID=",TDName,"t bgcolor=",menuItemNonSelected," align=right width=10 class=",menuA2Class,">");
    if ( DivNumber == -1 ) {
      document.write("&nbsp;");
    } else {
      document.write(triangleImg);
    }
    document.write("</td></tr></table></td></tr>");
  }
  document.write("");
  document.write("</table></td></tr></table>");
  document.write("</div>");

  for( var i=0; i<menu.itemsCount; i++ ) {
    if ( menu.menuItems[i].subMenu != null ) {
      drawDiv(menu.menuItems[i].subMenu);
    }
  }

  menu.divObject = GEByID(menu.divName);

}

function drawArrays() {
  for( var i=0; i<pMenuTreeCount; i++ ) {
    drawDiv(pMenuTrees[i+1]);
  }
}


function initMenu() {
  initArrays();
  drawArrays();
}




