function MM_findObj(n, d) { //v4.01
  var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
        }
  if(!(x=d[n])&&d.all) x=d.all[n];
          for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
                  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
                          if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}
// DHTML menu functions
var timeout;
var menus = Array();

function DOMBrowser() {
        return document.body && document.body.style && document.getElementById;
}
// ---------------------------------------------------------------------------->>>
function getX(elem) {
  var x = 0;
  if (elem.offsetParent)
    x = getX(elem.offsetParent);
  return x + elem.offsetLeft;
}
function getY(elem) {
  var y = 0;
  if (elem.offsetParent)
    y = getY(elem.offsetParent);
  return y + elem.offsetTop;
}
// ---------------------------------------------------------------------------->>>
function enterMenu(elem) {
  if (DOMBrowser()) {
    // Hide any past menus
    // hideMenus(elem.offsetParent.id);
    showSubmenu(elem);
    if (timeout)
      clearTimeout(timeout);
  }
  MM_nbGroup('over','settings','./o_settings.jpg','',1);
  return true;
}
function leaveMenu(elem) {
  if (DOMBrowser() != null) {
    timeout = setTimeout("hideMenus()", 200);
  }
  MM_nbGroup('out');
  return true;
}
// ---------------------------------------------------------------------------->>>
function getXPos(elem, child) {
  //Temporarily set the display to block so that we can calculate offsetWidth/Height
  child.style.display = "block";
  parentX = getX(elem);
  x = parentX + elem.offsetWidth - 1;
  //document.body.scrollLeft;
  if (x + child.offsetWidth > document.body.clientWidth + document.body.scrollLeft) { // If the menu would appear offscreen:
    if (parentX - child.offsetWidth - document.body.scrollLeft + 5 > 0) { // If there's room to the left of the parent menu:
      x = parentX - child.offsetWidth + document.body.scrollLeft + 5;
    } else { // Fit as much in as possible:
      availSpace = (document.body.clientWidth - elem.offsetWidth) / 2;
      x = document.body.clientWidth + document.body.scrollLeft - child.offsetWidth;
      if (parentX > availSpace)
        x = 0;
      //Don't overlap the parent:
      if (x == parentX) x -= 5;
    }
  }
  child.style.display = "none";
  return x;
}
function getYPos(elem, child) {
  //Temporarily set the display to block so that we can calculate offsetWidth/Height
  child.style.display = "block";
  parentY = getY(elem);
  y = parentY + 15;
  if (y + child.offsetHeight > document.body.clientHeight + document.body.scrollTop) { // If the menu would appear offscreen:
    if (parentY - child.offsetHeight - document.body.scrollTop + 5 > 0) { // If there's room above the parent menu:
      y = parentY - child.offsetHeight + document.body.scrollTop + 5 ;
    } else { // Fit as much in as possible:
      y = document.body.clientHeight + document.body.scrollTop - child.offsetHeight + 5;
      if (y < 0) y = 0;
    }
  }
  child.style.display = "none";
  return y;
}
// ---------------------------------------------------------------------------->>>
function showSubmenu(elem) {
  var id = elem.id + "_submenu";
  menu = document.getElementById(id);
  if (menu) {
    // Reset display so that browsers are not confused when we postion (Opera in particular)
    menu.style.display = "none";
    menu.style.top = getYPos(elem, menu);
    menu.style.left = getXPos(elem, menu);
    menu.style.display = "block";
        menus[menus.length] = menu;
    // menus.push(menu);
  }
}
// ---------------------------------------------------------------------------->>>
function hideMenus(elemID) {
 // Hide up to the passed element:
 var elem;
  if (elemID)
    elem = document.getElementById(elemID);
  var men;
  for (j = 0; j < menus.length; j++)
  {
                men = menus[j];
  if (elem && men.id == elem.id)
  {
      menus[menus.length] = men;
          // menus.push(men); // Put the match back into the array
      return;
  }
   else men.style.display = "none";
  }
}
/*
while (men = menus.pop())
  {
    if (elem && men.id == elem.id) {
      menus.push(men); // Put the match back into the array
      return;
    } else
      men.style.display = "none";
  }
*/
