﻿/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" assembly="AjaxControlToolkit" />


Type.registerNamespace('ButtonRequestDisabler');

ButtonRequestDisabler.ButtonRequestDisablerBehavior = function(element)
{
  ButtonRequestDisabler.ButtonRequestDisablerBehavior.initializeBase(this, [element]);

  this._disabled = null;
  this._onInvokingRequest = null;
  this._onCompletedRequest = null;
}
ButtonRequestDisabler.ButtonRequestDisablerBehavior.prototype =
{
  initialize : function()
  {
    ButtonRequestDisabler.ButtonRequestDisablerBehavior.callBaseMethod(this, 'initialize');

    // create the delegates
    this._onInvokingRequest = Function.createDelegate(this, this.OnInvokingRequest);
    this._onCompletedRequest = Function.createDelegate(this, this.OnCompletedRequest);  

    // tie in the event handlers
    Sys.Net.WebRequestManager.add_invokingRequest(this._onInvokingRequest);
    Sys.Net.WebRequestManager.add_completedRequest(this._onCompletedRequest);
  },

  dispose : function()
  {
    // clean up event handlers
    Sys.Net.WebRequestManager.remove_invokingRequest(this._onInvokingRequest);
    Sys.Net.WebRequestManager.remove_completedRequest(this._onCompletedRequest);  

    ButtonRequestDisabler.ButtonRequestDisablerBehavior.callBaseMethod(this, 'dispose');
  },
  
  OnInvokingRequest : function(sender, args)
  {
    this._disabled = this.get_element().disabled;
    this.get_element().disabled = true;
  },
  
  OnCompletedRequest : function(sender, args)
  {
    this.get_element().disabled = this._disabled;
  }
}
ButtonRequestDisabler.ButtonRequestDisablerBehavior.registerClass('ButtonRequestDisabler.ButtonRequestDisablerBehavior', AjaxControlToolkit.BehaviorBase);

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();