var myStr = "";
function _alert(event)
{
	alert(event);
	//myStr += event + '\n';
}

var mnu_expandedObjects = new Array();  // array of expanded groups 
var mnu_expandCount = 0;                // expanded group count 

var mnu_expandTimerID = 0;          // timer for the current expanding group 
var mnu_collapseTimerID = 0;        // timer for the current collapsing group 
var mnu_collapseAllTimerID = 0;     // timer for collapseAll
var mnu_expandingGroup = '';        // current expanding group name 
var mnu_collapsingGroup = '';       // current collapsing group name 
var mnu_restoredGroup = '';         // group that got focus after collapseAll has been called
var mnu_collapsingAll = false;      // whether the collapseAll command is pending 
var mnu_curItem = '';               // current menu item 
var mnu_hideSelectElems = true;     // whether to hide HTML select elements 
var mnu_shadows = new Array();      // used to hold shadow rectangles
var mnu_shadowEnabled = false;      // whether shadow is enabled
var mnu_shadowColor = '#777777';    // shadow color
var mnu_shadowOffest = 4;           // shadow offset
var mnu_contextUp = false;          // whether a context menu is up 
var mnu_currentGroup = null;


// Event handlers ---------------------------------------------------------------------------------

// Positions the menu
function positionMenu()
{
  if (window.document.body.clientWidth < 770) {
    GetElByID('MenuNav').style.left = 18; 
	GetElByID('MenuNav').style.visibility = 'visible'; 
  }
  else
  
  if (document.all)
  {
    var newLeft = (window.document.body.clientWidth - document.all['MenuNav'].offsetWidth) / 2 - (367 - (document.all['MenuNav'].offsetWidth /2)); 
    document.all['MenuNav'].style.left = newLeft; 
    document.all['MenuNav'].style.visibility = 'visible'; 
  }
  else
  {
    var newLeft = (window.innerWidth - document.getElementById('MenuNav').offsetWidth) / 2 - (367 - (document.getElementById('MenuNav').offsetWidth /2)); 
    document.getElementById('MenuNav').style.left = newLeft; 
    document.getElementById('MenuNav').style.visibility = 'visible'; 
  }
}

function mnu_itemMsOverByTabSelected(webPartQualifier, item, subGroup, expandDirection, horAdj, verAdj, expandDelay, effect) 
{
	var oTabStrip = null;
	
	oTabStrip = oTabStripCollection.FindByID(webPartQualifier);
	if( ! oTabStrip ) return;
	if( ! oTabStrip.currentTabSelected ) return;
	
	var oDiv = getElByID(oTabStrip.currentTabSelected + "Div");	
	if( !oDiv ) return;
	
	mnu_itemMsOver(item , subGroup + oDiv.DOCQualifier, expandDirection, horAdj, verAdj, expandDelay, effect) 
	
}

function mnu_groupMsOutByTabSelected(e, webPartQualifier, group, parentItem, parentGroup, expandDelay, effect) 
{
	var oTabStrip = null;
	
	oTabStrip = oTabStripCollection.FindByID(webPartQualifier);
	if( ! oTabStrip ) return;
	if( ! oTabStrip.currentTabSelected ) return;
	
	var oDiv = getElByID(oTabStrip.currentTabSelected + "Div");	
	if( !oDiv ) return;
	
	mnu_groupMsOut(e, group + oDiv.DOCQualifier, parentItem, parentGroup, expandDelay, effect) 
	
}

