﻿var ControlHandlerRegistrar = 
{
    RegisterControlInitializer: function(name, controlClass)
    {
        ControlHandlerRegistrar.controlClasses_[name] = controlClass;
    },
    InitControl: function(name, el, javascript)
    {
        var controlClass = ControlHandlerRegistrar.controlClasses_[name];
        if (controlClass)
        {
            var result = controlClass.Init(el, javascript);
            if (controlClass.PostInit != null)
            {
                controlClass.PostInit(el);
            }
            return result;
        }
        return null;
    },
    PostControlInit: function(name, el, javascript)
    {
        var controlClass = ControlHandlerRegistrar.controlClasses_[name];
        if (controlClass)
        {
            if (controlClass.PostInit != null)
            {
                controlClass.PostInit(el, javascript);
            }
        }
    },
    CallEvent: function(className, event, eventEl)
    {
        if (!ControlHandlerRegistrar.inProcess)
        {
            ControlHandlerRegistrar.inProcess = true;
            try
            {
                var controlClass = ControlHandlerRegistrar.controlClasses_[className];
                if (controlClass)
                {
                    controlClass[event](eventEl);
                    return true;
                }
                else
                {
                    return false;
                }
            }
            finally
            {
                ControlHandlerRegistrar.inProcess = false;
            }
        }
    },
    controlClasses_: new Array()
    ,
    inProcess: false
};