var picarrow;

var path = "";
var selected = false;
var mparent;

imgarrow = new Image();
imgarrow.src = "/img/mnuarrow.gif";

document.onmouseover = menu_out;


function add_menu(id, left, top, parent_object)
{
  var elm;
  
  if (parent_object != "" && parent_object != null) mparent = getItemById(parent_object);
  if (mparent == null) mparent = document.body;
  switch(browser){
    case "IE":
      mparent.insertAdjacentHTML("BeforeEnd", 
	      "<div class=\"top_menu\" id=\"" + id + "\" style=\"left:" + left + ";top:" + top +
	      "\"><table class=\"menu_table\"><tbody class=\"menu_table\"><tr class=\"menu_table\"></tr></tbody></table></div>");
	    break;
    case "N6":
    case "MO":
      elm = document.createElement("div");
      elm.className = "top_menu";
      elm.id = id;
      elm.setAttribute("style", "left:" + left + ";top:" + top);
      elm.innerHTML = "<table class=\"menu_table\"><tbody class=\"menu_table\"><tr class=\"menu_table\"></tr></tbody></table>";
      mparent.appendChild(elm);
  }
}

function add_topitem(parent_menu_id, id, caption, mevent)
{
	var mnu, elm, elm2;
	
	switch(browser){
    case "IE":
      mnu = getItemById(parent_menu_id).children[0].children[0].children[0];
      break;
    case "N6":
    case "MO":
      mnu = getItemById(parent_menu_id).childNodes[0].childNodes[0].childNodes[0];
  }
  if (mnu != null){
    switch(browser){
      case "IE":
        elm = mnu.insertCell();
        elm.className = "menu_table";
        if (caption == "|")
	        elm.insertAdjacentHTML("BeforeEnd",
	          "<div class=\"top_separator\" id=\"" + id + "\">|</div>");
	      else
          elm.insertAdjacentHTML("BeforeEnd",
            "<div class=\"top_item\" id=\"" + id + "\"" + 
            " onmouseover=\"menu_event('" + id + "', true, false, true)\"" +
            " onmouseout=\"menu_event('" + id + "', true, false, false)\"" +
            " onclick=\"" + mevent + "\"" +
            ">" + caption + "</div>");
        break;
      case "N6":
      case "MO":
        elm = document.createElement("div");
        elm2 = document.createElement("td");
        elm2.className = "menu_table";
        elm.id = id;
        if (caption == "|"){
          elm.className = "top_separator";
          elm.innerHTML = "|";
	      } else {
          elm.className = "top_item";
          elm.setAttribute("onmouseover", "menu_event('" + id + "', true, false, true)");
          elm.setAttribute("onmouseout", "menu_event('" + id + "', true, false, false)");
          elm.setAttribute("onclick", mevent);
          elm.innerHTML = caption;
        }
        elm2.appendChild(elm);
        mnu.appendChild(elm2);
    }
	}
}

function add_topnode(parent_menu_id, id, caption)
{
	var mnu, elm, elm2;
	
	switch(browser){
    case "IE":
      mnu = getItemById(parent_menu_id).children[0].children[0].children[0];
      break;
    case "N6":
    case "MO":
      mnu = getItemById(parent_menu_id).childNodes[0].childNodes[0].childNodes[0];
  }
  if (mnu != null){
    switch(browser){
      case "IE":
        elm = mnu.insertCell();
        elm.className = "menu_table";
		    elm.insertAdjacentHTML("BeforeEnd",
          "<div class=\"top_item\" id=\"" + id + "\"" +
          " onmouseover=\"menu_event('" + id + "', true, true, true)\"" +
          " onmouseout=\"menu_event('" + id + "', true, true, false)\"" +
          ">" + caption + "</div>");
        break;
      case "N6":
      case "MO":
        elm = document.createElement("div");
        elm2 = document.createElement("td");
        elm2.className = "menu_table";
        elm.className = "top_item";
        elm.id = id;
        elm.setAttribute("onmouseover", "menu_event('" + id + "', true, true, true)");
        elm.setAttribute("onmouseout", "menu_event('" + id + "', true, true, false)");
        elm.innerHTML = caption;
        elm2.appendChild(elm);
        mnu.appendChild(elm2);
    }
	}
}

function add_subitem(parent_node_id, id, caption, mevent)
{
	var submnu, parent;
	var elm;
	
	parent = getItemById(parent_node_id);
	if (parent != null){
	  submnu = getItemById(parent_node_id + "sub");
	  if (submnu == null){
	    switch(browser){
	      case "IE":
	        mparent.insertAdjacentHTML("BeforeEnd", 
	          "<div class=\"sub_menu\" id=\"" + parent_node_id + "sub\"></div>");
	        submnu = document.all(parent_node_id + "sub");
	        break;
	      case "N6":
	      case "MO":
	        submnu = document.createElement("div");
          submnu.className = "sub_menu";
          submnu.id = parent_node_id + "sub";
          mparent.appendChild(submnu);
	    }
	  }
	  switch(browser){
	    case "IE":
        if (caption == "-")
	        submnu.insertAdjacentHTML("BeforeEnd",
	          "<div class=\"sub_item\" id=\"" + id + "\"><hr class=\"sub_separator\"></div>");
	      else
	        submnu.insertAdjacentHTML("BeforeEnd",
	          "<div class=\"sub_item\" id=\"" + id + "\"" +
	          " onmouseover=\"menu_event('" + id + "', false, false, true)\"" +
            " onmouseout=\"menu_event('" + id + "', false, false, false)\"" +
            " onclick=\"" + mevent + "\"" +
            ">" + caption + "</div>");
	        break;
	      case "N6":
	      case "MO":
	        if (caption == "-"){
	          elm = document.createElement("div");
            elm.className = "sub_item";
            elm.id = id;
            elm.innerHTML = "<hr class=\"sub_separator\">";
            submnu.appendChild(elm);
	        } else {
	          elm = document.createElement("div");
            elm.className = "sub_item";
            elm.id = id;
            elm.setAttribute("onmouseover", "menu_event('" + id + "', false, false, true)");
            elm.setAttribute("onmouseout", "menu_event('" + id + "', false, false, false)");
            elm.setAttribute("onclick", mevent);
            elm.innerHTML = caption;
            submnu.appendChild(elm);
          }
	  }
	}
}
	
