
ASPxClientCallbackPanel = _aspxCreateClass(ASPxClientControl, {
    constructor: function(name) {
        this.constructor.prototype.constructor.call(this, name);

        this.allowMultipleCallbacks = false;    
    },
    OnCallback: function(result) {
        this.GetMainElement().innerHTML = result;
    },
    OnCallbackError: function(result){
        this.GetMainElement().innerHTML = result;
    },
    DoBeginCallback: function(){
        ASPxClientControl.prototype.DoBeginCallback.call(this);
        this.CreateLoadingPanel();        
    },
    CreateLoadingPanel: function(){
        var element = this.GetMainElement();
        if(element.style.width != "" && element.style.height != "") {
            element.innerHTML = "";
            this.CreateLoadingPanelWithAbsolutePosition(element, null);
        } else
            this.CreateLoadingPanelInsideContainer(element);
    },
    PerformCallback: function(parameter) {
        if(!_aspxIsExists(parameter)) parameter = "";
        window.setTimeout("aspxCBPTimer(\"" + this.name + "\", \"" + parameter + "\")", 0);
    },
    PerformCallbackOnTimer: function(parameter) {
        this.CreateCallback(parameter);
    }
});

function aspxCBPTimer(name, parameter){
    var panel = aspxGetControlCollection().Get(name);
    if(panel != null) panel.PerformCallbackOnTimer(parameter);
}