////////////////////////////////////////////////////////////////////////////////////
// Многоуровневое выпадающее меню 1.1
// (С) TechArt, 2002-2003
// П.Гусев + В.Голышев
////////////////////////////////////////////////////////////////////////////////////

// Цвет выпадающего меню (не выделенный)
var menuItemNonSelected = "#E4EAF1";

// Цвет выпадающего меню (выделенный)
var menuItemSelected = "#FFFFFF";

// Цвет окантовки выпадающего меню
var menuBorderColor = "#8DA2BC";

// Класс шрифта на выпадающем меню (ссылка)
var menuA2Class = "topmenu";

// Изображение треугольника-стрелки для следующего уровня меню
var triangleImg = '<img src="image/tri.gif" width="8" height="8" border="0" />';

// Ширина выпадающего меню
var menuWidth = 200;

// Смещение первого уровня меню отностительно вызывающего элемента
var menuTopDX = 0;
var menuTopDY = 17;

// Смещение следующего уровня меню отностительно предыдущего
var menuDX = 180;
var menuDY = 0;

// Лимит, после которого меню следующего уровня выплывает не справа, а слева
var sLimit = 800;

// Коэффициент вертикального сдвига следующего уровня меню отностительно предыдущего
var sSdvig=20;

////////////////////////////////////////////////////////////////////////////////////


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];
    sItem = smenu.itemsCount;
    smenu.parentTD = tdname;
    smenuDiv = smenu.divObject;
    elemTD = GEByID(tdname);
    showTree(smenu.parentMenu);
    var x = relPosXX(elemTD);
    var y = relPosYY(elemTD);

    if (x+menuDX+menuDX < sLimit) {
     smenuDiv.style.left = x+menuDX;
    } else {
     smenuDiv.style.left = x-menuDX;
    }
    smenuDiv.style.top  = y-(sItem-1)*sSdvig+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) {
  if (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/shim.gif width=1 height=1></td></tr>");
    document.write("<tr><td><table border=0 cellspacing=0 cellpadding=3 width=100%>");
    document.write("<tr><td ID=",TDName," bgcolor=",menuItemNonSelected," class=",menuA2Class);
    document.write(" onMouseOver='mouseMenuOver(\"",TDName,"\",",DivNumber,",",CDivNumber,",",CDivNumber,")'");
    document.write(" onMouseOut='mouseMenuOut(\"",TDName,"\",",DivNumber,",",CDivNumber,")'");
    document.write(" onClick='menuGo(\"",menu.menuItems[i].Link,"\");'");
    document.write("><nobr>");
    document.write(menu.menuItems[i].Text);
    document.write("</nobr></td><td ID=",TDName,"t bgcolor=",menuItemNonSelected," align=right width=10 class=",menuA2Class);
    document.write(" onMouseOver='mouseMenuOver(\"",TDName,"\",",DivNumber,",",CDivNumber,",",CDivNumber,")'");
    document.write(" onMouseOut='mouseMenuOut(\"",TDName,"\",",DivNumber,",",CDivNumber,")'");
    document.write(" onClick='menuGo(\"",menu.menuItems[i].Link,"\");'");
    document.write(">");
    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();
}