var ns = window.navigator.appName == "Netscape";
var ie = window.navigator.appName == "Microsoft Internet Explorer";
var visible = -1;                                                     // visible menu
var visible2 = -1;                                                    // visible submenu
var leftX, leftY, rightX, rightY;                                     // position for opened menu
var left2X, left2Y, right2X, right2Y;                                 // position for opened submenu
var Menu = new Array();                                               // mainmenu array
var SubMenu = new Array();                                            // submenu array
var openel, openel2;
var tm = null;
var submenu_counter = 0, menu_counter = 0;
var xpos = 0, ypos = 0;


// create main menu structure
function CreateMenu(b, c, d, f, g, h) {
  Menu[menu_counter] = new Array();
  if (ie) {
    Menu[menu_counter][0] = b;
  } else if (ns) {
    Menu[menu_counter][0] = h;
  }
  Menu[menu_counter][1] = c;
  Menu[menu_counter][2] = d;
  Menu[menu_counter][3] = f;
  Menu[menu_counter][4] = g;
  menu_counter++;
}

// create sub menu navigation
function CreateSubMenu(b, c, d, f, g, h, i, j, k, l, m, n) {
  SubMenu[submenu_counter] = new Array();
  SubMenu[submenu_counter][0] = b;
  SubMenu[submenu_counter][1] = c;
  SubMenu[submenu_counter][2] = d;
  SubMenu[submenu_counter][3] = f;
  SubMenu[submenu_counter][4] = g;
  if (ie) {
    SubMenu[submenu_counter][5] = h;
  } else if (ns) {
    SubMenu[submenu_counter][5] = n;
  }
  SubMenu[submenu_counter][6] = i;
  if (ie) {
    SubMenu[submenu_counter][7] = j;
  } else if (ns) {
    SubMenu[submenu_counter][7] = m;
  }
  if (ie) {
    SubMenu[submenu_counter][8] = k;
  } else if (ns) {
    SubMenu[submenu_counter][8] = l;
  }
  submenu_counter++;
}

function WriteMenuCSS() {

  document.write('<style type="text/css">');

  if (ie) {
    document.write("#menuitem {position: absolute; visibility: hidden; z-index: 1}");
    document.write("#subitem {position: absolute; visibility: hidden; z-index: 3}");
  } else if (ns) {
    var j = -1, k = -1;
  
    for (var i = 0; i < SubMenu.length;) {
      same = SubMenu[i][0];
      if (!SubMenu[i][2]) {
        j++;
        document.write("#menuitem" + j + " {position: absolute; visibility: hidden; z-index: 1; layer-background-color: black; left: " + SubMenu[i][5] +"px; top: " + SubMenu[i][6] + "px;}");
      } else {
        k++;
        document.write("#subitem" + k + " {position: absolute; visibility: hidden; z-index: 3; layer-background-color: black; left: " + SubMenu[i][5] +"px; top: " + SubMenu[i][6] + "px;}");
      }
      while ((i < SubMenu.length) && (same == SubMenu[i][0])) {
        i++;
      }
    }
  }
  document.write("a.menu {color: white; text-decoration: none; font: 10px Verdana; font-weight: bold}");
  document.write("a.menu:active {color: white; text-decoration: none; font: 10px Verdana; font-weight: bold}");
  document.write("a.menu:visited {color: white; text-decoration: none; font: 10px Verdana; font-weight: bold}");
  document.write("a.menu:hover {color: red; text-decoration: none}");
  document.write(".pipe {color: white; font-size: 10px}");
  document.write('</style>');
}

// write sub menu navigation;
function WriteSubMenu() {
  var same = -1, j = -1, k = -1, spacer = 1;

  for (var i = 0; i < SubMenu.length;) {
    same = SubMenu[i][0];
    spacer = SubMenu[i][7];
    if (!SubMenu[i][2]) {
      if (ns) {
        j++;
        document.write("<div id=\"menuitem" + j + "\">");
      } else if (ie)
        document.write("<div id=\"menuitem\" style=\"left: " + SubMenu[i][5] + "px; top: " + SubMenu[i][6] + "px;\">");
    } else {
      if (ns) {
        k++;
        document.write("<div id=\"subitem" + k + "\">");
      } else if (ie)
        document.write("<div id=\"subitem\" style=\"left: " + SubMenu[i][5] + "px; top: " + SubMenu[i][6] + "px;\">"); 
    }
    document.write("<table width=\"" + SubMenu[i][7] + "\" cellpadding=\"0\" cellspacing=\"2\" border=\"0\" bgcolor=\"black\">");
    while ((i < SubMenu.length) && (same == SubMenu[i][0])) {
      document.write("<tr><td>");
      document.write("&nbsp;<a class=\"menu\" onMouseOver=\"");
      if (SubMenu[i][4].charAt(0) == "-")
        document.write("window.status = ''; return true;\" onClick=\"return false;\" href=\"#\">" + SubMenu[i][4]);
      else {
        var target = "";
        {
          var ref = SubMenu[i][3];
          var re = new RegExp("^(.+):([_a-zA-Z0-9]+)$", "");
          if (re.test(ref)) {
            re.exec(ref);
            target = " target=\"" + RegExp.$2 + "\" ";
            SubMenu[i][3] = RegExp.$1;
          }
        }
        if (SubMenu[i][1] != -1)
          document.write("OpenMenu2(" + SubMenu[i][1] + "); ");
        document.write("window.status = '" + SubMenu[i][4] + "'; return true;\" href=\"" + SubMenu[i][3] + "\"" + target + ">");
        document.write(SubMenu[i][4] + "<img src=\"../images/spacer.gif\" width=\"" + SubMenu[i][8] + "\" height=\"10\" border=\"0\" alt=\"\">");
          
        if (SubMenu[i][1] != -1)
          document.write("<img src=\"../images/arrow.gif\" width=\"6\" height=\"6\" border=\"0\" alt=\"\">");
      }
      document.write("</a></td></tr>");
      i++;
    }
    document.write('<tr><td><img src="../images/spacer.gif" width="' + spacer + '" height="' + spacer_height +'" border="0" alt=""></td></tr>');
    document.write("</table></div>");
  }
}