// Positions the subgroup for the given item, and initiates its expansion 
function mnu_itemMsOver(item, subGroup, expandDirection, horAdj, verAdj, expandDelay, effect) 
{
  var newLeft = 0; 
  var newTop = 0; 
  var oItem = $(item); 
  var oSubGroup = $(subGroup); 

	if (oSubGroup && oSubGroup.parentNode.tagName.toUpperCase() != 'BODY') {
		oSubGroup.inject(document.body);
	}

  if (mnu_curItem != item)
  {
    mnu_curItem = item; 
  
    switch (expandDirection)
    {
      case 'belowleft': 
        newLeft = mnu_pageX(oItem); 
        if (newLeft + oSubGroup.offsetWidth > window.document.body.clientWidth)
          newLeft = mnu_pageX(oItem) + oItem.offsetWidth - oSubGroup.offsetWidth; 
        newTop = mnu_pageY(oItem) + oItem.offsetHeight; 
        break; 
      case 'belowright': 
        newLeft = mnu_pageX(oItem) + oItem.offsetWidth - oSubGroup.offsetWidth; 
        newTop =  mnu_pageY(oItem) + oItem.offsetHeight; 
        break; 
      case 'aboveleft': 
        newLeft = mnu_pageX(oItem); 
        newTop =  mnu_pageY(oItem) - oSubGroup.offsetHeight; 
        break; 
      case 'aboveright': 
        newLeft = mnu_pageX(oItem) + oItem.offsetWidth - oSubGroup.offsetWidth; 
        newTop =  mnu_pageY(oItem) - oSubGroup.offsetHeight; 
        break; 
      case 'rightdown': 
        newLeft = mnu_pageX(oItem) + oItem.offsetWidth; 
        if (newLeft + oSubGroup.offsetWidth > window.document.body.clientWidth)
          newLeft = mnu_pageX(oItem) - oSubGroup.offsetWidth; 
        newTop = mnu_pageY(oItem); 
        if (newTop + oSubGroup.offsetHeight > window.document.body.clientHeight)
          newTop = mnu_pageY(oItem) - oSubGroup.offsetHeight + oItem.offsetHeight; 
        break; 
      case 'rightup': 
        newLeft = mnu_pageX(oItem) + oItem.offsetWidth; 
        newTop = mnu_pageY(oItem) - oSubGroup.offsetHeight + oItem.offsetHeight; 
        break; 
      case 'leftdown': 
        newLeft = mnu_pageX(oItem) - oSubGroup.offsetWidth; 
        newTop = mnu_pageY(oItem); 
        break; 
      case 'leftup': 
        newLeft = mnu_pageX(oItem) - oSubGroup.offsetWidth; 
        newTop = mnu_pageY(oItem) - oSubGroup.offsetHeight + oItem.offsetHeight; 
        break; 
      default: 
        newLeft = mnu_pageX(oItem) + oItem.offsetWidth; 
        newTop = mnu_pageY(oItem); 
        break; 
    }  
    newLeft += horAdj; 
    newTop += verAdj; 
    oSubGroup.style.left = newLeft; 
    oSubGroup.style.top = newTop; 
	if( mnu_currentGroup != null ) 	{
		mnu_startCollapse(mnu_currentGroup, expandDelay, effect);
	}
    mnu_startExpand(subGroup, expandDelay, effect); 
	mnu_currentGroup = subGroup;
  }
}

// If the mouse pointer is not over the given item or its subGroup, 
// this function initiates the collapse of the subGroup. 
function mnu_itemMsOut(e, item, group, subGroup, expandDelay, effect)
{
  //if ((!(mnu_isMouseOnObject(item))) && subGroup) 
  //{
    if (!(mnu_isMouseOnObject(e,subGroup)))
    {
      mnu_curItem = ''; 
      mnu_startCollapse(subGroup, expandDelay, effect);
    }  
  //}
}

// This event handler is only called on expandable groups. If collapseAll is pending, it sets the 
// global variable mnu_restoredGroup to the given group, so that the group and its parent groups 
// are not collapsed. It also stops the collapse if it has been issued for this group. 
function mnu_groupMsOver(group)
{

  if (mnu_collapsingAll) mnu_restoredGroup = group; 

  if (mnu_collapsingGroup == group) 
  {
    mnu_stopCollapse(); 
    mnu_stopExpand(); 
  }
}

