﻿/* --------------------------------------------------------------------------------
 * Client Name: NQF
 * Project Name: New Website Implemenation 
 * Module: Javascript
 * Name: NQFMenu.js
 * Purpose: Primary Navigation
 *                   
 * Author: HA
 * Language: javascript version 1.3
 * --------------------------------------------------------------------------------
 * Change History:
 *  version: 1.0    HA  05/07/08
 *  Description: Initial Development
 * -------------------------------------------------------------------------------- */
 
 var preMenuID;
/// <summary>
/// For showing current hover menu
/// </summary>
/// <developer>HA</developer>
/// <param name="currentHoverObj">current displayble object</param>
function ShowHoverTopMenu(currentObjID,isSelected)
{  
    //alert(preMenuID);
    
    if(preMenuID!=null)
    {
        HideHoverTopMenu(preMenuID);
    }
    var dvMainMenuContentObj=document.getElementById('dvMainMenuContent'); 
        
    var currentObj=document.getElementById('Menu'+currentObjID); 
    
    /*removing other hover items when hove on any other menu item*/
    /*
    var allHoverMenu= window.document.getElementsByName("HoverMenu");    
    
    if(allHoverMenu!=null)
    {    
        for (var i = 0; i < allHoverMenu.length; i++)
        {
            allHoverMenu[i].style.display="none";
        }        
    }
    */    
    var hoverID="Hover"+currentObj.id;    
    var hoverObj=document.getElementById(hoverID);    
    DisplayHoverMenuItems( hoverObj
                         , GetOffsetLeft(currentObj)+'px'
                         , GetOffsetTop(dvMainMenuContentObj)+1+'px');
    
    hoverObj.style.width=currentObj.offsetWidth;//for setting hove top menu's width as it's position is absolute
    
    var hoverMenuLeftWidth = 6;
    var hoverMenuBottomHeight = 9;
    
    //var isSelectedStr=isSelected+'';
    if(isSelected==1)
    {        
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        { //test for MSIE x.x;
            var ieversion2=new Number(RegExp.$1) // capture x.x portion and store as a number
            if (ieversion2<7)
            {
                 hoverMenuBottomHeight=hoverMenuBottomHeight-4;          
            }
        }
    }
    
    var DrophoverID="DropHover"+currentObj.id;    
    var DrophoverObj=document.getElementById(DrophoverID);    
    DisplayHoverMenuItems( DrophoverObj
                         , GetOffsetLeft(currentObj)+hoverMenuLeftWidth+'px'
                         , GetOffsetTop(dvMainMenuContentObj)+currentObj.offsetHeight+hoverMenuBottomHeight+'px');
    
    var DrophoverObjRightPosition=DrophoverObj.offsetLeft + DrophoverObj.offsetWidth; 
    
        
    if(DrophoverObjRightPosition >document.body.clientWidth)
    {
        DrophoverObj.style.left=null;        
        
        ChangeClassName("dvMenu_hvrLeftPng"+currentObjID,"hvrLeftPngRight");
        ChangeClassName("dvMenu_menuTopBgSettings"+currentObjID,"menuTopBgMembership");    
        ChangeClassName("dvMenu_hvrRightPng"+currentObjID,"hvrRightPngRight");
        
        var dvMenu_hvrRightPngObj = document.getElementById("dvMenu_hvrRightPng"+currentObjID);  
        
        var currentOffsetLeft=0;
        currentOffsetLeft=GetOffsetLeft(dvMenu_hvrRightPngObj);
        
        var hoverReverseMenuRightHalfWidth = 4;      
        
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        { //test for MSIE x.x;
            var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
            if (ieversion<7)
                {
                    hoverReverseMenuRightHalfWidth = 3;          
                }
        }
        
        DrophoverObj.style.right=document.body.clientWidth-(currentOffsetLeft+dvMenu_hvrRightPngObj.offsetWidth)+hoverReverseMenuRightHalfWidth+'px';                
            
    }    
    preMenuID = currentObjID;
}
/// <summary>
/// For display hover menu items
/// </summary>
/// <developer>HA</developer>
/// <param name="currentHoverObj">current displayble object</param>
/// <param name="currentLeft">display position's left</param>
/// <param name="currentTop">display position's top</param>
function DisplayHoverMenuItems(currentHoverObj,currentLeft,currentTop)
{
    currentHoverObj.style.display="block";   
    currentHoverObj.style.left=currentLeft;    
    currentHoverObj.style.top=currentTop;       
}
/// <summary>
/// For display hover menu items
/// </summary>
/// <developer>HA</developer>
/// <param name="currentObjectID">current changeble object</param>
/// <param name="currentClassName">current changeble class name</param>
function ChangeClassName(currentObjectID, currentClassName)
{
    var currentObject = document.getElementById(currentObjectID);  
    currentObject.className=currentClassName;      
}
/// <summary>
/// For hide the hove menu frow which mouse out
/// </summary>
/// <developer>HA</developer>
/// <param name="currentObjId">current object id</param>
function HideHoverTopMenu(currentObjId)
{   
    var hoverID="HoverMenu"+currentObjId;    
    var hoverObj=document.getElementById(hoverID);     
    if(hoverObj!=null) 
    { hoverObj.style.display='none'; }
    
    var DrophoverID="DropHoverMenu"+currentObjId;    
    var DrophoverObj=document.getElementById(DrophoverID);  
    if(DrophoverObj!=null) 
    { DrophoverObj.style.display='none' ; }
    
 }  
/// <summary>
/// For left offset of current object
/// </summary>
/// <developer>HA</developer>
/// <param name="obj">current displayble object</param>
function GetOffsetLeft(obj)
{
    var currentOffsetLeft=0;    
    currentOffsetLeft = obj.offsetLeft;
    if (obj.offsetParent)
    { 
        while (obj.offsetParent)
        {
            currentOffsetLeft = currentOffsetLeft + obj.offsetParent.offsetLeft;
            obj = obj.offsetParent;
        }
    }
    return currentOffsetLeft;
}
/// <summary>
/// For top offset of current object
/// </summary>
/// <developer>HA</developer>
/// <param name="obj">current displayble object</param>
function GetOffsetTop(obj)
{
    var currentOffsetTop=0;    
    currentOffsetTop = obj.offsetTop;
    if (obj.offsetParent)
    { 
        while (obj.offsetParent)
        {
            currentOffsetTop = currentOffsetTop + obj.offsetParent.offsetTop;
            obj = obj.offsetParent;
        }
    }
    return currentOffsetTop;
}
 


