function containsDOM(po_container, po_containee) {
  var hb_isParent = false;
  do {
    if ((hb_isParent = po_container == po_containee))
      break;
    po_containee = po_containee.parentNode;
    }
  while (po_containee != null);
  return hb_isParent;
  }

function checkMouseEnter(po_element, po_event) {
  if (po_element.contains && po_event.fromElement) {
    return !po_element.contains(po_event.fromElement);
    }
  else if (po_event.relatedTarget) {
    return !containsDOM(po_element, po_event.relatedTarget);
    }
  }

function checkMouseLeave(po_element, po_event) {
  if (po_element.contains && po_event.toElement) {
    return !po_element.contains(po_event.toElement);
    }
  else if (po_event.relatedTarget) {
    return !containsDOM(po_element, po_event.relatedTarget);
    }
  }

