var kExtInitialized = false;

function InitializeExtBase()
{
    InitializeKankeiBase();
    
    if(!kExtInitialized)
    {
        KankeiWebUI.ExtControlBase = function(element) {
            KankeiWebUI.ExtControlBase.initializeBase(this, [element]);
        }
        
        KankeiWebUI.ExtControlBase.prototype = {
        
            extObjectType: undefined, // Abstract
        
            initialize: function(){
                // Initialize
                KankeiWebUI.ExtControlBase.callBaseMethod(this,'initialize');
                
                var me = this;
                Ext.onReady(function(){
                    // Initialize ExtObject
                    var config = me.getConfig();
                    me.extObject = new me.extObjectType(config);
                    
                    // Delegates
                    var extObj = me.getExtObject();
                    extObj.on("show",me.onShow);
                    extObj.on("enable",me.onEnable);
                    
                    me.componentCreated();
                });
            },
            
            getExtObject: function(){
                return Ext.get(this.get_element().id);
            },
            
            getConfig: function(){}, // Abstract
            
            componentCreated: function(){}, // Abstract

            //=============================================================
            // Event Delegates for Overrides on specialized classes
            //=============================================================
            onShow: function(sender){},
            onEnable: function(sender){}
        }
        
        extObjectType: undefined;

        KankeiWebUI.ExtControlBase.registerClass('KankeiWebUI.ExtControlBase',KankeiWebUI.WebControlBase);
        if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
    
        InitializeExtLanguage();

        kExtInitialized = true;
        
        Ext.onReady(function(){
            Ext.QuickTips.init();
        });
    }
}