﻿//
// Dynamic menus
//
var _currentMenuElement = null;
var _currentMenuSource = null;
var _menuShowDelayTimeout = null;
var _menuHideDelayTimeout = null;


var __menuHideDelay = 150;

function CancelHideMenu()
{
    if( typeof(_menuHideDelayTimeout) != "undefined" )
    {
        clearTimeout(_menuHideDelayTimeout);
    }
}

function ShowMenu(src, menuId, menuHeaderId, caption)
{
    if( src == null )
    {
        src = _currentMenuSource;
    }
    else
    {
        _currentMenuSource = src;
    }
    
    if( _currentMenuElement != null )
    {
        _currentMenuElement.style.visibility = "hidden";
        CancelHideMenu();
    }
 
    _currentMenuElement = document.getElementById(menuId);
    _currentMenuElement.style.visibility = "inherit";
    
    // start hiding it in case it is never moused into
    ////_menuHideDelayTimeout = setTimeout("_currentMenuElement.style.visibility = 'hidden'", 5000);
    
    var pos = FindPosition(src);
    var left = pos[0];
    var top = pos[1] + GetOffsetHeight(src);

    _currentMenuElement.style.left = left + "px";
    _currentMenuElement.style.top = top + "px";
    
    _currentMenuElement.onmouseout = HideMenu;
    _currentMenuElement.onmouseover = CancelHideMenu;

    var headerElement = document.getElementById(menuHeaderId);
    headerElement.innerHTML = caption;
}

function ForceHideMenu()
{
    if( _currentMenuElement != null )
    {
        _currentMenuElement.style.visibility = "hidden";
    }
}

function HideMenu(e)
{
    if( _currentMenuElement == null )
    {
        return;
    }
    
    if( window.event )
    {
        e = window.event;
    } 
    
    if( document.all )
    {
        if( !_currentMenuElement.contains(e.toElement) )
        {
            _menuHideDelayTimeout = setTimeout("if( _currentMenuElement!=null ){_currentMenuElement.style.visibility = 'hidden';}", __menuHideDelay);
        }
    }
    else if( document.getElementById && !document.all )
    {
        if( e.currentTarget != e.relatedTarget && !IsChildOf(e.currentTarget, e.relatedTarget) && _currentMenuSource != e.currentTarget )
        {
            _menuHideDelayTimeout = setTimeout("if( _currentMenuElement!=null ){_currentMenuElement.style.visibility = 'hidden';}", __menuHideDelay);
        }
    }
}

function IsChildOf(parent, testChild)
{
    while( testChild.parentNode )
    {
        if( testChild.parentNode == parent )
        {
            return true;
        }
        
        testChild = testChild.parentNode;
    }
    
    return false;
}

function FindPosition(obj)
{
	var curleft = curtop = 0;
	
	if( obj.offsetParent )
	{
        do
        {
		    curleft += obj.offsetLeft;
		    curtop += obj.offsetTop;
        } 
        while( obj = obj.offsetParent );
    }

    return [curleft,curtop];
}

function GetOffsetHeight(obj)
{
    while( obj.parentNode )
    {
        if( obj.offsetHeight > 0 )
        {
            return obj.offsetHeight;
        }
        
        obj = obj.parentNode;
    }
    
    return 0;
}

    
// 
// Clock
//
function updateTime()
{
    var label = document.getElementById("spnLocalTime");
    if( label != null ) 
    {
        var date = new Date();
        var ltime = "<strong>Local: </strong>" + date.localeFormat("HH:mm:ss");
        
        var utcHours = date.getUTCHours();
        var utcMinutes = date.getUTCMinutes();
        var utcSeconds = date.getUTCSeconds();
        
        if( utcHours < 10 )
        {
            utcHours = "0" + utcHours;
        }
        
        if( utcMinutes < 10 )
        {
            utcMinutes = "0" + utcMinutes;
        }
        
        if( utcSeconds < 10 )
        {
            utcSeconds = "0" + utcSeconds;
        }
        
        
        var ztime = "<strong>UTC: </strong>" + utcHours + ":" + utcMinutes + ":" + utcSeconds;
        label.innerHTML = ltime + " - " + ztime;
    }
    
    
   // Update the Welcome message statistics in the GameControl.
   if(window.GetWelcomeCharactersUsed)
   {
        GetWelcomeCharactersUsed();
   }
   else{

   }
   // Update the Question message statistics in the QuestionControl.
   if(window.GetQuestionCharactersUsed)
   {
        GetQuestionCharactersUsed();
   }
    
}

updateTime();
window.setInterval(updateTime, 1000);






