// Script begins

var flagMenu = "M";
var flagLink = "L";
var flagCommand = "C";
var flagSeparator = "S";

var charWidth = 7; // character width
var charHeight = 18; // character height
var colorNormal = "black"; // menu pad color
var colorHighlighted = "#4F2000"; // menu highlighted item color
var colorTopLine = "#999999"; // separator upper line color
var colorBottomLine = "#ffffff"; // separator lower line color

var borderSize = 1;
var marginSize = 4;
var marginString = "&nbsp;&nbsp;";
var subMenuFlagSize = 4;

var menuItemCount = -1;
var menuItem = new Array();
var menuFolderCount = -1;
var menuFolder = new Array();
var menuFolderSwitch = new Array();
var menuWidth = new Array();
var itemLayer = new Array();
var menuLayer = new Array();
var menuDone = new Array();

var itemOn = false;
var nnWidth = 0, nnHeight = 0;

var oldb = null;

function clickMenu(itemIndex) {
  var menuIndex = menuItem[itemIndex].myFolder;
  var folderIndex = menuItem[itemIndex].folder;
  var itemX = menuItem[itemIndex].x;
  var itemY = menuItem[itemIndex].y;

  if (menuItem[itemIndex].type == flagMenu) {
    if (menuFolderSwitch[folderIndex])
      hideMenu(folderIndex)
    else
      showMenu(folderIndex,itemX + menuWidth[menuIndex] * charWidth + subMenuFlagSize,itemY);
  }
  else if (menuItem[itemIndex].type == flagLink) {
    hideSubMenu();
    document.location.assign(menuItem[itemIndex].url);
  }
  else if (menuItem[itemIndex].type == flagCommand) {
    hideSubMenu();
    eval(menuItem[itemIndex].command);
  }
}

function mouseOver() {
  var itemIndex = this.itemIndex;
  var menuIndex = menuItem[itemIndex].myFolder;
  var menuLength = menuFolder[menuIndex].length;
  var folderIndex = menuItem[itemIndex].folder;
  var itemX = menuItem[itemIndex].x;
  var itemY = menuItem[itemIndex].y;
  var thisFolder = 0;
  var thisItem = 0;

  itemOn = true;

  if (menuItem[itemIndex].type != flagSeparator) this.style.backgroundColor = colorHighlighted;

  for (var i = 0; i < menuLength; i++) {
    thisItem = menuFolder[menuIndex][i];

    if (thisItem != itemIndex)
      if (menuItem[thisItem].type == flagMenu) {
        thisFolder = menuItem[thisItem].folder;

        if (menuFolderSwitch[thisFolder])
          hideMenu(thisFolder);
      }
  }

  if (menuItem[itemIndex].type == flagMenu)
    if (!menuFolderSwitch[folderIndex])
      showMenu(folderIndex,itemX + menuWidth[menuIndex] * charWidth + subMenuFlagSize,itemY);

  //window.status = menuItem[itemIndex].description;
  return true;
}

function mouseOut() {
  itemOn = false;

  this.style.backgroundColor = colorNormal

  window.status = "";
}

function menuItemUnit() {
  this.type = "";
  this.name = "";
  this.description = "";
  this.url = "";
  this.command = "";
  this.menu = "";
  this.folder = -1;
  this.myFolder = -1;
  this.x = -1;
  this.y = -1;
}