// If the mouse pointer is on the given group, its subGroup, or its parent item this function 
// does nothing. If the pointer is over the parent group, but outside the parent item, then it
// initiates the collapse of itself and its subGroup (if any). 
// Otherwise, the pointer is outside the menu structure and it initiates the collapse of all 
// expanded objects. 
function mnu_groupMsOut(e, group, parentItem, parentGroup, expandDelay, effect, NewClassName, LeftImage, LeftImageSrc, RightImage, RightImageSrc, direction)
{ 

  if (!(mnu_isMouseOnObject(e,group)))
  {
    mnu_curItem = ''; 
    var subGroup = mnu_expandedObjects[mnu_expandCount]; 
    if (subGroup == group) subGroup = null; 

    if (parentItem == null && parentGroup == null && !(mnu_isMouseOnObject(e,group)))
    {
      mnu_startCollapseAll(expandDelay, effect);  
    }
    else if (mnu_isMouseOnObject(e,group) || mnu_isMouseOnObject(e,subGroup) || mnu_isMouseOnObject(e,parentItem))
    {
      ; // do nothing 
    }
    else if (mnu_isMouseOnObject(e,parentGroup))
    {
      mnu_startCollapse(group, expandDelay, effect); 
      mnu_startCollapse(subGroup, expandDelay, effect); 
      if (NewClassName) mnu_updateCell(parentItem, NewClassName, LeftImage, LeftImageSrc, RightImage, RightImageSrc, direction); 
    }
    else
    {
      mnu_startCollapseAll(expandDelay, effect);
      if (NewClassName) mnu_updateCell(parentItem, NewClassName, LeftImage, LeftImageSrc, RightImage, RightImageSrc, direction); 
    }
  }
}

// Expand/collapse timer functinos ----------------------------------------------------------------

// Initiates the expand of the given group. 
function mnu_startExpand(group, interval, effect)
{
	var groupId = '';
	
  if (group == mnu_collapsingGroup) mnu_stopCollapse(); 
  if (group != mnu_expandingGroup) mnu_stopExpand();  
  
  mnu_restoredGroup = group; 
  
  mnu_expandingGroup = group; 
  if (group) groupId = document.getElementById(group).id; 
  if (effect) effect = "'" + effect + "'";  
  mnu_expandTimerID = setTimeout('mnu_expand("' + groupId + '", ' + effect + ')', interval); 
}

// Initiates the collapse of the given group. 
function mnu_startCollapse(group, interval, effect)
{
	var groupId = '';
  if (group == mnu_expandingGroup) mnu_stopExpand(); 

  if (group) 
    if ($(group).style.visibility == 'visible') 
    {
      mnu_collapsingGroup = group; 
      groupId = document.getElementById(group).id; 
      if (effect) effect = "'" + effect + "'";  
      mnu_collapseTimerID = setTimeout('mnu_collapse("' + groupId + '", ' + effect + ')', interval); 
    }  
}

// Initiates the collapse of all expanded objects. 
function mnu_startCollapseAll(interval, effect)
{
  mnu_stopCollapse(); 
  mnu_stopExpand(); 
  mnu_stopCollapseAll(); 

  mnu_collapsingAll = true; 
  if (effect) 
  {
    effect = "'" + effect + "'";  
    mnu_collapseAllTimerID = setTimeout('mnu_collapseAll(' + effect + ')', interval); 
  }
  else
    mnu_collapseAllTimerID = setTimeout('mnu_collapseAll(null)', interval); 
}

// Stops the expand of the currently expanding group. 
function mnu_stopExpand()
{


  clearTimeout(mnu_expandTimerID); 
  mnu_expandingGroup = ''; 
}

// Stops the collapse of the currently collapsing group. 
function mnu_stopCollapse()
{

  clearTimeout(mnu_collapseTimerID); 
  mnu_collapsingGroup = ''; 
}