// write main menu navigation; input - if top menu 
function WriteMenu(flag) {
  var tflag = 0;
  for (var i = 0; i < Menu.length; i++) {
    if (!tflag) {
      if (flag)
        document.write('<table id="menutable" width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="black"><tr height="19">');
      else
        document.write('<table width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="black"><tr height="19">');
      tflag = 1;
    }
    document.write('<td width="');
    
    if (Menu[i][0] == -1)
      document.write('100%');
    else
      document.write(Menu[i][0]);
      
    if (Menu[i][3] == "")
      document.write('">');
    else
      document.write('" nowrap>');

    if (Menu[i][3] == "")
      document.write(Menu[i][1]);
    else {
      document.write('<a class="menu" href="' + Menu[i][1] + '" onMouseOver="');
      if (flag) {
        if (Menu[i][2] == -1)
          document.write('CloseMenu();');
        else
          document.write('OpenMenu(' + Menu[i][2] +');');
      }
      document.write("window.status = '" + Menu[i][3] + "'; return true;\" onMouseOut = \"window.status = ''; return true;\">" + Menu[i][3] + "</a>");
    }
    document.write('</td>');
    if (Menu[i][4])
      document.write('<td width="1">' + limiter + '</td>');
  }
  document.write('</tr></table>');
}

// opens submenu
function OpenMenu2(x) {
  CloseMenu2();
  visible2 = x;

  if (ie) {
    openel2 = el = document.all.subitem[visible2];
    el.style.visibility = "visible";
  } else if (ns) {
    el = document.layers['subitem' + visible2];
    el.visibility = "show";

    left2X = el.left;
    left2Y = el.top;

    right2X = left2X + el.clip.width;
    right2Y = left2Y + el.clip.height;
  }
}

// opens mainmenu
function OpenMenu(x) {
  if (!readyflag)
    return;

  CloseMenu();

  if (ns & !showmenu)
    return;
  else if (ie && document.all.hidelayer) {
    if (document.all.hidelayer.length >= 2)
      for (var i = 0; i < document.all.hidelayer.length; i++) {
        document.all.hidelayer[i].style.visibility = "hidden";
      }
    else
      document.all.hidelayer.style.visibility = "hidden";
  }
  visible = x;

  if (ns) {
    el = document.layers['menuitem' + x];
    el.visibility = "show";

    leftX = el.left;
    leftY = el.top - menubar_height;

    rightX = el.left + el.clip.width;
    rightY = el.top + el.clip.height;

    // setup handle events
    document.onmousedown = CloseMenu;
    window.captureEvents(Event.MOUSEMOVE);
    window.onmousemove = updateIt;
  } else if (ie) {
    
    openel = el = document.all.menuitem[visible];
    el.style.visibility = "visible";

    // setup handle events
    document.body.onclick = CloseMenu;
    window.onscroll = CloseMenu;
    document.body.onmousemove = updateIt;
    tm = setInterval('test_it()', 300);
  }
}

// closes submenu
function CloseMenu2() {
  if (visible2 == -1)
    return;
  
  if (ie) {
    document.all.subitem[visible2].style.visibility = "hidden";
    openel2 = null;
  } else if (ns)
    document.layers['subitem' + visible2].visibility = "hide"; 

  visible2 = -1;
  window.status = '';
}

// closes mainmenu
function CloseMenu() {
  if (visible == -1)
    return;

  if (visible2 != -1)
    CloseMenu2();

  if (ie) {
    clearInterval(tm);
    document.all.menuitem[visible].style.visibility = "hidden";
    openel = null;

    //clear handled events
    document.body.onclick = null;
    window.onscroll = null;
    document.body.onmousemove = null;
  } else if (ns) {
    document.layers['menuitem' + visible].visibility = "hide";

    // clear handled events
    document.onmousedown = null;
    window.releaseEvents(Event.MOUSEMOVE);
    window.onmousemove = null;
  }
  if (ie && document.all.hidelayer) {
    if (document.all.hidelayer.length >= 2)
      for (var i = 0; i < document.all.hidelayer.length; i++) {
        document.all.hidelayer[i].style.visibility = "visible";
      }
    else
      document.all.hidelayer.style.visibility = "visible";      
  }
  visible = -1;
  window.status = '';
}

function test_it() {
  var elem = document.elementFromPoint(xpos, ypos);
  if (!document.all.menutable.contains(elem) && !openel.contains(elem)) {
    if ((visible2 != -1) && openel2.contains(elem))
      return;
    CloseMenu();
  }
}

// check for hidding menu
function updateIt(e) {

  if (ie) {
    xpos = window.event.clientX;
    ypos = window.event.clientY;
  } else if (ns) {
    var x = e.pageX;
    var y = e.pageY;
    if (visible2 == -1) {
      if ((x > rightX) || (x < leftX))
        CloseMenu();
      else if ((y > rightY) || (y < leftY))
        CloseMenu();
    } else {
      if ((x > rightX) || (x < leftX)) {
        if ((x > right2X) || (x < left2X))
          CloseMenu();
        else if ((y > right2Y) || (y < left2Y))
          CloseMenu();
      } else if ((y > rightY) || (y < leftY)) {
        if ((x > right2X) || (x < left2X))
          CloseMenu();
        else if ((y > right2Y) || (y < left2Y))
          CloseMenu();
      }
    }
  }
}

