function menupos(item)		// set menu position and width
{ var menuobj = document.getElementById('menuitem' + item)
  var submenuobj = document.getElementById('submenu' + item)
//alert(navigator.appName + " " + navigator.userAgent)
// if (navigator.userAgent.indexOf('MSIE') > 0)
//    {submenuobj.style.top = menuobj.offsetTop + 143 + 'px'}
//else {submenuobj.style.top = menuobj.offsetTop + 23 + 'px'}
  submenuobj.style.top = menuobj.offsetTop + 23 + 'px'
  if (menuobj.offsetLeft - 15 + submenuobj.offsetWidth > document.body.offsetWidth)
     {submenuobj.style.left = document.body.offsetWidth - submenuobj.offsetWidth - 1 + 'px'}
  else {submenuobj.style.left = menuobj.offsetLeft - 15 + 'px'}	// 15 is width of left button end
if (submenuobj.offsetLeft < submenuobj.offsetWidth / 4) {submenuobj.style.left = 0}	// if within 1/4 menu width of left edge, align with left edge
//submenuobj.style.width = menuobj.offsetWidth + 10 + 'px'	// +30 for button ends, -20 padding
}

var fader
var timer

function showit(item,fade)	// show or fade in menu, hide all others
{ cancelhide()
  if (item != 1) {hideitem('submenu1')}
  if (item != 2) {hideitem('submenu2')}
  if (item != 3) {hideitem('submenu3')}
  if (item != 4) {hideitem('submenu4')}
//  if (item != 5) {hideitem('submenu5')}
  if (item != 6) {hideitem('submenu6')}
  if (item != 7) {hideitem('submenu7')}
  if (item != 0)
  { menupos(item)
    if (fade == 1) {fadein('submenu' + item)} else {showitem('submenu' + item)}
  }
}

function showitem(item)		// show menu instantly
{ var obj = document.getElementById(item)
  obj.style.opacity = 1
  if (obj.filters) {obj.filters.alpha.opacity = 100}
  obj.style.visibility = 'visible'
}

function hideit(item)		// set timer to fade out menu after 1 second
{ cancelhide()
  var obj = document.getElementById('submenu' + item)
  timer = window.setTimeout("fadeout('" + obj.id + "')",1000)
}

function cancelhide()		// cancel current timer and any fader in operatiuon
{ window.clearTimeout(timer)
  window.clearInterval(fader)
}

function hideitem(item)		// hide menu instantly
{ var obj = document.getElementById(item)
  obj.style.visibility = 'hidden'
  obj.style.opacity = 0
  if (obj.filters) {obj.filters.alpha.opacity = 0}
}

function fadeout(item)		// initiate menu fade out
{ var obj = document.getElementById(item)
  obj.style.visibility = 'visible'
  fader = window.setInterval("fadeoutmore('" + obj.id + "')",50)
}

function fadeoutmore(item)	// fade out a menu
{ var obj = document.getElementById(item), fad = .2, opac
  if (!obj.style.opacity) { obj.style.opacity = 1 }  
  opac = parseFloat(obj.style.opacity) - parseFloat(fad)
  obj.style.opacity = opac
  if (obj.filters) {obj.filters.alpha.opacity = (opac * 100)}
  if (obj.style.opacity <= 0)
  { window.clearInterval(fader)
    obj.style.visibility = 'hidden'
  }
}

function fadein(item)		// initiate menu fade in
{ var obj = document.getElementById(item)
  obj.style.visibility = 'visible'
  fader = window.setInterval("fadeinmore('" + obj.id + "')",50)
}

function fadeinmore(item)	// fade in a menu
{ var obj = document.getElementById(item), fad = .2, opac
  if (!obj.style.opacity) { obj.style.opacity = 0 }  
  opac = parseFloat(obj.style.opacity) + parseFloat(fad)
  obj.style.opacity = opac
  if (obj.filters) {obj.filters.alpha.opacity = (opac * 100)}
  if (obj.style.opacity >= 1) {window.clearInterval(fader)}
}

function checkMouseEnter (element, evt)	{	// True if is mouse entering from outside, false if entering from child element
  if (element.contains && evt.fromElement) {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function checkMouseLeave (element, evt) {	// True if is mouse leaving to outside, false if leaving to child element
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function containsDOM (container, containee) {	// Thanks Kibo www.kibo.com
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}