// Stops the collapse of all currently expanding objects. 
function mnu_stopCollapseAll()
{

  clearTimeout(mnu_collapseAllTimerID); 
  mnu_restoredGroup = '';
}


// Core functions ---------------------------------------------------------------------------------

// Expands the given menu group 
function mnu_expand(group, effect)
{
  if ($(group).style.visibility != 'visible')
  {
  	var groupMask = $(group + '__Mask');
    mnu_hideSelectElements(group); 
    if (effect) 
    {
      $(group).style.filter = effect; 
      $(group).filters[0].Apply(); 
    }  
    $(group).style.visibility = 'visible'; 
    if (groupMask) groupMask.style.visibility = 'visible';
    mnu_makeDropShadow(group); 
    if (effect) $(group).filters[0].Play(); 
    mnu_expandCount++; 
    mnu_expandedObjects[mnu_expandCount] = group; 
  }  
}


// Collapses the given menu group 
function mnu_collapse(group, effect)
{


  if (group) 
  {
    if ($(group).style.visibility != 'hidden')
    {
	  	var groupMask = $(group + '__Mask');
      if (effect)
      {
        $(group).style.filter = effect; 
        $(group).filters[0].Apply(); 
      }
      $(group).style.visibility = 'hidden';     
	    if (groupMask) groupMask.style.visibility = 'hidden';
      if (effect) $(group).filters[0].Play(); 
	  mnu_expandedObjects[mnu_expandCount] = null;
      mnu_expandCount--; 
      mnu_clearDropShadow(group); 
    }      
  }
  /*if (!(mnu_contextUp) && mnu_expandCount == 0) 
    mnu_restoreSelectElements(); */
}

// Collapses all expanded menu groups 
function mnu_collapseAll(effect)
{
  for (var i = mnu_expandCount; i >= 1; i--)
  {
    if (mnu_expandedObjects[i] == mnu_restoredGroup) break; 

    if (effect)
    {
      $(mnu_expandedObjects[i]).style.filter = effect; 
      $(mnu_expandedObjects[i]).filters[0].Apply(); 
    }
    $(mnu_expandedObjects[i]).style.visibility = 'hidden';
    if ($(mnu_expandedObjects[i] + '__Mask')) $(mnu_expandedObjects[i] + '__Mask').style.visibility = 'hidden';
    mnu_clearDropShadow(mnu_expandedObjects[i]); 
    if (effect) $(mnu_expandedObjects[i]).filters[0].Play(); 
	 mnu_expandedObjects[i] = null;
  }

  mnu_collapsingAll = false; 
  mnu_expandCount = i;
  mnu_restoredGroup = ''; 
  /*if (!(mnu_contextUp) && mnu_expandCount == 0) 
    mnu_restoreSelectElements(); */
}

// Hides all menu groups prior to calling ClientSideOnClick event handler
function mnu_hideAllGroups()
{

  mnu_curItem = ''; 
  mnu_restoredGroup = ''; 
  mnu_collapseAll(null); 
}

// Utilities --------------------------------------------------------------------------------------

// Updates menu item class, left icon, and right icon 
function mnu_updateCell(Element, NewClassName, LeftImage, LeftImageSrc, RightImage, RightImageSrc, direction)
{  
  //if (direction == 'out' && mnu_isMouseOnObject(Element))   ;   
  //else  
  //{    
    if (Element != null && NewClassName != '') $(Element).className = NewClassName;
    if (LeftImage != null  && LeftImageSrc != '') document.images[LeftImage].src = LeftImageSrc;     
    if (RightImage != null && RightImageSrc != '') document.images[RightImage].src = RightImageSrc;   
  //}
}

