// JavaScript Document
    var isIE = document.all ? true : false;

    function showSubNav(menuID, source)
    {
        var leftPos = 0;
        var leftMiddlePos = 0;
       
       var divcontainer = document.getElementById("topNav_dropdownMenuDiv");
       if (source != "null")
       {
	        var submenus = divcontainer.getElementsByTagName("div");
            for (i = 0; i < submenus.length; i++) {
                submenus[i].style.display='none';
            }
       
	        var whereIs=getElementOffsetLocation(source);
	        //elementTop=whereIs[1];
            leftPos=whereIs[0];
            
            //This will help us center the menu under the parent menu item - no longer part of spec
            //leftMiddlePos = leftPos + (source.offsetWidth/2);
            
             //alert ("left Pos = " + leftPos);
              //alert ("left Middle Pos = " + leftMiddlePos);
       }
       
       var submenu;
       submenu = document.getElementById(menuID);
       //alert ("submenu = " + submenu);
       if (submenu == null)
       {
           var s;
           var submenus = document.getElementsByTagName("div");
           for (s in submenus)
           {
                //alert(submenus[s].id);
                if (submenus[s].name == menuID)
                {
                    submenu = submenus[s];
                    break;
                }    
           }
       }

       
        if (submenu != null)
        {
            submenu.style.display='block';
            if (source != "null")
            {
                var whereIsMenuStart = getElementOffsetLocation(divcontainer);
                //alert ("submenu pos = " + (leftMiddlePos - (submenu.offsetWidth/2)) + " and divcountainer pos = " + whereIsMenuStart[0]);

                //This places menu at left edge of parent menu item  
                submenu.style.left = leftPos;
              
                //This will center the menu under the parent menu item - no longer part of spec
                //if (leftMiddlePos - (submenu.offsetWidth/2) < whereIsMenuStart[0])
                //    submenu.style.left = whereIsMenuStart[0];
                //else
                //    submenu.style.left = leftMiddlePos - (submenu.offsetWidth/2);
            }
        }
    }
    
    
    function leaveNavButton(subMenuID, topNavItem, e)
    {
        //alert ("hiding subnav");
        var menu = document.getElementById(subMenuID);
        
       if (menu == null)
       {
           var s;
           var submenus = document.getElementsByTagName("div");
           for (s in submenus)
           {
                //alert(submenus[s].id);
                if (submenus[s].name == subMenuID)
                {
                    menu = submenus[s];
                    break;
                }    
           }
       }

        if (menu != null)
        {
 	        var whereIs=getElementOffsetLocation(topNavItem);
	        var top=whereIs[1];
            var left=whereIs[0];
            var right = left + topNavItem.offsetWidth;
            var bottom = top + topNavItem.offsetHeight;
            
            var eve;
            //=e||event;
            if(!e)
            { eve = window.event;}
            else
            { eve = e;}

            var mousepositions=getMousePosition(eve);
            
           //alert ("mouse position - left: " + mousepositions[0] + ", top: " + mousepositions[1] + "menu position - left: " + left + ", right: " + right + ", top: " + top + ", bottom: " + bottom );
            
            if ( mousepositions[0] < left+5  || 
                 mousepositions[0] > right-5 || 
                 mousepositions[1] < top + 2 
               )
            {
                menu.style.display='none';
            }
        }
    }
    

    
    function hideSubNav(menuID, e)
    {
        //alert ("hiding subnav");
        var menu = document.getElementById(menuID);
        
       if (menu == null)
       {
           var s;
           var submenus = document.getElementsByTagName("div");
           for (s in submenus)
           {
                //alert(submenus[s].id);
                if (submenus[s].name == menuID)
                {
                    menu = submenus[s];
                    break;
                }    
           }
       }

        if (menu != null)
        {
 	        var whereIs=getElementOffsetLocation(menu);
	        var top=whereIs[1];
            var left=whereIs[0];
            var right = left + menu.offsetWidth;
            var bottom = top + menu.offsetHeight;
            
            var eve;
            //=e||event;
            if(!e)
            { eve = window.event;}
            else
            { eve = e;}

            var mousepositions=getMousePosition(eve);
            
           //alert ("mouse position - left: " + mousepositions[0] + ", top: " + mousepositions[1] + "menu position - left: " + left + ", right: " + right + ", top: " + top + ", bottom: " + bottom );
            
            if ( mousepositions[0] < left+5  || 
                 mousepositions[0] > right-5 || 
                 mousepositions[1] < top + 2 || 
                 mousepositions[1] > bottom-1 
               )
            {
                menu.style.display='none';
            }
        }
    }
    
    
    function getMousePosition(ev)
    {
	    var _x;
	    var _y;
	    if (!isIE) {
		    _x = ev.pageX;
		    _y = ev.pageY;
	    }
	    if (isIE) {
		    _x = ev.clientX + document.body.scrollLeft;
		    _y = ev.clientY + document.body.scrollTop;
	    }
	    posX = _x;
	    posY = _y;
        var  pos=Array(posX,posY);
	    return pos;
    }

    function giveLayout(obj)
    {
	    //if this is IE, and theposition of the element is relative, give it haslayout - otherwise, calculating offset location is wrong
	    if (obj.currentStyle){ //do the hasLayout if it is relative
		    if (obj.currentStyle.position=='relative') {
			    obj.style.zoom='100%'
		    }
	    }
    }

    function getElementOffsetLocation(obj) 
    {
    //adapted from an example at quirksmode.org 
	    giveLayout(obj);
    	
	    var curleft = curtop = 0;
	    if (obj.offsetParent) {
		    curleft = obj.offsetLeft;
		    curtop = obj.offsetTop;
		    while (obj = obj.offsetParent) {
			    giveLayout(obj);
			    curleft += obj.offsetLeft
			    curtop += obj.offsetTop
		    }
	    }
    	
	    return [curleft,curtop];
    }