var cancelBubble = false;

function newImage(arg) {
  rslt = new Image();
  rslt.src = arg;
  return rslt;
}

function calcAbsTop(id) {
  var elem = document.getElementById(id);
  var res = 0;
  while(elem != null) {
    res += elem.offsetTop;
    elem = elem.offsetParent;
  }
  return res;
}

function calcAbsLeft(id) {
  var elem = document.getElementById(id);
  var res = 0;
  while(elem != null) {
    res += elem.offsetLeft;
    elem = elem.offsetParent;
  }
  return res;
}

function menuShow(menu, id) {
  if(menu != null) {
    var top = calcAbsTop(id) + document.images[id].offsetHeight;
    var left = calcAbsLeft(id);
    if(left + menu.offsetWidth > document.body.clientWidth)
      left = document.body.clientWidth - menu.offsetWidth - 1;
    menu.style.top = top;
    menu.style.left = left;
    menu.zOrder = 0;
    menu.style.visibility = 'visible';
  }
}

function initMenuWidth(id) {
  var menu = document.getElementById(id + '_menu');
  var maxw = 0;
  if(menu != null && menu.children !=null) {
    for(var i = 0; i < menu.children.length; i++) {
      if(menu.children[i].offsetWidth > maxw)
        maxw = menu.children[i].offsetWidth;
    }
    menu.style.width = maxw + 12 + 'px';
    for(var i = 0; i < menu.children.length; i++) {
      menu.children[i].style.width = '100%';
    }
  }
}

function menuOver(id) {
  var old_menu = document.getElementById(menuSelected + '_menu');
  var new_menu = document.getElementById(id + '_menu');
  document.images[id].src = menuImages[id + '_on'].src;
  if(old_menu != null && old_menu != new_menu) {
    old_menu.style.visibility = 'hidden';
  }
  if(menuSelected > '') {
    menuSelected = id;
    menuShow(new_menu, id);
  }
}

function menuOut(id) {
  var menu = document.getElementById(id + '_menu');
  document.images[id].src = menuImages[id].src;
}

function menuClick(id) {
  var old_menu = document.getElementById(menuSelected + '_menu');
  var new_menu = document.getElementById(id + '_menu');
  document.images[id].src = menuImages[id + '_on'].src;
  if(menuSelected == '') {
    menuSelected = id;
    if(new_menu != null) {
      menuShow(new_menu, id)
      if (window.event)
        window.event.cancelBubble = true
      else
        cancelBubble = true;
      return false;
    } else {
      return true;
    }
  }
}

function menuHide() {
  var old_menu = document.getElementById(menuSelected + '_menu');
  if(!cancelBubble || window.event) {
    if(old_menu) {
      old_menu.style.visibility = 'hidden';
    }
    menuSelected = '';
  }
  cancelBubble = false;
}
