// JavaScript Document
<!-- Begin
/** 
*	Menu system for partner websites.  It allows for two levels of menus, with unlimited 
*	amounts of menus for each level
*
*	Authored by: Jason Mei
*				 Empowered Training Center, LLC.
*				 October 27, 2005
*	Version: 1.0
**/

/** 
*	Called externally.  Displays the menu.  If subMenu is passed, then the subMenu and it's 
*	parent menu will be displayed.
*	Parameters: 	menu		The index value of the menu to be displayed.
*					subMenu		The index value of the submenu to be displayed.  Optional
**/
function boxOn(menu,subMenu) { 			
	
	var offsetXIE = dim[0];
	var offsetXNetscape = dim[1];
	var offsetYIE = dim[2];
	var offsetYNetscape = dim[3];
	var ypos = 0;
	var xpos = 0;
	var subMenuBorder = dim[4];
	var subMenuWidth = dim[5] + subMenuBorder; //width including borders
	var L2SubMenuBorder = dim[6];
	var L2SubMenuWidth = dim[7] + L2SubMenuBorder; //width including borders
	
	L2SubMenuWidth = -1 * ((subMenuWidth - subMenuBorder) - (100 * 3)) + L2SubMenuBorder - L2SubMenuWidth;
	subMenuWidth = (200 + (subMenuBorder * 2) - subMenuWidth);
	hideAll();
	if (subMenuHashedArray[menu] != null){
		ypos = findYPos(offsetYIE, offsetYNetscape, subMenuHashedArray[0][1]);
		xpos = findXPos(offsetXIE, offsetXNetscape, subMenuHashedArray[0][1]);
		subMenuHashedArray[menu][1].style.visibility='visible';
		subMenuHashedArray[menu][1].style.right=xpos + subMenuHashedArray[menu][2] + subMenuWidth + 'px'; 
		subMenuHashedArray[menu][1].style.top=ypos + subMenuHashedArray[menu][3] + 'px';
	
		subMenuL2HashedArray = new Array();
		if (subMenu != null && subMenuHashedArray[menu].length == 5) {
			subMenuL2HashedArray = subMenuHashedArray[menu][4];
			ypos = findYPos(offsetYIE, offsetYNetscape, subMenuL2HashedArray[0][1]);
			xpos = findXPos(offsetXIE, offsetXNetscape, subMenuL2HashedArray[0][1]);
			subMenuL2HashedArray[subMenu][1].style.visibility='visible';
			subMenuL2HashedArray[subMenu][1].style.right=xpos + subMenuL2HashedArray[subMenu][2] + subMenuWidth + 'px'; 
			subMenuL2HashedArray[subMenu][1].style.top=ypos + subMenuL2HashedArray[subMenu][3] + 'px';
		}
	}
}

/** The following functions are private functions. **/

/** 
*	Returns the xPosition adjusted for IE and Netscape browsers for elementRef.
*	Parameters: 	offsetXIE			The x-coor offset for IE.
*					offsetXNetscape		The x-coor offset for Netscape.
*					elementRef			The element to be measured.
**/
function findXPos(offsetXIE, offsetXNetscape, elementRef){
	var nMyElementsTrueXPosition = DL_GetElementLeft(elementRef);
	if (parseInt(navigator.appVersion)>3) {
	 if (navigator.appName=="Netscape") {
	  offsetX = offsetXNetscape;
	  
	 }
	 if (navigator.appName.indexOf("Microsoft")!=-1) {
	  offsetX = offsetXIE;
	 }
	}
	return offsetX;
}

/** 
*	Returns the yPosition adjusted for IE and Netscape browsers for elementRef.
*	Parameters: 	offsetYIE			The y-coor offset for IE.
*					offsetYNetscape		The y-coor offset for Netscape.
*					elementRef			The element to be measured.
**/
function findYPos(offsetYIE, offsetYNetscape, elementRef){
	
	var nMyElementsTrueYPosition = DL_GetElementTop(elementRef);
	 
	if (parseInt(navigator.appVersion)>3) {
	 if (navigator.appName=="Netscape") {
	  offsetY =  offsetYNetscape;
	  
	 }
	 if (navigator.appName.indexOf("Microsoft")!=-1) {
	  offsetY = -1 * (nMyElementsTrueYPosition - offsetYIE);
	 }
	}
	return offsetY + nMyElementsTrueYPosition;
}

/** 
*	Hides all the Level 1 menus.
**/
function hideAll() {
	for ( key in subMenuHashedArray ){
		subMenuHashedArray[key][1].style.visibility='hidden';
	}
}

/** 
*	Hides a single or all the Level 2 menus for a parent Menu.
*	Parameters: 	menu		The index value of the menu to be displayed.
*					subMenu		The index value of the submenu to be displayed.  
*					pause		The amount of time to pause before hiddening the menus. Optional
**/
function hideL2(menu, subMenu, pause){
	if (pause != null){
		pausecomp(pause);
	}
	subMenuL2HashedArray = new Array();
	
	if (subMenu != null && subMenuHashedArray[menu].length == 5) {
		subMenuL2HashedArray = subMenuHashedArray[menu][4];
		if (subMenu != 0) {
			subMenuL2HashedArray[subMenu][1].style.visibility='hidden';
		} else {
			
			for ( key in subMenuL2HashedArray ){
				subMenuL2HashedArray[key][1].style.visibility='hidden';
			}
		}
		subMenuHashedArray[menu][1].style.visibility='hidden';
	}
}
/**
*	Pauses the script.
*	Parameters: 	millis		The time, in milliseconds, the script will be paused.
**/
function pausecomp(millis)
{
	date = new Date();
	var curDate = null;
	
	do { var curDate = new Date(); }
	while(curDate-date < millis);
} 

/**
*	Returns the leftPosition  for eElement.
*	Parameters: 	eElement		The element to be measured.
**/
function DL_GetElementLeft(eElement)
{
    if (!eElement && this)                       // if argument is invalid
    {                                            // (not specified, is null or is 0)
        eElement = this;                         // and function is a method
    }                                            // identify the element as the method owner
    
    var nLeftPos = eElement.offsetLeft;          // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null)
    {                                            // move up through element hierarchy
        nLeftPos += eParElement.offsetLeft;      // appending left offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nLeftPos;                             // return the number calculated
}

/**
*	Returns the topPosition  for eElement.
*	Parameters: 	eElement		The element to be measured.
**/
function DL_GetElementTop(eElement)
{
    if (!eElement && this)
    {
        eElement = this;
    }

    var nTopPos = eElement.offsetTop;
    var eParElement = eElement.offsetParent;
    while (eParElement != null)
    {
        nTopPos += eParElement.offsetTop;
        eParElement = eParElement.offsetParent;
    }
	
    return nTopPos;
}


//  End -->
