var dm_supported     = false;
var dm_menuEl        = null;
var dm_submenuEls    = new Array();
var dm_activeSubmenu = false;
var dm_hideTimer     = null;

function dm_init() {
  if (!document.getElementById) return;
  dm_menuEl = document.getElementById('dm');
  if (!dm_menuEl) return;
  dm_supported = true;
  dm_addBasicMouseHandlers(dm_menuEl.getElementsByTagName('A'));
  dm_findSubmenuElemens(dm_menuEl);
}

function dm_findSubmenuElemens(elem) {
  if (!dm_supported) return;
  var elems = elem.childNodes;
  for (var i = 0; i < elems.length; i++) {
    var node = elems[i];
    if (node.nodeName != 'LI') continue;
    var submenu = node.getElementsByTagName('UL');
    if (submenu.length > 0) {
      dm_submenuEls[i] = submenu[0];
    }
    dm_addMouseHandlers(node, i);
  }
}

function dm_addMouseHandlers(elem, index) {
  if (!dm_supported) return;
  var elems = elem.childNodes;
  for (var i = 0; i < elems.length; i++) {
    var node = elems[i];
    if (node.nodeName == 'A') {
      node.onmouseover = new Function('dm_SubmenuMouseOverHandler(' + index + ')');
    }
  }
}

function dm_addBasicMouseHandlers(elems) {
  for (var i = 0; i < elems.length; i++) {
    var node = elems[i];
    node.onmouseover = dm_BasicMouseOverHandler;
    node.onmouseout  = dm_BasicMouseOutHandler;
  }
}

function dm_SubmenuMouseOverHandler(index) {
  if (!dm_supported) return;
  if (dm_hideTimer) {
    window.clearTimeout(dm_hideTimer);
    dm_hideTimer = null;
  }
  for (var i = 0; i < dm_submenuEls.length; i++) {
    if (i == index) continue;
    if (!dm_submenuEls[i]) continue;
    dm_submenuEls[i].style.visibility = 'hidden';
  }
  dm_activeSubmenu = index;
  if (dm_submenuEls[index]) dm_submenuEls[index].style.visibility = 'inherit';
}

function dm_BasicMouseOutHandler() {
  if (!dm_supported) return;
  if (dm_hideTimer)  return;
  dm_hideTimer = window.setTimeout('dm_hideSubmenu(' + dm_activeSubmenu + ')', 300);
}

function dm_BasicMouseOverHandler() {
  if (!dm_supported) return;
  if (!dm_hideTimer) return;
  window.clearTimeout(dm_hideTimer);
  dm_hideTimer = null;
}
 
function dm_hideSubmenu(index) {
  if (!dm_supported) return;
  if (!dm_submenuEls[index]) return;
  dm_submenuEls[index].style.visibility = 'hidden';
}
  