// Determines whether the mouse pointer is currently over the given object 
function mnu_isMouseOnObject(evt,objName)
{
	evt = evt || event;

  if (objName)
  {
    var objLeft = mnu_pageX($(objName)) - window.document.body.scrollLeft + 2; 
    var objTop = mnu_pageY($(objName)) - window.document.body.scrollTop + 2  ; 
    var objRight = objLeft + $(objName).offsetWidth - 2; 
    var objBottom = objTop + $(objName).offsetHeight - 2 ;

//alert(objName + ' : ' + objLeft + ',' + objTop + ',' + objRight + ',' + objBottom)
//alert('evt : ' + evt.clientX + ',' + evt.offsetX + ',' + evt.clientY + ',' + evt.offsetY)

    if ((typeof evt.clientX != 'undefined' && evt.clientX!=null && (evt.clientX > objLeft) && (evt.clientX < objRight) && 
        (evt.clientY > objTop) && (evt.clientY < objBottom)) ||
        (typeof evt.client != 'undefined' && evt.client!=null && (evt.client.x > objLeft) && (evt.client.x < objRight) && 
        (evt.client.y > objTop) && (evt.client.y < objBottom)))
    {
      return true; 
    }
    else  
    {
      return false; 
    }
  }
  else
    return false; 
}

// Calculates the absolute page x coordinate of any element
function mnu_pageX(element)
{

  var x = 0;
  do 
  {
    if (element.style.position == 'absolute') 
    {
	  if(element.scrollLeft)
		x -= element.scrollLeft;

      return x + element.offsetLeft; 
    }
    else
    {
	  if(element.scrollLeft)
		x -= element.scrollLeft;

      x += element.offsetLeft;
      if (element.offsetParent) 
        if (element.offsetParent.tagName == 'TABLE') 
          if (parseInt(element.offsetParent.border) > 0)
          {
            x += 1; 
          }
    }
  }
  while ((element = element.offsetParent));
  x += window.document.body.scrollLeft;
  return x; 
}

// Calculates the absolute page y coordinate of any element
function mnu_pageY(element)
{

  var y = 0;
  do 
  {
    if (element.style.position == 'absolute') 
    {
	  if(element.scrollTop)
		y -= element.scrollTop;

      return y + element.offsetTop; 
    }
    else
    {
	  if(element.scrollTop)
		y -= element.scrollTop;

      y += element.offsetTop;
      if (element.offsetParent) 
        if (element.offsetParent.tagName == 'TABLE') 
          if (parseInt(element.offsetParent.border) > 0)
          {
            y += 1; 
          }
    }
  }
  while ((element = element.offsetParent));
  y += window.document.body.scrollTop;
  return y; 
}


// Hides HTML select elements that are overlapping the given menu group 
function mnu_hideSelectElements(group)
{
	//mnu_hideSelectElements2(document,group,0,0);
	if (document.getElementsByTagName) 
	{
		var arrElements = document.getElementsByTagName('object'); 
		if (mnu_hideSelectElems) 
		{
		  for (var i = 0; i < arrElements.length; i++) 
			if (mnu_objectsOverlapping($(group), arrElements[i]))
			  arrElements[i].style.visibility = 'hidden';          
		}
		arrElements = document.getElementsByTagName('iframe'); 
		for (var i = 0; i < arrElements.length; i++)
			if (mnu_objectsOverlapping($(group), arrElements[i]))
				arrElements[i].style.visibility = 'hidden';
	}
}


function mnu_hideSelectElements2(docelem,group,posx,posy)
{
	if (docelem.getElementsByTagName) 
	{
		var arrElements = docelem.getElementsByTagName('object'); 
	    if (mnu_hideSelectElems) 
		{
			for (var i = 0; i < arrElements.length; i++) {
				if (mnu_objectsOverlapping2($(group), arrElements[i],docelem,posx,posy))
					arrElements[i].style.visibility = 'hidden';
			}
			arrElements = docelem.getElementsByTagName('iframe'); 
			for (var i = 0; i < arrElements.length; i++) {
				if (mnu_objectsOverlapping2($(group), arrElements[i],docelem,posx,posy))
					arrElements[i].style.visibility = 'hidden';
				/*
				var fr = docelem.frames(arrElements[i].id);
				mnu_hideSelectElements2(fr.document,group,
					posx+mnu_pageX(arrElements[i]),
					posy+mnu_pageY(arrElements[i]));
				*/
			}
		}
	}
}

