﻿
function EventHandler()
{
    var This = this;

    // Data members
    This.Handlers = [];

    // Methods
    This.Add = function(iHandler)
    { This.Handlers.push(iHandler); }

    This.Invoke = function()
    {
        var ret = true;
        for (var i = 0; i < This.Handlers.length; i++)
        {
            var handler = This.Handlers[i];
            var iret;
            if (typeof handler == "object")
                iret = handler.Invoke.apply(handler, arguments) && ret;
            else
                iret = handler.apply(null, arguments) && ret;
            ret = ret && (defined(iret) ? iret : true);
        }
        return ret;
    }
    
}
