﻿Type.registerNamespace('AjaxControlToolkit.Threading');AjaxControlToolkit.DeferredOperation=function(delay,context,callback){this._delay=delay;this._context=context;this._callback=callback;this._completeCallback=null;this._errorCallback=null;this._timer=null;this._callArgs=null;this._isComplete=false;this._completedSynchronously=false;this._asyncResult=null;this._exception=null;this._throwExceptions=true;this._oncomplete$delegate=Function.createDelegate(this,this._oncomplete);this.post=Function.createDelegate(this,this.post);};AjaxControlToolkit.DeferredOperation.prototype={get_isPending:function(){return(this._timer!=null);},get_isComplete:function(){return this._isComplete;},get_completedSynchronously:function(){return this._completedSynchronously;},get_exception:function(){return this._exception;},get_throwExceptions:function(){return this._throwExceptions;},set_throwExceptions:function(value){this._throwExceptions=value;},get_delay:function(){return this._delay;},set_delay:function(value){this._delay=value;},post:function(args){var ar=[];for(var i=0;i<arguments.length;i++){ar[i]=arguments[i];}this.beginPost(ar,null,null);},beginPost:function(args,completeCallback,errorCallback){this.cancel();this._callArgs=Array.clone(args||[]);this._completeCallback=completeCallback;this._errorCallback=errorCallback;if(this._delay==-1){this._oncomplete();this._completedSynchronously=true;}else{this._timer=setTimeout(this._oncomplete$delegate,this._delay);}},cancel:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}this._callArgs=null;this._isComplete=false;this._asyncResult=null;this._completeCallback=null;this._errorCallback=null;this._exception=null;this._completedSynchronously=false;},complete:function(){if(this._timer){try{this._oncomplete();}finally{this._completedSynchronously=true;}return this._asyncResult;}else if(this._isComplete){return this._asyncResult;}},_oncomplete:function(){var args=this._callArgs;var completeCallback=this._completeCallback;var errorCallback=this._errorCallback;this.cancel();try{if(args){this._asyncResult=this._callback.apply(this._context,args);}else{this._asyncResult=this._callback.call(this._context);}this._isComplete=true;this._completedSynchronously=false;if(completeCallback){completeCallback(this);}}catch(e){this._isComplete=true;this._completedSynchronously=false;this._exception=e;if(errorCallback){if(errorCallback(this)){return;}}if(this._throwExceptions){throw e;}}}};AjaxControlToolkit.DeferredOperation.registerClass("AjaxControlToolkit.DeferredOperation");
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();