window.onerror = new Function("return true")
fShow = "visible";
fHide = "hidden";
rightX = 0;

function Menu()
{
  this.bgColor = "#0099FF";
  this.menuFont = "bold xx-small Verdana";
  this.addItem = addItem;
  this.addSubItem = addSubItem;
  this.showMenu = showMenu;
  this.mainPaneBorder = 1;
  this.subMenuPaneBorder = 1;
  this.subMenuPaneWidth = 150;
  lastMenu = null;
  rightY = 0;
  leftY = 0;
  leftX = 0;
  HTMLstr = "";
  HTMLstr += "<!-- MENU PANE DECLARATION BEGINS -->\n";
  HTMLstr += "\n";
  HTMLstr += "<div id='MainTable' style='position:relative'>\n";
  HTMLstr += "<table width='100%' bgcolor='" + this.bgColor + "' border='" +
             this.mainPaneBorder + "'>\n";
  HTMLstr += "<tr>";
  HTMLstr += "<!-- MAIN MENU STARTS -->\n";
  HTMLstr += "<!-- MAIN_MENU -->\n";
  HTMLstr += "<!-- MAIN MENU ENDS -->\n";
  HTMLstr += "</tr>\n";
  HTMLstr += "</table>\n";
  HTMLstr += "\n";
  HTMLstr += "<!-- SUB MENU STARTS -->\n";
  HTMLstr += "<!-- SUB_MENU -->\n";
  HTMLstr += "<!-- SUB MENU ENDS -->\n";
  HTMLstr += "\n";
  HTMLstr+= "</div>\n";
  HTMLstr += "<!-- MENU PANE DECALARATION ENDS -->\n";
}

function addItem (idItem, text, hint, location, altLocation, targ)
{
  var Lookup = "<!-- ITEM " + idItem + " -->";
  if (HTMLstr.indexOf(Lookup) != -1) {
    alert(idParent+" already exist");
    return;
  }
  var MENUitem = "";
  MENUitem += "\n<!-- ITEM " + idItem + " -->\n";
  MENUitem += "<td>\n";
  MENUitem += "<div id='" + idItem + "' style='position:relative; font: " +
              this.menuFont + ";'>\n";
  MENUitem += "<a ";
  MENUitem += "class=clsMenuItemIE ";
  if (hint != null) MENUitem += "title='" + hint + "' ";
  if (location != null) {
    MENUitem += "href='" + location + "' target='" + targ + "' ";
    MENUitem += "onmouseover=\"hideAll()\" ";
  }
  else {
    if (altLocation != null) MENUitem += "href='" + altLocation + "' ";
    else MENUitem += "href='.' ";
    MENUitem += "onmouseover=\"displaySubMenu('" + idItem + "')\" ";
    MENUitem += "onclick=\"return false;\" "
  }
  MENUitem += ">";
  MENUitem += "|&nbsp;\n";
  MENUitem += text;
  MENUitem += "</a>\n";
  MENUitem += "</div>\n";
  MENUitem += "</td>\n";
  MENUitem += "<!-- END OF ITEM " + idItem + " -->\n\n";
  MENUitem += "<!-- MAIN_MENU -->\n";
  HTMLstr = HTMLstr.replace("<!-- MAIN_MENU -->\n", MENUitem);
}

function addSubItem (idParent, text, hint, location, targ)
{
  var MENUitem = "";
  Lookup = "<!-- ITEM " + idParent + " -->";
  if (HTMLstr.indexOf(Lookup) == -1) {
    alert(idParent+" not found");
    return;
  }
  Lookup = "<!-- NEXT ITEM OF SUB MENU " + idParent + " -->";
  if (HTMLstr.indexOf(Lookup) == -1) {
    MENUitem += "\n";
    MENUitem += "<div id='" + idParent + "submenu' style='position:absolute; visibility: hidden; width: " +
                this.subMenuPaneWidth + "; font: " + this.menuFont + "; top: -300;'>\n";
    MENUitem += "<table border='" + this.subMenuPaneBorder + "' bgcolor='" +
                this.bgColor + "' width=" + this.subMenuPaneWidth + ">\n";
    MENUitem += "<!-- NEXT ITEM OF SUB MENU " + idParent + " -->\n";
    MENUitem += "</table>\n";
    MENUitem += "</div>\n";
    MENUitem += "\n";
    MENUitem += "<!-- SUB_MENU -->\n";
    HTMLstr = HTMLstr.replace("<!-- SUB_MENU -->\n", MENUitem);
  }
  Lookup = "<!-- NEXT ITEM OF SUB MENU " + idParent + " -->\n";
  MENUitem = "<tr><td><a class=clsMenuItemIE title='" + hint +
             "' href='" + location + "' target='" + targ + "'>" + text +
             "</a><br></td></tr>\n";
  MENUitem += Lookup;
  HTMLstr = HTMLstr.replace(Lookup,MENUitem);

}

function showMenu()
{
  document.writeln(HTMLstr);
}

function calculateSumOffset (idItem, offsetName)
{
  var totalOffset = 0;
  var item = eval('idItem');
  do {
    totalOffset += eval('item.'+offsetName);
    item = eval('item.offsetParent');
  } while (item != null);
  return totalOffset;
}

function displaySubMenu (idMainMenu)
{
  var menu;
  var submenu;
  menu = eval(idMainMenu);
  submenu = eval(idMainMenu+"submenu.style");
  submenu.left = calculateSumOffset(menu,'offsetLeft');
  submenu.top  = menu.style.top + 23;
  submenu.visibility = fShow;
  if (lastMenu != null && lastMenu != submenu) hideAll();
  leftX  = document.all[idMainMenu+"submenu"].style.posLeft;
  rightX = leftX + document.all[idMainMenu+"submenu"].offsetWidth;
  leftY  = document.all[idMainMenu+"submenu"].style.posTop +
           document.all[idMainMenu+"submenu"].offsetHeight;
  rightY = leftY;
  lastMenu = submenu;
}

function hideAll()
{
  if (lastMenu != null) {
    lastMenu.visibility = fHide;
    lastMenu.left = 0;
  }
}

function updateIt(e)
{
  var x = window.event.clientX;
  var y = window.event.clientY;
  if (x > rightX || x < leftX) hideAll();
  else if (y > rightY) hideAll();
}

function onres()
{
  window.location.reload();
}

document.body.onclick = hideAll;
document.body.onscroll = hideAll;
document.body.onmousemove = updateIt;
window.onresize = onres;