function readMenu(menuName) {

  var menu = eval(menuName);
  var menuLength = menu.length
  var thisFolder = ++menuFolderCount;

  menuFolder[thisFolder] = new Array();
  menuFolderSwitch[thisFolder] = false;
  menuWidth[thisFolder] = 0;
  menuLayer[thisFolder] = false;
  menuDone[thisFolder] = false;

  for (var i = 0; i < menuLength; i++) {
    menuFolder[thisFolder][i] = ++menuItemCount;
    itemLayer[menuItemCount] = false;

    menuItem[menuItemCount] = new menuItemUnit();
    menuItem[menuItemCount].myFolder = thisFolder;
    menuItem[menuItemCount].type = menu[i][0];
    menuItem[menuItemCount].name = menu[i][1];
    menuItem[menuItemCount].description = menu[i][2];

    if (menuWidth[thisFolder] < (menuItem[menuItemCount].name.length + marginSize))
      menuWidth[thisFolder] = menuItem[menuItemCount].name.length + marginSize;

    if (menuItem[menuItemCount].type == flagMenu) {
      menuItem[menuItemCount].menu = menu[i][3];
      menuItem[menuItemCount].folder = menuFolderCount + 1;
      readMenu(menuItem[menuItemCount].menu);
    }
    else if (menuItem[menuItemCount].type == flagLink) {
      menuItem[menuItemCount].url = menu[i][3];
    }
    else if (menuItem[menuItemCount].type == flagCommand) {
      menuItem[menuItemCount].command = menu[i][3];
    }
    else if (menuItem[menuItemCount].type != flagSeparator) {
      alert("Menu Error");
    }
  }

}

function getItem(itemIndex,itemDimX,itemDimY,menuIndex) {
  var thisItem = null;
  var subMenuFlag = (menuItem[itemIndex].type == flagMenu)?"./lib/submenu.gif":"./lib/onepixel.gif";
  var singleQuote = "'";
  var itemID = "item" + itemIndex + "";
  var layerString = '<div id="' + itemID + '" style="position:absolute; width:' + itemDimX + '; background-color:' + colorNormal + '; visibility:hidden;"></div>';
  var htmlString = (menuItem[itemIndex].type == flagSeparator)?('<table width=' + itemDimX +' height=2 cellpadding=0 cellspacing=0 border=0><tr align=left valign=bottom><td bgcolor=' + colorTopLine + '><img src="./lib/onepixel.gif" width=1 height=1 border=0></td></tr><tr align=left valign=top><td bgcolor=' + colorBottomLine + '><img src="./lib/onepixel.gif" width=1 height=1 border=0></td></tr></table>'):('<table width=' + itemDimX +' height=' + itemDimY + ' cellpadding=0 cellspacing=0 border=0><tr align=left valign=middle><td nowrap><span id="menuText"><a class="menu" href="javascript:clickMenu(' + itemIndex + ')" onMouseOver="window.status=' + singleQuote + menuItem[itemIndex].description + singleQuote + ';return true;">' + marginString + menuItem[itemIndex].name + marginString + '</a></span></td><td><img src="' + subMenuFlag + '" width=4 height=7 border=0 align=right></td></tr></table>');

  if (!itemLayer[itemIndex]) {
    itemLayer[itemIndex] = true;

    bufer.insertAdjacentHTML("BeforeEnd",layerString);
    thisItem = document.all[itemID];

    thisItem.innerHTML = htmlString;
    thisItem.style.zIndex = menuIndex * 2 + 1;

    thisItem.onmouseover = mouseOver;
    if (menuItem[itemIndex].type != flagSeparator) thisItem.onmouseout = mouseOut;

    thisItem.itemIndex = itemIndex;
  }

  return itemID;
}

function getMenu(menuIndex,menuDimX,menuDimY) {
  var menuID = "menu" + menuIndex + "";
  var menuPadX = menuDimX + borderSize * 2;
  var menuPadY = menuDimY + borderSize * 2;
  var layerString = '<div id="' + menuID + '" style="position:absolute; width:' + menuPadX + '; visibility:hidden;"></div>';
  var htmlString = '<table width=' + menuPadX +' height=' + menuPadY + ' cellpadding=0 cellspacing=0 border=' + borderSize + ' bordercolor="#FF6600"><tr align=left valign=middle><td></td></tr></table>';

  if (!menuLayer[menuIndex]) {
    menuLayer[menuIndex] = true;
    bufer.insertAdjacentHTML("BeforeEnd",layerString);

    document.all[menuID].innerHTML = htmlString;
    document.all[menuID].style.zIndex = menuIndex * 2;
  }

  return menuID;
}

