var bMenuIsDefined = 1;
var AnimatedMenu = StartMenu;
var useragent = navigator.userAgent;

function document_mouseover(e) 
{
	hideMenu();
//	doMouseOver(e);	// tooltip stuff...
}

function getRealLeft(e1) {
    xPos = 0;
    obj = e1.offsetParent;
    while (obj != null && obj.tagName != 'BODY' && obj.tagName != 'HTML') {
        xPos += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    return xPos;
}

function getRealTop(e1) {
    yPos = 0;
    obj = e1.offsetParent;
    while (obj != null && obj.tagName != 'BODY' && obj.tagName != 'HTML') {
        yPos += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return yPos;
}

function calcMenuPos (popupmenuid)
{
	// for tooltip collision avoidance...
//	setVisibility(getElement("tipBox"), false);

	var thisMenu = document.getElementById(popupmenuid);

	if(useragent.indexOf("Mac") != -1) 
	{
		// for the Mac the menu sometimes flashes, so move it off screen fo that 
		// it is not visible when it flashes.  I tried moving the visibility to later
		// but this messed up the positioning.
		thisMenu.style.top = 100000 + "px";
		thisMenu.style.left = 100000 + "px";
		thisMenu.style.display = "";
	}
	else 
	{
		thisMenu.style.clip = "rect(0 0 0 0)";
		thisMenu.style.display = "block";
	}

	window.workingMenuID = popupmenuid;

//////////////



	ieVersion = -1;
	ieVersionPos = 5 + navigator.appVersion.indexOf("MSIE",0);
	if (ieVersionPos >= 0) 
		ieVersion = navigator.appVersion.substring(ieVersionPos,4+ieVersionPos).valueOf();

	colPos = ieVersion.indexOf(";");
	if (colPos > 0)
	{
		ieVersion = ieVersion.substring(0,colPos); 
	}

	if (ieVersion < 5)
	{
		thisMenu.hitX = window.event.x;
		thisMenu.hitY = window.event.y;
	}
	else
	{
		// in IE 5 coordinates are 
		if (ieVersion < 6)
		{
			thisMenu.hitX = window.event.x + document.body.scrollLeft;
			thisMenu.hitY = window.event.y + document.body.scrollTop;
		} else
		{
			thisMenu.hitX = window.event.x + document.documentElement.scrollLeft;
			thisMenu.hitY = window.event.y + document.documentElement.scrollTop;
		}
	}
	window.event.cancelBubble = true;
///////////////

	window.event.cancelBubble = true;
	
	delayedCalcMenuPos();	
	//window.setTimeout("delayedCalcMenuPos()",20);
}

function delayedCalcMenuPos()
{
	var thisMenu = document.getElementById(window.workingMenuID);
	if (thisMenu == AnimatedMenu) 
		return false;

	menuheight = thisMenu.offsetHeight;
	menuwidth = thisMenu.offsetWidth;

	//menuheight += 10;
	//menuwidth += 10;
	
	// -------------added-------------

	//ieVersion = 6;

	if (ieVersion < 6)
	{
		if(useragent.indexOf("Mac") == -1) 
		{
			clientwidth = document.body.offsetWidth;
			clientheight = document.body.offsetHeight;
			scrolltop = document.body.scrollTop;
			scrollleft = document.body.scrollLeft;
		} else
		{
			clientwidth = document.body.clientWidth;
			clientheight = document.body.clientHeight - 10;
			scrolltop = document.body.scrollTop;
			scrollleft = document.body.scrollLeft;
		}

	} 
	else
	{
		//New
		clientwidth = document.documentElement.offsetWidth;
		clientheight = document.documentElement.offsetHeight;
	
		//Not valid for HTML
		//scrolltop = document.documentElement.scrollTop;
		//scrollleft = document.documentElement.scrollLeft;
	
		//For XHTML doctypes, document.document.Element.scroll[Top|Left] is not valid
		if ( document.compatMode.indexOf("CSS1Compat") != -1)
		{
			scrolltop = document.documentElement.scrollTop;
			scrollleft = document.documentElement.scrollLeft;
		} 
		else
		{
			scrolltop = document.body.scrollTop;
			scrollleft = document.body.scrollLeft;
		}

	}

	x = window.event.clientX + scrollleft - getRealLeft(thisMenu);
	y = window.event.clientY + scrolltop - getRealTop(thisMenu);

	//alert('scrollleft= ' + scrollleft +' scrolltop= ' + scrolltop);

	if (( x + menuwidth + 15 - scrollleft) > clientwidth)
		x = x - (x + menuwidth + 25 - scrollleft- clientwidth );

	if (( y + menuheight + 15 - scrolltop) > clientheight)
		y = y - (y + menuheight + 25 - scrolltop - clientheight);

	if (y < 0)
		y = 0;

	if (x < 0)
		x = 0;

	thisMenu.style.left = x + "px";
	thisMenu.style.top = y + "px";

	if (AnimatedMenu != null) 
		AnimatedMenu.style.display = "none";


	AnimatedMenu = thisMenu;
	if(useragent.indexOf("Mac") == -1) 
	{
		nChunk = 25;
		window.setTimeout("showMenu()", 20);

		// hide all edit and list box controls when when pop the menu out
    // first find an inline stylesheet - IE5 on Mac has a problem with addRule() for linked stylesheet
    var i;  
    for (i = document.styleSheets.length - 1; i >= 0; i--) {
      if (!document.styleSheets[i].href) break;
    }
    
		document.styleSheets[i].addRule(".cpHideForMenus", "visibility:hidden");
	}
}

function showMenu() 
{
//	window.status="t="+nChunk+" window size=(w "+AnimatedMenu.offsetWidth+",h "+AnimatedMenu.offsetHeight+")"
	if (nChunk > 100)
		nChunk = 100;

	AnimatedMenu.style.clip = "rect(0 "+ nChunk + "% " + nChunk + "% 0)"
	nChunk +=25
	nChunk<=100 ? window.setTimeout("showMenu()",20) : null;
}

function keepMenu()
{
	window.event.cancelBubble = true;
}

function hideMenu()
{
	if (AnimatedMenu.style.display != 'none')
	{
		AnimatedMenu.style.display = "none";
		AnimatedMenu = StartMenu;
		
		// hide all edit and list box controls when when pop the menu out
    // first find an inline stylesheet - IE5 on Mac has a problem with addRule() for linked stylesheet
    var i;  
    for (i = document.styleSheets.length - 1; i >= 0; i--) {
      if (!document.styleSheets[i].href) break;
    }
    
		document.styleSheets[i].addRule(".cpHideForMenus", "visibility:visible");
	}
	window.event.cancelBubble = true;
}

function RevertItem(loader,pgid,srcPage,ctrlid,itemid)
{
	params = "&srcpage="+srcPage+"&pageid="+pgid+"&controlid="+ctrlid;
	if (itemid != '')
		params = params + "&itemid="+itemid;
	newWindow('revertItem', loader + "?csModule=versionhistory/revert-item"+params);
}

function RevertCell(loader,pgid,srcPage,ctrlid,cellid)
{
	params = "&srcpage="+srcPage+"&pageid="+pgid+"&controlid="+ctrlid+"&cellid="+cellid;
	newWindow('revertCell', loader + "?csModule=versionhistory/revert-cell"+params);
}

function RevertLayout(loader,pgid,srcPage,ctrlid)
{
	params = "&srcpage="+srcPage+"&pageid="+pgid+"&controlid="+ctrlid;
	newWindow('revertCell', loader + "?csModule=controls/layout/revert-layout"+params);
}


