PageSourceSearch

https://koolman.vn/ScriptResource.axd?d=_peKny8DBK-MhXDbXzJ6IsR1ud…-HPRbc61ETQ4FGrQhAVqlgLQHi1cO0w2&t=3f0ccc7f

js koolman.vn collected 2026-09-24 14:29:19 UTC 96,396 bytes, 2,156 lines download raw bytes

1// Name:        MicrosoftAjaxWebForms.debug.js
2// Assembly:    AjaxControlToolkit
3// Version:     3.5.50927.0
4// FileVersion: 3.5.50927
5// (c) 2010 CodePlex Foundation
6(function() {
7
8function execute() {
9
10Type._registerScript("MicrosoftAjaxWebForms.js", [
11	"MicrosoftAjaxCore.js",
12	"MicrosoftAjaxSerialization.js",
13	"MicrosoftAjaxNetwork.js",
14	"MicrosoftAjaxComponentModel.js"]);
15var $type, $prototype;
16Type.registerNamespace('Sys.WebForms');
17
18$type = Sys.WebForms.BeginRequestEventArgs = function BeginRequestEventArgs(request, postBackElement, updatePanelsToUpdate) {
19    /// <summary locid="M:J#Sys.WebForms.BeginRequestEventArgs.#ctor">The arguments for the PageRequestManager's beginRequest event. The beginRequest event is raised when a request is about to be made.</summary>
20    /// <param name="request" type="Sys.Net.WebRequest">The web request for the EventArgs.</param>
21    /// <param name="postBackElement" domElement="true" mayBeNull="true">The postback element that initiated the async postback.</param>
22    /// <param name="updatePanelsToUpdate" type="Array" elementType="String" mayBeNull="true" optional="true">A list of UniqueIDs for UpdatePanel controls that are requested to update their rendering by the client. Server-side processing may update additional UpdatePanels.</param>
23    var e = Function._validateParams(arguments, [
24        {name: "request", type: Sys.Net.WebRequest},
25        {name: "postBackElement", mayBeNull: true, domElement: true},
26        {name: "updatePanelsToUpdate", type: Array, mayBeNull: true, optional: true, elementType: String}
27    ]);
28    if (e) throw e;
29    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
30    this._request = request;
31    this._postBackElement = postBackElement;
32    this._updatePanelsToUpdate = updatePanelsToUpdate;
33}
34
35$type.prototype = {
36    get_postBackElement: function BeginRequestEventArgs$get_postBackElement() {
37        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.BeginRequestEventArgs.postBackElement"></value>
38        if (arguments.length !== 0) throw Error.parameterCount();
39        return this._postBackElement;
40    },
41    get_request: function BeginRequestEventArgs$get_request() {
42        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.BeginRequestEventArgs.request"></value>
43        if (arguments.length !== 0) throw Error.parameterCount();
44        return this._request;
45    },
46    get_updatePanelsToUpdate: function BeginRequestEventArgs$get_updatePanelsToUpdate() {
47        /// <value type="Array" elementType="String" locid="P:J#Sys.WebForms.BeginRequestEventArgs.updatePanelsToUpdate"></value>
48        if (arguments.length !== 0) throw Error.parameterCount();
49        return this._updatePanelsToUpdate ? Array.clone(this._updatePanelsToUpdate) : [];
50    }
51}
52
53$type.registerClass('Sys.WebForms.BeginRequestEventArgs', Sys.EventArgs);
54$type = Sys.WebForms.EndRequestEventArgs = function EndRequestEventArgs(error, dataItems, response) {
55    /// <summary locid="M:J#Sys.WebForms.EndRequestEventArgs.#ctor">The arguments for the PageRequestManager's endRequest event. The endRequest event is raised when a response has finished processing.</summary>
56    /// <param name="error" type="Error" mayBeNull="true"></param>
57    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
58    /// <param name="response" type="Sys.Net.WebRequestExecutor"></param>
59    var e = Function._validateParams(arguments, [
60        {name: "error", type: Error, mayBeNull: true},
61        {name: "dataItems", type: Object, mayBeNull: true},
62        {name: "response", type: Sys.Net.WebRequestExecutor}
63    ]);
64    if (e) throw e;
65
66    Sys.WebForms.EndRequestEventArgs.initializeBase(this);
67    this._errorHandled = false;
68    this._error = error;
69    this._dataItems = dataItems || new Object();
70    this._response = response;
71}
72
73$type.prototype = {
74    get_dataItems: function EndRequestEventArgs$get_dataItems() {
75        /// <value type="Object" locid="P:J#Sys.WebForms.EndRequestEventArgs.dataItems"></value>
76        if (arguments.length !== 0) throw Error.parameterCount();
77        return this._dataItems;
78    },
79
80    get_error: function EndRequestEventArgs$get_error() {
81        /// <value type="Error" locid="P:J#Sys.WebForms.EndRequestEventArgs.error"></value>
82        if (arguments.length !== 0) throw Error.parameterCount();
83        return this._error;
84    },
85
86    get_errorHandled: function EndRequestEventArgs$get_errorHandled() {
87        /// <value type="Boolean" locid="P:J#Sys.WebForms.EndRequestEventArgs.errorHandled"></value>
88        if (arguments.length !== 0) throw Error.parameterCount();
89        return this._errorHandled;
90    },
91    set_errorHandled: function EndRequestEventArgs$set_errorHandled(value) {
92        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
93        if (e) throw e;
94        this._errorHandled = value;
95    },
96
97    get_response: function EndRequestEventArgs$get_response() {
98        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.WebForms.EndRequestEventArgs.response"></value>
99        if (arguments.length !== 0) throw Error.parameterCount();
100        return this._response;
101    }
102}
103
104$type.registerClass('Sys.WebForms.EndRequestEventArgs', Sys.EventArgs);
105$type = Sys.WebForms.InitializeRequestEventArgs = function InitializeRequestEventArgs(request, postBackElement, updatePanelsToUp
105date) {
106    /// <summary locid="M:J#Sys.WebForms.InitializeRequestEventArgs.#ctor">The arguments for the PageRequestManager's initializeRequest event. The initializeRequest event is raised when a request is being prepared and can be cancelled.</summary>
107    /// <param name="request" type="Sys.Net.WebRequest">The web request to be packaged in this EventArgs.</param>
108    /// <param name="postBackElement" domElement="true" mayBeNull="true">The postback element that initiated the async postback.</param>
109    /// <param name="updatePanelsToUpdate" type="Array" elementType="String" mayBeNull="true" optional="true">A list of UniqueIDs for UpdatePanel controls that are requested to update their rendering by the client. Server-side processing may update additional UpdatePanels.</param>
110    var e = Function._validateParams(arguments, [
111        {name: "request", type: Sys.Net.WebRequest},
112        {name: "postBackElement", mayBeNull: true, domElement: true},
113        {name: "updatePanelsToUpdate", type: Array, mayBeNull: true, optional: true, elementType: String}
114    ]);
115    if (e) throw e;
116    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
117    this._request = request;
118    this._postBackElement = postBackElement;
119    this._updatePanelsToUpdate = updatePanelsToUpdate;
120}
121
122$type.prototype = {
123    get_postBackElement: function InitializeRequestEventArgs$get_postBackElement() {
124        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.postBackElement"></value>
125        if (arguments.length !== 0) throw Error.parameterCount();
126        return this._postBackElement;
127    },
128    get_request: function InitializeRequestEventArgs$get_request() {
129        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.request"></value>
130        if (arguments.length !== 0) throw Error.parameterCount();
131        return this._request;
132    },
133    get_updatePanelsToUpdate: function InitializeRequestEventArgs$get_updatePanelsToUpdate() {
134        /// <value type="Array" elementType="String" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.updatePanelsToUpdate"></value>
135        if (arguments.length !== 0) throw Error.parameterCount();
136        return this._updatePanelsToUpdate ? Array.clone(this._updatePanelsToUpdate) : [];
137    },
138    set_updatePanelsToUpdate: function InitializeRequestEventArgs$set_updatePanelsToUpdate(value) {
139        var e = Function._validateParams(arguments, [{name: "value", type: Array, elementType: String}]);
140        if (e) throw e;
141        this._updated = true;
142        this._updatePanelsToUpdate = value;
143    }
144}
145
146$type.registerClass('Sys.WebForms.InitializeRequestEventArgs', Sys.CancelEventArgs);
147$type = Sys.WebForms.PageLoadedEventArgs = function PageLoadedEventArgs(panelsUpdated, panelsCreated, dataItems) {
148    /// <summary locid="M:J#Sys.WebForms.PageLoadedEventArgs.#ctor">The arguments for the PageRequestManager's pageLoaded event. The pageLoaded event is raised after the DOM has been updated.</summary>
149    /// <param name="panelsUpdated" type="Array">An array of UpdatePanels that were updated.</param>
150    /// <param name="panelsCreated" type="Array">An array of UpdatePanels that were created.</param>
151    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
152    var e = Function._validateParams(arguments, [
153        {name: "panelsUpdated", type: Array},
154        {name: "panelsCreated", type: Array},
155        {name: "dataItems", type: Object, mayBeNull: true}
156    ]);
157    if (e) throw e;
158    Sys.WebForms.PageLoadedEventArgs.initializeBase(this);
159
160    this._panelsUpdated = panelsUpdated;
161    this._panelsCreated = panelsCreated;
162    this._dataItems = dataItems || new Object();
163}
164
165$type.prototype = {
166    get_dataItems: function PageLoadedEventArgs$get_dataItems() {
167        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadedEventArgs.dataItems"></value>
168        if (arguments.length !== 0) throw Error.parameterCount();
169        return this._dataItems;
170    },
171
172    get_panelsCreated: function PageLoadedEventArgs$get_panelsCreated() {
173        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsCreated"></value>
174        if (arguments.length !== 0) throw Error.parameterCount();
175        return this._panelsCreated;
176    },
177
178    get_panelsUpdated: function PageLoadedEventArgs$get_panelsUpdated() {
179        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsUpdated"></value>
180        if (arguments.length !== 0) throw Error.parameterCount();
181        return this._panelsUpdated;
182    }
183}
184
185$type.registerClass('Sys.WebForms.PageLoadedEventArgs', Sys.EventArgs);
186$type = Sys.WebForms.PageLoadingEventArgs = function PageLoadingEventArgs(panelsUpdating, panelsDeleting, dataItems) {
187    /// <summary locid="M:J#Sys.WebForms.PageLoadingEventArgs.#ctor">The arguments for the PageRequestManager's pageLoading event. The pageLoading event is raised before the DOM has been updated.</summary>
188    /// <param name="panelsUpdating" type="Array">An array of UpdatePanels that are going to be updated.</param>
189    /// <param name="panelsDeleting" type="Array">An array of UpdatePanels that are going to be deleted.</param>
190    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
191    var e = Function._validateParams(arguments, [
192        {name: "panelsUpdating", type: Array},
193        {name: "panelsDeleting", type: Array},
194        {name: "dataItems", type: Object, mayBeNull: true}
195    ]);
196    if (e) throw e;
197    Sys.WebForms.PageLoadingEventArgs.initializeBase(this);
198
199    this._panelsUpdating = panelsUpdating;
200    this._panelsDeleting = panelsDeleting;
201    this._dataItems = dataItems || new Object();
202}
203
204$type.prototype = {
205    get_dataItems: function PageLoadingEventArgs$get_dataItems() {
206        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadingEventArgs.dataItems"></value>
207        if (arguments.length !== 0) throw Error.parameterCount();
208        return this._dataItems;
209    },
210
211    get_panelsDeleting: function PageLoadingEventArgs$get_panelsDeleting() {
212        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsDeleting"></value>
213        if (arguments.length !== 0) throw Error.parameterCount();
214        return this._panelsDeleting;
215    },
216
217    get_panelsUpdating: function PageLoadingEventArgs$get_panelsUpdating() {
218        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsUpdating"></value>
219        if (arguments.length !== 0) throw Error.parameterCount();
220        return this._panelsUpdating;
221    }
222}
223
224$type.registerClass('Sys.WebForms.PageLoadingEventArgs', Sys.EventArgs);
225
226$type = Sys._ScriptLoaderTask = function _ScriptLoaderTask(scriptElement, completedCallback) {
227    /// <summary locid="M:J#Sys._ScriptLoaderTask.#ctor"></summary>
228    /// <param name="scriptElement" domElement="true">The script element to add to the DOM.</param>
229    /// <param name="completedCallback" type="Function">Callback to call when the script has loaded or failed to load.</param>
230    var e = Function._validateParams(arguments, [
231        { name: "scriptElement", domElement: true },
232        { name: "completedCallback", type: Function }
233    ]);
234    if (e) throw e;
235    this._scriptElement = scriptElement;
236    this._completedCallback = completedCallback;
237}
238$type.prototype = {
239    get_scriptElement: function _ScriptLoaderTask$get_scriptElement() {
240        /// <value domElement="true" locid="P:J#Sys._ScriptLoaderTask.scriptElement">The script element.</value>
241        if (arguments.length !== 0) throw Error.parameterCount();
242        return this._scriptElement;
243    },
244
245    dispose: function _ScriptLoaderTask$dispose() {
246        if (this._disposed) {
247            return;
248        }
249        this._disposed = true;
250        this._removeScriptElementHandlers();
251        Sys._ScriptLoaderTask._clearScript(this._scriptElement);
252        this._scriptElement = null;
253    },
254
255    execute: function _ScriptLoaderTask$execute() {
256        /// <summary locid="M:J#Sys._ScriptLoaderTask.execute">
256Begins loading the given script element.</summary>
257        if (arguments.length !== 0) throw Error.parameterCount();
258        this._addScriptElementHandlers();
259        var headElements = document.getElementsByTagName('head');
260        if (headElements.length === 0) {
261            throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead);
262        }
263        else {
264            headElements[0].appendChild(this._scriptElement);
265        }
266    },
267
268    _addScriptElementHandlers: function _ScriptLoaderTask$_addScriptElementHandlers() {
269        this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);
270
271        if (document.addEventListener) {
272            if (!this._scriptElement.readyState)
273                this._scriptElement.readyState = 'loaded';
274            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
275        }
276        else {
277            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
278        }
279        if (this._scriptElement.addEventListener) {
280            this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
281            this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false);
282        }
283    },
284
285    _removeScriptElementHandlers: function _ScriptLoaderTask$_removeScriptElementHandlers() {
286        if (this._scriptLoadDelegate) {
287            var scriptElement = this.get_scriptElement();
288            if (document.addEventListener) {
289                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
290            }
291            else {
292                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
293            }
294            if (this._scriptErrorDelegate) {
295                this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false);
296                this._scriptErrorDelegate = null;
297            }
298            this._scriptLoadDelegate = null;
299        }
300    },
301
302    _scriptErrorHandler: function _ScriptLoaderTask$_scriptErrorHandler() {
303        if (this._disposed) {
304            return;
305        }
306
307        this._completedCallback(this.get_scriptElement(), false);
308    },
309
310    _scriptLoadHandler: function _ScriptLoaderTask$_scriptLoadHandler() {
311        if (this._disposed) {
312            return;
313        }
314
315        var scriptElement = this.get_scriptElement();
316        if ((scriptElement.readyState !== 'loaded') &&
317            (scriptElement.readyState !== 'complete')) {
318            return;
319        }
320
321        this._completedCallback(scriptElement, true);
322    }
323}
324$type.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);
325
326$type._clearScript = function _ScriptLoaderTask$_clearScript(scriptElement) {
327    if (!Sys.Debug.isDebug) {
328        scriptElement.parentNode.removeChild(scriptElement);
329    }
330}
331
332$type = Sys._ScriptLoader = function _ScriptLoader() {
333    this._scriptsToLoad = null;
334    this._sessions = [];
335    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
336}
337$type.prototype = {
338    dispose: function _ScriptLoader$dispose() {
339        this._stopSession();
340        this._loading = false;
341        if(this._events) {
342            delete this._events;
343        }
344        this._sessions = null;
345        this._currentSession = null;
346        this._scriptLoadedDelegate = null;        
347    },
348    
349    loadScripts: function _ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
350        /// <summary locid="M:J#Sys._ScriptLoader.loadScripts">Begins loading scripts that have been queued.</summary>
351        /// <param name="scriptTimeout" type="Number" integer="true">Timeout in seconds for loading all scripts.</param>
352        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true">Callback for notification when all scripts have successfully loaded.</param>
353        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true">Callback for notification when a script fails to load.</param>
354        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true">Callback for notification when scripts have not finished loading within the given timeout.</param>
355        var e = Function._validateParams(arguments, [
356            {name: "scriptTimeout", type: Number, integer: true},
357            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
358            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
359            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
360        ]);
361        if (e) throw e;
362        var session = {
363            allScriptsLoadedCallback: allScriptsLoadedCallback,
364            scriptLoadFailedCallback: scriptLoadFailedCallback,
365            scriptLoadTimeoutCallback: scriptLoadTimeoutCallback,
366            scriptsToLoad: this._scriptsToLoad,
367            scriptTimeout: scriptTimeout };
368        this._scriptsToLoad = null;
369        this._sessions.push(session);
370        
371        if (!this._loading) {
372            this._nextSession();
373        }
374    },
375    
376    queueCustomScriptTag: function _ScriptLoader$queueCustomScriptTag(scriptAttributes) {
377        /// <summary locid="M:J#Sys._ScriptLoader.queueCustomScriptTag">Queues a script reference with the given set of custom script element attributes.</summary>
378        /// <param name="scriptAttributes" mayBeNull="false">A JSON object that describtes the attributes to apply to the script element.</param>
379        var e = Function._validateParams(arguments, [
380            {name: "scriptAttributes"}
381        ]);
382        if (e) throw e;
383        if(!this._scriptsToLoad) {
384            this._scriptsToLoad = [];
385        }
386        Array.add(this._scriptsToLoad, scriptAttributes);
387    },
388
389    queueScriptBlock: function _ScriptLoader$queueScriptBlock(scriptContent) {
390        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptBlock">Queues a script reference with literal script.</summary>
391        /// <param name="scriptContent" type="String" mayBeNull="false">Literal script to execute.</param>
392        var e = Function._validateParams(arguments, [
393            {name: "scriptContent", type: String}
394        ]);
395        if (e) throw e;
396        if(!this._scriptsToLoad) {
397            this._scriptsToLoad = [];
398        }
399        Array.add(this._scriptsToLoad, {text: scriptContent});
400    },
401
402    queueScriptReference: function _ScriptLoader$queueScriptReference(scriptUrl) {
403        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptReference">Queues a script reference to the given script URL.</summary>
404        /// <param name="scriptUrl" type="String" mayBeNull="false">URL to the script to reference.</param>
405        var e = Function._validateParams(arguments, [
406            {name: "scriptUrl", type: String}
407        ]);
408        if (e) throw e;
409        if(!this._scriptsToLoad) {
410            this._scriptsToLoad = [];
411        }
412        Array.add(this._scriptsToLoad, {src: scriptUrl});
413    },
414    
415    _createScriptElement: function _ScriptLoader$_createScriptElement(queuedScript) {
416        var scriptElement = document.createElement('script');
417
418        scriptElement.type = 'text/javascript';
419
420        for (var attr in queuedScript) {
421            scriptElement[attr] = queuedScript[attr];
422        }
423        
424        return scriptElement;
425    },
426    
427    _loadScriptsInternal: function _ScriptLoader$_loadScriptsInternal() {
428        var session = this._currentSession;
429        if (session.scriptsToLoad && session.scriptsToLoad.length > 0) {
430            var nextScript = Array.dequeue(session.scriptsToLoad);
431            var scriptElement = this._createScriptElement(nextScript);
432            
433            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
434                scriptElement.innerHTML = scriptElement.text;
435                delete scriptElement.text;
436            }            
437
438            if (typeof(nextScript.src) === "string") {
439                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
440                this._currentTask.execute();
441            }
442            else {
443                var headElements = document.getElementsByTagName('head');
444                if (headElements.length === 0) {
445                     throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead);
446                }
447                else {
448                     headElements[0].appendChild(scriptElement);
449                }
450                
451                
452                Sys._ScriptLoaderTask._clearScript(scriptElement);
453                this._loadScriptsInternal();
454            }
455        }
456        else {
457            this._stopSession();
458            var callback = session.allScriptsLoadedCallback;
459            if(callback) {
460                callback(this);
461            }
462            this._nextSession();
463        }
464    },
465
466    _nextSession: function _ScriptLoader$_nextSession() {
467        if (this._sessions.length === 0) {
468            this._loading = false;
469            this._currentSession = null;
470            return;
471        }
472        this._loading = true;
473        
474        var session = Array.dequeue(this._sessions);
475        this._currentSession = session;
476        this._loadScriptsInternal();
477    },
478
479    _raiseError: function _ScriptLoader$_raiseError() {
480        var callback = this._currentSession.scriptLoadFailedCallback;
481        var scriptElement = this._currentTask.get_scriptElement();
482        this._stopSession();
483        
484        if(callback) {
485            callback(this, scriptElement);
486            this._nextSession();
487        }
488        else {
489            this._loading = false;
490            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src);
491        }
492    },
493    
494    _scriptLoadedHandler: function _ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
495        if (loaded) {
496            Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
497            this._currentTask.dispose();
498            this._currentTask = null;
499            this._loadScriptsInternal();
500        }
501        else {
502            this._raiseError();
503        }
504    },
505    _stopSession: function _ScriptLoader$_stopSession() {
506        if(this._currentTask) {
507            this._currentTask.dispose();
508            this._currentTask = null;
509        }
510    }    
511}
512$type.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);
513
514$type.getInstance = function _ScriptLoader$getInstance() {
515    var sl = Sys._ScriptLoader._activeInstance;
516    if(!sl) {
517        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
518    }
519    return sl;
520}
521
522$type.isScriptLoaded = function _ScriptLoader$isScriptLoaded(scriptSrc) {
523    var dummyScript = document.createElement('script');
524    dummyScript.src = scriptSrc;
525    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
526}
527
528$type.readLoadedScripts = function _ScriptLoader$readLoadedScripts() {
529    if(!Sys._ScriptLoader._referencedScripts) {
530        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];
531
532        var existingScripts = document.getElementsByTagName('script');
533        for (var i = existingScripts.length - 1; i >= 0; i--) {
534            var scriptNode = existingScripts[i];
535            var scriptSrc = scriptNode.src;
536            if (scriptSrc.length) {
537                if (!Array.contains(referencedScripts, scriptSrc)) {
538                    Array.add(referencedScripts, scriptSrc);
539                }
540            }
541        }
542    }
543}
544
545$type._errorScriptLoadFailed = function _ScriptLoader$_errorScriptLoadFailed(scriptUrl) {
546    var errorMessage;
547    errorMessage = Sys.Res.scriptLoadFailedDebug;
548
549    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
550    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
551    e.popStackFrame();
552    return e;
553}
554
555$type._getLoadedScripts = function _ScriptLoader$_getLoadedScripts() {
556    if(!Sys._ScriptLoader._referencedScripts) {
557        Sys._ScriptLoader._referencedScripts = [];
558        Sys._ScriptLoader.readLoadedScripts();
559    }
560    return Sys._ScriptLoader._referencedScripts;
561}
562$type = Sys.WebForms.PageRequestManager = function PageRequestManager() {
563    this._form = null;
564    this._activeDefaultButton = null;
565    this._activeDefaultButtonClicked = false;
566    this._updatePanelIDs = null;
567    this._updatePanelClientIDs = null;
568    this._updatePanelHasChildrenAsTriggers = null;
569    this._asyncPostBackControlIDs = null;
570    this._asyncPostBackControlClientIDs = null;
571    this._postBackControlIDs = null;
572    this._postBackControlClientIDs = null;
573    this._scriptManagerID = null;
574    this._pageLoadedHandler = null;
575
576    this._additionalInput = null;
577    this._onsubmit = null;
578    this._onSubmitStatements = [];
579    this._originalDoPostBack = null;
580    this._originalDoPostBackWithOptions = null;
581    this._originalFireDefaultButton = null;
582    this._originalDoCallback = null;
583    this._isCrossPost = false;
584    this._postBackSettings = null;
585    this._request = null;
586    this._onFormSubmitHandler = null;
587    this._onFormElementClickHandler = null;
588    this._onWindowUnloadHandler = null;
589    this._asyncPostBackTimeout = null;
590
591    this._controlIDToFocus = null;
592    this._scrollPosition = null;
593    this._processingRequest = false;
594    this._scriptDisposes = {};
595    
596    this._transientFields = ["__VIEWSTATEENCRYPTED", "__VIEWSTATEFIELDCOUNT"];
597}
598
599$type.prototype = {
600    get_isInAsyncPostBack: function PageRequestManager$get_isInAsyncPostBack() {
601        /// <value type="Boolean" locid="P:J#Sys.WebForms.PageRequestManager.isInAsyncPostBack"></value>
602        if (arguments.length !== 0) throw Error.parameterCount();
603        return this._request !== null;
604    },
605
606    add_beginRequest: function PageRequestManager$add_beginRequest(handler) {
607        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.beginRequest">Adds a beginRequest event handler.</summary>
608        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
609        if (e) throw e;
610        Sys.Observer.addEventHandler(this, "beginRequest", handler);
611    },
612    remove_beginRequest: function PageRequestManager$remove_beginRequest(handler) {
613        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
614        if (e) throw e;
615        Sys.Observer.removeEventHandler(this, "beginRequest", handler);
616    },
617
618    add_endRequest: function PageRequestManager$add_endRequest(handler) {
619        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.endRequest">Adds a endRequest event handler.</summary>
620        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
621        if (e) throw e;
622        Sys.Observer.addEventHandler(this, "endRequest", handler);
623    },
624    remove_endRequest: function PageRequestManager$remove_endRequest(handler) {
625        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
626        if (e) throw e;
627        Sys.Observer.removeEventHandler(this, "endRequest", handler);
628    },
629
630    add_initializeRequest: function PageRequestManager$add_initializeRequest(handler) {
631        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.initializeRequest">Adds a initializeRequest event handler.</summary>
632        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
633        if (e) throw e;
634        Sys.Observer.addEventHandler(this, "initializeRequest", handler);
635    },
636    remove_initializeRequest: function PageRequestManager$remove_initializeRequest(handler) {
637        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
638        if (e) throw e;
639        Sys.Observer.removeEventHandler(this, "initializeRequest", handler);
640    },
641
642    add_pageLoaded: function PageRequestManager$add_pageLoaded(handler) {
643        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoaded">Adds a pageLoaded event handler.</summary>
644        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
645        if (e) throw e;
646        Sys.Observer.addEventHandler(this, "pageLoaded", handler);
647    },
648    remove_pageLoaded: function PageRequestManager$remove_pageLoaded(handler) {
649        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
650        if (e) throw e;
651        Sys.Observer.removeEventHandler(this, "pageLoaded", handler);
652    },
653
654    add_pageLoading: function PageRequestManager$add_pageLoading(handler) {
655        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoading">Adds a pageLoading event handler.</summary>
656        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
657        if (e) throw e;
658        Sys.Observer.addEventHandler(this, "pageLoading", handler);
659    },
660    remove_pageLoading: function PageRequestManager$remove_pageLoading(handler) {
661        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
662        if (e) throw e;
663        Sys.Observer.removeEventHandler(this, "pageLoading", handler);
664    },
665
666    abortPostBack: function PageRequestManager$abortPostBack() {
667        if (!this._processingRequest && this._request) {
668            this._request.get_executor().abort();
669            this._request = null;
670        }
671    },
672
673    beginAsyncPostBack: function PageRequestManager$beginAsyncPostBack(updatePanelsToUp
673date, eventTarget, eventArgument, causesValidation, validationGroup) {
674        /// <summary locid="M:J#Sys.WebForms.PageRequestManager.beginAsyncPostBack">Begins an asynchronous postback.</summary>
675        /// <param name="updatePanelsToUpdate" type="Array" elementType="String" mayBeNull="true" optional="true">A list of UniqueIDs or ClientIDs of UpdatePanel controls that should have their rendering updated.</param>
676        /// <param name="eventTarget" type="String" mayBeNull="true" optional="true"></param>
677        /// <param name="eventArgument" type="String" mayBeNull="true" optional="true"></param>
678        /// <param name="causesValidation" type="Boolean" mayBeNull="true" optional="true"></param>
679        /// <param name="validationGroup" type="String" mayBeNull="true" optional="true"></param>
680        var e = Function._validateParams(arguments, [
681            {name: "updatePanelsToUpdate", type: Array, mayBeNull: true, optional: true, elementType: String},
682            {name: "eventTarget", type: String, mayBeNull: true, optional: true},
683            {name: "eventArgument", type: String, mayBeNull: true, optional: true},
684            {name: "causesValidation", type: Boolean, mayBeNull: true, optional: true},
685            {name: "validationGroup", type: String, mayBeNull: true, optional: true}
686        ]);
687        if (e) throw e;
688        if (causesValidation && (typeof(Page_ClientValidate) === 'function') && !Page_ClientValidate(validationGroup || null)) {
689            return;
690        }
691        this._postBackSettings = this._createPostBackSettings(true, updatePanelsToUpdate, eventTarget);
692        var form = this._form;
693        form.__EVENTTARGET.value = (eventTarget || "");
694        form.__EVENTARGUMENT.value = (eventArgument || "");
695        this._isCrossPost = false;
696        this._additionalInput = null;
697        this._onFormSubmit();
698    },
699    
700    _cancelPendingCallbacks: function PageRequestManager$_cancelPendingCallbacks() {
701        for (var i = 0, l = window.__pendingCallbacks.length; i < l; i++) {
702            var callback = window.__pendingCallbacks[i];
703            if (callback) {
704                if (!callback.async) {
705                    window.__synchronousCallBackIndex = -1;
706                }
707                window.__pendingCallbacks[i] = null;
708                var callbackFrameID = "__CALLBACKFRAME" + i;
709                var xmlRequestFrame = document.getElementById(callbackFrameID);
710                if (xmlRequestFrame) {
711                    xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
712                }
713            }
714        }
715    },
716    
717    _commitControls: function PageRequestManager$_commitControls(updatePanelData, asyncPostBackTimeout) {
718        if (updatePanelData) {
719            this._updatePanelIDs = updatePanelData.updatePanelIDs;
720            this._updatePanelClientIDs = updatePanelData.updatePanelClientIDs;
721            this._updatePanelHasChildrenAsTriggers = updatePanelData.updatePanelHasChildrenAsTriggers;
722            this._asyncPostBackControlIDs = updatePanelData.asyncPostBackControlIDs;
723            this._asyncPostBackControlClientIDs = updatePanelData.asyncPostBackControlClientIDs;
724            this._postBackControlIDs = updatePanelData.postBackControlIDs;
725            this._postBackControlClientIDs = updatePanelData.postBackControlClientIDs;
726        }
727        if (typeof(asyncPostBackTimeout) !== 'undefined' && asyncPostBackTimeout !== null) {
728            this._asyncPostBackTimeout = asyncPostBackTimeout * 1000;
729        }
730    },
731    
732    _createHiddenField: function PageRequestManager$_createHiddenField(id, value) {
733        var container, field = document.getElementById(id);
734
735        if (field) {
736            if (!field._isContained) {
737                field.parentNode.removeChild(field);
738            }
739            else {
740                container = field.parentNode;
741            }
742        }
743        if (!container) {
744            container = document.createElement('span');
745            container.style.cssText = "display:none !important";
746            this._form.appendChild(container);
747        }
748        container.innerHTML = "<input type='hidden' />";
749        field = container.childNodes[0];
750        field._isContained = true;
751        field.id = field.name = id;
752        field.value = value;
753    },
754
755    _createPageRequestManagerTimeoutError: function PageRequestManager$_createPageRequestManagerTimeoutError() {
756        var displayMessage = "Sys.WebForms.PageRequestManagerTimeoutException: " + Sys.WebForms.Res.PRM_TimeoutError;
757        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerTimeoutException'});
758        e.popStackFrame();
759        return e;
760    },
761
762    _createPageRequestManagerServerError: function PageRequestManager$_createPageRequestManagerServerError(httpStatusCode, message) {
763        var displayMessage = "Sys.WebForms.PageRequestManagerServerErrorException: " +
764            (message || String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
765        var e = Error.create(displayMessage, {
766            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
767            httpStatusCode: httpStatusCode
768        });
769        e.popStackFrame();
770        return e;
771    },
772
773    _createPageRequestManagerParserError: function PageRequestManager$_createPageRequestManagerParserError(parserErrorMessage) {
774        var displayMessage = "Sys.WebForms.PageRequestManagerParserErrorException: " + String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
775        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerParserErrorException'});
776        e.popStackFrame();
777        return e;
778    },
779
780    _createPanelID: function PageRequestManager$_createPanelID(panelsToUpdate, postBackSettings) {
781        var asyncTarget = postBackSettings.asyncTarget,
782            toUpdate = this._ensureUniqueIds(panelsToUpdate || postBackSettings.panelsToUpdate),
783            panelArg = (toUpdate instanceof Array)
784                ? toUpdate.join(',')
785                : (toUpdate || this._scriptManagerID);
786        if (asyncTarget) {
787            panelArg += "|" + asyncTarget;
788        }
789        return encodeURIComponent(this._scriptManagerID) + '=' + encodeURIComponent(panelArg) + '&';
790    },
791
792    _createPostBackSettings: function PageRequestManager$_createPostBackSettings(async, panelsToUpdate, asyncTarget, sourceElement) {
793        return { async:async, asyncTarget: asyncTarget, panelsToUpdate: panelsToUpdate, sourceElement: sourceElement };
794    },
795
796    _convertToClientIDs: function PageRequestManager$_convertToClientIDs(source, destinationIDs, destinationClientIDs, version4) {
797        if (source) {
798            for (var i = 0, l = source.length; i < l; i += (version4 ? 2 : 1)) {
799                var uniqueID = source[i],
800                    clientID = (version4 ? source[i+1] : "") || this._uniqueIDToClientID(uniqueID);
801                Array.add(destinationIDs, uniqueID);
802                Array.add(destinationClientIDs, clientID);
803            }
804        }
805    },
806
807    dispose: function PageRequestManager$dispose() {
808        Sys.Observer.clearEventHandlers(this);
809        if (this._form) {
810            Sys.UI.DomEvent.removeHandler(this._form, 'submit', this._onFormSubmitHandler);
811            Sys.UI.DomEvent.removeHandler(this._form, 'click', this._onFormElementClickHandler);
812            Sys.UI.DomEvent.removeHandler(window, 'unload', this._onWindowUnloadHandler);
813            Sys.UI.DomEvent.removeHandler(window, 'load', this._pageLoadedHandler);
814        }
815
816        if (this._originalDoPostBack) {
817            window.__doPostBack = this._originalDoPostBack;
818            this._originalDoPostBack = null;
819        }
820        if (this._originalDoPostBackWithOptions) {
821            window.WebForm_DoPostBackWithOptions = this._originalDoPostBackWithOptions;
822            this._originalDoPostBackWithOptions = null;
823        }
824        if (this._originalFireDefaultButton) {
825            window.WebForm_FireDefaultButton = this._originalFireDefaultButton;
826            this._originalFireDefaultButton = null;
827        }
828        if (this._originalDoCallback) {
829            window.WebForm_DoCallback = this._originalDoCallback;
830            this._originalDoCallback = null;
831        }
832
833        this._form = null;
834        this._updatePanelIDs = null;
835        this._updatePanelClientIDs = null;
836        this._asyncPostBackControlIDs = null;
837        this._asyncPostBackControlClientIDs = null;
838        this._postBackControlIDs = null;
839        this._postBackControlClientIDs = null;
840        this._asyncPostBackTimeout = null;
841        this._scrollPosition = null;
842    },
843    
844    _doCallback: function PageRequestManager$_doCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
845        if (!this.get_isInAsyncPostBack()) {
846            this._originalDoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync);
847        }
848    },
849
850    _doPostBack: function PageRequestManager$_doPostBack(eventTarget, eventArgument) {
851        this._additionalInput = null;
852
853        var form = this._form;
854        if ((eventTarget === null) || (typeof(eventTarget) === "undefined") || (this._isCrossPost)) {
855            this._postBackSettings = this._createPostBackSettings(false);
856            this._isCrossPost = false;
857        }
858        else {
859            var mpUniqueID = this._masterPageUniqueID;
860            var clientID = this._uniqueIDToClientID(eventTarget);
861            var postBackElement = document.getElementById(clientID);
862            if (!postBackElement && mpUniqueID) {
863                if (clientID.indexOf(mpUniqueID + "$") === 0) {
864                    postBackElement = document.getElementById(clientID.substr(mpUniqueID.length + 1));
865                }
866            }
867            if (!postBackElement) {
868                if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
869                    this._postBackSettings = this._createPostBackSettings(true, null, eventTarget);
870                }
871                else {
872                    if (Array.contains(this._postBackControlIDs, eventTarget)) {
873                        this._postBackSettings = this._createPostBackSettings(false);
874                    }
875                    else {
876                        var nearestUniqueIDMatch = this._findNearestElement(eventTarget);
877                        if (nearestUniqueIDMatch) {
878                            this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
879                        }
880                        else {
881                            if (mpUniqueID) {
882                                mpUniqueID += "$";
883                                if (eventTarget.indexOf(mpUniqueID) === 0) {
884                                    nearestUniqueIDMatch = this._findNearestElement(eventTarget.substr(mpUniqueID.length));
885                                }
886                            }
887                            if (nearestUniqueIDMatch) {
888                                this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
889                            }
890                            else {
891                                this._postBackSettings = this._createPostBackSettings(false);
892                            }
893                        }
894                    }
895                }
896            }
897            else {
898                this._postBackSettings = this._getPostBackSettings(postBackElement, eventTarget);
899            }
900        }
901
902        if (!this._postBackSettings.async) {
903            form.onsubmit = this._onsubmit;
904            this._originalDoPostBack(eventTarget, eventArgument);
905            form.onsubmit = null;
906            return;
907        }
908
909        form.__EVENTTARGET.value = eventTarget;
910        form.__EVENTARGUMENT.value = eventArgument;
911        this._onFormSubmit();
912    },
913
914    _doPostBackWithOptions: function PageRequestManager$_doPostBackWithOptions(options) {
915        this._isCrossPost = options && options.actionUrl;
916        this._originalDoPostBackWithOptions(options);
917    },
918
919    _elementContains: function PageRequestManager$_elementContains(container, element) {
920        while (element) {
921            if (element === container) {
922                return true;
923            }
924            element = element.parentNode;
925        }
926        return false;
927    },
928
929    _endPostBack: function PageRequestManager$_endPostBack(error, executor, data) {
930        if (this._request === executor.get_webRequest()) {
931            this._processingRequest = false;
932            this._additionalInput = null;
933            this._request = null;
934        }
935
936        var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
937        Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
938        if (error && !eventArgs.get_errorHandled()) {
939            throw error;
940        }
941    },
942
943    _ensureUniqueIds: function PageRequestManager$_ensureUniqueIds(ids) {
944        if (!ids) return ids;
945        ids = ids instanceof Array ? ids : [ids];
946        var uniqueIds = [];
947        for (var i = 0, l = ids.length; i < l; i++) {
948            var id = ids[i], index = Array.indexOf(this._updatePanelClientIDs, id);
949            uniqueIds.push(index > -1 ? this._updatePanelIDs[index] : id);
950        }
951        return uniqueIds;
952    },
953
954    _findNearestElement: function PageRequestManager$_findNearestElement(uniqueID) {
955        while (uniqueID.length > 0) {
956            var clientID = this._uniqueIDToClientID(uniqueID);
957            var element = document.getElementById(clientID);
958            if (element) {
959                return element;
960            }
961            var indexOfLastDollar = uniqueID.lastIndexOf('$');
962            if (indexOfLastDollar === -1) {
963                return null;
964            }
965            uniqueID = uniqueID.substring(0, indexOfLastDollar);
966        }
967        return null;
968    },
969
970    _findText: function PageRequestManager$_findText(text, location) {
971        var startIndex = Math.max(0, location - 20);
972        var endIndex = Math.min(text.length, location + 20);
973        return text.substring(startIndex, endIndex);
974    },
975    
976    _fireDefaultButton: function PageRequestManager$_fireDefaultButton(event, target) {
977        if (event.keyCode === 13) {
978            var src = event.srcElement || event.target;
979            if (!src || (src.tagName.toLowerCase() !== "textarea")) {
980                var defaultButton = document.getElementById(target);
981
982                if (defaultButton && (typeof(defaultButton.click) !== "undefined")) {
983                    
984                    
985                    this._activeDefaultButton = defaultButton;
986                    this._activeDefaultButtonClicked = false;
987                    try {
988                        defaultButton.click();
989                    }
990                    finally {
991                        this._activeDefaultButton = null;
992                    }
993                    
994                    
995                    event.cancelBubble = true;
996                    if (typeof(event.stopPropagation) === "function") {
997                        event.stopPropagation();
998                    }
999                    return false;
1000                }
1001            }
1002        }
1003        return true;
1004    },
1005
1006    _getPageLoadedEventArgs: function PageRequestManager$_getPageLoadedEventArgs(initialLoad, data) {
1007
1008        var updated = [];
1009        var created = [];
1010        var version4 = data ? data.version4 : false;
1011        var upData = data ? data.updatePanelData : null;
1012
1013        var newIDs, newClientIDs, childIDs, refreshedIDs;
1014
1015        if (!upData) {
1016            newIDs = this._updatePanelIDs;
1017            newClientIDs = this._updatePanelClientIDs;
1018            childIDs = null;
1019            refreshedIDs = null;
1020        }
1021        else {
1022            newIDs = upData.updatePanelIDs;
1023            newClientIDs = upData.updatePanelClientIDs;
1024            childIDs = upData.childUpdatePanelIDs;
1025            refreshedIDs = upData.panelsToRefreshIDs;
1026        }
1027
1028        var i, l, uniqueID, clientID;
1029        if (refreshedIDs) {
1030            for (i = 0, l = refreshedIDs.length; i < l; i += (version4 ? 2 : 1)) {
1031                uniqueID = refreshedIDs[i];
1032                clientID = (version4 ? refreshedIDs[i+1] : "") || this._uniqueIDToClientID(uniqueID);
1033                Array.add(updated, document.getElementById(clientID));
1034            }
1035        }
1036
1037        for (i = 0, l = newIDs.length; i < l; i++) {
1038            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) !== -1) {
1039                Array.add(created, document.getElementById(newClientIDs[i]));
1040            }
1041        }
1042
1043        return new Sys.WebForms.PageLoadedEventArgs(updated, created, data ? data.dataItems : {});
1044    },
1045
1046    _getPageLoadingEventArgs: function PageRequestManager$_getPageLoadingEventArgs(data) {
1047
1048        var updated = [],
1049            deleted = [],
1050            upData = data.updatePanelData,
1051            oldIDs = upData.oldUpdatePanelIDs,
1052            oldClientIDs = upData.oldUpdatePanelClientIDs,
1053            newIDs = upData.updatePanelIDs,
1054            childIDs = upData.childUpdatePanelIDs,
1055            refreshedIDs = upData.panelsToRefreshIDs,
1056            i, l, uniqueID, clientID,
1057            version4 = data.version4;
1058        for (i = 0, l = refreshedIDs.length; i < l; i += (version4 ? 2 : 1)) {
1059            uniqueID = refreshedIDs[i];
1060            clientID = (version4 ? refreshedIDs[i+1] : "") || this._uniqueIDToClientID(uniqueID);
1061            Array.add(updated, document.getElementById(clientID));
1062        }
1063
1064        for (i = 0, l = oldIDs.length; i < l; i++) {
1065            uniqueID = oldIDs[i];
1066            if (Array.indexOf(refreshedIDs, uniqueID) === -1 &&
1067                (Array.indexOf(newIDs, uniqueID) === -1 || Array.indexOf(childIDs, uniqueID) > -1)) {
1068                Array.add(deleted, document.getElementById(oldClientIDs[i]));
1069            }
1070        }
1071
1072        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, data.dataItems);
1073    },
1074
1075    _getPostBackSettings: function PageRequestManager$_getPostBackSettings(element, elementUniqueID) {
1076
1077        var originalElement = element;
1078
1079        var proposedSettings = null;
1080
1081        while (element) {
1082            if (element.id) {
1083                if (!proposedSettings && Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
1084                    proposedSettings = this._createPostBackSettings(true, null, elementUniqueID, originalElement);
1085                }
1086                else {
1087                    if (!proposedSettings && Array.contains(this._postBackControlClientIDs, element.id)) {
1088                        return this._createPostBackSettings(false);
1089                    }
1090                    else {
1091                        var indexOfPanel = Array.indexOf(this._updatePanelClientIDs, element.id);
1092                        if (indexOfPanel !== -1) {
1093                            if (this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
1094
1095                                return this._createPostBackSettings(true, [this._updatePanelIDs[indexOfPanel]], elementUniqueID, originalElement);
1096                            }
1097                            else {
1098                                return this._createPostBackSettings(true, null, elementUniqueID, originalElement);
1099                            }
1100                        }
1101                    }
1102                }
1103
1104                if (!proposedSettings && this._matchesParentIDInList(element.id, this._asyncPostBackControlClientIDs)) {
1105                    proposedSettings = this._createPostBackSettings(true, null, elementUniqueID, originalElement);
1106                }
1107                else {
1108                    if (!proposedSettings && this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) {
1109                        return this._createPostBackSettings(false);
1110                    }
1111                }
1112            }
1113
1114            element = element.parentNode;
1115        }
1116
1117        if (!proposedSettings) {
1118            return this._createPostBackSettings(false);
1119        }
1120        else {
1121            return proposedSettings;
1122        }
1123    },
1124
1125    _getScrollPosition: function PageRequestManager$_getScrollPosition() {
1126        var d = document.documentElement;
1127        if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
1128            return {
1129                x: d.scrollLeft,
1130                y: d.scrollTop
1131            };
1132        }
1133        else {
1134            d = document.body;
1135            if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
1136                return {
1137                    x: d.scrollLeft,
1138                    y: d.scrollTop
1139                };
1140            }
1141            else {
1142                if (this._validPosition(window.pageXOffset) || this._validPosition(window.pageYOffset)) {
1143                    return {
1144                        x: window.pageXOffset,
1145                        y: window.pageYOffset
1146                    };
1147                }
1148                else {
1149                    return {
1150                        x: 0,
1151                        y: 0
1152                    };
1153                }
1154            }
1155        }
1156    },
1157
1158    _initializeInternal: function PageRequestManager$_initializeInternal(scriptManagerID, formElement, updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout, masterPageUniqueID) {
1159        if (this._prmInitialized) {
1160            throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
1161        }
1162        this._prmInitialized = true;
1163        this._masterPageUniqueID = masterPageUniqueID;
1164        this._scriptManagerID = scriptManagerID;
1165        this._form = Sys.UI.DomElement.resolveElement(formElement);
1166        this._onsubmit = this._form.onsubmit;
1167        this._form.onsubmit = null;
1168        this._onFormSubmitHandler = Function.createDelegate(this, this._onFormSubmit);
1169        this._onFormElementClickHandler = Function.createDelegate(this, this._onFormElementClick);
1170        this._onWindowUnloadHandler = Function.createDelegate(this, this._onWindowUnload);
1171        Sys.UI.DomEvent.addHandler(this._form, 'submit', this._onFormSubmitHandler);
1172        Sys.UI.DomEvent.addHandler(this._form, 'click', this._onFormElementClickHandler);
1173        Sys.UI.DomEvent.addHandler(window, 'unload', this._onWindowUnloadHandler);
1174
1175        this._originalDoPostBack = window.__doPostBack;
1176        if (this._originalDoPostBack) {
1177            window.__doPostBack = Function.createDelegate(this, this._doPostBack);
1178        }
1179        this._originalDoPostBackWithOptions = window.WebForm_DoPostBackWithOptions;
1180        if (this._originalDoPostBackWithOptions) {
1181            window.WebForm_DoPostBackWithOptions = Function.createDelegate(this, this._doPostBackWithOptions);
1182        }
1183        this._originalFireDefaultButton = window.WebForm_FireDefaultButton;
1184        if (this._originalFireDefaultButton) {
1185            window.WebForm_FireDefaultButton = Function.createDelegate(this, this._fireDefaultButton);
1186        }
1187        this._originalDoCallback = window.WebForm_DoCallback;
1188        if (this._originalDoCallback) {
1189            window.WebForm_DoCallback = Function.createDelegate(this, this._doCallback);
1190        }
1191
1192        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoadedInitialLoad);
1193        Sys.UI.DomEvent.addHandler(window, 'load', this._pageLoadedHandler);
1194        if (updatePanelIDs) {
1195            this._updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout, true);
1196        }
1197    },
1198
1199    _matchesParentIDInList: function PageRequestManager$_matchesParentIDInList(clientID, parentIDList) {
1200        for (var i = 0, l = parentIDList.length; i < l; i++) {
1201            if (clientID.startsWith(parentIDList[i] + "_")) {
1202                return true;
1203            }
1204        }
1205        return false;
1206    },
1207    
1208    _onFormElementActive: function PageRequestManager$_onFormElementActive(element, offsetX, offsetY) {
1209        if (element.disabled) {
1210            return;
1211        }
1212
1213        this._postBackSettings = this._getPostBackSettings(element, element.name);
1214
1215        if (element.name) {
1216            var tagName = element.tagName.toUpperCase();
1217            if (tagName === 'INPUT') {
1218                var type = element.type;
1219                if (type === 'submit') {
1220                    this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
1221                }
1222                else if (type === 'image') {
1223                    this._additionalInput = encodeURIComponent(element.name) + '.x=' + offsetX + '&' + encodeURIComponent(element.name) + '.y=' + offsetY;
1224                }
1225            }
1226            else if ((tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
1227                this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
1228            }
1229        }
1230    },
1231
1232    _onFormElementClick: function PageRequestManager$_onFormElementClick(evt) {
1233        this._activeDefaultButtonClicked = (evt.target === this._activeDefaultButton);
1234        this._onFormElementActive(evt.target, evt.offsetX, evt.offsetY);
1235    },
1236
1237    _onFormSubmit: function PageRequestManager$_onFormSubmit(evt) {
1238        var i, l, continueSubmit = true,
1239            isCrossPost = this._isCrossPost;
1240        this._isCrossPost = false;
1241
1242        if (this._onsubmit) {
1243            continueSubmit = this._onsubmit();
1244        }
1245
1246        if (continueSubmit) {
1247            for (i = 0, l = this._onSubmitStatements.length; i < l; i++) {
1248                if (!this._onSubmitStatements[i]()) {
1249                    continueSubmit = false;
1250                    break;
1251                }
1252            }
1253        }
1254
1255        if (!continueSubmit) {
1256            if (evt) {
1257                evt.preventDefault();
1258            }
1259            return;
1260        }
1261
1262        var form = this._form;
1263        if (isCrossPost) {
1264            return;
1265        }
1266
1267        if (this._activeDefaultButton && !this._activeDefaultButtonClicked) {
1268            this._onFormElementActive(this._activeDefaultButton, 0, 0);
1269        }
1270
1271        if (!this._postBackSettings || !this._postBackSettings.async) {
1272            return;
1273        }
1274
1275        var formBody = new Sys.StringBuilder(),
1276            count = form.elements.length,
1277            panelID = this._createPanelID(null, this._postBackSettings);
1278        formBody.append(panelID);
1279
1280        for (i = 0; i < count; i++) {
1281            var element = form.elements[i];
1282            var name = element.name;
1283            if (typeof(name) === "undefined" || (name === null) || (name.length === 0) || (name === this._scriptManagerID)) {
1284                continue;
1285            }
1286
1287            var tagName = element.tagName.toUpperCase();
1288
1289            if (tagName === 'INPUT') {
1290                var type = element.type;
1291                if ((type === 'text') ||
1292                    (type === 'password') ||
1293                    (type === 'hidden') ||
1294                    (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
1295                    formBody.append(encodeURIComponent(name));
1296                    formBody.append('=');
1297                    formBody.append(encodeURIComponent(element.value));
1298                    formBody.append('&');
1299                }
1300            }
1301            else if (tagName === 'SELECT') {
1302                var optionCount = element.options.length;
1303                for (var j = 0; j < optionCount; j++) {
1304                    var option = element.options[j];
1305                    if (option.selected) {
1306                        formBody.append(encodeURIComponent(name));
1307                        formBody.append('=');
1308                        formBody.append(encodeURIComponent(option.value));
1309                        formBody.append('&');
1310                    }
1311                }
1312            }
1313            else if (tagName === 'TEXTAREA') {
1314                formBody.append(encodeURIComponent(name));
1315                formBody.append('=');
1316                formBody.append(encodeURIComponent(element.value));
1317                formBody.append('&');
1318            }
1319        }
1320
1321        formBody.append("__ASYNCPOST=true&");
1322
1323        if (this._additionalInput) {
1324            formBody.append(this._additionalInput);
1325            this._additionalInput = null;
1326        }
1327        
1328        var request = new Sys.Net.WebRequest();
1329        var action = form.action;
1330        if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
1331            var fragmentIndex = action.indexOf('#');
1332            if (fragmentIndex !== -1) {
1333                action = action.substr(0, fragmentIndex);
1334            }
1335            var queryIndex = action.indexOf('?');
1336            if (queryIndex !== -1) {
1337                var path = action.substr(0, queryIndex);
1338                if (path.indexOf("%") === -1) {
1339                    action = encodeURI(path) + action.substr(queryIndex);
1340                }
1341            }
1342            else if (action.indexOf("%") === -1) {
1343                action = encodeURI(action);
1344            }
1345        }
1346        request.set_url(action);
1347        request.get_headers()['X-MicrosoftAjax'] = 'Delta=true';
1348        request.get_headers()['Cache-Control'] = 'no-cache';
1349        request.set_timeout(this._asyncPostBackTimeout);
1350        request.add_completed(Function.createDelegate(this, this._onFormSubmitCompleted));
1351        request.set_body(formBody.toString());
1352        var panelsToUpdate, eventArgs;
1353        panelsToUpdate = this._postBackSettings.panelsToUpdate;
1354        eventArgs = new Sys.WebForms.InitializeRequestEventArgs(request, this._postBackSettings.sourceElement, panelsToUpdate);
1355        Sys.Observer.raiseEvent(this, "initializeRequest", eventArgs);
1356        continueSubmit = !eventArgs.get_cancel();
1357
1358        if (!continueSubmit) {
1359            if (evt) {
1360                evt.preventDefault();
1361            }
1362            return;
1363        }
1364        
1365        if (eventArgs && eventArgs._updated) {
1366            panelsToUpdate = eventArgs.get_updatePanelsToUpdate();
1367            request.set_body(request.get_body().replace(panelID, this._createPanelID(panelsToUpdate, this._postBackSettings)));
1368        }
1369
1370        this._scrollPosition = this._getScrollPosition();
1371
1372
1373        this.abortPostBack();
1374
1375        eventArgs = new Sys.WebForms.BeginRequestEventArgs(request, this._postBackSettings.sourceElement,
1376            panelsToUpdate || this._postBackSettings.panelsToUpdate);
1377        Sys.Observer.raiseEvent(this, "beginRequest", eventArgs);
1378        
1379        if (this._originalDoCallback) {
1380            this._cancelPendingCallbacks();
1381        }
1382
1383        this._request = request;
1384        this._processingRequest = false;
1385        request.invoke();
1386
1387        if (evt) {
1388            evt.preventDefault();
1389        }
1390    },
1391
1392    _onFormSubmitCompleted: function PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {
1393        this._processingRequest = true;
1394
1395
1396        if (sender.get_timedOut()) {
1397            this._endPostBack(this._createPageRequestManagerTimeoutError(), sender, null);
1398            return;
1399        }
1400
1401        if (sender.get_aborted()) {
1402            this._endPostBack(null, sender, null);
1403            return;
1404        }
1405
1406        if (!this._request || (sender.get_webRequest() !== this._request)) {
1407            return;
1408        }
1409
1410        if (sender.get_statusCode() !== 200) {
1411            this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()), sender, null);
1412            return;
1413        }
1414
1415        var data = this._parseDelta(sender);
1416        if (!data) return;
1417        
1418        var i, l;
1419
1420        if (data.asyncPostBackControlIDsNode && data.postBackControlIDsNode &&
1421            data.updatePanelIDsNode && data.panelsToRefreshNode && data.childUpdatePanelIDsNode) {
1422            
1423            var oldUpdatePanelIDs = this._updatePanelIDs,
1424                oldUpdatePanelClientIDs = this._updatePanelClientIDs;
1425            var childUpdatePanelIDsString = data.childUpdatePanelIDsNode.content;
1426            var childUpdatePanelIDs = childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') : [];
1427
1428            var asyncPostBackControlIDsArray = this._splitNodeIntoArray(data.asyncPostBackControlIDsNode);
1429            var postBackControlIDsArray = this._splitNodeIntoArray(data.postBackControlIDsNode);
1430            var updatePanelIDsArray = this._splitNodeIntoArray(data.updatePanelIDsNode);
1431            var panelsToRefreshIDs = this._splitNodeIntoArray(data.panelsToRefreshNode);
1432
1433            var v4 = data.version4;
1434            for (i = 0, l = panelsToRefreshIDs.length; i < l; i+= (v4 ? 2 : 1)) {
1435                var panelClientID = (v4 ? panelsToRefreshIDs[i+1] : "") || this._uniqueIDToClientID(panelsToRefreshIDs[i]);
1436                if (!document.getElementById(panelClientID)) {
1437                    this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, panelClientID)), sender, data);
1438                    return;
1439                }
1440            }
1441            
1442            var updatePanelData = this._processUpdatePanelArrays(
1443                updatePanelIDsArray,
1444                asyncPostBackControlIDsArray,
1445                postBackControlIDsArray, v4);
1446            updatePanelData.oldUpdatePanelIDs = oldUpdatePanelIDs;
1447            updatePanelData.oldUpdatePanelClientIDs = oldUpdatePanelClientIDs;
1448            updatePanelData.childUpdatePanelIDs = childUpdatePanelIDs;
1449            updatePanelData.panelsToRefreshIDs = panelsToRefreshIDs;
1450            data.updatePanelData = updatePanelData;
1451        }
1452
1453        data.dataItems = {};
1454        var node;
1455        for (i = 0, l = data.dataItemNodes.length; i < l; i++) {
1456            node = data.dataItemNodes[i];
1457            data.dataItems[node.id] = node.content;
1458        }
1459        for (i = 0, l = data.dataItemJsonNodes.length; i < l; i++) {
1460            node = data.dataItemJsonNodes[i];
1461            data.dataItems[node.id] = Sys.Serialization.JavaScriptSerializer.deserialize(node.content);
1462        }
1463
1464        var handler = Sys.Observer._getContext(this, true).events.getHandler("pageLoading");
1465        if (handler) {
1466            handler(this, this._getPageLoadingEventArgs(data));
1467        }
1468
1469
1470        
1471        Sys._ScriptLoader.readLoadedScripts();
1472
1473        Sys.Application.beginCreateComponents();
1474
1475        var scriptLoader = Sys._ScriptLoader.getInstance();
1476        this._queueScripts(scriptLoader, data.scriptBlockNodes, true, false);
1477        
1478        this._processingRequest = true;
1479
1480        scriptLoader.loadScripts(0,
1481            Function.createDelegate(this, Function.createCallback(this._scriptIncludesLoadComplete, data)),
1482            Function.createDelegate(this, Function.createCallback(this._scriptIncludesLoadFailed, data)),
1483            null);        
1484    },
1485    
1486    _onWindowUnload: function PageRequestManager$_onWindowUnload(evt) {
1487        this.dispose();
1488    },
1489
1490    _pageLoaded: function PageRequestManager$_pageLoaded(initialLoad, data) {
1491        Sys.Observer.raiseEvent(this, "pageLoaded", this._getPageLoadedEventArgs(initialLoad, data));
1492        if (!initialLoad) {
1493            Sys.Application.raiseLoad();
1494        }
1495    },
1496
1497    _pageLoadedInitialLoad: function PageRequestManager$_pageLoadedInitialLoad(evt) {
1498        this._pageLoaded(true, null);
1499    },
1500    
1501    _parseDelta: function PageRequestManager$_parseDelta(executor) {
1502        var reply = executor.get_responseData();
1503        var delimiterIndex, len, type, id, content;
1504        var replyIndex = 0;
1505        var parserErrorDetails = null;
1506        var delta = [];
1507
1508        while (replyIndex < reply.length) {
1509            delimiterIndex = reply.indexOf('|', replyIndex);
1510            if (delimiterIndex === -1) {
1511                parserErrorDetails = this._findText(reply, replyIndex);
1512                break;
1513            }
1514            len = parseInt(reply.substring(replyIndex, delimiterIndex), 10);
1515            if ((len % 1) !== 0) {
1516                parserErrorDetails = this._findText(reply, replyIndex);
1517                break;
1518            }
1519            replyIndex = delimiterIndex + 1;
1520
1521            delimiterIndex = reply.indexOf('|', replyIndex);
1522            if (delimiterIndex === -1) {
1523                parserErrorDetails = this._findText(reply, replyIndex);
1524                break;
1525            }
1526            type = reply.substring(replyIndex, delimiterIndex);
1527            replyIndex = delimiterIndex + 1;
1528
1529            delimiterIndex = reply.indexOf('|', replyIndex);
1530            if (delimiterIndex === -1) {
1531                parserErrorDetails = this._findText(reply, replyIndex);
1532                break;
1533            }
1534            id = reply.substring(replyIndex, delimiterIndex);
1535            replyIndex = delimiterIndex + 1;
1536
1537            if ((replyIndex + len) >= reply.length) {
1538                parserErrorDetails = this._findText(reply, reply.length);
1539                break;
1540            }
1541            content = reply.substr(replyIndex, len);
1542            replyIndex += len;
1543
1544            if (reply.charAt(replyIndex) !== '|') {
1545                parserErrorDetails = this._findText(reply, replyIndex);
1546                break;
1547            }
1548
1549            replyIndex++;
1550
1551            Array.add(delta, {type: type, id: id, content: content});
1552        }
1553
1554        if (parserErrorDetails) {
1555            this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails, parserErrorDetails)), executor, null);
1556            return null;
1557        }
1558
1559        var updatePanelNodes = [];
1560        var hiddenFieldNodes = [];
1561        var arrayDeclarationNodes = [];
1562        var scriptBlockNodes = [];
1563        var scriptStartupNodes = [];
1564        var expandoNodes = [];
1565        var onSubmitNodes = [];
1566        var dataItemNodes = [];
1567        var dataItemJsonNodes = [];
1568        var scriptDisposeNodes = [];
1569        var asyncPostBackControlIDsNode, postBackControlIDsNode,
1570            updatePanelIDsNode, asyncPostBackTimeoutNode,
1571            childUpdatePanelIDsNode, panelsToRefreshNode, formActionNode,
1572            versionNode;
1573
1574        for (var i = 0, l = delta.length; i < l; i++) {
1575            var deltaNode = delta[i];
1576            switch (deltaNode.type) {
1577                case "#":
1578                    versionNode = deltaNode;
1579                    break;
1580                case "updatePanel":
1581                    Array.add(updatePanelNodes, deltaNode);
1582                    break;
1583                case "hiddenField":
1584                    Array.add(hiddenFieldNodes, deltaNode);
1585                    break;
1586                case "arrayDeclaration":
1587                    Array.add(arrayDeclarationNodes, deltaNode);
1588                    break;
1589                case "scriptBlock":
1590                    Array.add(scriptBlockNodes, deltaNode);
1591                    break;
1592                case "scriptStartupBlock":
1593                    Array.add(scriptStartupNodes, deltaNode);
1594                    break;
1595                case "expando":
1596                    Array.add(expandoNodes, deltaNode);
1597                    break;
1598                case "onSubmit":
1599                    Array.add(onSubmitNodes, deltaNode);
1600                    break;
1601                case "asyncPostBackControlIDs":
1602                    asyncPostBackControlIDsNode = deltaNode;
1603                    break;
1604                case "postBackControlIDs":
1605                    postBackControlIDsNode = deltaNode;
1606                    break;
1607                case "updatePanelIDs":
1608                    updatePanelIDsNode = deltaNode;
1609                    break;
1610                case "asyncPostBackTimeout":
1611                    asyncPostBackTimeoutNode = deltaNode;
1612                    break;
1613                case "childUpdatePanelIDs":
1614                    childUpdatePanelIDsNode = deltaNode;
1615                    break;
1616                case "panelsToRefreshIDs":
1617                    panelsToRefreshNode = deltaNode;
1618                    break;
1619                case "formAction":
1620                    formActionNode = deltaNode;
1621                    break;
1622                case "dataItem":
1623                    Array.add(dataItemNodes, deltaNode);
1624                    break;
1625                case "dataItemJson":
1626                    Array.add(dataItemJsonNodes, deltaNode);
1627                    break;
1628                case "scriptDispose":
1629                    Array.add(scriptDisposeNodes, deltaNode);
1630                    break;
1631                case "pageRedirect":
1632                    if (versionNode && parseFloat(versionNode.content) >= 4) {
1633                        deltaNode.content = unescape(deltaNode.content);
1634                    }
1635                    if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
1636                        var anchor = document.createElement("a");
1637                        anchor.style.display = 'none';
1638                        anchor.attachEvent("onclick", cancelBubble);
1639                        anchor.href = deltaNode.content;
1640                        this._form.parentNode.insertBefore(anchor, this._form);
1641                        anchor.click();
1642                        anchor.detachEvent("onclick", cancelBubble);
1643                        this._form.parentNode.removeChild(anchor);
1644                        
1645                        function cancelBubble(e) {
1646                            e.cancelBubble = true;
1647                        }
1648                    }
1649                    else {
1650                        window.location.href = deltaNode.content;
1651                    }
1652                    return null;
1653                case "error":
1654                    this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id), deltaNode.content), executor, null);
1655                    return null;
1656                case "pageTitle":
1657                    document.title = deltaNode.content;
1658                    break;
1659                case "focus":
1660                    this._controlIDToFocus = deltaNode.content;
1661                    break;
1662                default:
1663                    this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), executor, null);
1664                    return null;
1665            } // switch
1666        } // for (var i = 0, l = delta.length; i < l; i++)
1667        return {
1668            version4: versionNode ? (parseFloat(versionNode.content) >= 4) : false,
1669            executor: executor,
1670            updatePanelNodes: updatePanelNodes,
1671            hiddenFieldNodes: hiddenFieldNodes,
1672            arrayDeclarationNodes: arrayDeclarationNodes,
1673            scriptBlockNodes: scriptBlockNodes,
1674            scriptStartupNodes: scriptStartupNodes,
1675            expandoNodes: expandoNodes,
1676            onSubmitNodes: onSubmitNodes,
1677            dataItemNodes: dataItemNodes,
1678            dataItemJsonNodes: dataItemJsonNodes,
1679            scriptDisposeNodes: scriptDisposeNodes,
1680            asyncPostBackControlIDsNode: asyncPostBackControlIDsNode,
1681            postBackControlIDsNode: postBackControlIDsNode,
1682            updatePanelIDsNode: updatePanelIDsNode,
1683            asyncPostBackTimeoutNode: asyncPostBackTimeoutNode,
1684            childUpdatePanelIDsNode: childUpdatePanelIDsNode,
1685            panelsToRefreshNode: panelsToRefreshNode,
1686            formActionNode: formActionNode };
1687    },
1688    
1689    _processUpdatePanelArrays: function PageRequestManager$_processUpdatePanelArrays(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, version4) {
1690        var newUpdatePanelIDs, newUpdatePanelClientIDs, newUpdatePanelHasChildrenAsTriggers;
1691        
1692        if (updatePanelIDs) {
1693            var l = updatePanelIDs.length,
1694                m = version4 ? 2 : 1;
1695            newUpdatePanelIDs = new Array(l/m);
1696            newUpdatePanelClientIDs = new Array(l/m);
1697            newUpdatePanelHasChildrenAsTriggers = new Array(l/m);
1698            
1699            for (var i = 0, j = 0; i < l; i += m, j++) {
1700                var ct,
1701                    uniqueID = updatePanelIDs[i],
1702                    clientID = version4 ? updatePanelIDs[i+1] : "";
1703                ct = (uniqueID.charAt(0) === 't');
1704                uniqueID = uniqueID.substr(1);
1705                if (!clientID) {
1706                    clientID = this._uniqueIDToClientID(uniqueID);
1707                }
1708                newUpdatePanelHasChildrenAsTriggers[j] = ct;
1709                newUpdatePanelIDs[j] = uniqueID;
1710                newUpdatePanelClientIDs[j] = clientID;
1711            }
1712        }
1713        else {
1714            newUpdatePanelIDs = [];
1715            newUpdatePanelClientIDs = [];
1716            newUpdatePanelHasChildrenAsTriggers = [];
1717        }
1718
1719        var newAsyncPostBackControlIDs = [];
1720        var newAsyncPostBackControlClientIDs = [];
1721        this._convertToClientIDs(asyncPostBackControlIDs, newAsyncPostBackControlIDs, newAsyncPostBackControlClientIDs, version4);
1722
1723        var newPostBackControlIDs = [];
1724        var newPostBackControlClientIDs = [];
1725        this._convertToClientIDs(postBackControlIDs, newPostBackControlIDs, newPostBackControlClientIDs, version4);
1726        
1727        return {
1728            updatePanelIDs: newUpdatePanelIDs,
1729            updatePanelClientIDs: newUpdatePanelClientIDs,
1730            updatePanelHasChildrenAsTriggers: newUpdatePanelHasChildrenAsTriggers,
1731            asyncPostBackControlIDs: newAsyncPostBackControlIDs,
1732            asyncPostBackControlClientIDs: newAsyncPostBackControlClientIDs,
1733            postBackControlIDs: newPostBackControlIDs,
1734            postBackControlClientIDs: newPostBackControlClientIDs
1735        };
1736    },
1737    
1738    _queueScripts: function PageRequestManager$_queueScripts(scriptLoader, scriptBlockNodes, queueIncludes, queueBlocks) {
1739        for (var i = 0, l = scriptBlockNodes.length; i < l; i++) {
1740            var scriptBlockType = scriptBlockNodes[i].id;
1741            switch (scriptBlockType) {
1742                case "ScriptContentNoTags":
1743                    if (!queueBlocks) {
1744                        continue;
1745                    }
1746                    scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
1747                    break;
1748                case "ScriptContentWithTags":
1749                    var scriptTagAttributes = window.eval("(" + scriptBlockNodes[i].content + ")");
1750
1751                    if (scriptTagAttributes.src) {
1752                        if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
1753                            continue;
1754                        }
1755                    }
1756                    else if (!queueBlocks) {
1757                        continue;
1758                    }
1759
1760                    scriptLoader.queueCustomScriptTag(scriptTagAttributes);
1761                    break;
1762                case "ScriptPath":
1763                    if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
1764                        continue;
1765                    }
1766
1767                    scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
1768                    break;
1769            }
1770        }        
1771    },
1772
1773    _registerDisposeScript: function PageRequestManager$_registerDisposeScript(panelID, disposeScript) {
1774        if (!this._scriptDisposes[panelID]) {
1775            this._scriptDisposes[panelID] = [disposeScript];
1776        }
1777        else {
1778            Array.add(this._scriptDisposes[panelID], disposeScript);
1779        }
1780    },
1781    
1782    _scriptIncludesLoadComplete: function PageRequestManager$_scriptIncludesLoadComplete(scriptLoader, data) {
1783        if (data.executor.get_webRequest() !== this._request) {
1784            return;
1785        }
1786        
1787        this._commitControls(data.updatePanelData,
1788            data.asyncPostBackTimeoutNode ? data.asyncPostBackTimeoutNode.content : null);
1789
1790        if (data.formActionNode) {
1791            this._form.action = data.formActionNode.content;
1792        }
1793        
1794        var i, l, node;
1795
1796        for (i = 0, l = data.updatePanelNodes.length; i < l; i++) {
1797            node = data.updatePanelNodes[i];
1798            var updatePanelElement = document.getElementById(node.id);
1799
1800            if (!updatePanelElement) {
1801                this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, node.id)), data.executor, data);
1802                return;
1803            }
1804
1805            this._updatePanel(updatePanelElement, node.content);
1806        }
1807
1808        for (i = 0, l = data.scriptDisposeNodes.length; i < l; i++) {
1809            node = data.scriptDisposeNodes[i];
1810            this._registerDisposeScript(node.id, node.content);
1811        }
1812
1813        for (i = 0, l = this._transientFields.length; i < l; i++) {
1814            var field = document.getElementById(this._transientFields[i]);
1815            if (field) {
1816                var toRemove = field._isContained ? field.parentNode : field;
1817                toRemove.parentNode.removeChild(toRemove);
1818            }
1819        }
1820        for (i = 0, l = data.hiddenFieldNodes.length; i < l; i++) {
1821            node = data.hiddenFieldNodes[i];
1822            this._createHiddenField(node.id, node.content);
1823        }
1824        
1825        if (data.scriptsFailed) {
1826            throw Sys._ScriptLoader._errorScriptLoadFailed(data.scriptsFailed.src, data.scriptsFailed.multipleCallbacks);
1827        }
1828        
1829
1830        this._queueScripts(scriptLoader, data.scriptBlockNodes, false, true);
1831
1832        var arrayScript = '';
1833        for (i = 0, l = data.arrayDeclarationNodes.length; i < l; i++) {
1834            node = data.arrayDeclarationNodes[i];
1835            arrayScript += "Sys.WebForms.PageRequestManager._addArrayElement('" + node.id + "', " + node.content + ");\r\n";
1836        }
1837
1838        var expandoScript = '';
1839        for (i = 0, l = data.expandoNodes.length; i < l; i++) {
1840            node = data.expandoNodes[i];
1841            expandoScript += node.id + " = " + node.content + "\r\n";
1842        }
1843
1844        if (arrayScript.length) {
1845            scriptLoader.queueScriptBlock(arrayScript);
1846        }
1847        if (expandoScript.length) {
1848            scriptLoader.queueScriptBlock(expandoScript);
1849        }
1850        
1851        this._queueScripts(scriptLoader, data.scriptStartupNodes, true, true);
1852
1853        var onSubmitStatementScript = '';
1854        for (i = 0, l = data.onSubmitNodes.length; i < l; i++) {
1855            if (i === 0) {
1856                onSubmitStatementScript = 'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n';
1857            }
1858            onSubmitStatementScript += data.onSubmitNodes[i].content + "\r\n";
1859        }
1860        if (onSubmitStatementScript.length) {
1861            onSubmitStatementScript += "\r\nreturn true;\r\n});\r\n";
1862            scriptLoader.queueScriptBlock(onSubmitStatementScript);
1863        }
1864
1865        scriptLoader.loadScripts(0,
1866            Function.createDelegate(this, Function.createCallback(this._scriptsLoadComplete, data)), null, null);
1867
1868    },
1869    
1870    _scriptIncludesLoadFailed: function PageRequestManager$_scriptIncludesLoadFailed(scriptLoader, scriptElement, multipleCallbacks, data) {
1871        data.scriptsFailed = { src: scriptElement.src, multipleCallbacks: multipleCallbacks };
1872        this._scriptIncludesLoadComplete(scriptLoader, data);
1873    },
1874
1875    _scriptsLoadComplete: function PageRequestManager$_scriptsLoadComplete(scriptLoader, data) {
1876        var response = data.executor;
1877
1878        if (window.__theFormPostData) {
1879            window.__theFormPostData = "";
1880        }
1881        if (window.__theFormPostCollection) {
1882            window.__theFormPostCollection = [];
1883        }
1884        if (window.WebForm_InitCallback) {
1885            window.WebForm_InitCallback();
1886        }
1887
1888        if (this._scrollPosition) {
1889            if (window.scrollTo) {
1890                window.scrollTo(this._scrollPosition.x, this._scrollPosition.y);
1891            }
1892            this._scrollPosition = null;
1893        }
1894
1895        Sys.Application.endCreateComponents();
1896
1897        this._pageLoaded(false, data);
1898
1899        this._endPostBack(null, response, data);
1900
1901        if (this._controlIDToFocus) {
1902            var focusTarget;
1903            var oldContentEditableSetting;
1904            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
1905                var targetControl = $get(this._controlIDToFocus);
1906
1907                focusTarget = targetControl;
1908                if (targetControl && (!WebForm_CanFocus(targetControl))) {
1909                    focusTarget = WebForm_FindFirstFocusableChild(targetControl);
1910                }
1911                if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) {
1912                    oldContentEditableSetting = focusTarget.contentEditable;
1913                    focusTarget.contentEditable = false;
1914                }
1915                else {
1916                    focusTarget = null;
1917                }
1918            }
1919            WebForm_AutoFocus(this._controlIDToFocus);
1920            if (focusTarget) {
1921                focusTarget.contentEditable = oldContentEditableSetting;
1922            }
1923            this._controlIDToFocus = null;
1924        }
1925    },
1926
1927    _splitNodeIntoArray: function PageRequestManager$_splitNodeIntoArray(node) {
1928        var str = node.content;
1929        var arr = str.length ? str.split(',') : [];
1930        return arr;
1931    },
1932
1933    _uniqueIDToClientID: function PageRequestManager$_uniqueIDToClientID(uniqueID) {
1934        return uniqueID.replace(/\$/g, '_');
1935    },
1936    
1937    _updateControls: function PageRequestManager$_updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout, version4) {
1938        this._commitControls(
1939            this._processUpdatePanelArrays(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, version4),
1940            asyncPostBackTimeout);
1941    },
1942    
1943    _updatePanel: function PageRequestManager$_updatePanel(updatePanelElement, rendering) {
1944        for (var updatePanelID in this._scriptDisposes) {
1945            if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
1946                var disposeScripts = this._scriptDisposes[updatePanelID];
1947                for (var i = 0, l = disposeScripts.length; i < l; i++) {
1948                    window.eval(disposeScripts[i]);
1949                }
1950
1951                delete this._scriptDisposes[updatePanelID];
1952            }
1953        }
1954
1955        Sys.Application.disposeElement(updatePanelElement, true);
1956
1957        updatePanelElement.innerHTML = rendering;
1958    },
1959
1960    _validPosition: function PageRequestManager$_validPosition(position) {
1961        return (typeof(position) !== "undefined") && (position !== null) && (position !== 0);
1962    }
1963}
1964
1965$type.getInstance = function PageRequestManager$getInstance() {
1966    /// <summary locid="M:J#Sys.WebForms.PageRequestManager.getInstance">Gets the current instance of the PageRequestManager.</summary>
1967    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
1968    if (arguments.length !== 0) throw Error.parameterCount();
1969    var prm = Sys.WebForms.PageRequestManager._instance;
1970    if (!prm) {
1971        prm = Sys.WebForms.PageRequestManager._instance = new Sys.WebForms.PageRequestManager();
1972    }
1973    return prm;
1974}
1975
1976$type._addArrayElement = function PageRequestManager$_addArrayElement(arrayName) {
1977    if (!window[arrayName]) {
1978        window[arrayName] = new Array();
1979    }
1980
1981    for (var i = 1, l = arguments.length; i < l; i++) {
1982        Array.add(window[arrayName], arguments[i]);
1983    }
1984}
1985
1986$type._initialize = function PageRequestManager$_initialize() {
1987    var prm = Sys.WebForms.PageRequestManager.getInstance();
1988    prm._initializeInternal.apply(prm, arguments);
1989}
1990
1991$type.registerClass('Sys.WebForms.PageRequestManager');
1992$type = Sys.UI._UpdateProgress = function _UpdateProgress(element) {
1993    Sys.UI._UpdateProgress.initializeBase(this,[element]);
1994    this._displayAfter = 500;
1995    this._dynamicLayout = true;
1996    this._associatedUpdatePanelId = null;
1997    this._beginRequestHandlerDelegate = null;
1998    this._startDelegate = null;
1999    this._endRequestHandlerDelegate = null;
2000    this._pageRequestManager = null;
2001    this._timerCookie = null;
2002}
2003$type.prototype = {
2004    get_displayAfter: function _UpdateProgress$get_displayAfter() {
2005        /// <value type="Number" locid="P:J#Sys.UI._UpdateProgress.displayAfter"></value>
2006        if (arguments.length !== 0) throw Error.parameterCount();
2007        return this._displayAfter;
2008    },
2009    set_displayAfter: function _UpdateProgress$set_displayAfter(value) {
2010        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
2011        if (e) throw e;
2012        this._displayAfter = value;
2013    },
2014    get_dynamicLayout: function _UpdateProgress$get_dynamicLayout() {
2015        /// <value type="Boolean" locid="P:J#Sys.UI._UpdateProgress.dynamicLayout"></value>
2016        if (arguments.length !== 0) throw Error.parameterCount();
2017        return this._dynamicLayout;
2018    },
2019    set_dynamicLayout: function _UpdateProgress$set_dynamicLayout(value) {
2020        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
2021        if (e) throw e;
2022        this._dynamicLayout = value;
2023    },
2024    get_associatedUpdatePanelId: function _UpdateProgress$get_associatedUpdatePanelId() {
2025        /// <value type="String" mayBeNull="true" locid="P:J#Sys.UI._UpdateProgress.associatedUpdatePanelId"></value>
2026        if (arguments.length !== 0) throw Error.parameterCount();
2027        return this._associatedUpdatePanelId;
2028    },
2029    set_associatedUpdatePanelId: function _UpdateProgress$set_associatedUpdatePanelId(value) {
2030        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
2031        if (e) throw e;
2032        this._associatedUpdatePanelId = value;
2033    },
2034    get_role: function _UpdateProgress$get_role() {
2035        /// <value type="String" locid="P:J#Sys.UI._UpdateProgress.role"></value>
2036        if (arguments.length !== 0) throw Error.parameterCount();
2037        return "status";
2038    },
2039    _clearTimeout: function _UpdateProgress$_clearTimeout() {
2040        if (this._timerCookie) {
2041            window.clearTimeout(this._timerCookie);
2042            this._timerCookie = null;
2043        }
2044    },
2045    _getUniqueID: function _UpdateProgress$_getUniqueID(clientID) {
2046        var i = Array.indexOf(this._pageRequestManager._updatePanelClientIDs, clientID);
2047        return i === -1 ? null : this._pageRequestManager._updatePanelIDs[i];
2048    },
2049    _handleBeginRequest: function _UpdateProgress$_handleBeginRequest(sender, arg) {
2050        var curElem = arg.get_postBackElement(),
2051            showProgress = true,
2052            upID = this._associatedUpdatePanelId;
2053        if (this._associatedUpdatePanelId) {
2054            var updating = arg.get_updatePanelsToUpdate();
2055            if (updating && updating.length) {
2056                showProgress = (Array.contains(updating, upID) || Array.contains(updating, this._getUniqueID(upID)))
2057            }
2058            else {
2059                showProgress = false;
2060            }
2061        }
2062        while (!showProgress && curElem) {
2063            if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
2064                showProgress = true; 
2065            }
2066            curElem = curElem.parentNode; 
2067        } 
2068        if (showProgress) {
2069            this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
2070        }
2071    },
2072    _startRequest: function _UpdateProgress$_startRequest() {
2073        if (this._pageRequestManager.get_isInAsyncPostBack()) {
2074            var element = this.get_element();
2075            if (this._dynamicLayout) {
2076                element.style.display = 'block';
2077            }
2078            else {
2079                element.style.visibility = 'visible';
2080            }
2081            if (this.get_role() === "status") {
2082                element.setAttribute("aria-hidden", "false");
2083            }
2084        }
2085        this._timerCookie = null;
2086    },
2087    _handleEndRequest: function _UpdateProgress$_handleEndRequest(sender, arg) {
2088        var element = this.get_element();
2089        if (this._dynamicLayout) {
2090            element.style.display = 'none';
2091        }
2092        else {
2093            element.style.visibility = 'hidden';
2094        }
2095        if (this.get_role() === "status") {
2096            element.setAttribute("aria-hidden", "true");
2097        }
2098        this._clearTimeout();
2099    },
2100    dispose: function _UpdateProgress$dispose() {
2101        if (this._beginRequestHandlerDelegate !== null) {
2102            this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
2103            this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
2104            this._beginRequestHandlerDelegate = null;
2105            this._endRequestHandlerDelegate = null;
2106        }
2107        this._clearTimeout();
2108        Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
2109    },
2110    initialize: function _UpdateProgress$initialize() {
2111        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
2112        if (this.get_role() === "status") {
2113            this.get_element().setAttribute("aria-hidden", "true");
2114        }
2115    	this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
2116    	this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
2117    	this._startDelegate = Function.createDelegate(this, this._startRequest);
2118    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
2119           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
2120    	}
2121    	if (this._pageRequestManager !== null ) {
2122    	    this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
2123    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
2124    	}
2125    }
2126}
2127$type.registerClass('Sys.UI._UpdateProgress', Sys.UI.Control);
2128
2129}
2130
2131if (window.Sys && Sys.loader) {
2132	Sys.loader.registerScript("WebForms", ["ComponentModel", "Serialization", "Network"], execute);
2133}
2134else {
2135	execute();
2136}
2137
2138})();
2139
2140Type.registerNamespace('Sys.WebForms');
2141Sys.WebForms.Res={
2142"PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. If it is being updated dynamically then it must be inside another UpdatePanel.",
2143"PRM_ServerError":"An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}",
2144"PRM_ParserError":"The message received from the server could not be parsed.",
2145"PRM_TimeoutError":"The server request timed out.",
2146"PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized more than once.",
2147"PRM_UnknownToken":"Unknown token: \u0027{0}\u0027.",
2148"PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. If it is being updated dynamically then it must be inside another UpdatePanel.",
2149"PRM_ServerError":"An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}",
2150"PRM_ParserError":"The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}",
2151"PRM_TimeoutError":"The server request timed out.",
2152"PRM_ParserErrorDetails":"Error parsing near \u0027{0}\u0027.",
2153"PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized more than once."
2154};
2155
2156if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.