function moveLayerTo(layerID,x,y) {
    document.all[layerID].style.pixelLeft = x;
    document.all[layerID].style.pixelTop = y;
}

function hideMenu(menuIndex) {
  if(!menuFolder[menuIndex])return;
  var menuLength = menuFolder[menuIndex].length;
  var menuID = getMenu(menuIndex,0,0);
  var itemID = "";
  var itemIndex = 0;

  for (var i = 0; i < menuLength; i++) {
    itemIndex = menuFolder[menuIndex][i];

    if (menuItem[itemIndex].type == flagMenu)
      if (menuFolderSwitch[menuItem[itemIndex].folder])
        hideMenu(menuItem[itemIndex].folder);

    itemID = getItem(itemIndex,0,0,0);
    document.all[itemID].style.visibility = "hidden";
  }
  document.all[menuID].style.visibility = "hidden";
  //menuDone[menuIndex] = false;
  menuFolderSwitch[menuIndex] = false;


}

function hideSubMenu() {
  var menuLength = menuFolder[0].length;

  for (var i = 0; i < menuLength; i++) {
    itemIndex = menuFolder[0][i];

    if (menuItem[itemIndex].type == flagMenu) {
      if (menuFolderSwitch[menuItem[itemIndex].folder])
        hideMenu(menuItem[itemIndex].folder);
    }
  }
}

function showMenu(menuIndex,menuX,menuY) {
  var itemDimY = menuY;
  var menuLength = menuFolder[menuIndex].length;
  var menuDimX = menuWidth[menuIndex] * charWidth + subMenuFlagSize;
  var menuID = "";
  var itemID = "";
  var itemIndex = 0;

  if (!menuDone[menuIndex]) {
    for (var i = 0; i < menuLength; i++) {
      itemIndex = menuFolder[menuIndex][i];

      menuItem[itemIndex].x = menuX;
      menuItem[itemIndex].y = itemDimY;
      itemDimY +=  (menuItem[itemIndex].type != flagSeparator)?charHeight:2;

      itemID = getItem(itemIndex,menuDimX,charHeight,menuIndex);

      moveLayerTo(itemID,menuItem[itemIndex].x,menuItem[itemIndex].y);
    }

    menuID = getMenu(menuIndex,menuDimX,itemDimY-menuY);
    moveLayerTo(menuID,menuX-borderSize,menuY-borderSize);

    menuDone[menuIndex] = true;
  }

  for (var i = 0; i < menuLength; i++)
  	document.all[getItem(menuFolder[menuIndex][i],0,0,0)].style.visibility = "visible";

  document.all[getMenu(menuIndex,0,0)].style.visibility = "visible";

  menuFolderSwitch[menuIndex] = true;
}

function buildMenu(menuName,x,y) {
		readMenu(menuName);
    showMenu(0,x,y);
    captureClick();
}

function switchMenu(e) {
  if (!itemOn)
    hideSubMenu();

  return true;
}

function captureClick() {
    document.onclick = switchMenu;
}

function reloadMenu() {
  if (nnWidth != window.innerWidth || nnHeight != window.innerHeight)
    document.location.reload();
}
function On(b){
if(oldb==b)return;
hideMenu(0);

oldb=b;

if(eval(b.name).length==0)return;


menuItemCount = -1;
menuItem = new Array();
menuFolderCount = -1;
menuFolder = new Array();
menuFolderSwitch = new Array();
menuWidth = new Array();
itemLayer = new Array();
menuLayer = new Array();
menuDone = new Array();

itemOn = false;
nnWidth = 0;
nnHeight = 0;

bufer.innerHTML = '';

buildMenu(b.name,b.offsetLeft+ttt.offsetLeft+3,b.offsetTop+ttt.offsetTop+b.offsetHeight+4);
}
// Script ends

