﻿

function UIManager()
{
    var This = this;

    // Events
    This.OnLoad = new EventHandler();
    This.OnClick = new EventHandler();
    This.OnMouseDown = new EventHandler();

    // Methods
    This.InitEventHandlers = function()
    {
        eventHandler = document.body.onclick;
        document.body.onclick = This.OnClick.Invoke;
        if (eventHandler)
            This.OnClick.Add(eventHandler);

        eventHandler = document.body.onmousedown;
        document.body.onmousedown = This.OnMouseDown.Invoke;
        if (eventHandler)
            This.OnMouseDown.Add(eventHandler);    
    }

    This.IsChild = function(iChild, iParent)
    {
        for (var element = iChild.parentNode; element; element = element.parentNode)
        {
            if (element == iParent)
                return true;
        }
        return false;
    }

    This.IsPartOf = function(iPart, iWhole)
    { return (iPart == iWhole) || This.IsChild(iPart, iWhole); }

    // Initialize
    {
        var eventHandler;

        eventHandler = window.onload;
        window.onload = This.OnLoad.Invoke;
        if (eventHandler)
            This.OnLoad.Add(eventHandler);

        This.OnLoad.Add(This.InitEventHandlers);
    }
}

var UI = new UIManager();