// Restores all HTML select elements on the page 
function mnu_restoreSelectElements()
{
	//mnu_restoreSelectElements2(document)
	if (document.getElementsByTagName && mnu_hideSelectElems) 
	{
		var arrElements = document.getElementsByTagName('object'); 
		for (var i = 0; i < arrElements.length; i++) 
			arrElements[i].style.visibility = 'visible'; 
		arrElements = document.getElementsByTagName('iframe'); 
		for (var i = 0; i < arrElements.length; i++)
			arrElements[i].style.visibility = 'visible';
	}
}

// Restores all HTML select elements on the page 
function mnu_restoreSelectElements2(docelem)
{
	if (docelem.getElementsByTagName) 
	{
		var arrElements = docelem.getElementsByTagName('object'); 
		if (mnu_hideSelectElems) {
			for (var i = 0; i < arrElements.length; i++) 
				arrElements[i].style.visibility = 'visible'; 

			arrElements = docelem.getElementsByTagName('iframe'); 
			for (var i = 0; i < arrElements.length; i++) {
				arrElements[i].style.visibility = 'visible';
				/*
				var fr = docelem.frames(arrElements[i].id);
				mnu_restoreSelectElements2(fr.document);
				*/
			}
		}
	}
}

// Whether the given objects are overlapping 
function mnu_objectsOverlapping(obj1, obj2)
{
  var result = true; 
  var obj1Left = mnu_pageX(obj1) - window.document.body.scrollLeft; 
  var obj1Top = mnu_pageY(obj1) - window.document.body.scrollTop; 
  var obj1Right = obj1Left + obj1.offsetWidth; 
  var obj1Bottom = obj1Top + obj1.offsetHeight;

  var obj2Left = mnu_pageX(obj2) - window.document.body.scrollLeft; 
  var obj2Top = mnu_pageY(obj2) - 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; 
}

// Whether the given objects are overlapping 
function mnu_objectsOverlapping2(obj1, obj2, docobj, posx2, posy2)
{
  var result = true; 
  var obj1Left = mnu_pageX(obj1) - docobj.body.scrollLeft; 
  var obj1Top = mnu_pageY(obj1) - docobj.body.scrollTop; 
  var obj1Right = obj1Left + obj1.offsetWidth; 
  var obj1Bottom = obj1Top + obj1.offsetHeight;

  var obj2Left = mnu_pageX(obj2) - docobj.body.scrollLeft + posx2; 
  var obj2Top = mnu_pageY(obj2) - docobj.body.scrollTop + posy2; 
  var obj2Right = obj2Left + obj2.offsetWidth; 
  var obj2Bottom = obj2Top + obj2.offsetHeight;
  
  if (obj1Right <= obj2Left || obj1Bottom <= obj2Top || 
      obj1Left >= obj2Right || obj1Top >= obj2Bottom) 
    result = false; 
  return result; 
}

// Creates a drop shadow for an object 
function mnu_makeDropShadow(objName)
{
  if (mnu_shadowEnabled) 
  {
    mnu_shadows[objName] = new Array(); 
	  for (var i = mnu_shadowOffest; i > 0; i--)
	  {
	    var obj = $(objName); 
		  var rect = new Element('div');
		  var rs = rect.style
		  rs.position = 'absolute';
		  rs.left = (obj.style.posLeft + i) + 'px';
		  rs.top = (obj.style.posTop + i) + 'px';
		  rs.width = obj.offsetWidth + 'px';
		  rs.height = obj.offsetHeight + 'px';
		  rs.zIndex = obj.style.zIndex - i;
		  rs.backgroundColor = mnu_shadowColor;
		  var opacity = 1 - i / (i + 1);
		  rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
		  //obj.insertAdjacentElement('afterEnd', rect);
		  rect.injectAfter(obj);
		  mnu_shadows[objName][mnu_shadows[objName].length] = rect; 
	  }
	}
}