function add_subnode(parent_node_id, id, caption)
{
	var submnu, parent;
	var elm;
	
	parent = getItemById(parent_node_id);
	if (parent != null){
	  submnu = getItemById(parent_node_id + "sub");
	  if (submnu == null){
	    switch(browser){
	      case "IE":
	        mparent.insertAdjacentHTML("BeforeEnd", 
	          "<div class=\"sub_menu\" id=\"" + parent_node_id + "sub\"></div>");
	        submnu = document.all(parent_node_id + "sub");
	        break;
	      case "N6":
	      case "MO":
	        submnu = document.createElement("div");
          submnu.className = "sub_menu";
          submnu.id = parent_node_id + "sub";
          mparent.appendChild(submnu);
	    }
	  }
	  switch(browser){
	    case "IE":
          submnu.insertAdjacentHTML("BeforeEnd",
	          "<div class=\"sub_item\" id=\"" + id + "\"" +
	          " onmouseover=\"menu_event('" + id + "', false, true, true)\"" +
            " onmouseout=\"menu_event('" + id + "', false, true, false)\"" +
	          "><img align=\"right\" src=\"\" class=\"menu_arrow\">" + caption + "</div>");
	        document.all(id).children[0].src = imgarrow.src;
	        break;
	      case "N6":
	      case "MO":
          elm = document.createElement("div");
          elm.className = "sub_item";
          elm.id = id;
          elm.setAttribute("onmouseover", "menu_event('" + id + "', false, true, true)");
          elm.setAttribute("onmouseout", "menu_event('" + id + "', false, true, false)");
          elm.innerHTML = "<img align=\"right\" src=\"\" class=\"menu_arrow\">" + caption;
          submnu.appendChild(elm);
          elm.childNodes[0].src = imgarrow.src;
	  }
	}
}

function menu_event(source_id, top_sub, node_item, over_out)
{
  var elm, sub, prnt;
  var n, sub_id, tail;
  var tble, tde, dive;
  var tble_left, tble_top;
  
  elm = getItemById(source_id);
  selected = over_out;
  if (top_sub)
    if (over_out) elm.className = "top_item_sel"; else elm.className = "top_item";
  else
    if (over_out) elm.className = "sub_item_sel"; else elm.className = "sub_item";
 //---------------------------------------------------------------------------------
  if (over_out){
    if (top_sub){
      hide_all(path);
      path = "";
    }
    if (node_item){
      sub_id = source_id + "sub";
      sub = getItemById(sub_id);
      if (sub != null){
        if (top_sub){
          tde = elm.parentNode;
          tble = tde.parentNode.parentNode.parentNode;
          dive = tble.parentNode;
          //alert(tde.offsetLeft + ", " + tble.offsetLeft + ", " + dive.offsetLeft + "\n" + tde.offsetTop + ", " + tble.offsetTop + ", " + dive.offsetTop);
          switch(browser){
            case "IE":
            case "MO":
              tble_left = tble.offsetLeft;
              tble_top = tble.offsetTop;
              break;
            case "N6":
              tble_left = 0;
              tble_top = 0;
          }
	        sub.style.left = dive.offsetLeft + tble_left + tde.offsetLeft + 2;
    	    sub.style.top = dive.offsetTop + tble_top + tde.offsetTop + elm.offsetHeight + 2;
    	  } else {
    	    prnt = elm.offsetParent;
    	    sub.style.left = prnt.offsetLeft + elm.offsetLeft + elm.offsetWidth;
    	    sub.style.top = prnt.offsetTop + elm.offsetTop;
        }
        sub.style.visibility = "visible";
        n = path.indexOf(sub_id)
        if (n == -1){
          path += ";" + sub_id;
        } else {
          tail = path.substr(n + sub_id.length);
          if (tail != ""){
            hide_all(tail);
            path = path.substr(0, n + sub_id.length);  
          }
        }
      }
    } else {
      if (!top_sub){
        sub_id = elm.offsetParent.id;
        n = path.indexOf(sub_id)
        if (n != -1){
          tail = path.substr(n + sub_id.length);
          if (tail != ""){
            hide_all(tail);
            path = path.substr(0, n + sub_id.length);  
          }
        }
      }
    }
  } 
}

function menu_out(e)
{
var elm;
var cl;

  if (!selected){
    switch(browser){
      case "IE":
        elm = window.event.srcElement;
	      break;
      case "N6":
      case "MO":
        elm = e.target;
    }
    if (elm != null) cl = elm.className; else cl = "";
    if (!(cl == "menu_table" || cl == "top_menu" || cl == "top_item" || cl == "top_item_sel" || cl == "sub_menu" ||
    cl == "sub_item" || cl == "sub_item_sel" || cl == "menu_arrow" || cl == "sub_separator" || cl == "top_separator")){
      hide_all(path);
      path = "";
    }
  }
}

function hide_all(items)
{
var arr;
var i;
  
  arr = items.split(";");
  for (i = 1; i < arr.length; i++) getItemById(arr[i]).style.visibility = "hidden";
}

function getItemById(id)
{
  switch(browser){
    case "IE":
      return document.all(id);
    case "N6":
    case "MO":
      return document.getElementById(id);
  }
}

