function showHiddenSubmenu(td, id, dir) {
  var submenuContainerId = document.getElementById(id);
  if (submenuContainerId) {
    var tdLeft = findLeft(td);
    var tdTop = findTop(td);
    submenuContainerId.style.visibility = "visible";
    submenuContainerId.style.top = td.offsetHeight + tdTop - submenuContainerId.offsetParent.offsetTop + "px";
    if (dir == "rtl") {
      submenuContainerId.style.left = tdLeft - (submenuContainerId.offsetWidth - td.offsetWidth) - submenuContainerId.offsetParent.offsetLeft + 1 + "px";
    } else {
      submenuContainerId.style.left = tdLeft - submenuContainerId.offsetParent.offsetLeft + 1 + "px";
    }
  }
}

function hideShownSubmenu(id) {
  var submenuContainerId = document.getElementById(id);
  if (submenuContainerId) submenuContainerId.style.visibility = "hidden";
}

function findLeft(obj) {
  var posX = obj.offsetLeft;
  while (obj.offsetParent) {
    if (obj == document.getElementsByTagName('body')[0]) break;
    else {
      posX = posX + obj.offsetParent.offsetLeft;
      obj = obj.offsetParent;
    }
  }
  return posX;
}

function findTop(obj) {
  var posY = obj.offsetTop;
  while (obj.offsetParent) {
    if (obj == document.getElementsByTagName('body')[0]) break;
    else {
      posY = posY + obj.offsetParent.offsetTop;
      obj = obj.offsetParent;
    }
  }
  return posY;
}