// Clears the drop shadow for the given object 
function mnu_clearDropShadow(objName)
{
  if (mnu_shadowEnabled) 
  {
    var curShadow; 
    for (var i = 0; i < mnu_shadows[objName].length; i++)
    {
      curShadow = mnu_shadows[objName][i]; 
      curShadow.style.filter = 'alpha(opacity=0)'; 
      //curShadow.removeNode(true); 
      curShadow.parentNode.removeChild(curShadow);
    }
  }  
}

// Positions the menu based on the alignment, offsetX, and offsetY properties
function mnu_positionMenu(menu, alignment, offsetX, offsetY)
{

  var scrlLeft = 0; 
  var scrlTop = 0;
  var clientW = window.document.body.clientWidth; 
  var clientH = window.document.body.clientHeight; 
  var menuWidth = menu.offsetWidth; 
  var menuHeight = menu.offsetHeight; 
  var newLeft = 0; 
  var newTop = 0; 

  switch (alignment)
  {
    case 'topleft': 
      newLeft = scrlLeft;
      newTop = scrlTop;
      break; 
    case 'topmiddle': 
      newLeft = (clientW - menuWidth) / 2 + scrlLeft;
      newTop = scrlTop;
      break; 
    case 'topright': 
      newLeft = clientW + scrlLeft - menuWidth;
      newTop = scrlTop;
      break; 
    case 'bottomleft': 
      newLeft = scrlLeft;
      newTop = clientH + scrlTop - menuHeight;
      break; 
    case 'bottommiddle': 
      newLeft = (clientW - menuWidth) / 2 + scrlLeft;
      newTop = clientH + scrlTop - menuHeight;
      break; 
    case 'bottomright': 
      newLeft = clientW + scrlLeft - menuWidth;
      newTop = clientH + scrlTop - menuHeight;
      break; 
    default: 
      newLeft = clientW + scrlLeft;
      newTop = clientH + scrlTop;
      break; 
  }    
  
  newLeft += offsetX; 
  newTop += offsetY; 
  menu.style.left = newLeft; 
  menu.style.top = newTop; 
}


function mnu_DisplaySubMenu(item, subGroup, expandDirection, horAdj, verAdj, expandDelay, effect)  {
  var newLeft = 0; 
  var newTop = 0; 
  var oItem = $(item); 
  var oSubGroup = $(subGroup); 
 	var oSubGroupMask = $(subGroup + '__Mask'); 
  
  if (mnu_curItem != item)
  {
    mnu_curItem = item; 
	  var clientW = window.document.body.clientWidth; 

		if (!oSubGroup) return;

		if (oSubGroup.parentNode.tagName.toUpperCase() != 'BODY') {
			oSubGroup.inject(document.body);
		}
  
    var oCoord = oItem.getCoordinates();
		
		newTop = oCoord.top + oCoord.height - 10;

  	oSubGroup.setPosition({x: newLeft, y: newTop});
		oSubGroup.setProperty('width', (clientW) + 'px')
  
  	if (oSubGroupMask){
			if (oSubGroupMask.parentNode.tagName.toUpperCase() != 'BODY') {
				oSubGroupMask.inject(document.body);
			}
			var oCoordSB = oSubGroup.getCoordinates();
			oSubGroupMask.setProperty('width', (oCoord.width - 2) + 'px')
			if (!Browser.Engine.trident)	
	  		oSubGroupMask.setPosition({x: oCoord.left + 1, y: oCoordSB.top});
	  	else
	  		oSubGroupMask.setPosition({x: oCoord.left - 1, y: oCoordSB.top - 2});
	  	
  	}
  
    mnu_startExpand(subGroup, expandDelay, effect); 
    
  }
}
