var aspnm_hiddenSelectElems = new Array(); // internal array used to store hidden HTML select elements 
var SUBMENU_ITEMS_WIDTH = 230; // Submenu items width

function isIE()
{
  var naVer=navigator.appVersion;
  var naAgn=navigator.userAgent;
  var nIE=document.all ? 1 : 0;
  var nVer=parseFloat(naAgn.substring(naAgn.indexOf("MSIE ")+5,naAgn.length));
  var nOP=naAgn.indexOf("Opera")>=0;

  if(nIE && nVer>=5 && !nOP)
    return true;

  return false;
}

function dimension(width, height)
{
  this.width = width;
  this.height = height;
}

function coord(x, y)
{
  this.x = x;
  this.y = y;
}

// Calculates the absolute page coordinates of a relatively positioned element
function aspnm_pageCoords(element)
{
  var x = 0;
  var y = 0;
  do
  { 
    x += element.offsetLeft;
    y += element.offsetTop;
  }
  while ((element = element.offsetParent));
  return new coord(x, y); 
}


function OnMenuItemMOver(item, id, evt)
{      
  if (isIE()) 
  {
    item.className += ' over';

    if (item.parentNode.className == 'level0')
        aspnm_hideSelectElements(id);
  }
    
  var ulItem = item.getElementsByTagName('ul')[0];

  if (ulItem)
  {     
    ulItem.style.width = SUBMENU_ITEMS_WIDTH + "px";  

    var itemWidth = item.offsetWidth;    
    item.parentNode.style.width = itemWidth + "px";
 
    var arrElements = ulItem.getElementsByTagName('ul');
    for (var i = 0; i < arrElements.length; i++)
    {
      if (arrElements[i].parentNode.parentNode.uniqueID == ulItem.uniqueID)
      {
        arrElements[i].style.left = SUBMENU_ITEMS_WIDTH + "px";
      }
    }    
  }
}
  
function OnMenuItemMOut(item, id, evt)
{
  if (isIE())
  {
    item.className = item.className.replace(' over', '');
    
    if (item.parentNode.className == 'level0')
      aspnm_restoreSelectElements(id);
  }  
}

// Hides HTML select elements that are overlapping the given menu group 
function aspnm_hideSelectElements(group)
{
  if (document.getElementsByTagName) 
  {
    var arrElements = document.getElementsByTagName('select'); 
    var j = 0;

    var obj1 = document.all[group];
    
    var obj1Coords = aspnm_pageCoords(obj1);
    var obj1Left = obj1Coords.x - window.document.body.scrollLeft; 
    var obj1Top  = obj1Coords.y - window.document.body.scrollTop; 
        
    var objDim = GetCorrectedDimension(obj1);
    var obj1Right = obj1Left + objDim.width;
    var obj1Bottom = obj1Top + objDim.height;

    for (var i = 0; i < arrElements.length; i++)
 
      if (aspnm_objectsOverlapping(obj1Left, obj1Top, obj1Right, obj1Bottom, arrElements[i]))
      {
        arrElements[i].style.visibility = 'hidden'; 
        // add overlapping select element to the internal array
        aspnm_hiddenSelectElems[j] = arrElements[i];
        j++;
      }
  }
}

// Whether the given objects are overlapping 
function aspnm_objectsOverlapping(obj1Left, obj1Top, obj1Right, obj1Bottom, obj2)
{
  var result = true; 
  
  var obj2Coords = aspnm_pageCoords(obj2);
  var obj2Left = obj2Coords.x - window.document.body.scrollLeft; 
  var obj2Top = obj2Coords.y - window.document.body.scrollTop; 
  
  var obj2Right = obj2Left + obj2.offsetWidth; 
  var obj2Bottom = obj2Top + obj2.offsetHeight;
  
  if (obj1Right <= obj2Left || obj1Bottom <= obj2Top || 
      obj1Left >= obj2Right || obj1Top >= obj2Bottom) 
    result = false; 
  return result; 
}

// Restores all HTML select elements on the page 
function aspnm_restoreSelectElements()
{
  if (document.getElementsByTagName) 
  {
    if (aspnm_hiddenSelectElems.length != 0) 
    {
      for (var i = 0; i < aspnm_hiddenSelectElems.length; i++) 
        aspnm_hiddenSelectElems[i].style.visibility = 'visible'; 

      // reset array
      aspnm_hiddenSelectElems.length = 0;
    }
  }
}

function GetCorrectedDimension(obj)
{
  if ((obj.tagName.toLowerCase() == 'ul') && (currentItem.indexOf(' over') < 1))
    return 0;

  var objCoords = aspnm_pageCoords(obj);
  var x = objCoords.x;
  var y = objCoords.y;
  
  var width =  obj.offsetWidth;
  var height = obj.offsetHeight;
  
  for (var i = 0; i < obj.all.length; i++)
  {
   var currentItem = obj.all[i];
   
   if (currentItem.tagName.toLowerCase() != 'li')
    continue;
   
   var cCoords = aspnm_pageCoords(currentItem);   
   var cDim = GetCorrectedDimension(currentItem);
   
   if ( (cCoords.x + cDim.width) > (x + width) )
   {
     x = cCoords.x;
     width = cDim.width;
   }
   
   if ( (cCoords.y + cDim.height) > (y + height) )
   {
     y = cCoords.y;
     height = cDim.height;
   }
  }
  
  return new dimension(x + width - objCoords.x, y + height - objCoords.y);
}

function InitializeMenu()
{
  var item = document.getElementById('DropDownMultilevelMenuTable');
  var cellsArray = item.getElementsByTagName("TD");
  for (var i=0; i<cellsArray.length; i++)
    cellsArray[i].style.width = cellsArray[i].offsetWidth + "px";
}