PageSourceSearch

https://hussainiat.com/ScriptResource.axd?d=uxsMt8PWaQdskIQlvI4Nz7…EuuXs2MSaY7BFsiW3_N70cH5kMZT5Ey0&t=559a934d

js hussainiat.com collected 2026-09-24 09:47:51 UTC 312,837 bytes, 6,890 lines download raw bytes

1// Name:        MicrosoftAjax.debug.js
2// Assembly:    System.Web.Extensions
3// Version:     3.5.0.0
4// FileVersion: 3.5.30729.8966
5//-----------------------------------------------------------------------
6// Copyright (C) Microsoft Corporation. All rights reserved.
7//-----------------------------------------------------------------------
8// MicrosoftAjax.js
9// Microsoft AJAX Framework.
10 
11Function.__typeName = 'Function';
12Function.__class = true;
13Function.createCallback = function Function$createCallback(method, context) {
14    /// <summary locid="M:J#Function.createCallback" />
15    /// <param name="method" type="Function"></param>
16    /// <param name="context" mayBeNull="true"></param>
17    /// <returns type="Function"></returns>
18    var e = Function._validateParams(arguments, [
19        {name: "method", type: Function},
20        {name: "context", mayBeNull: true}
21    ]);
22    if (e) throw e;
23    return function() {
24        var l = arguments.length;
25        if (l > 0) {
26            var args = [];
27            for (var i = 0; i < l; i++) {
28                args[i] = arguments[i];
29            }
30            args[l] = context;
31            return method.apply(this, args);
32        }
33        return method.call(this, context);
34    }
35}
36Function.createDelegate = function Function$createDelegate(instance, method) {
37    /// <summary locid="M:J#Function.createDelegate" />
38    /// <param name="instance" mayBeNull="true"></param>
39    /// <param name="method" type="Function"></param>
40    /// <returns type="Function"></returns>
41    var e = Function._validateParams(arguments, [
42        {name: "instance", mayBeNull: true},
43        {name: "method", type: Function}
44    ]);
45    if (e) throw e;
46    return function() {
47        return method.apply(instance, arguments);
48    }
49}
50Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() {
51    /// <summary locid="M:J#Function.emptyMethod" />
52    if (arguments.length !== 0) throw Error.parameterCount();
53}
54Function._validateParams = function Function$_validateParams(params, expectedParams) {
55    var e;
56    e = Function._validateParameterCount(params, expectedParams);
57    if (e) {
58        e.popStackFrame();
59        return e;
60    }
61    for (var i=0; i < params.length; i++) {
62        var expectedParam = expectedParams[Math.min(i, expectedParams.length - 1)];
63        var paramName = expectedParam.name;
64        if (expectedParam.parameterArray) {
65            paramName += "[" + (i - expectedParams.length + 1) + "]";
66        }
67        e = Function._validateParameter(params[i], expectedParam, paramName);
68        if (e) {
69            e.popStackFrame();
70            return e;
71        }
72    }
73    return null;
74}
75Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams) {
76    var maxParams = expectedParams.length;
77    var minParams = 0;
78    for (var i=0; i < expectedParams.length; i++) {
79        if (expectedParams[i].parameterArray) {
80            maxParams = Number.MAX_VALUE;
81        }
82        else if (!expectedParams[i].optional) {
83            minParams++;
84        }
85    }
86    if (params.length < minParams || params.length > maxParams) {
87        var e = Error.parameterCount();
88        e.popStackFrame();
89        return e;
90    }
91    return null;
92}
93Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
94    var e;
95    var expectedType = expectedParam.type;
96    var expectedInteger = !!expectedParam.integer;
97    var expectedDomElement = !!expectedParam.domElement;
98    var mayBeNull = !!expectedParam.mayBeNull;
99    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
100    if (e) {
101        e.popStackFrame();
102        return e;
103    }
104    var expectedElementType = expectedParam.elementType;
105    var elementMayBeNull = !!expectedParam.elementMayBeNull;
106    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
107        (expectedElementType || !elementMayBeNull)) {
108        var expectedElementInteger = !!expectedParam.elementInteger;
109        var expectedElementDomElement = !!expectedParam.elementDomElement;
110        for (var i=0; i < param.length; i++) {
111            var elem = param[i];
112            e = Function._validateParameterType(elem, expectedElementType,
113                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
114                paramName + "[" + i + "]");
115            if (e) {
116                e.popStackFrame();
117                return e;
118            }
119        }
120    }
121    return null;
122}
123Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
124    var e;
125    if (typeof(param) === "undefined") {
126        if (mayBeNull) {
127            return null;
128        }
129        else {
130            e = Error.argumentUndefined(paramName);
131            e.popStackFrame();
132            return e;
133        }
134    }
135    if (param === null) {
136        if (mayBeNull) {
137            return null;
138        }
139        else {
140            e = Error.argumentNull(paramName);
141            e.popStackFrame();
142            return e;
143        }
144    }
145    if (expectedType && expectedType.__enum) {
146        if (typeof(param) !== 'number') {
147            e = Error.argumentType(paramName, Object.getType(param), expectedType);
148            e.popStackFrame();
149            return e;
150        }
151        if ((param % 1) === 0) {
152            var values = expectedType.prototype;
153            if (!expectedType.__flags || (param === 0)) {
154                for (var i in values) {
155                    if (values[i] === param) return null;
156                }
157            }
158            else {
159                var v = param;
160                for (var i in values) {
161                    var vali = values[i];
162                    if (vali === 0) continue;
163                    if ((vali & param) === vali) {
164                        v -= vali;
165                    }
166                    if (v === 0) return null;
167                }
168            }
169        }
170        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
171        e.popStackFrame();
172        return e;
173    }
174    if (expectedDomElement) {
175        var val;
176        if (typeof(param.nodeType) !== 'number') {
177            var doc = param.ownerDocument || param.document || param;
178            if (doc != param) {
179                var w = doc.defaultView || doc.parentWindow;
180                val = (w != param) && !(w.document && param.document && (w.document === param.document));
181            }
182            else {
183                val = (typeof(doc.body) === 'undefined');
184            }
185        }
186        else {
187            val = (param.nodeType === 3);
188        }
189        if (val) {
190            e = Error.argument(paramName, Sys.Res.argumentDomElement);
191            e.popStackFrame();
192            return e;
193        }
194    }
195    if (expectedType && !expectedType.isInstanceOfType(param)) {
196        e = Error.argumentType(paramName, Object.getType(param), expectedType);
197        e.popStackFrame();
198        return e;
199    }
200    if (expectedType === Number && expectedInteger) {
201        if ((param % 1) !== 0) {
202            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
203            e.popStackFrame();
204            return e;
205        }
206    }
207    return null;
208}
209 
210Error.__typeName = 'Error';
211Error.__class = true;
212Error.create = function Error$create(message, errorInfo) {
213    /// <summary locid="M:J#Error.create" />
214    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
215    /// <param name="errorInfo" optional="true" mayBeNull="true"></param>
216    /// <returns type="Error"></returns>
217    var e = Function._validateParams(arguments, [
218        {name: "message", type: String, mayBeNull: true, optional: true},
219        {name: "errorInfo", mayBeNull: true, optional: true}
220    ]);
221    if (e) throw e;
222    var e = new Error(message);
223    e.message = message;
224    if (errorInfo) {
225        for (var v in errorInfo) {
226            e[v] = errorInfo[v];
227        }
228    }
229    e.popStackFrame();
230    return e;
231}
232Error.argument = function Error$argument(paramName, message) {
233    /// <summary locid="M:J#Error.argument" />
234    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
235    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
236    /// <returns></returns>
237    var e = Function._validateParams(arguments, [
238        {name: "paramName", type: String, mayBeNull: true, optional: true},
239        {name: "message", type: String, mayBeNull: true, optional: true}
240    ]);
241    if (e) throw e;
242    var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument);
243    if (paramName) {
244        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
245    }
246    var e = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName });
247    e.popStackFrame();
248    return e;
249}
250Error.argumentNull = function Error$argumentNull(paramName, message) {
251    /// <summary locid="M:J#Error.argumentNull" />
252    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
253    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
254    /// <returns></returns>
255    var e = Function._validateParams(arguments, [
256        {name: "paramName", type: String, mayBeNull: true, optional: true},
257        {name: "message", type: String, mayBeNull: true, optional: true}
258    ]);
259    if (e) throw e;
260    var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull);
261    if (paramName) {
262        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
263    }
264    var e = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName });
265    e.popStackFrame();
266    return e;
267}
268Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
269    /// <summary locid="M:J#Error.argumentOutOfRange" />
270    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
271    /// <param name="actualValue" optional="true" mayBeNull="true"></param>
272    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
273    /// <returns></returns>
274    var e = Function._validateParams(arguments, [
275        {name: "paramName", type: String, mayBeNull: true, optional: true},
276        {name: "actualValue", mayBeNull: true, optional: true},
277        {name: "message", type: String, mayBeNull: true, optional: true}
278    ]);
279    if (e) throw e;
280    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : 
280Sys.Res.argumentOutOfRange);
281    if (paramName) {
282        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
283    }
284    if (typeof(actualValue) !== "undefined" && actualValue !== null) {
285        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
286    }
287    var e = Error.create(displayMessage, {
288        name: "Sys.ArgumentOutOfRangeException",
289        paramName: paramName,
290        actualValue: actualValue
291    });
292    e.popStackFrame();
293    return e;
294}
295Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
296    /// <summary locid="M:J#Error.argumentType" />
297    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
298    /// <param name="actualType" type="Type" optional="true" mayBeNull="true"></param>
299    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true"></param>
300    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
301    /// <returns></returns>
302    var e = Function._validateParams(arguments, [
303        {name: "paramName", type: String, mayBeNull: true, optional: true},
304        {name: "actualType", type: Type, mayBeNull: true, optional: true},
305        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
306        {name: "message", type: String, mayBeNull: true, optional: true}
307    ]);
308    if (e) throw e;
309    var displayMessage = "Sys.ArgumentTypeException: ";
310    if (message) {
311        displayMessage += message;
312    }
313    else if (actualType && expectedType) {
314        displayMessage +=
315            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
316    }
317    else {
318        displayMessage += Sys.Res.argumentType;
319    }
320    if (paramName) {
321        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
322    }
323    var e = Error.create(displayMessage, {
324        name: "Sys.ArgumentTypeException",
325        paramName: paramName,
326        actualType: actualType,
327        expectedType: expectedType
328    });
329    e.popStackFrame();
330    return e;
331}
332Error.argumentUndefined = function Error$argumentUndefined(paramName, message) {
333    /// <summary locid="M:J#Error.argumentUndefined" />
334    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
335    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
336    /// <returns></returns>
337    var e = Function._validateParams(arguments, [
338        {name: "paramName", type: String, mayBeNull: true, optional: true},
339        {name: "message", type: String, mayBeNull: true, optional: true}
340    ]);
341    if (e) throw e;
342    var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined);
343    if (paramName) {
344        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
345    }
346    var e = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName });
347    e.popStackFrame();
348    return e;
349}
350Error.format = function Error$format(message) {
351    /// <summary locid="M:J#Error.format" />
352    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
353    /// <returns></returns>
354    var e = Function._validateParams(arguments, [
355        {name: "message", type: String, mayBeNull: true, optional: true}
356    ]);
357    if (e) throw e;
358    var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format);
359    var e = Error.create(displayMessage, {name: 'Sys.FormatException'});
360    e.popStackFrame();
361    return e;
362}
363Error.invalidOperation = function Error$invalidOperation(message) {
364    /// <summary locid="M:J#Error.invalidOperation" />
365    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
366    /// <returns></returns>
367    var e = Function._validateParams(arguments, [
368        {name: "message", type: String, mayBeNull: true, optional: true}
369    ]);
370    if (e) throw e;
371    var displayMessage = "Sys.InvalidOperationException: " + (message ? message : 
371Sys.Res.invalidOperation);
372    var e = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'});
373    e.popStackFrame();
374    return e;
375}
376Error.notImplemented = function Error$notImplemented(message) {
377    /// <summary locid="M:J#Error.notImplemented" />
378    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
379    /// <returns></returns>
380    var e = Function._validateParams(arguments, [
381        {name: "message", type: String, mayBeNull: true, optional: true}
382    ]);
383    if (e) throw e;
384    var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented);
385    var e = Error.create(displayMessage, {name: 'Sys.NotImplementedException'});
386    e.popStackFrame();
387    return e;
388}
389Error.parameterCount = function Error$parameterCount(message) {
390    /// <summary locid="M:J#Error.parameterCount" />
391    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
392    /// <returns></returns>
393    var e = Function._validateParams(arguments, [
394        {name: "message", type: String, mayBeNull: true, optional: true}
395    ]);
396    if (e) throw e;
397    var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount);
398    var e = Error.create(displayMessage, {name: 'Sys.ParameterCountException'});
399    e.popStackFrame();
400    return e;
401}
402Error.prototype.popStackFrame = function Error$popStackFrame() {
403    /// <summary locid="M:J#checkParam" />
404    if (arguments.length !== 0) throw Error.parameterCount();
405    if (typeof(this.stack) === "undefined" || this.stack === null ||
406        typeof(this.fileName) === "undefined" || this.fileName === null ||
407        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
408        return;
409    }
410    var stackFrames = this.stack.split("\n");
411    var currentFrame = stackFrames[0];
412    var pattern = this.fileName + ":" + this.lineNumber;
413    while(typeof(currentFrame) !== "undefined" &&
414          currentFrame !== null &&
415          currentFrame.indexOf(pattern) === -1) {
416        stackFrames.shift();
417        currentFrame = stackFrames[0];
418    }
419    var nextFrame = stackFrames[1];
420    if (typeof(nextFrame) === "undefined" || nextFrame === null) {
421        return;
422    }
423    var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
424    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
425        return;
426    }
427    this.fileName = nextFrameParts[1];
428    this.lineNumber = parseInt(nextFrameParts[2]);
429    stackFrames.shift();
430    this.stack = stackFrames.join("\n");
431}
432 
433Object.__typeName = 'Object';
434Object.__class = true;
435Object.getType = function Object$getType(instance) {
436    /// <summary locid="M:J#Object.getType" />
437    /// <param name="instance"></param>
438    /// <returns type="Type"></returns>
439    var e = Function._validateParams(arguments, [
440        {name: "instance"}
441    ]);
442    if (e) throw e;
443    var ctor = instance.constructor;
444    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
445        return Object;
446    }
447    return ctor;
448}
449Object.getTypeName = function Object$getTypeName(instance) {
450    /// <summary locid="M:J#Object.getTypeName" />
451    /// <param name="instance"></param>
452    /// <returns type="String"></returns>
453    var e = Function._validateParams(arguments, [
454        {name: "instance"}
455    ]);
456    if (e) throw e;
457    return Object.getType(instance).getName();
458}
459 
460String.__typeName = 'String';
461String.__class = true;
462String.prototype.endsWith = function String$endsWith(suffix) {
463    /// <summary locid="M:J#String.endsWith" />
464    /// <param name="suffix" type="String"></param>
465    /// <returns type="Boolean"></returns>
466    var e = Function._validateParams(arguments, [
467        {name: "suffix", type: String}
468    ]);
469    if (e) throw e;
470    return (this.substr(this.length - suffix.length) === suffix);
471}
472String.prototype.startsWith = function String$startsWith(prefix) {
473    /// <summary locid="M:J#String.startsWith" />
474    /// <param name="prefix" type="String"></param>
475    /// <returns type="Boolean"></returns>
476    var e = Function._validateParams(arguments, [
477        {name: "prefix", type: String}
478    ]);
479    if (e) throw e;
480    return (this.substr(0, prefix.length) === prefix);
481}
482String.prototype.trim = function String$trim() {
483    /// <summary locid="M:J#String.trim" />
484    /// <returns type="String"></returns>
485    if (arguments.length !== 0) throw Error.parameterCount();
486    return this.replace(/^\s+|\s+$/g, '');
487}
488String.prototype.trimEnd = function String$trimEnd() {
489    /// <summary locid="M:J#String.trimEnd" />
490    /// <returns type="String"></returns>
491    if (arguments.length !== 0) throw Error.parameterCount();
492    return this.replace(/\s+$/, '');
493}
494String.prototype.trimStart = function String$trimStart() {
495    /// <summary locid="M:J#String.trimStart" />
496    /// <returns type="String"></returns>
497    if (arguments.length !== 0) throw Error.parameterCount();
498    return this.replace(/^\s+/, '');
499}
500String.format = function String$format(format, args) {
501    /// <summary locid="M:J#String.format" />
502    /// <param name="format" type="String"></param>
503    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
504    /// <returns type="String"></returns>
505    var e = Function._validateParams(arguments, [
506        {name: "format", type: String},
507        {name: "args", mayBeNull: true, parameterArray: true}
508    ]);
509    if (e) throw e;
510    return String._toFormattedString(false, arguments);
511}
512String.localeFormat = function String$localeFormat(format, args) {
513    /// <summary locid="M:J#String.localeFormat" />
514    /// <param name="format" type="String"></param>
515    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
516    /// <returns type="String"></returns>
517    var e = Function._validateParams(arguments, [
518        {name: "format", type: String},
519        {name: "args", mayBeNull: true, parameterArray: true}
520    ]);
521    if (e) throw e;
522    return String._toFormattedString(true, arguments);
523}
524String._toFormattedString = function String$_toFormattedString(useLocale, args) {
525    var result = '';
526    var format = args[0];
527    for (var i=0;;) {
528        var open = format.indexOf('{', i);
529        var close = format.indexOf('}', i);
530        if ((open < 0) && (close < 0)) {
531            result += format.slice(i);
532            break;
533        }
534        if ((close > 0) && ((close < open) || (open < 0))) {
535            if (format.charAt(close + 1) !== '}') {
536                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
537            }
538            result += format.slice(i, close + 1);
539            i = close + 2;
540            continue;
541        }
542        result += format.slice(i, open);
543        i = open + 1;
544        if (format.charAt(i) === '{') {
545            result += '{';
546            i++;
547            continue;
548        }
549        if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
550        var brace = format.substring(i, close);
551        var colonIndex = brace.indexOf(':');
552        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1;
553        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
554        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);
555        var arg = args[argNumber];
556        if (typeof(arg) === "undefined" || arg === null) {
557            arg = '';
558        }
559        if (arg.toFormattedString) {
560            result += arg.toFormattedString(argFormat);
561        }
562        else if (useLocale && arg.localeFormat) {
563            result += arg.localeFormat(argFormat);
564        }
565        else if (arg.format) {
566            result += arg.format(argFormat);
567        }
568        else
569            result += arg.toString();
570        i = close + 1;
571    }
572    return result;
573}
574 
575Boolean.__typeName = 'Boolean';
576Boolean.__class = true;
577Boolean.parse = function Boolean$parse(value) {
578    /// <summary locid="M:J#Boolean.parse" />
579    /// <param name="value" type="String"></param>
580    /// <returns type="Boolean"></returns>
581    var e = Function._validateParams(arguments, [
582        {name: "value", type: String}
583    ]);
584    if (e) throw e;
585    var v = value.trim().toLowerCase();
586    if (v === 'false') return false;
587    if (v === 'true') return true;
588    throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
589}
590 
591Date.__typeName = 'Date';
592Date.__class = true;
593Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) {
594    var quoteCount = 0;
595    var escaped = false;
596    for (var i = 0, il = preMatch.length; i < il; i++) {
597        var c = preMatch.charAt(i);
598        switch (c) {
599        case '\'':
600            if (escaped) strBuilder.append("'");
601            else quoteCount++;
602            escaped = false;
603            break;
604        case '\\':
605            if (escaped) strBuilder.append("\\");
606            escaped = !escaped;
607            break;
608        default:
609            strBuilder.append(c);
610            escaped = false;
611            break;
612        }
613    }
614    return quoteCount;
615}
616Date._expandFormat = function Date$_expandFormat(dtf, format) {
617    if (!format) {
618        format = "F";
619    }
620    if (format.length === 1) {
621        switch (format) {
622        case "d":
623            return dtf.ShortDatePattern;
624        case "D":
625            return dtf.LongDatePattern;
626        case "t":
627            return dtf.ShortTimePattern;
628        case "T":
629            return dtf.LongTimePattern;
630        case "F":
631            return dtf.FullDateTimePattern;
632        case "M": case "m":
633            return dtf.MonthDayPattern;
634        case "s":
635            return dtf.SortableDateTimePattern;
636        case "Y": case "y":
637            return dtf.YearMonthPattern;
638        default:
639            throw Error.format(Sys.Res.formatInvalidString);
640        }
641    }
642    return format;
643}
644Date._expandYear = function Date$_expandYear(dtf, year) {
645    if (year < 100) {
646        var curr = new Date().getFullYear();
647        year += curr - (curr % 100);
648        if (year > dtf.Calendar.TwoDigitYearMax) {
649            return year - 100;
650        }
651    }
652    return year;
653}
654Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
655    if (!dtf._parseRegExp) {
656        dtf._parseRegExp = {};
657    }
658    else if (dtf._parseRegExp[format]) {
659        return dtf._parseRegExp[format];
660    }
661    var expFormat = Date._expandFormat(dtf, format);
662    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");
663    var regexp = new Sys.StringBuilder("^");
664    var groups = [];
665    var index = 0;
666    var quoteCount = 0;
667    var tokenRegExp = Date._getTokenRegExp();
668    var match;
669    while ((match = tokenRegExp.exec(expFormat)) !== null) {
670        var preMatch = expFormat.slice(index, match.index);
671        index = tokenRegExp.lastIndex;
672        quoteCount += Date._appendPreOrPostMatch(preMatch, regexp);
673        if ((quoteCount%2) === 1) {
674            regexp.append(match[0]);
675            continue;
676        }
677        switch (match[0]) {
678            case 'dddd': case 'ddd':
679            case 'MMMM': case 'MMM':
680                regexp.append("(\\D+)");
681                break;
682            case 'tt': case 't':
683                regexp.append("(\\D*)");
684                break;
685            case 'yyyy':
686                regexp.append("(\\d{4})");
687                break;
688            case 'fff':
689                regexp.append("(\\d{3})");
690                break;
691            case 'ff':
692                regexp.append("(\\d{2})");
693                break;
694            case 'f':
695                regexp.append("(\\d)");
696                break;
697            case 'dd': case 'd':
698            case 'MM': case 'M':
699            case 'yy': case 'y':
700            case 'HH': case 'H':
701            case 'hh': case 'h':
702            case 'mm': case 'm':
703            case 'ss': case 's':
704                regexp.append("(\\d\\d?)");
705                break;
706            case 'zzz':
707                regexp.append("([+-]?\\d\\d?:\\d{2})");
708                break;
709            case 'zz': case 'z':
710                regexp.append("([+-]?\\d\\d?)");
711                break;
712        }
713        Array.add(groups, match[0]);
714    }
715    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
716    regexp.append("$");
717    var regexpStr = regexp.toString().replace(/\s+/g, "\\s+");
718    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
719    dtf._parseRegExp[format] = parseRegExp;
720    return parseRegExp;
721}
722Date._getTokenRegExp = function Date$_getTokenRegExp() {
723    return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
724}
725Date.parseLocale = function Date$parseLocale(value, formats) {
726    /// <summary locid="M:J#Date.parseLocale" />
727    /// <param name="value" type="String"></param>
728    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
729    /// <returns type="Date"></returns>
730    var e = Function._validateParams(arguments, [
731        {name: "value", type: String},
732        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
733    ]);
734    if (e) throw e;
735    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
736}
737Date.parseInvariant = function Date$parseInvariant(value, formats) {
738    /// <summary locid="M:J#Date.parseInvariant" />
739    /// <param name="value" type="String"></param>
740    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
741    /// <returns type="Date"></returns>
742    var e = Function._validateParams(arguments, [
743        {name: "value", type: String},
744        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
745    ]);
746    if (e) throw e;
747    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
748}
749Date._parse = function Date$_parse(value, cultureInfo, args) {
750    var custom = false;
751    for (var i = 1, il = args.length; i < il; i++) {
752        var format = args[i];
753        if (format) {
754            custom = true;
755            var date = Date._parseExact(value, format, cultureInfo);
756            if (date) return date;
757        }
758    }
759    if (! custom) {
760        var formats = cultureInfo._getDateTimeFormats();
761        for (var i = 0, il = formats.length; i < il; i++) {
762            var date = Date._parseExact(value, formats[i], cultureInfo);
763            if (date) return date;
764        }
765    }
766    return null;
767}
768Date._parseExact = function Date$_parseExact(value, format, cultureInfo) {
769    value = value.trim();
770    var dtf = cultureInfo.dateTimeFormat;
771    var parseInfo = Date._getParseRegExp(dtf, format);
772    var match = new RegExp(parseInfo.regExp).exec(value);
773    if (match === null) return null;
774    
775    var groups = parseInfo.groups;
776    var year = null, month = null, date = null, weekDay = null;
777    var hour = 0, min = 0, sec = 0, msec = 0, tzMinOffset = null;
778    var pmHour = false;
779    for (var j = 0, jl = groups.length; j < jl; j++) {
780        var matchGroup = match[j+1];
781        if (matchGroup) {
782            switch (groups[j]) {
783                case 'dd': case 'd':
784                    date = parseInt(matchGroup, 10);
785                    if ((date < 1) || (date > 31)) return null;
786                    break;
787                case 'MMMM':
788                    month = cultureInfo._getMonthIndex(matchGroup);
789                    if ((month < 0) || (month > 11)) return null;
790                    break;
791                case 'MMM':
792                    month = cultureInfo._getAbbrMonthIndex(matchGroup);
793                    if ((month < 0) || (month > 11)) return null;
794                    break;
795                case 'M': case 'MM':
796                    var month = parseInt(matchGroup, 10) - 1;
797                    if ((month < 0) || (month > 11)) return null;
798                    break;
799                case 'y': case 'yy':
800                    year = Date._expandYear(dtf,parseInt(matchGroup, 10));
801                    if ((year < 0) || (year > 9999)) return null;
802                    break;
803                case 'yyyy':
804                    year = parseInt(matchGroup, 10);
805                    if ((year < 0) || (year > 9999)) return null;
806                    break;
807                case 'h': case 'hh':
808                    hour = parseInt(matchGroup, 10);
809                    if (hour === 12) hour = 0;
810                    if ((hour < 0) || (hour > 11)) return null;
811                    break;
812                case 'H': case 'HH':
813                    hour = parseInt(matchGroup, 10);
814                    if ((hour < 0) || (hour > 23)) return null;
815                    break;
816                case 'm': case 'mm':
817                    min = parseInt(matchGroup, 10);
818                    if ((min < 0) || (min > 59)) return null;
819                    break;
820                case 's': case 'ss':
821                    sec = parseInt(matchGroup, 10);
822                    if ((sec < 0) || (sec > 59)) return null;
823                    break;
824                case 'tt': case 't':
825                    var upperToken = matchGroup.toUpperCase();
826                    pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
827                    if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
828                    break;
829                case 'f':
830                    msec = parseInt(matchGroup, 10) * 100;
831                    if ((msec < 0) || (msec > 999)) return null;
832                    break;
833                case 'ff':
834                    msec = parseInt(matchGroup, 10) * 10;
835                    if ((msec < 0) || (msec > 999)) return null;
836                    break;
837                case 'fff':
838                    msec = parseInt(matchGroup, 10);
839                    if ((msec < 0) || (msec > 999)) return null;
840                    break;
841                case 'dddd':
842                    weekDay = cultureInfo._getDayIndex(matchGroup);
843                    if ((weekDay < 0) || (weekDay > 6)) return null;
844                    break;
845                case 'ddd':
846                    weekDay = cultureInfo._getAbbrDayIndex(matchGroup);
847                    if ((weekDay < 0) || (weekDay > 6)) return null;
848                    break;
849                case 'zzz':
850                    var offsets = matchGroup.split(/:/);
851                    if (offsets.length !== 2) return null;
852                    var hourOffset = parseInt(offsets[0], 10);
853                    if ((hourOffset < -12) || (hourOffset > 13)) return null;
854                    var minOffset = parseInt(offsets[1], 10);
855                    if ((minOffset < 0) || (minOffset > 59)) return null;
856                    tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
857                    break;
858                case 'z': case 'zz':
859                    var hourOffset = parseInt(matchGroup, 10);
860                    if ((hourOffset < -12) || (hourOffset > 13)) return null;
861                    tzMinOffset = hourOffset * 60;
862                    break;
863            }
864        }
865    }
866    var result = new Date();
867    if (year === null) {
868        year = result.getFullYear();
869    }
870    if (month === null) {
871        month = result.getMonth();
872    }
873    if (date === null) {
874        date = result.getDate();
875    }
876    result.setFullYear(year, month, date);
877    if (result.getDate() !== date) return null;
878    if ((weekDay !== null) && (result.getDay() !== weekDay)) {
879        return null;
880    }
881    if (pmHour && (hour < 12)) {
882        hour += 12;
883    }
884    result.setHours(hour, min, sec, msec);
885    if (tzMinOffset !== null) {
886        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
887        result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60);
888    }
889    return result;
890}
891Date.prototype.format = function Date$format(format) {
892    /// <summary locid="M:J#Date.format" />
893    /// <param name="format" type="String"></param>
894    /// <returns type="String"></returns>
895    var e = Function._validateParams(arguments, [
896        {name: "format", type: String}
897    ]);
898    if (e) throw e;
899    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
900}
901Date.prototype.localeFormat = function Date$localeFormat(format) {
902    /// <summary locid="M:J#Date.localeFormat" />
903    /// <param name="format" type="String"></param>
904    /// <returns type="String"></returns>
905    var e = Function._validateParams(arguments, [
906        {name: "format", type: String}
907    ]);
908    if (e) throw e;
909    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
910}
911Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
912    if (!format || (format.length === 0) || (format === 'i')) {
913        if (cultureInfo && (cultureInfo.name.length > 0)) {
914            return this.toLocaleString();
915        }
916        else {
917            return this.toString();
918        }
919    }
920    var dtf = cultureInfo.dateTimeFormat;
921    format = Date._expandFormat(dtf, format);
922    var ret = new Sys.StringBuilder();
923    var hour;
924    function addLeadingZero(num) {
925        if (num < 10) {
926            return '0' + num;
927        }
928        return num.toString();
929    }
930    function addLeadingZeros(num) {
931        if (num < 10) {
932            return '00' + num;
933        }
934        if (num < 100) {
935            return '0' + num;
936        }
937        return num.toString();
938    }
939    var quoteCount = 0;
940    var tokenRegExp = Date._getTokenRegExp();
941    for (;;) {
942        var index = tokenRegExp.lastIndex;
943        var ar = tokenRegExp.exec(format);
944        var preMatch = format.slice(index, ar ? ar.index : format.length);
945        quoteCount += Date._appendPreOrPostMatch(preMatch, ret);
946        if (!ar) break;
947        if ((quoteCount%2) === 1) {
948            ret.append(ar[0]);
949            continue;
950        }
951        switch (ar[0]) {
952        case "dddd":
953            ret.append(dtf.DayNames[this.getDay()]);
954            break;
955        case "ddd":
956            ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
957            break;
958        case "dd":
959            ret.append(addLeadingZero(this.getDate()));
960            break;
961        case "d":
962            ret.append(this.getDate());
963            break;
964        case "MMMM":
965            ret.append(dtf.MonthNames[this.getMonth()]);
966            break;
967        case "MMM":
968            ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
969            break;
970        case "MM":
971            ret.append(addLeadingZero(this.getMonth() + 1));
972            break;
973        case "M":
974            ret.append(this.getMonth() + 1);
975            break;
976        case "yyyy":
977            ret.append(this.getFullYear());
978            break;
979        case "yy":
980            ret.append(addLeadingZero(this.getFullYear() % 100));
981            break;
982        case "y":
983            ret.append(this.getFullYear() % 100);
984            break;
985        case "hh":
986            hour = this.getHours() % 12;
987            if (hour === 0) hour = 12;
988            ret.append(addLeadingZero(hour));
989            break;
990        case "h":
991            hour = this.getHours() % 12;
992            if (hour === 0) hour = 12;
993            ret.append(hour);
994            break;
995        case "HH":
996            ret.append(addLeadingZero(this.getHours()));
997            break;
998        case "H":
999            ret.append(this.getHours());
1000            break;
1001        case "mm":
1002            ret.append(addLeadingZero(this.getMinutes()));
1003            break;
1004        case "m":
1005            ret.append(this.getMinutes());
1006            break;
1007        case "ss":
1008            ret.append(addLeadingZero(this.getSeconds()));
1009            break;
1010        case "s":
1011            ret.append(this.getSeconds());
1012            break;
1013        case "tt":
1014            ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator);
1015            break;
1016        case "t":
1017            ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0));
1018            break;
1019        case "f":
1020            ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
1021            break;
1022        case "ff":
1023            ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
1024            break;
1025        case "fff":
1026            ret.append(addLeadingZeros(this.getMilliseconds()));
1027            break;
1028        case "z":
1029            hour = this.getTimezoneOffset() / 60;
1030            ret.append(((hour <= 0) ? '+' : '-') + Math.floor(Math.abs(hour)));
1031            break;
1032        case "zz":
1033            hour = this.getTimezoneOffset() / 60;
1034            ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))));
1035            break;
1036        case "zzz":
1037            hour = this.getTimezoneOffset() / 60;
1038            ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) +
1039                dtf.TimeSeparator + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
1040            break;
1041        }
1042    }
1043    return ret.toString();
1044}
1045 
1046Number.__typeName = 'Number';
1047Number.__class = true;
1048Number.parseLocale = function Number$parseLocale(value) {
1049    /// <summary locid="M:J#Number.parseLocale" />
1050    /// <param name="value" type="String"></param>
1051    /// <returns type="Number"></returns>
1052    var e = Function._validateParams(arguments, [
1053        {name: "value", type: String}
1054    ]);
1055    if (e) throw e;
1056    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
1057}
1058Number.parseInvariant = function Number$parseInvariant(value) {
1059    /// <summary locid="M:J#Number.parseInvariant" />
1060    /// <param name="value" type="String"></param>
1061    /// <returns type="Number"></returns>
1062    var e = Function._validateParams(arguments, [
1063        {name: "value", type: String}
1064    ]);
1065    if (e) throw e;
1066    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
1067}
1068Number._parse = function Number$_parse(value, cultureInfo) {
1069    value = value.trim();
1070    
1071    if (value.match(/^[+-]?infinity$/i)) {
1072        return parseFloat(value);
1073    }
1074    if (value.match(/^0x[a-f0-9]+$/i)) {
1075        return parseInt(value);
1076    }
1077    var numFormat = cultureInfo.numberFormat;
1078    var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern);
1079    var sign = signInfo[0];
1080    var num = signInfo[1];
1081    
1082    if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) {
1083        signInfo = Number._parseNumberNegativePattern(value, numFormat, 1);
1084        sign = signInfo[0];
1085        num = signInfo[1];
1086    }
1087    if (sign === '') sign = '+';
1088    
1089    var exponent;
1090    var intAndFraction;
1091    var exponentPos = num.indexOf('e');
1092    if (exponentPos < 0) exponentPos = num.indexOf('E');
1093    if (exponentPos < 0) {
1094        intAndFraction = num;
1095        exponent = null;
1096    }
1097    else {
1098        intAndFraction = num.substr(0, exponentPos);
1099        exponent = num.substr(exponentPos + 1);
1100    }
1101    
1102    var integer;
1103    var fraction;
1104    var decimalPos = intAndFraction.indexOf(numFormat.NumberDecimalSeparator);
1105    if (decimalPos < 0) {
1106        integer = intAndFraction;
1107        fraction = null;
1108    }
1109    else {
1110        integer = intAndFraction.substr(0, decimalPos);
1111        fraction = intAndFraction.substr(decimalPos + numFormat.NumberDecimalSeparator.length);
1112    }
1113    
1114    integer = integer.split(numFormat.NumberGroupSeparator).join('');
1115    var altNumGroupSeparator = numFormat.NumberGroupSeparator.replace(/\u00A0/g, " ");
1116    if (numFormat.NumberGroupSeparator !== altNumGroupSeparator) {
1117        integer = integer.split(altNumGroupSeparator).join('');
1118    }
1119    
1120    var p = sign + integer;
1121    if (fraction !== null) {
1122        p += '.' + fraction;
1123    }
1124    if (exponent !== null) {
1125        var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1);
1126        if (expSignInfo[0] === '') {
1127            expSignInfo[0] = '+';
1128        }
1129        p += 'e' + expSignInfo[0] + expSignInfo[1];
1130    }
1131    if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) {
1132        return parseFloat(p);
1133    }
1134    return Number.NaN;
1135}
1136Number._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) {
1137    var neg = numFormat.NegativeSign;
1138    var pos = numFormat.PositiveSign;    
1139    switch (numberNegativePattern) {
1140        case 4: 
1141            neg = ' ' + neg;
1142            pos = ' ' + pos;
1143        case 3: 
1144            if (value.endsWith(neg)) {
1145                return ['-', value.substr(0, value.length - neg.length)];
1146            }
1147            else if (value.endsWith(pos)) {
1148                return ['+', value.substr(0, value.length - pos.length)];
1149            }
1150            break;
1151        case 2: 
1152            neg += ' ';
1153            pos += ' ';
1154        case 1: 
1155            if (value.startsWith(neg)) {
1156                return ['-', value.substr(neg.length)];
1157            }
1158            else if (value.startsWith(pos)) {
1159                return ['+', value.substr(pos.length)];
1160            }
1161            break;
1162        case 0: 
1163            if (value.startsWith('(') && value.endsWith(')')) {
1164                return ['-', value.substr(1, value.length - 2)];
1165            }
1166            break;
1167    }
1168    return ['', value];
1169}
1170Number.prototype.format = function Number$format(format) {
1171    /// <summary locid="M:J#Number.format" />
1172    /// <param name="format" type="String"></param>
1173    /// <returns type="String"></returns>
1174    var e = Function._validateParams(arguments, [
1175        {name: "format", type: String}
1176    ]);
1177    if (e) throw e;
1178    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
1179}
1180Number.prototype.localeFormat = function Number$localeFormat(format) {
1181    /// <summary locid="M:J#Number.localeFormat" />
1182    /// <param name="format" type="String"></param>
1183    /// <returns type="String"></returns>
1184    var e = Function._validateParams(arguments, [
1185        {name: "format", type: String}
1186    ]);
1187    if (e) throw e;
1188    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
1189}
1190Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) {
1191    if (!format || (format.length === 0) || (format === 'i')) {
1192        if (cultureInfo && (cultureInfo.name.length > 0)) {
1193            return this.toLocaleString();
1194        }
1195        else {
1196            return this.toString();
1197        }
1198    }
1199    
1200    var _percentPositivePattern = ["n %", "n%", "%n" ];
1201    var _percentNegativePattern = ["-n %", "-n%", "-%n"];
1202    var _numberNegativePattern = ["(n)","-n","- n","n-","n -"];
1203    var _currencyPositivePattern = ["$n","n$","$ n","n $"];
1204    var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];
1205    function zeroPad(str, count, left) {
1206        for (var l=str.length; l < count; l++) {
1207            str = (left ? ('0' + str) : (str + '0'));
1208        }
1209        return str;
1210    }
1211    
1212    function expandNumber(number, precision, groupSizes, sep, decimalChar) {
1213        
1214        var curSize = groupSizes[0];
1215        var curGroupIndex = 1;
1216        var factor = Math.pow(10, precision);
1217        var rounded = (Math.round(number * factor) / factor);
1218        if (!isFinite(rounded)) {
1219            rounded = number;
1220        }
1221        number = rounded;
1222        
1223        var numberString = number.toString();
1224        var right = "";
1225        var exponent;
1226        
1227        
1228        var split = numberString.split(/e/i);
1229        numberString = split[0];
1230        exponent = (split.length > 1 ? parseInt(split[1]) : 0);
1231        split = numberString.split('.');
1232        numberString = split[0];
1233        right = split.length > 1 ? split[1] : "";
1234        
1235        var l;
1236        if (exponent > 0) {
1237            right = zeroPad(right, exponent, false);
1238            numberString += right.slice(0, exponent);
1239            right = right.substr(exponent);
1240        }
1241        else if (exponent < 0) {
1242            exponent = -exponent;
1243            numberString = zeroPad(numberString, exponent+1, true);
1244            right = numberString.slice(-exponent, numberString.length) + right;
1245            numberString = numberString.slice(0, -exponent);
1246        }
1247        if (precision > 0) {
1248            if (right.length > precision) {
1249                right = right.slice(0, precision);
1250            }
1251            else {
1252                right = zeroPad(right, precision, false);
1253            }
1254            right = decimalChar + right;
1255        }
1256        else { 
1257            right = "";
1258        }
1259        var stringIndex = numberString.length-1;
1260        var ret = "";
1261        while (stringIndex >= 0) {
1262            if (curSize === 0 || curSize > stringIndex) {
1263                if (ret.length > 0)
1264                    return numberString.slice(0, stringIndex + 1) + sep + ret + right;
1265                else
1266                    return numberString.slice(0, stringIndex + 1) + right;
1267            }
1268            if (ret.length > 0)
1269                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret;
1270            else
1271                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1);
1272            stringIndex -= curSize;
1273            if (curGroupIndex < groupSizes.length) {
1274                curSize = groupSizes[curGroupIndex];
1275                curGroupIndex++;
1276            }
1277        }
1278        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
1279    }
1280    var nf = cultureInfo.numberFormat;
1281    var number = Math.abs(this);
1282    if (!format)
1283        format = "D";
1284    var precision = -1;
1285    if (format.length > 1) precision = parseInt(format.slice(1), 10);
1286    var pattern;
1287    switch (format.charAt(0)) {
1288    case "d":
1289    case "D":
1290        pattern = 'n';
1291        if (precision !== -1) {
1292            number = zeroPad(""+number, precision, true);
1293        }
1294        if (this < 0) number = -number;
1295        break;
1296    case "c":
1297    case "C":
1298        if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern];
1299        else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern];
1300        if (precision === -1) precision = nf.CurrencyDecimalDigits;
1301        number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator);
1302        break;
1303    case "n":
1304    case "N":
1305        if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern];
1306        else pattern = 'n';
1307        if (precision === -1) precision = nf.NumberDecimalDigits;
1308        number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator);
1309        break;
1310    case "p":
1311    case "P":
1312        if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern];
1313        else pattern = _percentPositivePattern[nf.PercentPositivePattern];
1314        if (precision === -1) precision = nf.PercentDecimalDigits;
1315        number = expandNumber(Math.abs(this) * 100, precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator);
1316        break;
1317    default:
1318        throw Error.format(Sys.Res.formatBadFormatSpecifier);
1319    }
1320    var regex = /n|\$|-|%/g;
1321    var ret = "";
1322    for (;;) {
1323        var index = regex.lastIndex;
1324        var ar = regex.exec(pattern);
1325        ret += pattern.slice(index, ar ? ar.index : pattern.length);
1326        if (!ar)
1327            break;
1328        switch (ar[0]) {
1329        case "n":
1330            ret += number;
1331            break;
1332        case "$":
1333            ret += nf.CurrencySymbol;
1334            break;
1335        case "-":
1336            ret += nf.NegativeSign;
1337            break;
1338        case "%":
1339            ret += nf.PercentSymbol;
1340            break;
1341        }
1342    }
1343    return ret;
1344}
1345 
1346RegExp.__typeName = 'RegExp';
1347RegExp.__class = true;
1348 
1349Array.__typeName = 'Array';
1350Array.__class = true;
1351Array.add = Array.enqueue = function Array$enqueue(array, item) {
1352    /// <summary locid="M:J#Array.enqueue" />
1353    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1354    /// <param name="item" mayBeNull="true"></param>
1355    var e = Function._validateParams(arguments, [
1356        {name: "array", type: Array, elementMayBeNull: true},
1357        {name: "item", mayBeNull: true}
1358    ]);
1359    if (e) throw e;
1360    array[array.length] = item;
1361}
1362Array.addRange = function Array$addRange(array, items) {
1363    /// <summary locid="M:J#Array.addRange" />
1364    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1365    /// <param name="items" type="Array" elementMayBeNull="true"></param>
1366    var e = Function._validateParams(arguments, [
1367        {name: "array", type: Array, elementMayBeNull: true},
1368        {name: "items", type: Array, elementMayBeNull: true}
1369    ]);
1370    if (e) throw e;
1371    array.push.apply(array, items);
1372}
1373Array.clear = function Array$clear(array) {
1374    /// <summary locid="M:J#Array.clear" />
1375    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1376    var e = Function._validateParams(arguments, [
1377        {name: "array", type: Array, elementMayBeNull: true}
1378    ]);
1379    if (e) throw e;
1380    array.length = 0;
1381}
1382Array.clone = function Array$clone(array) {
1383    /// <summary locid="M:J#Array.clone" />
1384    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1385    /// <returns type="Array" elementMayBeNull="true"></returns>
1386    var e = Function._validateParams(arguments, [
1387        {name: "array", type: Array, elementMayBeNull: true}
1388    ]);
1389    if (e) throw e;
1390    if (array.length === 1) {
1391        return [array[0]];
1392    }
1393    else {
1394        return Array.apply(null, array);
1395    }
1396}
1397Array.contains = function Array$contains(array, item) {
1398    /// <summary locid="M:J#Array.contains" />
1399    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1400    /// <param name="item" mayBeNull="true"></param>
1401    /// <returns type="Boolean"></returns>
1402    var e = Function._validateParams(arguments, [
1403        {name: "array", type: Array, elementMayBeNull: true},
1404        {name: "item", mayBeNull: true}
1405    ]);
1406    if (e) throw e;
1407    return (Array.indexOf(array, item) >= 0);
1408}
1409Array.dequeue = function Array$dequeue(array) {
1410    /// <summary locid="M:J#Array.dequeue" />
1411    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1412    /// <returns mayBeNull="true"></returns>
1413    var e = Function._validateParams(arguments, [
1414        {name: "array", type: Array, elementMayBeNull: true}
1415    ]);
1416    if (e) throw e;
1417    return array.shift();
1418}
1419Array.forEach = function Array$forEach(array, method, instance) {
1420    /// <summary locid="M:J#Array.forEach" />
1421    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1422    /// <param name="method" type="Function"></param>
1423    /// <param name="instance" optional="true" mayBeNull="true"></param>
1424    var e = Function._validateParams(arguments, [
1425        {name: "array", type: Array, elementMayBeNull: true},
1426        {name: "method", type: Function},
1427        {name: "instance", mayBeNull: true, optional: true}
1428    ]);
1429    if (e) throw e;
1430    for (var i = 0, l = array.length; i < l; i++) {
1431        var elt = array[i];
1432        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
1433    }
1434}
1435Array.indexOf = function Array$indexOf(array, item, start) {
1436    /// <summary locid="M:J#Array.indexOf" />
1437    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1438    /// <param name="item" optional="true" mayBeNull="true"></param>
1439    /// <param name="start" optional="true" mayBeNull="true"></param>
1440    /// <returns type="Number"></returns>
1441    var e = Function._validateParams(arguments, [
1442        {name: "array", type: Array, elementMayBeNull: true},
1443        {name: "item", mayBeNull: true, optional: true},
1444        {name: "start", mayBeNull: true, optional: true}
1445    ]);
1446    if (e) throw e;
1447    if (typeof(item) === "undefined") return -1;
1448    var length = array.length;
1449    if (length !== 0) {
1450        start = start - 0;
1451        if (isNaN(start)) {
1452            start = 0;
1453        }
1454        else {
1455            if (isFinite(start)) {
1456                start = start - (start % 1);
1457            }
1458            if (start < 0) {
1459                start = Math.max(0, length + start);
1460            }
1461        }
1462        for (var i = start; i < length; i++) {
1463            if ((typeof(array[i]) !== "undefined") && (array[i] === item)) {
1464                return i;
1465            }
1466        }
1467    }
1468    return -1;
1469}
1470Array.insert = function Array$insert(array, index, item) {
1471    /// <summary locid="M:J#Array.insert" />
1472    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1473    /// <param name="index" mayBeNull="true"></param>
1474    /// <param name="item" mayBeNull="true"></param>
1475    var e = Function._validateParams(arguments, [
1476        {name: "array", type: Array, elementMayBeNull: true},
1477        {name: "index", mayBeNull: true},
1478        {name: "item", mayBeNull: true}
1479    ]);
1480    if (e) throw e;
1481    array.splice(index, 0, item);
1482}
1483Array.parse = function Array$parse(value) {
1484    /// <summary locid="M:J#Array.parse" />
1485    /// <param name="value" type="String" mayBeNull="true"></param>
1486    /// <returns type="Array" elementMayBeNull="true"></returns>
1487    var e = Function._validateParams(arguments, [
1488        {name: "value", type: String, mayBeNull: true}
1489    ]);
1490    if (e) throw e;
1491    if (!value) return [];
1492    var v = eval(value);
1493    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
1494    return v;
1495}
1496Array.remove = function Array$remove(array, item) {
1497    /// <summary locid="M:J#Array.remove" />
1498    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1499    /// <param name="item" mayBeNull="true"></param>
1500    /// <returns type="Boolean"></returns>
1501    var e = Function._validateParams(arguments, [
1502        {name: "array", type: Array, elementMayBeNull: true},
1503        {name: "item", mayBeNull: true}
1504    ]);
1505    if (e) throw e;
1506    var index = Array.indexOf(array, item);
1507    if (index >= 0) {
1508        array.splice(index, 1);
1509    }
1510    return (index >= 0);
1511}
1512Array.removeAt = function Array$removeAt(array, index) {
1513    /// <summary locid="M:J#Array.removeAt" />
1514    /// <param name="array" type="Array" elementMayBeNull="true"></param>
1515    /// <param name="index" mayBeNull="true"></param>
1516    var e = Function._validateParams(arguments, [
1517        {name: "array", type: Array, elementMayBeNull: true},
1518        {name: "index", mayBeNull: true}
1519    ]);
1520    if (e) throw e;
1521    array.splice(index, 1);
1522}
1523 
1524if (!window) this.window = this;
1525window.Type = Function;
1526Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
1527Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");
1528Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
1529    /// <summary locid="M:J#Type.callBaseMethod" />
1530    /// <param name="instance"></param>
1531    /// <param name="name" type="String"></param>
1532    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
1533    /// <returns></returns>
1534    var e = Function._validateParams(arguments, [
1535        {name: "instance"},
1536        {name: "name", type: String},
1537        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
1538    ]);
1539    if (e) throw e;
1540    var baseMethod = this.getBaseMethod(instance, name);
1541    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
1542    if (!baseArguments) {
1543        return baseMethod.apply(instance);
1544    }
1545    else {
1546        return baseMethod.apply(instance, baseArguments);
1547    }
1548}
1549Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
1550    /// <summary locid="M:J#Type.getBaseMethod" />
1551    /// <param name="instance"></param>
1552    /// <param name="name" type="String"></param>
1553    /// <returns type="Function" mayBeNull="true"></returns>
1554    var e = Function._validateParams(arguments, [
1555        {name: "instance"},
1556        {name: "name", type: String}
1557    ]);
1558    if (e) throw e;
1559    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
1560    var baseType = this.getBaseType();
1561    if (baseType) {
1562        var baseMethod = baseType.prototype[name];
1563        return (baseMethod instanceof Function) ? baseMethod : null;
1564    }
1565    return null;
1566}
1567Type.prototype.getBaseType = function Type$getBaseType() {
1568    /// <summary locid="M:J#Type.getBaseType" />
1569    /// <returns type="Type" mayBeNull="true"></returns>
1570    if (arguments.length !== 0) throw Error.parameterCount();
1571    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
1572}
1573Type.prototype.getInterfaces = function Type$getInterfaces() {
1574    /// <summary locid="M:J#Type.getInterfaces" />
1575    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false"></returns>
1576    if (arguments.length !== 0) throw Error.parameterCount();
1577    var result = [];
1578    var type = this;
1579    while(type) {
1580        var interfaces = type.__interfaces;
1581        if (interfaces) {
1582            for (var i = 0, l = interfaces.length; i < l; i++) {
1583                var interfaceType = interfaces[i];
1584                if (!Array.contains(result, interfaceType)) {
1585                    result[result.length] = interfaceType;
1586                }
1587            }
1588        }
1589        type = type.__baseType;
1590    }
1591    return result;
1592}
1593Type.prototype.getName = function Type$getName() {
1594    /// <summary locid="M:J#Type.getName" />
1595    /// <returns type="String"></returns>
1596    if (arguments.length !== 0) throw Error.parameterCount();
1597    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
1598}
1599Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
1600    /// <summary locid="M:J#Type.implementsInterface" />
1601    /// <param name="interfaceType" type="Type"></param>
1602    /// <returns type="Boolean"></returns>
1603    var e = Function._validateParams(arguments, [
1604        {name: "interfaceType", type: Type}
1605    ]);
1606    if (e) throw e;
1607    this.resolveInheritance();
1608    var interfaceName = interfaceType.getName();
1609    var cache = this.__interfaceCache;
1610    if (cache) {
1611        var cacheEntry = cache[interfaceName];
1612        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
1613    }
1614    else {
1615        cache = this.__interfaceCache = {};
1616    }
1617    var baseType = this;
1618    while (baseType) {
1619        var interfaces = baseType.__interfaces;
1620        if (interfaces) {
1621            if (Array.indexOf(interfaces, interfaceType) !== -1) {
1622                return cache[interfaceName] = true;
1623            }
1624        }
1625        baseType = baseType.__baseType;
1626    }
1627    return cache[interfaceName] = false;
1628}
1629Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
1630    /// <summary locid="M:J#Type.inheritsFrom" />
1631    /// <param name="parentType" type="Type"></param>
1632    /// <returns type="Boolean"></returns>
1633    var e = Function._validateParams(arguments, [
1634        {name: "parentType", type: Type}
1635    ]);
1636    if (e) throw e;
1637    this.resolveInheritance();
1638    var baseType = this.__baseType;
1639    while (baseType) {
1640        if (baseType === parentType) {
1641            return true;
1642        }
1643        baseType = baseType.__baseType;
1644    }
1645    return false;
1646}
1647Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
1648    /// <summary locid="M:J#Type.initializeBase" />
1649    /// <param name="instance"></param>
1650    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
1651    /// <returns></returns>
1652    var e = Function._validateParams(arguments, [
1653        {name: "instance"},
1654        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
1655    ]);
1656    if (e) throw e;
1657    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
1658    this.resolveInheritance();
1659    if (this.__baseType) {
1660        if (!baseArguments) {
1661            this.__baseType.apply(instance);
1662        }
1663        else {
1664            this.__baseType.apply(instance, baseArguments);
1665        }
1666    }
1667    return instance;
1668}
1669Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) {
1670    /// <summary locid="M:J#Type.isImplementedBy" />
1671    /// <param name="instance" mayBeNull="true"></param>
1672    /// <returns type="Boolean"></returns>
1673    var e = Function._validateParams(arguments, [
1674        {name: "instance", mayBeNull: true}
1675    ]);
1676    if (e) throw e;
1677    if (typeof(instance) === "undefined" || instance === null) return false;
1678    var instanceType = Object.getType(instance);
1679    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
1680}
1681Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
1682    /// <summary locid="M:J#Type.isInstanceOfType" />
1683    /// <param name="instance" mayBeNull="true"></param>
1684    /// <returns type="Boolean"></returns>
1685    var e = Function._validateParams(arguments, [
1686        {name: "instance", mayBeNull: true}
1687    ]);
1688    if (e) throw e;
1689    if (typeof(instance) === "undefined" || instance === null) return false;
1690    if (instance instanceof this) return true;
1691    var instanceType = Object.getType(instance);
1692    return !!(instanceType === this) ||
1693           (instanceType.inheritsFrom && instanceType.inheritsFrom(this)) ||
1694           (instanceType.implementsInterface && instanceType.implementsInterface(this));
1695}
1696Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
1697    /// <summary locid="M:J#Type.registerClass" />
1698    /// <param name="typeName" type="String"></param>
1699    /// <param name="baseType" type="Type" optional="true" mayBeNull="true"></param>
1700    /// <param name="interfaceTypes" parameterArray="true" type="Type"></param>
1701    /// <returns type="Type"></returns>
1702    var e = Function._validateParams(arguments, [
1703        {name: "typeName", type: String},
1704        {name: "baseType", type: Type, mayBeNull: true, optional: true},
1705        {name: "interfaceTypes", type: Type, parameterArray: true}
1706    ]);
1707    if (e) throw e;
1708    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
1709    var parsedName;
1710    try {
1711        parsedName = eval(typeName);
1712    }
1713    catch(e) {
1714        throw Error.argument('typeName', Sys.Res.argumentTypeName);
1715    }
1716    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
1717    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
1718    if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
1719    if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass);
1720    this.prototype.constructor = this;
1721    this.__typeName = typeName;
1722    this.__class = true;
1723    if (baseType) {
1724        this.__baseType = baseType;
1725        this.__basePrototypePending = true;
1726    }
1727    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
1728    if (interfaceTypes) {
1729        this.__interfaces = [];
1730        this.resolveInheritance();
1731        for (var i = 2, l = arguments.length; i < l; i++) {
1732            var interfaceType = arguments[i];
1733            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
1734            for (var methodName in interfaceType.prototype) {
1735                var method = interfaceType.prototype[methodName];
1736                if (!this.prototype[methodName]) {
1737                    this.prototype[methodName] = method;
1738                }
1739            }
1740            this.__interfaces.push(interfaceType);
1741        }
1742    }
1743    Sys.__registeredTypes[typeName] = true;
1744    return this;
1745}
1746Type.prototype.registerInterface = function Type$registerInterface(typeName) {
1747    /// <summary locid="M:J#Type.registerInterface" />
1748    /// <param name="typeName" type="String"></param>
1749    /// <returns type="Type"></returns>
1750    var e = Function._validateParams(arguments, [
1751        {name: "typeName", type: String}
1752    ]);
1753    if (e) throw e;
1754    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
1755    var parsedName;
1756    try {
1757        parsedName = eval(typeName);
1758    }
1759    catch(e) {
1760        throw Error.argument('typeName', Sys.Res.argumentTypeName);
1761    }
1762    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
1763    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
1764    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
1765    this.prototype.constructor = this;
1766    this.__typeName = typeName;
1767    this.__interface = true;
1768    Sys.__registeredTypes[typeName] = true;
1769    return this;
1770}
1771Type.prototype.resolveInheritance = function Type$resolveInheritance() {
1772    /// <summary locid="M:J#Type.resolveInheritance" />
1773    if (arguments.length !== 0) throw Error.parameterCount();
1774    if (this.__basePrototypePending) {
1775        var baseType = this.__baseType;
1776        baseType.resolveInheritance();
1777        for (var memberName in baseType.prototype) {
1778            var memberValue = baseType.prototype[memberName];
1779            if (!this.prototype[memberName]) {
1780                this.prototype[memberName] = memberValue;
1781            }
1782        }
1783        delete this.__basePrototypePending;
1784    }
1785}
1786Type.getRootNamespaces = function Type$getRootNamespaces() {
1787    /// <summary locid="M:J#Type.getRootNamespaces" />
1788    /// <returns type="Array"></returns>
1789    if (arguments.length !== 0) throw Error.parameterCount();
1790    return Array.clone(Sys.__rootNamespaces);
1791}
1792Type.isClass = function Type$isClass(type) {
1793    /// <summary locid="M:J#Type.isClass" />
1794    /// <param name="type" mayBeNull="true"></param>
1795    /// <returns type="Boolean"></returns>
1796    var e = Function._validateParams(arguments, [
1797        {name: "type", mayBeNull: true}
1798    ]);
1799    if (e) throw e;
1800    if ((typeof(type) === 'undefined') || (type === null)) return false;
1801    return !!type.__class;
1802}
1803Type.isInterface = function Type$isInterface(type) {
1804    /// <summary locid="M:J#Type.isInterface" />
1805    /// <param name="type" mayBeNull="true"></param>
1806    /// <returns type="Boolean"></returns>
1807    var e = Function._validateParams(arguments, [
1808        {name: "type", mayBeNull: true}
1809    ]);
1810    if (e) throw e;
1811    if ((typeof(type) === 'undefined') || (type === null)) return false;
1812    return !!type.__interface;
1813}
1814Type.isNamespace = function Type$isNamespace(object) {
1815    /// <summary locid="M:J#Type.isNamespace" />
1816    /// <param name="object" mayBeNull="true"></param>
1817    /// <returns type="Boolean"></returns>
1818    var e = Function._validateParams(arguments, [
1819        {name: "object", mayBeNull: true}
1820    ]);
1821    if (e) throw e;
1822    if ((typeof(object) === 'undefined') || (object === null)) return false;
1823    return !!object.__namespace;
1824}
1825Type.parse = function Type$parse(typeName, ns) {
1826    /// <summary locid="M:J#Type.parse" />
1827    /// <param name="typeName" type="String" mayBeNull="true"></param>
1828    /// <param name="ns" optional="true" mayBeNull="true"></param>
1829    /// <returns type="Type" mayBeNull="true"></returns>
1830    var e = Function._validateParams(arguments, [
1831        {name: "typeName", type: String, mayBeNull: true},
1832        {name: "ns", mayBeNull: true, optional: true}
1833    ]);
1834    if (e) throw e;
1835    var fn;
1836    if (ns) {
1837        fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
1838        return fn || null;
1839    }
1840    if (!typeName) return null;
1841    if (!Type.__htClasses) {
1842        Type.__htClasses = {};
1843    }
1844    fn = Type.__htClasses[typeName];
1845    if (!fn) {
1846        fn = eval(typeName);
1847        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
1848        Type.__htClasses[typeName] = fn;
1849    }
1850    return fn;
1851}
1852Type.registerNamespace = function Type$registerNamespace(namespacePath) {
1853    /// <summary locid="M:J#Type.registerNamespace" />
1854    /// <param name="namespacePath" type="String"></param>
1855    var e = Function._validateParams(arguments, [
1856        {name: "namespacePath", type: String}
1857    ]);
1858    if (e) throw e;
1859    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
1860    var rootObject = window;
1861    var namespaceParts = namespacePath.split('.');
1862    for (var i = 0; i < namespaceParts.length; i++) {
1863        var currentPart = namespaceParts[i];
1864        var ns = rootObject[currentPart];
1865        if (ns && !ns.__namespace) {
1866            throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, namespaceParts.splice(0, i + 1).join('.')));
1867        }
1868        if (!ns) {
1869            ns = rootObject[currentPart] = {
1870                __namespace: true,
1871                __typeName: namespaceParts.slice(0, i + 1).join('.')
1872            };
1873            if (i === 0) {
1874                Sys.__rootNamespaces[Sys.__rootNamespaces.length] = ns;
1875            }
1876            var parsedName;
1877            try {
1878                parsedName = eval(ns.__typeName);
1879            }
1880            catch(e) {
1881                parsedName = null;
1882            }
1883            if (parsedName !== ns) {
1884                delete rootObject[currentPart];
1885                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
1886            }
1887            ns.getName = function ns$getName() {return this.__typeName;}
1888        }
1889        rootObject = ns;
1890    }
1891}
1892window.Sys = {
1893    __namespace: true,
1894    __typeName: "Sys",
1895    getName: function() {return "Sys";},
1896    __upperCaseTypes: {}
1897};
1898Sys.__rootNamespaces = [Sys];
1899Sys.__registeredTypes = {};
1900 
1901Sys.IDisposable = function Sys$IDisposable() {
1902    throw Error.notImplemented();
1903}
1904    function Sys$IDisposable$dispose() {
1905        throw Error.notImplemented();
1906    }
1907Sys.IDisposable.prototype = {
1908    dispose: Sys$IDisposable$dispose
1909}
1910Sys.IDisposable.registerInterface('Sys.IDisposable');
1911 
1912Sys.StringBuilder = function Sys$StringBuilder(initialText) {
1913    /// <summary locid="M:J#Sys.StringBuilder.#ctor" />
1914    /// <param name="initialText" optional="true" mayBeNull="true"></param>
1915    var e = Function._validateParams(arguments, [
1916        {name: "initialText", mayBeNull: true, optional: true}
1917    ]);
1918    if (e) throw e;
1919    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
1920        [initialText.toString()] : [];
1921    this._value = {};
1922    this._len = 0;
1923}
1924    function Sys$StringBuilder$append(text) {
1925        /// <summary locid="M:J#Sys.StringBuilder.append" />
1926        /// <param name="text" mayBeNull="true"></param>
1927        var e = Function._validateParams(arguments, [
1928            {name: "text", mayBeNull: true}
1929        ]);
1930        if (e) throw e;
1931        this._parts[this._parts.length] = text;
1932    }
1933    function Sys$StringBuilder$appendLine(text) {
1934        /// <summary locid="M:J#Sys.StringBuilder.appendLine" />
1935        /// <param name="text" optional="true" mayBeNull="true"></param>
1936        var e = Function._validateParams(arguments, [
1937            {name: "text", mayBeNull: true, optional: true}
1938        ]);
1939        if (e) throw e;
1940        this._parts[this._parts.length] =
1941            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
1942            '\r\n' : text + '\r\n';
1943    }
1944    function Sys$StringBuilder$clear() {
1945        /// <summary locid="M:J#Sys.StringBuilder.clear" />
1946        if (arguments.length !== 0) throw Error.parameterCount();
1947        this._parts = [];
1948        this._value = {};
1949        this._len = 0;
1950    }
1951    function Sys$StringBuilder$isEmpty() {
1952        /// <summary locid="M:J#Sys.StringBuilder.isEmpty" />
1953        /// <returns type="Boolean"></returns>
1954        if (arguments.length !== 0) throw Error.parameterCount();
1955        if (this._parts.length === 0) return true;
1956        return this.toString() === '';
1957    }
1958    function Sys$StringBuilder$toString(separator) {
1959        /// <summary locid="M:J#Sys.StringBuilder.toString" />
1960        /// <param name="separator" type="String" optional="true" mayBeNull="true"></param>
1961        /// <returns type="String"></returns>
1962        var e = Function._validateParams(arguments, [
1963            {name: "separator", type: String, mayBeNull: true, optional: true}
1964        ]);
1965        if (e) throw e;
1966        separator = separator || '';
1967        var parts = this._parts;
1968        if (this._len !== parts.length) {
1969            this._value = {};
1970            this._len = parts.length;
1971        }
1972        var val = this._value;
1973        if (typeof(val[separator]) === 'undefined') {
1974            if (separator !== '') {
1975                for (var i = 0; i < parts.length;) {
1976                    if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) {
1977                        parts.splice(i, 1);
1978                    }
1979                    else {
1980                        i++;
1981                    }
1982                }
1983            }
1984            val[separator] = this._parts.join(separator);
1985        }
1986        return val[separator];
1987    }
1988Sys.StringBuilder.prototype = {
1989    append: Sys$StringBuilder$append,
1990    appendLine: Sys$StringBuilder$appendLine,
1991    clear: Sys$StringBuilder$clear,
1992    isEmpty: Sys$StringBuilder$isEmpty,
1993    toString: Sys$StringBuilder$toString
1994}
1995Sys.StringBuilder.registerClass('Sys.StringBuilder');
1996 
1997if (!window.XMLHttpRequest) {
1998    window.XMLHttpRequest = function window$XMLHttpRequest() {
1999        var progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
2000        for (var i = 0, l = progIDs.length; i < l; i++) {
2001            try {
2002                return new ActiveXObject(progIDs[i]);
2003            }
2004            catch (ex) {
2005            }
2006        }
2007        return null;
2008    }
2009}
2010 
2011Sys.Browser = {};
2012Sys.Browser.InternetExplorer = {};
2013Sys.Browser.Firefox = {};
2014Sys.Browser.Safari = {};
2015Sys.Browser.Opera = {};
2016Sys.Browser.agent = null;
2017Sys.Browser.hasDebuggerStatement = false;
2018Sys.Browser.name = navigator.appName;
2019Sys.Browser.version = parseFloat(navigator.appVersion);
2020Sys.Browser.documentMode = 0;
2021if (navigator.userAgent.indexOf(' MSIE ') > -1) {
2022    Sys.Browser.agent = Sys.Browser.InternetExplorer;
2023    Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);
2024    if (Sys.Browser.version >= 8) {
2025        if (document.documentMode >= 7) {
2026            Sys.Browser.documentMode = document.documentMode;    
2027        }
2028    }
2029    Sys.Browser.hasDebuggerStatement = true;
2030}
2031else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
2032    Sys.Browser.agent = Sys.Browser.Firefox;
2033    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]);
2034    Sys.Browser.name = 'Firefox';
2035    Sys.Browser.hasDebuggerStatement = true;
2036}
2037else if (navigator.userAgent.indexOf(' AppleWebKit/') > -1) {
2038    Sys.Browser.agent = Sys.Browser.Safari;
2039    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]);
2040    Sys.Browser.name = 'Safari';
2041}
2042else if (navigator.userAgent.indexOf('Opera/') > -1) {
2043    Sys.Browser.agent = Sys.Browser.Opera;
2044}
2045Type.registerNamespace('Sys.UI');
2046 
2047Sys._Debug = function Sys$_Debug() {
2048    /// <summary locid="M:J#Sys.Debug.#ctor" />
2049    /// <field name="isDebug" type="Boolean" locid="F:J#Sys.Debug.isDebug"></field>
2050    if (arguments.length !== 0) throw Error.parameterCount();
2051}
2052    function Sys$_Debug$_appendConsole(text) {
2053        if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
2054            Debug.writeln(text);
2055        }
2056        if (window.console && window.console.log) {
2057            window.console.log(text);
2058        }
2059        if (window.opera) {
2060            window.opera.postError(text);
2061        }
2062        if (window.debugService) {
2063            window.debugService.trace(text);
2064        }
2065    }
2066    function Sys$_Debug$_appendTrace(text) {
2067        var traceElement = document.getElementById('TraceConsole');
2068        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
2069            traceElement.value += text + '\n';
2070        }
2071    }
2072    function Sys$_Debug$assert(condition, message, displayCaller) {
2073        /// <summary locid="M:J#Sys.Debug.assert" />
2074        /// <param name="condition" type="Boolean"></param>
2075        /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
2076        /// <param name="displayCaller" type="Boolean" optional="true"></param>
2077        var e = Function._validateParams(arguments, [
2078            {name: "condition", type: Boolean},
2079            {name: "message", type: String, mayBeNull: true, optional: true},
2080            {name: "displayCaller", type: Boolean, optional: true}
2081        ]);
2082        if (e) throw e;
2083        if (!condition) {
2084            message = (displayCaller && this.assert.caller) ?
2085                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
2086                String.format(Sys.Res.assertFailed, message);
2087            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
2088                this.fail(message);
2089            }
2090        }
2091    }
2092    function Sys$_Debug$clearTrace() {
2093        /// <summary locid="M:J#Sys.Debug.clearTrace" />
2094        if (arguments.length !== 0) throw Error.parameterCount();
2095        var traceElement = document.getElementById('TraceConsole');
2096        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
2097            traceElement.value = '';
2098        }
2099    }
2100    function Sys$_Debug$fail(message) {
2101        /// <summary locid="M:J#Sys.Debug.fail" />
2102        /// <param name="message" type="String" mayBeNull="true"></param>
2103        var e = Function._validateParams(arguments, [
2104            {name: "message", type: String, mayBeNull: true}
2105        ]);
2106        if (e) throw e;
2107        this._appendConsole(message);
2108        if (Sys.Browser.hasDebuggerStatement) {
2109            eval('debugger');
2110        }
2111    }
2112    function Sys$_Debug$trace(text) {
2113        /// <summary locid="M:J#Sys.Debug.trace" />
2114        /// <param name="text"></param>
2115        var e = Function._validateParams(arguments, [
2116            {name: "text"}
2117        ]);
2118        if (e) throw e;
2119        this._appendConsole(text);
2120        this._appendTrace(text);
2121    }
2122    function Sys$_Debug$traceDump(object, name) {
2123        /// <summary locid="M:J#Sys.Debug.traceDump" />
2124        /// <param name="object" mayBeNull="true"></param>
2125        /// <param name="name" type="String" mayBeNull="true" optional="true"></param>
2126        var e = Function._validateParams(arguments, [
2127            {name: "object", mayBeNull: true},
2128            {name: "name", type: String, mayBeNull: true, optional: true}
2129        ]);
2130        if (e) throw e;
2131        var text = this._traceDump(object, name, true);
2132    }
2133    function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
2134        name = name? name : 'traceDump';
2135        indentationPadding = indentationPadding? indentationPadding : '';
2136        if (object === null) {
2137            this.trace(indentationPadding + name + ': null');
2138            return;
2139        }
2140        switch(typeof(object)) {
2141            case 'undefined':
2142                this.trace(indentationPadding + name + ': Undefined');
2143                break;
2144            case 'number': case 'string': case 'boolean':
2145                this.trace(indentationPadding + name + ': ' + object);
2146                break;
2147            default:
2148                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
2149                    this.trace(indentationPadding + name + ': ' + object.toString());
2150                    break;
2151                }
2152                if (!loopArray) {
2153                    loopArray = [];
2154                }
2155                else if (Array.contains(loopArray, object)) {
2156                    this.trace(indentationPadding + name + ': ...');
2157                    return;
2158                }
2159                Array.add(loopArray, object);
2160                if ((object == window) || (object === document) ||
2161                    (window.HTMLElement && (object instanceof HTMLElement)) ||
2162                    (typeof(object.nodeName) === 'string')) {
2163                    var tag = object.tagName? object.tagName : 'DomElement';
2164                    if (object.id) {
2165                        tag += ' - ' + object.id;
2166                    }
2167                    this.trace(indentationPadding + name + ' {' +  tag + '}');
2168                }
2169                else {
2170                    var typeName = Object.getTypeName(object);
2171                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
2172                    if ((indentationPadding === '') || recursive) {
2173                        indentationPadding += "    ";
2174                        var i, length, properties, p, v;
2175                        if (Array.isInstanceOfType(object)) {
2176                            length = object.length;
2177                            for (i = 0; i < length; i++) {
2178                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
2179                            }
2180                        }
2181                        else {
2182                            for (p in object) {
2183                                v = object[p];
2184                                if (!Function.isInstanceOfType(v)) {
2185                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
2186                                }
2187                            }
2188                        }
2189                    }
2190                }
2191                Array.remove(loopArray, object);
2192        }
2193    }
2194Sys._Debug.prototype = {
2195    _appendConsole: Sys$_Debug$_appendConsole,
2196    _appendTrace: Sys$_Debug$_appendTrace,
2197    assert: Sys$_Debug$assert,
2198    clearTrace: Sys$_Debug$clearTrace,
2199    fail: Sys$_Debug$fail,
2200    trace: Sys$_Debug$trace,
2201    traceDump: Sys$_Debug$traceDump,
2202    _traceDump: Sys$_Debug$_traceDump
2203}
2204Sys._Debug.registerClass('Sys._Debug');
2205Sys.Debug = new Sys._Debug();
2206    Sys.Debug.isDebug = true;
2207 
2208function Sys$Enum$parse(value, ignoreCase) {
2209    /// <summary locid="M:J#Sys.Enum.parse" />
2210    /// <param name="value" type="String"></param>
2211    /// <param name="ignoreCase" type="Boolean" optional="true"></param>
2212    /// <returns></returns>
2213    var e = Function._validateParams(arguments, [
2214        {name: "value", type: String},
2215        {name: "ignoreCase", type: Boolean, optional: true}
2216    ]);
2217    if (e) throw e;
2218    var values, parsed, val;
2219    if (ignoreCase) {
2220        values = this.__lowerCaseValues;
2221        if (!values) {
2222            this.__lowerCaseValues = values = {};
2223            var prototype = this.prototype;
2224            for (var name in prototype) {
2225                values[name.toLowerCase()] = prototype[name];
2226            }
2227        }
2228    }
2229    else {
2230        values = this.prototype;
2231    }
2232    if (!this.__flags) {
2233        val = (ignoreCase ? value.toLowerCase() : value);
2234        parsed = values[val.trim()];
2235        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
2236        return parsed;
2237    }
2238    else {
2239        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
2240        var v = 0;
2241        for (var i = parts.length - 1; i >= 0; i--) {
2242            var part = parts[i].trim();
2243            parsed = values[part];
2244            if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName));
2245            v |= parsed;
2246        }
2247        return v;
2248    }
2249}
2250function Sys$Enum$toString(value) {
2251    /// <summary locid="M:J#Sys.Enum.toString" />
2252    /// <param name="value" optional="true" mayBeNull="true"></param>
2253    /// <returns type="String"></returns>
2254    var e = Function._validateParams(arguments, [
2255        {name: "value", mayBeNull: true, optional: true}
2256    ]);
2257    if (e) throw e;
2258    if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
2259    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
2260    var values = this.prototype;
2261    var i;
2262    if (!this.__flags || (value === 0)) {
2263        for (i in values) {
2264            if (values[i] === value) {
2265                return i;
2266            }
2267        }
2268    }
2269    else {
2270        var sorted = this.__sortedValues;
2271        if (!sorted) {
2272            sorted = [];
2273            for (i in values) {
2274                sorted[sorted.length] = {key: i, value: values[i]};
2275            }
2276            sorted.sort(function(a, b) {
2277                return a.value - b.value;
2278            });
2279            this.__sortedValues = sorted;
2280        }
2281        var parts = [];
2282        var v = value;
2283        for (i = sorted.length - 1; i >= 0; i--) {
2284            var kvp = sorted[i];
2285            var vali = kvp.value;
2286            if (vali === 0) continue;
2287            if ((vali & value) === vali) {
2288                parts[parts.length] = kvp.key;
2289                v -= vali;
2290                if (v === 0) break;
2291            }
2292        }
2293        if (parts.length && v === 0) return parts.reverse().join(', ');
2294    }
2295    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
2296}
2297Type.prototype.registerEnum = function Type$registerEnum(name, flags) {
2298    /// <summary locid="M:J#Sys.UI.LineType.#ctor" />
2299    /// <param name="name" type="String"></param>
2300    /// <param name="flags" type="Boolean" optional="true"></param>
2301    var e = Function._validateParams(arguments, [
2302        {name: "name", type: String},
2303        {name: "flags", type: Boolean, optional: true}
2304    ]);
2305    if (e) throw e;
2306    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
2307    var parsedName;
2308    try {
2309        parsedName = eval(name);
2310    }
2311    catch(e) {
2312        throw Error.argument('name', Sys.Res.argumentTypeName);
2313    }
2314    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
2315    if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
2316    for (var i in this.prototype) {
2317        var val = this.prototype[i];
2318        if (!Type.__identifierRegExp.test(i)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
2319        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
2320        if (typeof(this[i]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
2321    }
2322    Sys.__upperCaseTypes[name.toUpperCase()] = this;
2323    for (var i in this.prototype) {
2324        this[i] = this.prototype[i];
2325    }
2326    this.__typeName = name;
2327    this.parse = Sys$Enum$parse;
2328    this.__string = this.toString();
2329    this.toString = Sys$Enum$toString;
2330    this.__flags = flags;
2331    this.__enum = true;
2332    Sys.__registeredTypes[name] = true;
2333}
2334Type.isEnum = function Type$isEnum(type) {
2335    /// <summary locid="M:J#Type.isEnum" />
2336    /// <param name="type" mayBeNull="true"></param>
2337    /// <returns type="Boolean"></returns>
2338    var e = Function._validateParams(arguments, [
2339        {name: "type", mayBeNull: true}
2340    ]);
2341    if (e) throw e;
2342    if ((typeof(type) === 'undefined') || (type === null)) return false;
2343    return !!type.__enum;
2344}
2345Type.isFlags = function Type$isFlags(type) {
2346    /// <summary locid="M:J#Type.isFlags" />
2347    /// <param name="type" mayBeNull="true"></param>
2348    /// <returns type="Boolean"></returns>
2349    var e = Function._validateParams(arguments, [
2350        {name: "type", mayBeNull: true}
2351    ]);
2352    if (e) throw e;
2353    if ((typeof(type) === 'undefined') || (type === null)) return false;
2354    return !!type.__flags;
2355}
2356 
2357Sys.EventHandlerList = function Sys$EventHandlerList() {
2358    /// <summary locid="M:J#Sys.EventHandlerList.#ctor" />
2359    if (arguments.length !== 0) throw Error.parameterCount();
2360    this._list = {};
2361}
2362    function Sys$EventHandlerList$addHandler(id, handler) {
2363        /// <summary locid="M:J#Sys.EventHandlerList.addHandler" />
2364        /// <param name="id" type="String"></param>
2365        /// <param name="handler" type="Function"></param>
2366        var e = Function._validateParams(arguments, [
2367            {name: "id", type: String},
2368            {name: "handler", type: Function}
2369        ]);
2370        if (e) throw e;
2371        Array.add(this._getEvent(id, true), handler);
2372    }
2373    function Sys$EventHandlerList$removeHandler(id, handler) {
2374        /// <summary locid="M:J#Sys.EventHandlerList.removeHandler" />
2375        /// <param name="id" type="String"></param>
2376        /// <param name="handler" type="Function"></param>
2377        var e = Function._validateParams(arguments, [
2378            {name: "id", type: String},
2379            {name: "handler", type: Function}
2380        ]);
2381        if (e) throw e;
2382        var evt = this._getEvent(id);
2383        if (!evt) return;
2384        Array.remove(evt, handler);
2385    }
2386    function Sys$EventHandlerList$getHandler(id) {
2387        /// <summary locid="M:J#Sys.EventHandlerList.getHandler" />
2388        /// <param name="id" type="String"></param>
2389        /// <returns type="Function"></returns>
2390        var e = Function._validateParams(arguments, [
2391            {name: "id", type: String}
2392        ]);
2393        if (e) throw e;
2394        var evt = this._getEvent(id);
2395        if (!evt || (evt.length === 0)) return null;
2396        evt = Array.clone(evt);
2397        return function(source, args) {
2398            for (var i = 0, l = evt.length; i < l; i++) {
2399                evt[i](source, args);
2400            }
2401        };
2402    }
2403    function Sys$EventHandlerList$_getEvent(id, create) {
2404        if (!this._list[id]) {
2405            if (!create) return null;
2406            this._list[id] = [];
2407        }
2408        return this._list[id];
2409    }
2410Sys.EventHandlerList.prototype = {
2411    addHandler: Sys$EventHandlerList$addHandler,
2412    removeHandler: Sys$EventHandlerList$removeHandler,
2413    getHandler: Sys$EventHandlerList$getHandler,
2414    _getEvent: Sys$EventHandlerList$_getEvent
2415}
2416Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
2417 
2418Sys.EventArgs = function Sys$EventArgs() {
2419    /// <summary locid="M:J#Sys.EventArgs.#ctor" />
2420    if (arguments.length !== 0) throw Error.parameterCount();
2421}
2422Sys.EventArgs.registerClass('Sys.EventArgs');
2423Sys.EventArgs.Empty = new Sys.EventArgs();
2424 
2425Sys.CancelEventArgs = function Sys$CancelEventArgs() {
2426    /// <summary locid="M:J#Sys.CancelEventArgs.#ctor" />
2427    if (arguments.length !== 0) throw Error.parameterCount();
2428    Sys.CancelEventArgs.initializeBase(this);
2429    this._cancel = false;
2430}
2431    function Sys$CancelEventArgs$get_cancel() {
2432        /// <value type="Boolean" locid="P:J#Sys.CancelEventArgs.cancel"></value>
2433        if (arguments.length !== 0) throw Error.parameterCount();
2434        return this._cancel;
2435    }
2436    function Sys$CancelEventArgs$set_cancel(value) {
2437        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
2438        if (e) throw e;
2439        this._cancel = value;
2440    }
2441Sys.CancelEventArgs.prototype = {
2442    get_cancel: Sys$CancelEventArgs$get_cancel,
2443    set_cancel: Sys$CancelEventArgs$set_cancel
2444}
2445Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
2446 
2447Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() {
2448    /// <summary locid="M:J#Sys.INotifyPropertyChange.#ctor" />
2449    if (arguments.length !== 0) throw Error.parameterCount();
2450    throw Error.notImplemented();
2451}
2452    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
2453    /// <summary locid="E:J#Sys.INotifyPropertyChange.propertyChanged" />
2454    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2455    if (e) throw e;
2456        throw Error.notImplemented();
2457    }
2458    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
2459    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2460    if (e) throw e;
2461        throw Error.notImplemented();
2462    }
2463Sys.INotifyPropertyChange.prototype = {
2464    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
2465    remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged
2466}
2467Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');
2468 
2469Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) {
2470    /// <summary locid="M:J#Sys.PropertyChangedEventArgs.#ctor" />
2471    /// <param name="propertyName" type="String"></param>
2472    var e = Function._validateParams(arguments, [
2473        {name: "propertyName", type: String}
2474    ]);
2475    if (e) throw e;
2476    Sys.PropertyChangedEventArgs.initializeBase(this);
2477    this._propertyName = propertyName;
2478}
2479 
2480    function Sys$PropertyChangedEventArgs$get_propertyName() {
2481        /// <value type="String" locid="P:J#Sys.PropertyChangedEventArgs.propertyName"></value>
2482        if (arguments.length !== 0) throw Error.parameterCount();
2483        return this._propertyName;
2484    }
2485Sys.PropertyChangedEventArgs.prototype = {
2486    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
2487}
2488Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
2489 
2490Sys.INotifyDisposing = function Sys$INotifyDisposing() {
2491    /// <summary locid="M:J#Sys.INotifyDisposing.#ctor" />
2492    if (arguments.length !== 0) throw Error.parameterCount();
2493    throw Error.notImplemented();
2494}
2495    function Sys$INotifyDisposing$add_disposing(handler) {
2496    /// <summary locid="E:J#Sys.INotifyDisposing.disposing" />
2497    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2498    if (e) throw e;
2499        throw Error.notImplemented();
2500    }
2501    function Sys$INotifyDisposing$remove_disposing(handler) {
2502    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2503    if (e) throw e;
2504        throw Error.notImplemented();
2505    }
2506Sys.INotifyDisposing.prototype = {
2507    add_disposing: Sys$INotifyDisposing$add_disposing,
2508    remove_disposing: Sys$INotifyDisposing$remove_disposing
2509}
2510Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
2511 
2512Sys.Component = function Sys$Component() {
2513    /// <summary locid="M:J#Sys.Component.#ctor" />
2514    if (arguments.length !== 0) throw Error.parameterCount();
2515    if (Sys.Application) Sys.Application.registerDisposableObject(this);
2516}
2517    function Sys$Component$get_events() {
2518        /// <value type="Sys.EventHandlerList" locid="P:J#Sys.Component.events"></value>
2519        if (arguments.length !== 0) throw Error.parameterCount();
2520        if (!this._events) {
2521            this._events = new Sys.EventHandlerList();
2522        }
2523        return this._events;
2524    }
2525    function Sys$Component$get_id() {
2526        /// <value type="String" locid="P:J#Sys.Component.id"></value>
2527        if (arguments.length !== 0) throw Error.parameterCount();
2528        return this._id;
2529    }
2530    function Sys$Component$set_id(value) {
2531        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
2532        if (e) throw e;
2533        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
2534        this._idSet = true;
2535        var oldId = this.get_id();
2536        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
2537        this._id = value;
2538    }
2539    function Sys$Component$get_isInitialized() {
2540        /// <value type="Boolean" locid="P:J#Sys.Component.isInitialized"></value>
2541        if (arguments.length !== 0) throw Error.parameterCount();
2542        return this._initialized;
2543    }
2544    function Sys$Component$get_isUpdating() {
2545        /// <value type="Boolean" locid="P:J#Sys.Component.isUpdating"></value>
2546        if (arguments.length !== 0) throw Error.parameterCount();
2547        return this._updating;
2548    }
2549    function Sys$Component$add_disposing(handler) {
2550        /// <summary locid="E:J#Sys.Component.disposing" />
2551        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2552        if (e) throw e;
2553        this.get_events().addHandler("disposing", handler);
2554    }
2555    function Sys$Component$remove_disposing(handler) {
2556        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2557        if (e) throw e;
2558        this.get_events().removeHandler("disposing", handler);
2559    }
2560    function Sys$Component$add_propertyChanged(handler) {
2561        /// <summary locid="E:J#Sys.Component.propertyChanged" />
2562        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2563        if (e) throw e;
2564        this.get_events().addHandler("propertyChanged", handler);
2565    }
2566    function Sys$Component$remove_propertyChanged(handler) {
2567        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
2568        if (e) throw e;
2569        this.get_events().removeHandler("propertyChanged", handler);
2570    }
2571    function Sys$Component$beginUpdate() {
2572        this._updating = true;
2573    }
2574    function Sys$Component$dispose() {
2575        if (this._events) {
2576            var handler = this._events.getHandler("disposing");
2577            if (handler) {
2578                handler(this, Sys.EventArgs.Empty);
2579            }
2580        }
2581        delete this._events;
2582        Sys.Application.unregisterDisposableObject(this);
2583        Sys.Application.removeComponent(this);
2584    }
2585    function Sys$Component$endUpdate() {
2586        this._updating = false;
2587        if (!this._initialized) this.initialize();
2588        this.updated();
2589    }
2590    function Sys$Component$initialize() {
2591        this._initialized = true;
2592    }
2593    function Sys$Component$raisePropertyChanged(propertyName) {
2594        /// <summary locid="M:J#Sys.Component.raisePropertyChanged" />
2595        /// <param name="propertyName" type="String"></param>
2596        var e = Function._validateParams(arguments, [
2597            {name: "propertyName", type: String}
2598        ]);
2599        if (e) throw e;
2600        if (!this._events) return;
2601        var handler = this._events.getHandler("propertyChanged");
2602        if (handler) {
2603            handler(this, new Sys.PropertyChangedEventArgs(propertyName));
2604        }
2605    }
2606    function Sys$Component$updated() {
2607    }
2608Sys.Component.prototype = {
2609    _id: null,
2610    _idSet: false,
2611    _initialized: false,
2612    _updating: false,
2613    get_events: Sys$Component$get_events,
2614    get_id: Sys$Component$get_id,
2615    set_id: Sys$Component$set_id,
2616    get_isInitialized: Sys$Component$get_isInitialized,
2617    get_isUpdating: Sys$Component$get_isUpdating,
2618    add_disposing: Sys$Component$add_disposing,
2619    remove_disposing: Sys$Component$remove_disposing,
2620    add_propertyChanged: Sys$Component$add_propertyChanged,
2621    remove_propertyChanged: Sys$Component$remove_propertyChanged,
2622    beginUpdate: Sys$Component$beginUpdate,
2623    dispose: Sys$Component$dispose,
2624    endUpdate: Sys$Component$endUpdate,
2625    initialize: Sys$Component$initialize,
2626    raisePropertyChanged: Sys$Component$raisePropertyChanged,
2627    updated: Sys$Component$updated
2628}
2629Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);
2630function Sys$Component$_setProperties(target, properties) {
2631    /// <summary locid="M:J#Sys.Component._setProperties" />
2632    /// <param name="target"></param>
2633    /// <param name="properties"></param>
2634    var e = Function._validateParams(arguments, [
2635        {name: "target"},
2636        {name: "properties"}
2637    ]);
2638    if (e) throw e;
2639    var current;
2640    var targetType = Object.getType(target);
2641    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
2642    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
2643    if (isComponent) target.beginUpdate();
2644    for (var name in properties) {
2645        var val = properties[name];
2646        var getter = isObject ? null : target["get_" + name];
2647        if (isObject || typeof(getter) !== 'function') {
2648            var targetVal = target[name];
2649            if (!isObject && typeof(targetVal) === 'undefined') throw Error.invali
2649dOperation(String.format(Sys.Res.propertyUndefined, name));
2650            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
2651                target[name] = val;
2652            }
2653            else {
2654                Sys$Component$_setProperties(targetVal, val);
2655            }
2656        }
2657        else {
2658            var setter = target["set_" + name];
2659            if (typeof(setter) === 'function') {
2660                setter.apply(target, [val]);
2661            }
2662            else if (val instanceof Array) {
2663                current = getter.apply(target);
2664                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
2665                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
2666                    current[j] = val[i];
2667                }
2668            }
2669            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
2670                current = getter.apply(target);
2671                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
2672                Sys$Component$_setProperties(current, val);
2673            }
2674            else {
2675                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
2676            }
2677        }
2678    }
2679    if (isComponent) target.endUpdate();
2680}
2681function Sys$Component$_setReferences(component, references) {
2682    for (var name in references) {
2683        var setter = component["set_" + name];
2684        var reference = $find(references[name]);
2685        if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
2686        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name]));
2687        setter.apply(component, [reference]);
2688    }
2689}
2690var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) {
2691    /// <summary locid="M:J#Sys.Component.create" />
2692    /// <param name="type" type="Type"></param>
2693    /// <param name="properties" optional="true" mayBeNull="true"></param>
2694    /// <param name="events" optional="true" mayBeNull="true"></param>
2695    /// <param name="references" optional="true" mayBeNull="true"></param>
2696    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
2697    /// <returns type="Sys.UI.Component"></returns>
2698    var e = Function._validateParams(arguments, [
2699        {name: "type", type: Type},
2700        {name: "properties", mayBeNull: true, optional: true},
2701        {name: "events", mayBeNull: true, optional: true},
2702        {name: "references", mayBeNull: true, optional: true},
2703        {name: "element", mayBeNull: true, domElement: true, optional: true}
2704    ]);
2705    if (e) throw e;
2706    if (!type.inheritsFrom(Sys.Component)) {
2707        throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName()));
2708    }
2709    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
2710        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
2711    }
2712    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
2713    var component = (element ? new type(element): new type());
2714    var app = Sys.Application;
2715    var creatingComponents = app.get_isCreatingComponents();
2716    component.beginUpdate();
2717    if (properties) {
2718        Sys$Component$_setProperties(component, properties);
2719    }
2720    if (events) {
2721        for (var name in events) {
2722            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
2723            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
2724            component["add_" + name](events[name]);
2725        }
2726    }
2727    if (component.get_id()) {
2728        app.addComponent(component);
2729    }
2730    if (creatingComponents) {
2731        app._createdComponents[app._createdComponents.length] = component;
2732        if (references) {
2733            app._addComponentToSecondPass(component, references);
2734        }
2735        else {
2736            component.endUpdate();
2737        }
2738    }
2739    else {
2740        if (references) {
2741            Sys$Component$_setReferences(component, references);
2742        }
2743        component.endUpdate();
2744    }
2745    return component;
2746}
2747 
2748Sys.UI.MouseButton = function Sys$UI$MouseButton() {
2749    /// <summary locid="M:J#Sys.UI.MouseButton.#ctor" />
2750    /// <field name="leftButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.leftButton"></field>
2751    /// <field name="middleButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.middleButton"></field>
2752    /// <field name="rightButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.rightButton"></field>
2753    if (arguments.length !== 0) throw Error.parameterCount();
2754    throw Error.notImplemented();
2755}
2756Sys.UI.MouseButton.prototype = {
2757    leftButton: 0,
2758    middleButton: 1,
2759    rightButton: 2
2760}
2761Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
2762 
2763Sys.UI.Key = function Sys$UI$Key() {
2764    /// <summary locid="M:J#Sys.UI.Key.#ctor" />
2765    /// <field name="backspace" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.backspace"></field>
2766    /// <field name="tab" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.tab"></field>
2767    /// <field name="enter" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.enter"></field>
2768    /// <field name="esc" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.esc"></field>
2769    /// <field name="space" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.space"></field>
2770    /// <field name="pageUp" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageUp"></field>
2771    /// <field name="pageDown" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageDown"></field>
2772    /// <field name="end" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.end"></field>
2773    /// <field name="home" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.home"></field>
2774    /// <field name="left" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.left"></field>
2775    /// <field name="up" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.up"></field>
2776    /// <field name="right" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.right"></field>
2777    /// <field name="down" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.down"></field>
2778    /// <field name="del" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.del"></field>
2779    if (arguments.length !== 0) throw Error.parameterCount();
2780    throw Error.notImplemented();
2781}
2782Sys.UI.Key.prototype = {
2783    backspace: 8,
2784    tab: 9,
2785    enter: 13,
2786    esc: 27,
2787    space: 32,
2788    pageUp: 33,
2789    pageDown: 34,
2790    end: 35,
2791    home: 36,
2792    left: 37,
2793    up: 38,
2794    right: 39,
2795    down: 40,
2796    del: 127
2797}
2798Sys.UI.Key.registerEnum("Sys.UI.Key");
2799 
2800Sys.UI.Point = function Sys$UI$Point(x, y) {
2801    /// <summary locid="M:J#Sys.UI.Point.#ctor" />
2802    /// <param name="x" type="Number"></param>
2803    /// <param name="y" type="Number"></param>
2804    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
2805    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
2806    var e = Function._validateParams(arguments, [
2807        {name: "x", type: Number},
2808        {name: "y", type: Number}
2809    ]);
2810    if (e) throw e;
2811    this.x = Math.round(x);
2812    this.y = Math.round(y);
2813}
2814Sys.UI.Point.registerClass('Sys.UI.Point');
2815 
2816Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
2817    /// <summary locid="M:J#Sys.UI.Bounds.#ctor" />
2818    /// <param name="x" type="Number" integer="true"></param>
2819    /// <param name="y" type="Number" integer="true"></param>
2820    /// <param name="height" type="Number" integer="true"></param>
2821    /// <param name="width" type="Number" integer="true"></param>
2822    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.x"></field>
2823    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.y"></field>
2824    /// <field name="height" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.height"></field>
2825    /// <field name="width" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.width"></field>
2826    var e = Function._validateParams(arguments, [
2827        {name: "x", type: Number, integer: true},
2828        {name: "y", type: Number, integer: true},
2829        {name: "height", type: Number, integer: true},
2830        {name: "width", type: Number, integer: true}
2831    ]);
2832    if (e) throw e;
2833    this.x = x;
2834    this.y = y;
2835    this.height = height;
2836    this.width = width;
2837}
2838Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
2839 
2840Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) {
2841    /// <summary locid="M:J#Sys.UI.DomEvent.#ctor" />
2842    /// <param name="eventObject"></param>
2843    /// <field name="altKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.altKey"></field>
2844    /// <field name="button" type="Sys.UI.MouseButton" locid="F:J#Sys.UI.DomEvent.button"></field>
2845    /// <field name="charCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.charCode"></field>
2846    /// <field name="clientX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientX"></field>
2847    /// <field name="clientY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientY"></field>
2848    /// <field name="ctrlKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.ctrlKey"></field>
2849    /// <field name="keyCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.keyCode"></field>
2850    /// <field name="offsetX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetX"></field>
2851    /// <field name="offsetY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetY"></field>
2852    /// <field name="screenX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenX"></field>
2853    /// <field name="screenY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenY"></field>
2854    /// <field name="shiftKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.shiftKey"></field>
2855    /// <field name="target" locid="F:J#Sys.UI.DomEvent.target"></field>
2856    /// <field name="type" type="String" locid="F:J#Sys.UI.DomEvent.type"></field>
2857    var e = Function._validateParams(arguments, [
2858        {name: "eventObject"}
2859    ]);
2860    if (e) throw e;
2861    var e = eventObject;
2862    var etype = this.type = e.type.toLowerCase();
2863    this.rawEvent = e;
2864    this.altKey = e.altKey;
2865    if (typeof(e.button) !== 'undefined') {
2866        this.button = (typeof(e.which) !== 'undefined') ? e.button :
2867            (e.button === 4) ? Sys.UI.MouseButton.middleButton :
2868            (e.button === 2) ? Sys.UI.MouseButton.rightButton :
2869            Sys.UI.MouseButton.leftButton;
2870    }
2871    if (etype === 'keypress') {
2872        this.charCode = e.charCode || e.keyCode;
2873    }
2874    else if (e.keyCode && (e.keyCode === 46)) {
2875        this.keyCode = 127;
2876    }
2877    else {
2878        this.keyCode = e.keyCode;
2879    }
2880    this.clientX = e.clientX;
2881    this.clientY = e.clientY;
2882    this.ctrlKey = e.ctrlKey;
2883    this.target = e.target ? e.target : e.srcElement;
2884    if (!etype.startsWith('key')) {
2885        if ((typeof(e.offsetX) !== 'undefined') && (typeof(e.offsetY) !== 'undefined')) {
2886            this.offsetX = e.offsetX;
2887            this.offsetY = e.offsetY;
2888        }
2889        else if (this.target && (this.target.nodeType !== 3) && (typeof(e.clientX) === 'number')) {
2890            var loc = Sys.UI.DomElement.getLocation(this.target);
2891            var w = Sys.UI.DomElement._getWindow(this.target);
2892            this.offsetX = (w.pageXOffset || 0) + e.clientX - loc.x;
2893            this.offsetY = (w.pageYOffset || 0) + e.clientY - loc.y;
2894        }
2895    }
2896    this.screenX = e.screenX;
2897    this.screenY = e.screenY;
2898    this.shiftKey = e.shiftKey;
2899}
2900    function Sys$UI$DomEvent$preventDefault() {
2901        /// <summary locid="M:J#Sys.UI.DomEvent.preventDefault" />
2902        if (arguments.length !== 0) throw Error.parameterCount();
2903        if (this.rawEvent.preventDefault) {
2904            this.rawEvent.preventDefault();
2905        }
2906        else if (window.event) {
2907            this.rawEvent.returnValue = false;
2908        }
2909    }
2910    function Sys$UI$DomEvent$stopPropagation() {
2911        /// <summary locid="M:J#Sys.UI.DomEvent.stopPropagation" />
2912        if (arguments.length !== 0) throw Error.parameterCount();
2913        if (this.rawEvent.stopPropagation) {
2914            this.rawEvent.stopPropagation();
2915        }
2916        else if (window.event) {
2917            this.rawEvent.cancelBubble = true;
2918        }
2919    }
2920Sys.UI.DomEvent.prototype = {
2921    preventDefault: Sys$UI$DomEvent$preventDefault,
2922    stopPropagation: Sys$UI$DomEvent$stopPropagation
2923}
2924Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');
2925var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
2926    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler" />
2927    /// <param name="element"></param>
2928    /// <param name="eventName" type="String"></param>
2929    /// <param name="handler" type="Function"></param>
2930    var e = Function._validateParams(arguments, [
2931        {name: "element"},
2932        {name: "eventName", type: String},
2933        {name: "handler", type: Function}
2934    ]);
2935    if (e) throw e;
2936    Sys.UI.DomEvent._ensureDomNode(element);
2937    if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError);
2938    if (!element._events) {
2939        element._events = {};
2940    }
2941    var eventCache = element._events[eventName];
2942    if (!eventCache) {
2943        element._events[eventName] = eventCache = [];
2944    }
2945    var browserHandler;
2946    if (element.addEventListener) {
2947        browserHandler = function(e) {
2948            return handler.call(element, new Sys.UI.DomEvent(e));
2949        }
2950        element.addEventListener(eventName, browserHandler, false);
2951    }
2952    else if (element.attachEvent) {
2953        browserHandler = function() {
2954            var e = {};
2955            try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
2956            return handler.call(element, new Sys.UI.DomEvent(e));
2957        }
2958        element.attachEvent('on' + eventName, browserHandler);
2959    }
2960    eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
2961}
2962var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
2963    /// <summary locid="M:J#Sys.UI.DomEvent.addHandlers" />
2964    /// <param name="element"></param>
2965    /// <param name="events" type="Object"></param>
2966    /// <param name="handlerOwner" optional="true"></param>
2967    var e = Function._validateParams(arguments, [
2968        {name: "element"},
2969        {name: "events", type: Object},
2970        {name: "handlerOwner", optional: true}
2971    ]);
2972    if (e) throw e;
2973    Sys.UI.DomEvent._ensureDomNode(element);
2974    for (var name in events) {
2975        var handler = events[name];
2976        if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
2977        if (handlerOwner) {
2978            handler = Function.createDelegate(handlerOwner, handler);
2979        }
2980        $addHandler(element, name, handler);
2981    }
2982}
2983var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) {
2984    /// <summary locid="M:J#Sys.UI.DomEvent.clearHandlers" />
2985    /// <param name="element"></param>
2986    var e = Function._validateParams(arguments, [
2987        {name: "element"}
2988    ]);
2989    if (e) throw e;
2990    Sys.UI.DomEvent._ensureDomNode(element);
2991    if (element._events) {
2992        var cache = element._events;
2993        for (var name in cache) {
2994            var handlers = cache[name];
2995            for (var i = handlers.length - 1; i >= 0; i--) {
2996                $removeHandler(element, name, handlers[i].handler);
2997            }
2998        }
2999        element._events = null;
3000    }
3001}
3002var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
3003    /// <summary locid="M:J#Sys.UI.DomEvent.removeHandler" />
3004    /// <param name="element"></param>
3005    /// <param name="eventName" type="String"></param>
3006    /// <param name="handler" type="Function"></param>
3007    var e = Function._validateParams(arguments, [
3008        {name: "element"},
3009        {name: "eventName", type: String},
3010        {name: "handler", type: Function}
3011    ]);
3012    if (e) throw e;
3013    Sys.UI.DomEvent._ensureDomNode(element);
3014    var browserHandler = null;
3015    if ((typeof(element._events) !== 'object') || (element._events == null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
3016    var cache = element._events[eventName];
3017    if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
3018    for (var i = 0, l = cache.length; i < l; i++) {
3019        if (cache[i].handler === handler) {
3020            browserHandler = cache[i].browserHandler;
3021            break;
3022        }
3023    }
3024    if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
3025    if (element.removeEventListener) {
3026        element.removeEventListener(eventName, browserHandler, false);
3027    }
3028    else if (element.detachEvent) {
3029        element.detachEvent('on' + eventName, browserHandler);
3030    }
3031    cache.splice(i, 1);
3032}
3033Sys.UI.DomEvent._ensureDomNode = function Sys$UI$DomEvent$_ensureDomNode(element) {
3034    if (element.tagName && (element.tagName.toUpperCase() === "SCRIPT")) return;
3035    
3036    var doc = element.ownerDocument || element.document || element;
3037    if ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number')) {
3038        throw Error.argument("element", Sys.Res.argumentDomNode);
3039    }
3040}
3041 
3042Sys.UI.DomElement = function Sys$UI$DomElement() {
3043    /// <summary locid="M:J#Sys.UI.DomElement.#ctor" />
3044    if (arguments.length !== 0) throw Error.parameterCount();
3045    throw Error.notImplemented();
3046}
3047Sys.UI.DomElement.registerClass('Sys.UI.DomElement');
3048Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) {
3049    /// <summary locid="M:J#Sys.UI.DomElement.addCssClass" />
3050    /// <param name="element" domElement="true"></param>
3051    /// <param name="className" type="String"></param>
3052    var e = Function._validateParams(arguments, [
3053        {name: "element", domElement: true},
3054        {name: "className", type: String}
3055    ]);
3056    if (e) throw e;
3057    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
3058        if (element.className === '') {
3059            element.className = className;
3060        }
3061        else {
3062            element.className += ' ' + className;
3063        }
3064    }
3065}
3066Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) {
3067    /// <summary locid="M:J#Sys.UI.DomElement.containsCssClass" />
3068    /// <param name="element" domElement="true"></param>
3069    /// <param name="className" type="String"></param>
3070    /// <returns type="Boolean"></returns>
3071    var e = Function._validateParams(arguments, [
3072        {name: "element", domElement: true},
3073        {name: "className", type: String}
3074    ]);
3075    if (e) throw e;
3076    return Array.contains(element.className.split(' '), className);
3077}
3078Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) {
3079    /// <summary locid="M:J#Sys.UI.DomElement.getBounds" />
3080    /// <param name="element" domElement="true"></param>
3081    /// <returns type="Sys.UI.Bounds"></returns>
3082    var e = Function._validateParams(arguments, [
3083        {name: "element", domElement: true}
3084    ]);
3085    if (e) throw e;
3086    var offset = Sys.UI.DomElement.getLocation(element);
3087    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
3088}
3089var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) {
3090    /// <summary locid="M:J#Sys.UI.DomElement.getElementById" />
3091    /// <param name="id" type="String"></param>
3092    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
3093    /// <returns domElement="true" mayBeNull="true"></returns>
3094    var e = Function._validateParams(arguments, [
3095        {name: "id", type: String},
3096        {name: "element", mayBeNull: true, domElement: true, optional: true}
3097    ]);
3098    if (e) throw e;
3099    if (!element) return document.getElementById(id);
3100    if (element.getElementById) return element.getElementById(id);
3101    var nodeQueue = [];
3102    var childNodes = element.childNodes;
3103    for (var i = 0; i < childNodes.length; i++) {
3104        var node = childNodes[i];
3105        if (node.nodeType == 1) {
3106            nodeQueue[nodeQueue.length] = node;
3107        }
3108    }
3109    while (nodeQueue.length) {
3110        node = nodeQueue.shift();
3111        if (node.id == id) {
3112            return node;
3113        }
3114        childNodes = node.childNodes;
3115        for (i = 0; i < childNodes.length; i++) {
3116            node = childNodes[i];
3117            if (node.nodeType == 1) {
3118                nodeQueue[nodeQueue.length] = node;
3119            }
3120        }
3121    }
3122    return null;
3123}
3124switch(Sys.Browser.agent) {
3125    case Sys.Browser.InternetExplorer:
3126        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
3127            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
3128            /// <param name="element" domElement="true"></param>
3129            /// <returns type="Sys.UI.Point"></returns>
3130            var e = Function._validateParams(arguments, [
3131                {name: "element", domElement: true}
3132            ]);
3133            if (e) throw e;
3134            if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
3135            var clientRect = element.getBoundingClientRect();
3136            if (!clientRect) {
3137                return new Sys.UI.Point(0,0);
3138            }
3139            var documentElement = element.ownerDocument.documentElement;
3140            var offsetX = clientRect.left - 2 + documentElement.scrollLeft,
3141                offsetY = clientRect.top - 2 + documentElement.scrollTop;
3142            
3143            try {
3144                var f = element.ownerDocument.parentWindow.frameElement || null;
3145                if (f) {
3146                    var offset = (f.frameBorder === "0" || f.frameBorder === "no") ? 2 : 0;
3147                    offsetX += offset;
3148                    offsetY += offset;
3149                }
3150            }
3151            catch(ex) {
3152            }    
3153            
3154            return new Sys.UI.Point(offsetX, offsetY);
3155        }
3156        break;
3157    case Sys.Browser.Safari:
3158        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
3159            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
3160            /// <param name="element" domElement="true"></param>
3161            /// <returns type="Sys.UI.Point"></returns>
3162            var e = Function._validateParams(arguments, [
3163                {name: "element", domElement: true}
3164            ]);
3165            if (e) throw e;
3166            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
3167            var offsetX = 0;
3168            var offsetY = 0;
3169            var previous = null;
3170            var previousStyle = null;
3171            var currentStyle;
3172            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
3173                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
3174                var tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
3175                if ((parent.offsetLeft || parent.offsetTop) &&
3176                    ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
3177                    offsetX += parent.offsetLeft;
3178                    offsetY += parent.offsetTop;
3179                }
3180            }
3181            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
3182            var elementPosition = currentStyle ? currentStyle.position : null;
3183            if (!elementPosition || (elementPosition !== "absolute")) {
3184                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
3185                    tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
3186                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
3187                        offsetX -= (parent.scrollLeft || 0);
3188                        offsetY -= (parent.scrollTop || 0);
3189                    }
3190                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
3191                    var parentPosition = currentStyle ? currentStyle.position : null;
3192                    if (parentPosition && (parentPosition === "absolute")) break;
3193                }
3194            }
3195            return new Sys.UI.Point(offsetX, offsetY);
3196        }
3197        break;
3198    case Sys.Browser.Opera:
3199        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
3200            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
3201            /// <param name="element" domElement="true"></param>
3202            /// <returns type="Sys.UI.Point"></returns>
3203            var e = Function._validateParams(arguments, [
3204                {name: "element", domElement: true}
3205            ]);
3206            if (e) throw e;
3207            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
3208            var offsetX = 0;
3209            var offsetY = 0;
3210            var previous = null;
3211            for (var parent = element; parent; previous = parent, parent = parent.offsetParent) {
3212                var tagName = parent.tagName;
3213                offsetX += parent.offsetLeft || 0;
3214                offsetY += parent.offsetTop || 0;
3215            }
3216            var elementPosition = element.style.position;
3217            var elementPositioned = elementPosition && (elementPosition !== "static");
3218            for (var parent = element.parentNode; parent; parent = parent.parentNode) {
3219                tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
3220                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop) &&
3221                    ((elementPositioned &&
3222                    ((parent.style.overflow === "scroll") || (parent.style.overflow === "auto"))))) {
3223                    offsetX -= (parent.scrollLeft || 0);
3224                    offsetY -= (parent.scrollTop || 0);
3225                }
3226                var parentPosition = (parent && parent.style) ? parent.style.position : null;
3227                elementPositioned = elementPositioned || (parentPosition && (parentPosition !== "static"));
3228            }
3229            return new Sys.UI.Point(offsetX, offsetY);
3230        }
3231        break;
3232    default:
3233        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
3234            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
3235            /// <param name="element" domElement="true"></param>
3236            /// <returns type="Sys.UI.Point"></returns>
3237            var e = Function._validateParams(arguments, [
3238                {name: "element", domElement: true}
3239            ]);
3240            if (e) throw e;
3241            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
3242            var offsetX = 0;
3243            var offsetY = 0;
3244            var previous = null;
3245            var previousStyle = null;
3246            var currentStyle = null;
3247            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
3248                var tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
3249                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
3250                if ((parent.offsetLeft || parent.offsetTop) &&
3251                    !((tagName === "BODY") &&
3252                    (!previousStyle || previousStyle.position !== "absolute"))) {
3253                    offsetX += parent.offsetLeft;
3254                    offsetY += parent.offsetTop;
3255                }
3256                if (previous !== null && currentStyle) {
3257                    if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
3258                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
3259                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
3260                    }
3261                    if (tagName === "TABLE" &&
3262                        (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
3263                        offsetX += parseInt(currentStyle.marginLeft) || 0;
3264                        offsetY += parseInt(currentStyle.marginTop) || 0;
3265                    }
3266                }
3267            }
3268            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
3269            var elementPosition = currentStyle ? currentStyle.position : null;
3270            if (!elementPosition || (elementPosition !== "absolute")) {
3271                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
3272                    tagName = parent.tagName ? parent.tagName.toUpperCase() : null;
3273                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
3274                        offsetX -= (parent.scrollLeft || 0);
3275                        offsetY -= (parent.scrollTop || 0);
3276                        currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
3277                        if (currentStyle) {
3278                            offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
3279                            offsetY += parseInt(currentStyle.borderTopWidth) || 0;
3280                        }
3281                    }
3282                }
3283            }
3284            return new Sys.UI.Point(offsetX, offsetY);
3285        }
3286        break;
3287}
3288Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) {
3289    /// <summary locid="M:J#Sys.UI.DomElement.removeCssClass" />
3290    /// <param name="element" domElement="true"></param>
3291    /// <param name="className" type="String"></param>
3292    var e = Function._validateParams(arguments, [
3293        {name: "element", domElement: true},
3294        {name: "className", type: String}
3295    ]);
3296    if (e) throw e;
3297    var currentClassName = ' ' + element.className + ' ';
3298    var index = currentClassName.indexOf(' ' + className + ' ');
3299    if (index >= 0) {
3300        element.className = (currentClassName.substr(0, index) + ' ' +
3301            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
3302    }
3303}
3304Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) {
3305    /// <summary locid="M:J#Sys.UI.DomElement.setLocation" />
3306    /// <param name="element" domElement="true"></param>
3307    /// <param name="x" type="Number" integer="true"></param>
3308    /// <param name="y" type="Number" integer="true"></param>
3309    var e = Function._validateParams(arguments, [
3310        {name: "element", domElement: true},
3311        {name: "x", type: Number, integer: true},
3312        {name: "y", type: Number, integer: true}
3313    ]);
3314    if (e) throw e;
3315    var style = element.style;
3316    style.position = 'absolute';
3317    style.left = x + "px";
3318    style.top = y + "px";
3319}
3320Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) {
3321    /// <summary locid="M:J#Sys.UI.DomElement.toggleCssClass" />
3322    /// <param name="element" domElement="true"></param>
3323    /// <param name="className" type="String"></param>
3324    var e = Function._validateParams(arguments, [
3325        {name: "element", domElement: true},
3326        {name: "className", type: String}
3327    ]);
3328    if (e) throw e;
3329    if (Sys.UI.DomElement.containsCssClass(element, className)) {
3330        Sys.UI.DomElement.removeCssClass(element, className);
3331    }
3332    else {
3333        Sys.UI.DomElement.addCssClass(element, className);
3334    }
3335}
3336Sys.UI.DomElement.getVisibilityMode = function Sys$UI$DomElement$getVisibilityMode(element) {
3337    /// <summary locid="M:J#Sys.UI.DomElement.getVisibilityMode" />
3338    /// <param name="element" domElement="true"></param>
3339    /// <returns type="Sys.UI.VisibilityMode"></returns>
3340    var e = Function._validateParams(arguments, [
3341        {name: "element", domElement: true}
3342    ]);
3343    if (e) throw e;
3344    return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ?
3345        Sys.UI.VisibilityMode.hide :
3346        Sys.UI.VisibilityMode.collapse;
3347}
3348Sys.UI.DomElement.setVisibilityMode = function Sys$UI$DomElement$setVisibilityMode(element, value) {
3349    /// <summary locid="M:J#Sys.UI.DomElement.setVisibilityMode" />
3350    /// <param name="element" domElement="true"></param>
3351    /// <param name="value" type="Sys.UI.VisibilityMode"></param>
3352    var e = Function._validateParams(arguments, [
3353        {name: "element", domElement: true},
3354        {name: "value", type: Sys.UI.VisibilityMode}
3355    ]);
3356    if (e) throw e;
3357    Sys.UI.DomElement._ensureOldDisplayMode(element);
3358    if (element._visibilityMode !== value) {
3359        element._visibilityMode = value;
3360        if (Sys.UI.DomElement.getVisible(element) === false) {
3361            if (element._visibilityMode === Sys.UI.VisibilityMode.hide) {
3362                element.style.display = element._oldDisplayMode;
3363            }
3364            else {
3365                element.style.display = 'none';
3366            }
3367        }
3368        element._visibilityMode = value;
3369    }
3370}
3371Sys.UI.DomElement.getVisible = function Sys$UI$DomElement$getVisible(element) {
3372    /// <summary locid="M:J#Sys.UI.DomElement.getVisible" />
3373    /// <param name="element" domElement="true"></param>
3374    /// <returns type="Boolean"></returns>
3375    var e = Function._validateParams(arguments, [
3376        {name: "element", domElement: true}
3377    ]);
3378    if (e) throw e;
3379    var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
3380    if (!style) return true;
3381    return (style.visibility !== 'hidden') && (style.display !== 'none');
3382}
3383Sys.UI.DomElement.setVisible = function Sys$UI$DomElement$setVisible(element, value) {
3384    /// <summary locid="M:J#Sys.UI.DomElement.setVisible" />
3385    /// <param name="element" domElement="true"></param>
3386    /// <param name="value" type="Boolean"></param>
3387    var e = Function._validateParams(arguments, [
3388        {name: "element", domElement: true},
3389        {name: "value", type: Boolean}
3390    ]);
3391    if (e) throw e;
3392    if (value !== Sys.UI.DomElement.getVisible(element)) {
3393        Sys.UI.DomElement._ensureOldDisplayMode(element);
3394        element.style.visibility = value ? 'visible' : 'hidden';
3395        if (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) {
3396            element.style.display = element._oldDisplayMode;
3397        }
3398        else {
3399            element.style.display = 'none';
3400        }
3401    }
3402}
3403Sys.UI.DomElement._ensureOldDisplayMode = function Sys$UI$DomElement$_ensureOldDisplayMode(element) {
3404    if (!element._oldDisplayMode) {
3405        var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
3406        element._oldDisplayMode = style ? style.display : null;
3407        if (!element._oldDisplayMode || element._oldDisplayMode === 'none') {
3408            switch(element.tagName.toUpperCase()) {
3409                case 'DIV': case 'P': case 'ADDRESS': case 'BLOCKQUOTE': case 'BODY': case 'COL':
3410                case 'COLGROUP': case 'DD': case 'DL': case 'DT': case 'FIELDSET': case 'FORM':
3411                case 'H1': case 'H2': case 'H3': case 'H4': case 'H5': case 'H6': case 'HR':
3412                case 'IFRAME': case 'LEGEND': case 'OL': case 'PRE': case 'TABLE': case 'TD':
3413                case 'TH': case 'TR': case 'UL':
3414                    element._oldDisplayMode = 'block';
3415                    break;
3416                case 'LI':
3417                    element._oldDisplayMode = 'list-item';
3418                    break;
3419                default:
3420                    element._oldDisplayMode = 'inline';
3421            }
3422        }
3423    }
3424}
3425Sys.UI.DomElement._getWindow = function Sys$UI$DomElement$_getWindow(element) {
3426    var doc = element.ownerDocument || element.document || element;
3427    return doc.defaultView || doc.parentWindow;
3428}
3429Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) {
3430    if (element.nodeType === 3) return null;
3431    var w = Sys.UI.DomElement._getWindow(element);
3432    if (element.documentElement) element = element.documentElement;
3433    var computedStyle = (w && (element !== w) && w.getComputedStyle) ?
3434        w.getComputedStyle(element, null) :
3435        element.currentStyle || element.style;
3436    if (!computedStyle && (Sys.Browser.agent === Sys.Browser.Safari) && element.style) {
3437        var oldDisplay = element.style.display;
3438        var oldPosition = element.style.position;
3439        element.style.position = 'absolute';
3440        element.style.display = 'block';
3441        var style = w.getComputedStyle(element, null);
3442 
3442       element.style.display = oldDisplay;
3443        element.style.position = oldPosition;
3444        computedStyle = {};
3445        for (var n in style) {
3446            computedStyle[n] = style[n];
3447        }
3448        computedStyle.display = 'none';
3449    }
3450    return computedStyle;
3451}
3452 
3453Sys.IContainer = function Sys$IContainer() {
3454    throw Error.notImplemented();
3455}
3456    function Sys$IContainer$addComponent(component) {
3457        /// <summary locid="M:J#Sys.IContainer.addComponent" />
3458        /// <param name="component" type="Sys.Component"></param>
3459        var e = Function._validateParams(arguments, [
3460            {name: "component", type: Sys.Component}
3461        ]);
3462        if (e) throw e;
3463        throw Error.notImplemented();
3464    }
3465    function Sys$IContainer$removeComponent(component) {
3466        /// <summary locid="M:J#Sys.IContainer.removeComponent" />
3467        /// <param name="component" type="Sys.Component"></param>
3468        var e = Function._validateParams(arguments, [
3469            {name: "component", type: Sys.Component}
3470        ]);
3471        if (e) throw e;
3472        throw Error.notImplemented();
3473    }
3474    function Sys$IContainer$findComponent(id) {
3475        /// <summary locid="M:J#Sys.IContainer.findComponent" />
3476        /// <param name="id" type="String"></param>
3477        /// <returns type="Sys.Component"></returns>
3478        var e = Function._validateParams(arguments, [
3479            {name: "id", type: String}
3480        ]);
3481        if (e) throw e;
3482        throw Error.notImplemented();
3483    }
3484    function Sys$IContainer$getComponents() {
3485        /// <summary locid="M:J#Sys.IContainer.getComponents" />
3486        /// <returns type="Array" elementType="Sys.Component"></returns>
3487        if (arguments.length !== 0) throw Error.parameterCount();
3488        throw Error.notImplemented();
3489    }
3490Sys.IContainer.prototype = {
3491    addComponent: Sys$IContainer$addComponent,
3492    removeComponent: Sys$IContainer$removeComponent,
3493    findComponent: Sys$IContainer$findComponent,
3494    getComponents: Sys$IContainer$getComponents
3495}
3496Sys.IContainer.registerInterface("Sys.IContainer");
3497 
3498Sys._ScriptLoader = function Sys$_ScriptLoader() {
3499    this._scriptsToLoad = null;
3500    this._sessions = [];
3501    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
3502}
3503    function Sys$_ScriptLoader$dispose() {
3504        this._stopSession();
3505        this._loading = false;
3506        if(this._events) {
3507            delete this._events;
3508        }
3509        this._sessions = null;
3510        this._currentSession = null;
3511        this._scriptLoadedDelegate = null;        
3512    }
3513    function Sys$_ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
3514        /// <summary locid="M:J#Sys._ScriptLoader.loadScripts" />
3515        /// <param name="scriptTimeout" type="Number" integer="true"></param>
3516        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true"></param>
3517        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true"></param>
3518        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true"></param>
3519        var e = Function._validateParams(arguments, [
3520            {name: "scriptTimeout", type: Number, integer: true},
3521            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
3522            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
3523            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
3524        ]);
3525        if (e) throw e;
3526        var session = {
3527            allScriptsLoadedCallback: allScriptsLoadedCallback,
3528            scriptLoadFailedCallback: scriptLoadFailedCallback,
3529            scriptLoadTimeoutCallback: scriptLoadTimeoutCallback,
3530            scriptsToLoad: this._scriptsToLoad,
3531            scriptTimeout: scriptTimeout };
3532        this._scriptsToLoad = null;
3533        this._sessions[this._sessions.length] = session;
3534        
3535        if (!this._loading) {
3536            this._nextSession();
3537        }
3538    }
3539    function Sys$_ScriptLoader$notifyScriptLoaded() {
3540        /// <summary locid="M:J#Sys._ScriptLoader.notifyScriptLoaded" />
3541        if (arguments.length !== 0) throw Error.parameterCount();
3542        
3543        if(!this._loading) {
3544            return;
3545        }
3546        this._currentTask._notified++;
3547        
3548        if(Sys.Browser.agent === Sys.Browser.Safari) {           
3549            if(this._currentTask._notified === 1) {
3550                window.setTimeout(Function.createDelegate(this, function() {
3551                    this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
3552                }), 0);
3553            }
3554        }
3555    }
3556    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
3557        /// <summary locid="M:J#Sys._ScriptLoader.queueCustomScriptTag" />
3558        /// <param name="scriptAttributes" mayBeNull="false"></param>
3559        var e = Function._validateParams(arguments, [
3560            {name: "scriptAttributes"}
3561        ]);
3562        if (e) throw e;
3563        if(!this._scriptsToLoad) {
3564            this._scriptsToLoad = [];
3565        }
3566        Array.add(this._scriptsToLoad, scriptAttributes);
3567    }
3568    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
3569        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptBlock" />
3570        /// <param name="scriptContent" type="String" mayBeNull="false"></param>
3571        var e = Function._validateParams(arguments, [
3572            {name: "scriptContent", type: String}
3573        ]);
3574        if (e) throw e;
3575        if(!this._scriptsToLoad) {
3576            this._scriptsToLoad = [];
3577        }
3578        Array.add(this._scriptsToLoad, {text: scriptContent});
3579    }
3580    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
3581        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptReference" />
3582        /// <param name="scriptUrl" type="String" mayBeNull="false"></param>
3583        var e = Function._validateParams(arguments, [
3584            {name: "scriptUrl", type: String}
3585        ]);
3586        if (e) throw e;
3587        if(!this._scriptsToLoad) {
3588            this._scriptsToLoad = [];
3589        }
3590        Array.add(this._scriptsToLoad, {src: scriptUrl});
3591    }
3592    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
3593        var scriptElement = document.createElement('script');
3594        scriptElement.type = 'text/javascript';
3595        for (var attr in queuedScript) {
3596            scriptElement[attr] = queuedScript[attr];
3597        }
3598        
3599        return scriptElement;
3600    }
3601    function Sys$_ScriptLoader$_loadScriptsInternal() {
3602        var session = this._currentSession;
3603        if (session.scriptsToLoad && session.scriptsToLoad.length > 0) {
3604            var nextScript = Array.dequeue(session.scriptsToLoad);
3605            var scriptElement = this._createScriptElement(nextScript);
3606            
3607            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
3608                scriptElement.innerHTML = scriptElement.text;
3609                delete scriptElement.text;
3610            }            
3611            if (typeof(nextScript.src) === "string") {
3612                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
3613                this._currentTask.execute();
3614            }
3615            else {
3616                var headElements = document.getElementsByTagName('head');
3617                if (headElements.length === 0) {
3618                     throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead);
3619                }
3620                else {
3621                     headElements[0].appendChild(scriptElement);
3622                }
3623                
3624                
3625                Sys._ScriptLoader._clearScript(scriptElement);
3626                this._loadScriptsInternal();
3627            }
3628        }
3629        else {
3630            this._stopSession();
3631            var callback = session.allScriptsLoadedCallback;
3632            if(callback) {
3633                callback(this);
3634            }
3635            this._nextSession();
3636        }
3637    }
3638    function Sys$_ScriptLoader$_nextSession() {
3639        if (this._sessions.length === 0) {
3640            this._loading = false;
3641            this._currentSession = null;
3642            return;
3643        }
3644        this._loading = true;
3645        
3646        var session = Array.dequeue(this._sessions);
3647        this._currentSession = session;
3648        this._loadScriptsInternal();
3649    }
3650    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
3651        var callback = this._currentSession.scriptLoadFailedCallback;
3652        var scriptElement = this._currentTask.get_scriptElement();
3653        this._stopSession();
3654        
3655        if(callback) {
3656            callback(this, scriptElement, multipleCallbacks);
3657            this._nextSession();
3658        }
3659        else {
3660            this._loading = false;
3661            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, multipleCallbacks);
3662        }
3663    }
3664    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
3665        if(loaded && this._currentTask._notified) {
3666            if(this._currentTask._notified > 1) {
3667                this._raiseError(true);
3668            }
3669            else {
3670                Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
3671                this._currentTask.dispose();
3672                this._currentTask = null;
3673                this._loadScriptsInternal();
3674            }
3675        }
3676        else {
3677            this._raiseError(false);
3678        }
3679    }
3680    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
3681        var callback = this._currentSession.scriptLoadTimeoutCallback;
3682        this._stopSession();
3683        if(callback) {
3684            callback(this);
3685        }
3686        this._nextSession();
3687    }
3688    function Sys$_ScriptLoader$_stopSession() {
3689        if(this._currentTask) {
3690            this._currentTask.dispose();
3691            this._currentTask = null;
3692        }
3693    }
3694Sys._ScriptLoader.prototype = {
3695    dispose: Sys$_ScriptLoader$dispose,
3696    loadScripts: Sys$_ScriptLoader$loadScripts,
3697    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
3698    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,
3699    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,
3700    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
3701    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,
3702    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
3703    _nextSession: Sys$_ScriptLoader$_nextSession,
3704    _raiseError: Sys$_ScriptLoader$_raiseError,
3705    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
3706    _scriptLoadTimeoutHandler: Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
3707    _stopSession: Sys$_ScriptLoader$_stopSession    
3708}
3709Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);
3710Sys._ScriptLoader.getInstance = function Sys$_ScriptLoader$getInstance() {
3711    var sl = Sys._ScriptLoader._activeInstance;
3712    if(!sl) {
3713        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
3714    }
3715    return sl;
3716}
3717Sys._ScriptLoader.isScriptLoaded = function Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
3718    var dummyScript = document.createElement('script');
3719    dummyScript.src = scriptSrc;
3720    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
3721}
3722Sys._ScriptLoader.readLoadedScripts = function Sys$_ScriptLoader$readLoadedScripts() {
3723    if(!Sys._ScriptLoader._referencedScripts) {
3724        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];
3725        var existingScripts = document.getElementsByTagName('script');
3726        for (i = existingScripts.length - 1; i >= 0; i--) {
3727            var scriptNode = existingScripts[i];
3728            var scriptSrc = scriptNode.src;
3729            if (scriptSrc.length) {
3730                if (!Array.contains(referencedScripts, scriptSrc)) {
3731                    Array.add(referencedScripts, scriptSrc);
3732                }
3733            }
3734        }
3735    }
3736}
3737Sys._ScriptLoader._clearScript = function Sys$_ScriptLoader$_clearScript(scriptElement) {
3738    if (!Sys.Debug.isDebug) {
3739        scriptElement.parentNode.removeChild(scriptElement);
3740    }
3741}
3742Sys._ScriptLoader._errorScriptLoadFailed = function Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
3743    var errorMessage;
3744    if(multipleCallbacks) {
3745        errorMessage = Sys.Res.scriptLoadMultipleCallbacks;
3746    }
3747    else {
3748        errorMessage = Sys.Res.scriptLoadFailedDebug;
3749    }
3750    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
3751    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
3752    e.popStackFrame();
3753    return e;
3754}
3755Sys._ScriptLoader._getLoadedScripts = function Sys$_ScriptLoader$_getL
3755oadedScripts() {
3756    if(!Sys._ScriptLoader._referencedScripts) {
3757        Sys._ScriptLoader._referencedScripts = [];
3758        Sys._ScriptLoader.readLoadedScripts();
3759    }
3760    return Sys._ScriptLoader._referencedScripts;
3761}
3762 
3763Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) {
3764    /// <summary locid="M:J#Sys._ScriptLoaderTask.#ctor" />
3765    /// <param name="scriptElement" domElement="true"></param>
3766    /// <param name="completedCallback" type="Function"></param>
3767    var e = Function._validateParams(arguments, [
3768        {name: "scriptElement", domElement: true},
3769        {name: "completedCallback", type: Function}
3770    ]);
3771    if (e) throw e;
3772    this._scriptElement = scriptElement;
3773    this._completedCallback = completedCallback;
3774    this._notified = 0;
3775}
3776    function Sys$_ScriptLoaderTask$get_scriptElement() {
3777        /// <value domElement="true" locid="P:J#Sys._ScriptLoaderTask.scriptElement"></value>
3778        if (arguments.length !== 0) throw Error.parameterCount();
3779        return this._scriptElement;
3780    }
3781    function Sys$_ScriptLoaderTask$dispose() {
3782        if(this._disposed) {
3783            return;
3784        }
3785        this._disposed = true;
3786        this._removeScriptElementHandlers();
3787        Sys._ScriptLoader._clearScript(this._scriptElement);
3788        this._scriptElement = null;
3789    }
3790    function Sys$_ScriptLoaderTask$execute() {
3791        /// <summary locid="M:J#Sys._ScriptLoaderTask.execute" />
3792        if (arguments.length !== 0) throw Error.parameterCount();
3793        this._addScriptElementHandlers();
3794        var headElements = document.getElementsByTagName('head');
3795        if (headElements.length === 0) {
3796             throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead);
3797        }
3798        else {
3799             headElements[0].appendChild(this._scriptElement);
3800        }
3801    }
3802    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
3803        this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);
3804        
3805        if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
3806            this._scriptElement.readyState = 'loaded';
3807            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
3808        }
3809        else {
3810            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
3811        }    
3812        if (this._scriptElement.addEventListener) {
3813            this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
3814            this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false);
3815        }
3816    }
3817    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
3818        if(this._scriptLoadDelegate) {
3819            var scriptElement = this.get_scriptElement();
3820            if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
3821                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
3822            }
3823            else {
3824                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
3825            }
3826            if (this._scriptErrorDelegate) {
3827                this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false);
3828                this._scriptErrorDelegate = null;
3829            }
3830            this._scriptLoadDelegate = null;
3831        }
3832    }
3833    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
3834        if(this._disposed) {
3835            return;
3836        }
3837        
3838        this._completedCallback(this.get_scriptElement(), false);
3839    }
3840    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
3841        if(this._disposed) {
3842            return;
3843        }
3844        var scriptElement = this.get_scriptElement();
3845        if ((scriptElement.readyState !== 'loaded') &&
3846            (scriptElement.readyState !== 'complete')) {
3847            return;
3848        }
3849        
3850        var _this = this;
3851        window.setTimeout(function() {
3852            _this._completedCallback(scriptElement, true);
3853        }, 0);
3854    }
3855Sys._ScriptLoaderTask.prototype = {
3856    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
3857    dispose: Sys$_ScriptLoaderTask$dispose,
3858    execute: Sys$_ScriptLoaderTask$execute,
3859    _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers,    
3860    _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers,    
3861    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
3862    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler  
3863}
3864Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);
3865 
3866Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
3867    /// <summary locid="M:J#Sys.ApplicationLoadEventArgs.#ctor" />
3868    /// <param name="components" type="Array" elementType="Sys.Component"></param>
3869    /// <param name="isPartialLoad" type="Boolean"></param>
3870    var e = Function._validateParams(arguments, [
3871        {name: "components", type: Array, elementType: Sys.Component},
3872        {name: "isPartialLoad", type: Boolean}
3873    ]);
3874    if (e) throw e;
3875    Sys.ApplicationLoadEventArgs.initializeBase(this);
3876    this._components = components;
3877    this._isPartialLoad = isPartialLoad;
3878}
3879 
3880    function Sys$ApplicationLoadEventArgs$get_components() {
3881        /// <value type="Array" elementType="Sys.Component" locid="P:J#Sys.ApplicationLoadEventArgs.components"></value>
3882        if (arguments.length !== 0) throw Error.parameterCount();
3883        return this._components;
3884    }
3885    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
3886        /// <value type="Boolean" locid="P:J#Sys.ApplicationLoadEventArgs.isPartialLoad"></value>
3887        if (arguments.length !== 0) throw Error.parameterCount();
3888        return this._isPartialLoad;
3889    }
3890Sys.ApplicationLoadEventArgs.prototype = {
3891    get_components: Sys$ApplicationLoadEventArgs$get_components,
3892    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
3893}
3894Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
3895Sys.HistoryEventArgs = function Sys$HistoryEventArgs(state) {
3896    /// <summary locid="M:J#Sys.HistoryEventArgs.#ctor" />
3897    /// <param name="state" type="Object"></param>
3898    var e = Function._validateParams(arguments, [
3899        {name: "state", type: Object}
3900    ]);
3901    if (e) throw e;
3902    Sys.HistoryEventArgs.initializeBase(this);
3903    this._state = state;
3904}
3905    function Sys$HistoryEventArgs$get_state() {
3906        /// <value type="Object" locid="P:J#Sys.HistoryEventArgs.state"></value>
3907        if (arguments.length !== 0) throw Error.parameterCount();
3908        return this._state;
3909    }
3910Sys.HistoryEventArgs.prototype = {
3911    get_state: Sys$HistoryEventArgs$get_state
3912}
3913Sys.HistoryEventArgs.registerClass('Sys.HistoryEventArgs', Sys.EventArgs);
3914 
3915Sys._Application = function Sys$_Application() {
3916    /// <summary locid="M:J#Sys.Application.#ctor" />
3917    if (arguments.length !== 0) throw Error.parameterCount();
3918    Sys._Application.initializeBase(this);
3919    this._disposableObjects = [];
3920    this._components = {};
3921    this._createdComponents = [];
3922    this._secondPassComponents = [];
3923    this._appLoadHandler = null;
3924    this._beginRequestHandler = null;
3925    this._clientId = null;
3926    this._currentEntry = '';
3927    this._endRequestHandler = null;
3928    this._history = null;
3929    this._enableHistory = false;
3930    this._historyEnabledInScriptManager = false;
3931    this._historyFrame = null;
3932    this._historyInitialized = false;
3933    this._historyInitialLength = 0;
3934    this._historyLength = 0;
3935    this._historyPointIsNew = false;
3936    this._ignoreTimer = false;
3937    this._initialState = null;
3938    this._state = {};
3939    this._timerCookie = 0;
3940    this._timerHandler = null;
3941    this._uniqueId = null;
3942    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
3943    this._loadHandlerDelegate = Function.createDelegate(this, this._loadHandler);
3944    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
3945    Sys.UI.DomEvent.addHandler(window, "load", this._loadHandlerDelegate);
3946}
3947    function Sys$_Application$get_isCreatingComponents() {
3948        /// <value type="Boolean" locid="P:J#Sys.Application.isCreatingComponents"></value>
3949        if (arguments.length !== 0) throw Error.parameterCount();
3950        return this._creatingComponents;
3951    }
3952    function Sys$_Application$get_stateString() {
3953        /// <value type="String" locid="P:J#Sys.Application.stateString"></value>
3954        if (arguments.length !== 0) throw Error.parameterCount();
3955        var hash = window.location.hash;
3956        if (this._isSafari2()) {
3957            var history = this._getHistory();
3958            if (history) {
3959                hash = history[window.history.length - this._historyInitialLength];
3960            }
3961        }
3962        if ((hash.length > 0) && (hash.charAt(0) === '#')) {
3963            hash = hash.substring(1);
3964        }
3965        if (Sys.Browser.agent === Sys.Browser.Firefox) {
3966            hash = this._serializeState(this._deserializeState(hash, true));
3967        }
3968        return hash;
3969    }
3970    function Sys$_Application$get_enableHistory() {
3971        /// <value type="Boolean" locid="P:J#Sys.Application.enableHistory"></value>
3972        if (arguments.length !== 0) throw Error.parameterCount();
3973        return this._enableHistory;
3974    }
3975    function Sys$_Application$set_enableHistory(value) {
3976        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
3977        if (e) throw e;
3978        if (this._initialized && !this._initializing) {
3979            throw Error.invalidOperation(Sys.Res.historyCannotEnableHistory);
3980        }
3981        else if (this._historyEnabledInScriptManager && !value) {
3982            throw Error.invalidOperation(Sys.Res.invalidHistorySettingCombination);
3983        }
3984        this._enableHistory = value;
3985    }
3986    function Sys$_Application$add_init(handler) {
3987        /// <summary locid="E:J#Sys.Application.init" />
3988        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
3989        if (e) throw e;
3990        if (this._initialized) {
3991            handler(this, Sys.EventArgs.Empty);
3992        }
3993        else {
3994            this.get_events().addHandler("init", handler);
3995        }
3996    }
3997    function Sys$_Application$remove_init(handler) {
3998        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
3999        if (e) throw e;
4000        this.get_events().removeHandler("init", handler);
4001    }
4002    function Sys$_Application$add_load(handler) {
4003        /// <summary locid="E:J#Sys.Application.load" />
4004        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4005        if (e) throw e;
4006        this.get_events().addHandler("load", handler);
4007    }
4008    function Sys$_Application$remove_load(handler) {
4009        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4010        if (e) throw e;
4011        this.get_events().removeHandler("load", handler);
4012    }
4013    function Sys$_Application$add_navigate(handler) {
4014        /// <summary locid="E:J#Sys.Application.navigate" />
4015        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4016        if (e) throw e;
4017        this.get_events().addHandler("navigate", handler);
4018    }
4019    function Sys$_Application$remove_navigate(handler) {
4020        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4021        if (e) throw e;
4022        this.get_events().removeHandler("navigate", handler);
4023    }
4024    function Sys$_Application$add_unload(handler) {
4025        /// <summary locid="E:J#Sys.Application.unload" />
4026        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4027        if (e) throw e;
4028        this.get_events().addHandler("unload", handler);
4029    }
4030    function Sys$_Application$remove_unload(handler) {
4031        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4032        if (e) throw e;
4033        this.get_events().removeHandler("unload", handler);
4034    }
4035    function Sys$_Application$addComponent(component) {
4036        /// <summary locid="M:J#Sys.Application.addComponent" />
4037        /// <param name="component" type="Sys.Component"></param>
4038        var e = Function._validateParams(arguments, [
4039            {name: "component", type: Sys.Component}
4040        ]);
4041        if (e) throw e;
4042        var id = component.get_id();
4043        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
4044        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
4045        this._components[id] = component;
4046    }
4047    function Sys$_Application$addHistoryPoint(state, title) {
4048        /// <summary locid="M:J#Sys.Application.addHistoryPoint" />
4049        /// <param name="state" type="Object"></param>
4050        /// <param name="title" type="String" optional="true" mayBeNull="true"></param>
4051        var e = Function._validateParams(arguments, [
4052            {name: "state", type: Object},
4053            {name: "title", type: String, mayBeNull: true, optional: true}
4054        ]);
4055        if (e) throw e;
4056        if (!this._enableHistory) throw Error.invalidOperation(Sys.Res.historyCannotAddHistoryPointWithHistoryDisabled);
4057        for (var n in state) {
4058            var v = state[n];
4059            var t = typeof(v);
4060            if ((v !== null) && ((t === 'object') || (t === 'function') || (t === 'undefined'))) {
4061                throw Error.argument('state', Sys.Res.stateMustBeStringDictionary);
4062            }
4063        }
4064        this._ensureHistory();
4065        var initialState = this._state;
4066        for (var key in state) {
4067            var value = state[key];
4068            if (value === null) {
4069                if (typeof(initialState[key]) !== 'undefined') {
4070                    delete initialState[key];
4071                }
4072            }
4073            else {
4074                initialState[key] = value;
4075            }
4076        }
4077        var entry = this._serializeState(initialState);
4078        this._historyPointIsNew = true;
4079        this._setState(entry, title);
4080        this._raiseNavigate();
4081    }
4082    function Sys$_Application$beginCreateComponents() {
4083        /// <summary locid="M:J#Sys.Application.beginCreateComponents" />
4084        if (arguments.length !== 0) throw Error.parameterCount();
4085        this._creatingComponents = true;
4086    }
4087    function Sys$_Application$dispose() {
4088        /// <summary locid="M:J#Sys.Application.dispose" />
4089        if (arguments.length !== 0) throw Error.parameterCount();
4090        if (!this._disposing) {
4091            this._disposing = true;
4092            if (this._timerCookie) {
4093                window.clearTimeout(this._timerCookie);
4094                delete this._timerCookie;
4095            }
4096            if (this._endRequestHandler) {
4097                Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);
4098                delete this._endRequestHandler;
4099            }
4100            if (this._beginRequestHandler) {
4101                Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);
4102                delete this._beginRequestHandler;
4103            }
4104            if (window.pageUnload) {
4105                window.pageUnload(this, Sys.EventArgs.Empty);
4106            }
4107            var unloadHandler = this.get_events().getHandler("unload");
4108            if (unloadHandler) {
4109                unloadHandler(this, Sys.EventArgs.Empty);
4110            }
4111            var disposableObjects = Array.clone(this._disposableObjects);
4112            for (var i = 0, l = disposableObjects.length; i < l; i++) {
4113                disposableObjects[i].dispose();
4114            }
4115            Array.clear(this._disposableObjects);
4116            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);
4117            if(this._loadHandlerDelegate) {
4118                Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
4119                this._loadHandlerDelegate = null;
4120            }
4121            var sl = Sys._ScriptLoader.getInstance();
4122            if(sl) {
4123                sl.dispose();
4124            }
4125            Sys._Application.callBaseMethod(this, 'dispose');
4126        }
4127    }
4128    function Sys$_Application$endCreateComponents() {
4129        /// <summary locid="M:J#Sys.Application.endCreateComponents" />
4130        if (arguments.length !== 0) throw Error.parameterCount();
4131        var components = this._secondPassComponents;
4132        for (var i = 0, l = components.length; i < l; i++) {
4133            var component = components[i].component;
4134            Sys$Component$_setReferences(component, components[i].references);
4135            component.endUpdate();
4136        }
4137        this._secondPassComponents = [];
4138        this._creatingComponents = false;
4139    }
4140    function Sys$_Application$findComponent(id, parent) {
4141        /// <summary locid="M:J#Sys.Application.findComponent" />
4142        /// <param name="id" type="String"></param>
4143        /// <param name="parent" optional="true" mayBeNull="true"></param>
4144        /// <returns type="Sys.Component" mayBeNull="true"></returns>
4145        var e = Function._validateParams(arguments, [
4146            {name: "id", type: String},
4147            {name: "parent", mayBeNull: true, optional: true}
4148        ]);
4149        if (e) throw e;
4150        return (parent ?
4151            ((Sys.IContainer.isInstanceOfType(parent)) ?
4152                parent.findComponent(id) :
4153                parent[id] || null) :
4154            Sys.Application._components[id] || null);
4155    }
4156    function Sys$_Application$getComponents() {
4157        /// <summary locid="M:J#Sys.Application.getComponents" />
4158        /// <returns type="Array" elementType="Sys.Component"></returns>
4159        if (arguments.length !== 0) throw Error.parameterCount();
4160        var res = [];
4161        var components = this._components;
4162        for (var name in components) {
4163            res[res.length] = components[name];
4164        }
4165        return res;
4166    }
4167    function Sys$_Application$initialize() {
4168        /// <summary locid="M:J#Sys.Application.initialize" />
4169        if (arguments.length !== 0) throw Error.parameterCount();
4170        if(!this._initialized && !this._initializing) {
4171            this._initializing = true;
4172            var check, er, app = this;
4173            function init() { if (!app._initialized) app._doInitialize(); }
4174    
4175            var onload = function() {
4176                Sys.UI.DomEvent.removeHandler(window, "load", onload);
4177                init();
4178            }
4179            Sys.UI.DomEvent.addHandler(window, "load", onload);
4180            if (document.addEventListener) {
4181                try {
4182                    document.addEventListener("DOMContentLoaded", check = function() {
4183                        document.removeEventListener("DOMContentLoaded", check, false);
4184                        init();
4185                    }, false);
4186                }
4187                catch (er) { }
4188            }
4189            else if (document.attachEvent) {
4190                if ((window == window.top) && document.documentElement.doScroll) {
4191                    var timeout, el = document.createElement("div");
4192                    check = function() {
4193                        try {
4194                            el.doScroll("left");
4195                        }
4196                        catch (er) {
4197                            timeout = window.setTimeout(check, 0);
4198                            return;
4199                        }
4200                        el = null;
4201                        init();
4202                    }
4203                    check();
4204                }
4205                else {
4206                    document.attachEvent("onreadystatechange", check = function() {
4207                        if (document.readyState === "complete") {
4208                            document.detachEvent("onreadystatechange", check);
4209                            init();
4210                        }
4211                    });
4212                }
4213            }
4214        }
4215    }
4216    function Sys$_Application$notifyScriptLoaded() {
4217        /// <summary locid="M:J#Sys.Application.notifyScriptLoaded" />
4218        if (arguments.length !== 0) throw Error.parameterCount();
4219        var sl = Sys._ScriptLoader.getInstance();
4220        if(sl) {
4221            sl.notifyScriptLoaded();
4222        }
4223    }
4224    function Sys$_Application$registerDisposableObject(object) {
4225        /// <summary locid="M:J#Sys.Application.registerDisposableObject" />
4226        /// <param name="object" type="Sys.IDisposable"></param>
4227        var e = Function._validateParams(arguments, [
4228            {name: "object", type: Sys.IDisposable}
4229        ]);
4230        if (e) throw e;
4231        if (!this._disposing) {
4232            this._disposableObjects[this._disposableObjects.length] = object;
4233        }
4234    }
4235    function Sys$_Application$raiseLoad() {
4236        /// <summary locid="M:J#Sys.Application.raiseLoad" />
4237        if (arguments.length !== 0) throw Error.parameterCount();
4238        var h = this.get_events().getHandler("load");
4239        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !this._initializing);
4240        if (h) {
4241            h(this, args);
4242        }
4243        if (window.pageLoad) {
4244            window.pageLoad(this, args);
4245        }
4246        this._createdComponents = [];
4247    }
4248    function Sys$_Application$removeComponent(component) {
4249        /// <summary locid="M:J#Sys.Application.removeComponent" />
4250        /// <param name="component" type="Sys.Component"></param>
4251        var e = Function._validateParams(arguments, [
4252            {name: "component", type: Sys.Component}
4253        ]);
4254        if (e) throw e;
4255        var id = component.get_id();
4256        if (id) delete this._components[id];
4257    }
4258    function Sys$_Application$setServerId(clientId, uniqueId) {
4259        /// <summary locid="M:J#Sys.Application.setServerId" />
4260        /// <param name="clientId" type="String"></param>
4261        /// <param name="uniqueId" type="String"></param>
4262        var e = Function._validateParams(arguments, [
4263            {name: "clientId", type: String},
4264            {name: "uniqueId", type: String}
4265        ]);
4266        if (e) throw e;
4267        this._clientId = clientId;
4268        this._uniqueId = uniqueId;
4269    }
4270    function Sys$_Application$setServerState(value) {
4271        /// <summary locid="M:J#Sys.Application.setServerState" />
4272        /// <param name="value" type="String"></param>
4273        var e = Function._validateParams(arguments, [
4274            {name: "value", type: String}
4275        ]);
4276        if (e) throw e;
4277        this._ensureHistory();
4278        this._state.__s = value;
4279        this._updateHiddenField(value);
4280    }
4281    function Sys$_Application$unregisterDisposableObject(object) {
4282        /// <summary locid="M:J#Sys.Application.unregisterDisposableObject" />
4283        /// <param name="object" type="Sys.IDisposable"></param>
4284        var e = Function._validateParams(arguments, [
4285            {name: "object", type: Sys.IDisposable}
4286        ]);
4287        if (e) throw e;
4288        if (!this._disposing) {
4289            Array.remove(this._disposableObjects, object);
4290        }
4291    }
4292    function Sys$_Application$_addComponentToSecondPass(component, references) {
4293        this._secondPassComponents[this._secondPassComponents.length] = {c
4293omponent: component, references: references};
4294    }
4295    function Sys$_Application$_deserializeState(entry, skipDecodeUri) {
4296        var result = {};
4297        entry = entry || '';
4298        var serverSeparator = entry.indexOf('&&');
4299        if ((serverSeparator !== -1) && (serverSeparator + 2 < entry.length)) {
4300            result.__s = entry.substr(serverSeparator + 2);
4301            entry = entry.substr(0, serverSeparator);
4302        }
4303        var tokens = entry.split('&');
4304        for (var i = 0, l = tokens.length; i < l; i++) {
4305            var token = tokens[i];
4306            var equal = token.indexOf('=');
4307            if ((equal !== -1) && (equal + 1 < token.length)) {
4308                var name = token.substr(0, equal);
4309                var value = token.substr(equal + 1);
4310                result[name] = skipDecodeUri ? value : decodeURIComponent(value);
4311            }
4312        }
4313        return result;
4314    }
4315    function Sys$_Application$_doInitialize() {
4316        Sys._Application.callBaseMethod(this, 'initialize');
4317        
4318        var handler = this.get_events().getHandler("init");
4319        if (handler) {
4320            this.beginCreateComponents();
4321            handler(this, Sys.EventArgs.Empty);
4322            this.endCreateComponents();
4323        }
4324        if (Sys.WebForms) {
4325            this._beginRequestHandler = Function.createDelegate(this, this._onPageRequestManagerBeginRequest);
4326            Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this._beginRequestHandler);
4327            this._endRequestHandler = Function.createDelegate(this, this._onPageRequestManagerEndRequest);
4328            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandler);
4329        }
4330        
4331        var loadedEntry = this.get_stateString();
4332        if (loadedEntry !== this._currentEntry) {
4333            this._navigate(loadedEntry);
4334        }
4335 
4336        this.raiseLoad();
4337        this._initializing = false;
4338    }
4339    function Sys$_Application$_enableHistoryInScriptManager() {
4340        this._enableHistory = true;
4341        this._historyEnabledInScriptManager = true;
4342    }
4343    function Sys$_Application$_ensureHistory() {
4344        if (!this._historyInitialized && this._enableHistory) {
4345            if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.documentMode < 8)) {
4346                this._historyFrame = document.getElementById('__historyFrame');
4347                if (!this._historyFrame) throw Error.invalidOperation(Sys.Res.historyMissingFrame);
4348                this._ignoreIFrame = true;
4349            }
4350            if (this._isSafari2()) {
4351                var historyElement = document.getElementById('__history');
4352                if (!historyElement) throw Error.invalidOperation(Sys.Res.historyMissingHiddenInput);
4353                this._setHistory([window.location.hash]);
4354                this._historyInitialLength = window.history.length;
4355            }
4356            
4357            this._timerHandler = Function.createDelegate(this, this._onIdle);
4358            this._timerCookie = window.setTimeout(this._timerHandler, 100);
4359            
4360            try {
4361                this._initialState = this._deserializeState(this.get_stateString());
4362            } catch(e) {}
4363            
4364            this._historyInitialized = true;
4365        }
4366    }
4367    function Sys$_Application$_getHistory() {
4368        var historyElement = document.getElementById('__history');
4369        if (!historyElement) return '';
4370        var v = historyElement.value;
4371        return v ? Sys.Serialization.JavaScriptSerializer.deserialize(v, true) : '';
4372    }
4373    function Sys$_Application$_isSafari2() {
4374        return (Sys.Browser.agent === Sys.Browser.Safari) &&
4375            (Sys.Browser.version <= 419.3);
4376    }
4377    function Sys$_Application$_loadHandler() {
4378        if(this._loadHandlerDelegate) {
4379            Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
4380            this._loadHandlerDelegate = null;
4381        }
4382        this.initialize();
4383    }
4384    function Sys$_Application$_navigate(entry) {
4385        this._ensureHistory();
4386        var state = this._deserializeState(entry);
4387        
4388        if (this._uniqueId) {
4389            var oldServerEntry = this._state.__s || '';
4390            var newServerEntry = state.__s || '';
4391            if (newServerEntry !== oldServerEntry) {
4392                this._updateHiddenField(newServerEntry);
4393                __doPostBack(this._uniqueId, newServerEntry);
4394                this._state = state;
4395                return;
4396            }
4397        }
4398        this._setState(entry);
4399        this._state = state;
4400        this._raiseNavigate();
4401    }
4402    function Sys$_Application$_onIdle() {
4403        delete this._timerCookie;
4404        
4405        var entry = this.get_stateString();
4406        if (entry !== this._currentEntry) {
4407            if (!this._ignoreTimer) {
4408                this._historyPointIsNew = false;
4409                this._navigate(entry);
4410                this._historyLength = window.history.length;
4411            }
4412        }
4413        else {
4414            this._ignoreTimer = false;
4415        }
4416        this._timerCookie = window.setTimeout(this._timerHandler, 100);
4417    }
4418    function Sys$_Application$_onIFrameLoad(entry) {
4419        this._ensureHistory();
4420        if (!this._ignoreIFrame) {
4421            this._historyPointIsNew = false;
4422            this._navigate(entry);
4423        }
4424        this._ignoreIFrame = false;
4425    }
4426    function Sys$_Application$_onPageRequestManagerBeginRequest(sender, args) {
4427        this._ignoreTimer = true;
4428    }
4429    function Sys$_Application$_onPageRequestManagerEndRequest(sender, args) {
4430        var dataItem = args.get_dataItems()[this._clientId];
4431        var eventTarget = document.getElementById("__EVENTTARGET");
4432        if (eventTarget && eventTarget.value === this._uniqueId) {
4433            eventTarget.value = '';
4434        }
4435        if (typeof(dataItem) !== 'undefined') {
4436            this.setServerState(dataItem);
4437            this._historyPointIsNew = true;
4438        }
4439        else {
4440            this._ignoreTimer = false;
4441        }
4442        var entry = this._serializeState(this._state);
4443        if (entry !== this._currentEntry) {
4444            this._ignoreTimer = true;
4445            this._setState(entry);
4446            this._raiseNavigate();
4447        }
4448    }
4449    function Sys$_Application$_raiseNavigate() {
4450        var h = this.get_events().getHandler("navigate");
4451        var stateClone = {};
4452        for (var key in this._state) {
4453            if (key !== '__s') {
4454                stateClone[key] = this._state[key];
4455            }
4456        }
4457        var args = new Sys.HistoryEventArgs(stateClone);
4458        if (h) {
4459            h(this, args);
4460        }
4461    }
4462    function Sys$_Application$_serializeState(state) {
4463        var serialized = [];
4464        for (var key in state) {
4465            var value = state[key];
4466            if (key === '__s') {
4467                var serverState = value;
4468            }
4469            else {
4470                if (key.indexOf('=') !== -1) throw Error.argument('state', Sys.Res.stateFieldNameInvalid);
4471                serialized[serialized.length] = key + '=' + encodeURIComponent(value);
4472            }
4473        }
4474        return serialized.join('&') + (serverState ? '&&' + serverState : '');
4475    }
4476    function Sys$_Application$_setHistory(historyArray) {
4477        var historyElement = document.getElementById('__history');
4478        if (historyElement) {
4479            historyElement.value = Sys.Serialization.JavaScriptSerializer.serialize(historyArray);
4480        }
4481    }
4482    function Sys$_Application$_setState(entry, title) {
4483        entry = entry || '';
4484        if (entry !== this._currentEntry) {
4485            if (window.theForm) {
4486                var action = window.theForm.action;
4487                var hashIndex = action.indexOf('#');
4488                window.theForm.action = ((hashIndex !== -1) ? action.substring(0, hashIndex) : action) + '#' + entry;
4489            }
4490            
4491            if (this._historyFrame && this._historyPointIsNew) {
4492                this._ignoreIFrame = true;
4493                this._historyPointIsNew = false;
4494                var frameDoc = this._historyFrame.contentWindow.document;
4495                frameDoc.open("javascript:'<html></html>'");
4496                frameDoc.write("<html><head><title>" + (title || document.title) +
4497                    "</title><scri" + "pt type=\"text/javascript\">parent.Sys.Application._onIFrameLoad('" + 
4498                    entry + "');</scri" + "pt></head><body></body></html>");
4499                frameDoc.close();
4500            }
4501            this._ignoreTimer = false;
4502            var currentHash = this.get_stateString();
4503            this._currentEntry = entry;
4504            if (entry !== currentHash) {
4505                var loc = document.location;
4506                if (loc.href.length - loc.hash.length + entry.length > 1024) {
4507                    throw Error.invalidOperation(Sys.Res.urlMustBeLessThan1024chars);
4508                }
4509                if (this._isSafari2()) {
4510                    var history = this._getHistory();
4511                    history[window.history.length - this._historyInitialLength + 1] = entry;
4512                    this._setHistory(history);
4513                    this._historyLength = window.history.length + 1;
4514                    var form = document.createElement('form');
4515                    form.method = 'get';
4516                    form.action = '#' + entry;
4517                    document.appendChild(form);
4518                    form.submit();
4519                    document.removeChild(form);
4520                }
4521                else {
4522                    window.location.hash = entry;
4523                }
4524                if ((typeof(title) !== 'undefined') && (title !== null)) {
4525                    document.title = title;
4526                }
4527            }
4528        }
4529    }
4530    function Sys$_Application$_unloadHandler(event) {
4531        this.dispose();
4532    }
4533    function Sys$_Application$_updateHiddenField(value) {
4534        if (this._clientId) {
4535            var serverStateField = document.getElementById(this._clientId);
4536            if (serverStateField) {
4537                serverStateField.value = value;
4538            }
4539        }
4540    }
4541Sys._Application.prototype = {
4542    _creatingComponents: false,
4543    _disposing: false,
4544    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
4545    get_stateString: Sys$_Application$get_stateString,
4546    get_enableHistory: Sys$_Application$get_enableHistory,
4547    set_enableHistory: Sys$_Application$set_enableHistory,
4548    add_init: Sys$_Application$add_init,
4549    remove_init: Sys$_Application$remove_init,
4550    add_load: Sys$_Application$add_load,
4551    remove_load: Sys$_Application$remove_load,
4552    add_navigate: Sys$_Application$add_navigate,
4553    remove_navigate: Sys$_Application$remove_navigate,
4554    add_unload: Sys$_Application$add_unload,
4555    remove_unload: Sys$_Application$remove_unload,
4556    addComponent: Sys$_Application$addComponent,
4557    addHistoryPoint: Sys$_Application$addHistoryPoint,
4558    beginCreateComponents: Sys$_Application$beginCreateComponents,
4559    dispose: Sys$_Application$dispose,
4560    endCreateComponents: Sys$_Application$endCreateComponents,
4561    findComponent: Sys$_Application$findComponent,
4562    getComponents: Sys$_Application$getComponents,
4563    initialize: Sys$_Application$initialize,
4564    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
4565    registerDisposableObject: Sys$_Application$registerDisposableObject,
4566    raiseLoad: Sys$_Application$raiseLoad,
4567    removeComponent: Sys$_Application$removeComponent,
4568    setServerId: Sys$_Application$setServerId,
4569    setServerState: Sys$_Application$setServerState,
4570    unregisterDisposableObject: Sys$_Application$unregisterDisposableObject,
4571    _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass,
4572    _deserializeState: Sys$_Application$_deserializeState,
4573    _doInitialize: Sys$_Application$_doInitialize,
4574    _enableHistoryInScriptManager: Sys$_Application$_enableHistoryInScriptManager,    
4575    _ensureHistory: Sys$_Application$_ensureHistory,
4576    _getHistory: Sys$_Application$_getHistory,
4577    _isSafari2: Sys$_Application$_isSafari2,
4578    _loadHandler: Sys$_Application$_loadHandler,
4579    _navigate: Sys$_Application$_navigate,
4580    _onIdle: Sys$_Application$_onIdle,
4581    _onIFrameLoad: Sys$_Application$_onIFrameLoad,
4582    _onPageRequestManagerBeginRequest: Sys$_Application$_onPageRequestManagerBeginRequest,
4583    _onPageRequestManagerEndRequest: Sys$_Application$_onPageRequestManagerEndRequest,
4584    _raiseNavigate: Sys$_Application$_raiseNavigate,
4585    _serializeState: Sys$_Application$_serializeState,
4586    _setHistory: Sys$_Application$_setHistory,
4587    _setState: Sys$_Application$_setState,
4588    _unloadHandler: Sys$_Application$_unloadHandler,
4589    _updateHiddenField: Sys$_Application$_updateHiddenField
4590}
4591Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer);
4592Sys.Application = new Sys._Application();
4593var $find = Sys.Application.findComponent;
4594Type.registerNamespace('Sys.Net');
4595 
4596Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() {
4597    /// <summary locid="M:J#Sys.Net.WebRequestExecutor.#ctor" />
4598    if (arguments.length !== 0) throw Error.parameterCount();
4599    this._webRequest = null;
4600    this._resultObject = null;
4601}
4602    function Sys$Net$WebRequestExecutor$get_webRequest() {
4603        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.WebRequestExecutor.webRequest"></value>
4604        if (arguments.length !== 0) throw Error.parameterCount();
4605        return this._webRequest;
4606    }
4607    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
4608        if (this.get_started()) {
4609            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
4610        }
4611        this._webRequest = value;
4612    }
4613    function Sys$Net$WebRequestExecutor$get_started() {
4614        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.started"></value>
4615        if (arguments.length !== 0) throw Error.parameterCount();
4616        throw Error.notImplemented();
4617    }
4618    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
4619        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.responseAvailable"></value>
4620        if (arguments.length !== 0) throw Error.parameterCount();
4621        throw Error.notImplemented();
4622    }
4623    function Sys$Net$WebRequestExecutor$get_timedOut() {
4624        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.timedOut"></value>
4625        if (arguments.length !== 0) throw Error.parameterCount();
4626        throw Error.notImplemented();
4627    }
4628    function Sys$Net$WebRequestExecutor$get_aborted() {
4629        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.aborted"></value>
4630        if (arguments.length !== 0) throw Error.parameterCount();
4631        throw Error.notImplemented();
4632    }
4633    function Sys$Net$WebRequestExecutor$get_responseData() {
4634        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.responseData"></value>
4635        if (arguments.length !== 0) throw Error.parameterCount();
4636        throw Error.notImplemented();
4637    }
4638    function Sys$Net$WebRequestExecutor$get_statusCode() {
4639        /// <value type="Number" locid="P:J#Sys.Net.WebRequestExecutor.statusCode"></value>
4640        if (arguments.length !== 0) throw Error.parameterCount();
4641        throw Error.notImplemented();
4642    }
4643    function Sys$Net$WebRequestExecutor$get_statusText() {
4644        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.statusText"></value>
4645        if (arguments.length !== 0) throw Error.parameterCount();
4646        throw Error.notImplemented();
4647    }
4648    function Sys$Net$WebRequestExecutor$get_xml() {
4649        /// <value locid="P:J#Sys.Net.WebRequestExecutor.xml"></value>
4650        if (arguments.length !== 0) throw Error.parameterCount();
4651        throw Error.notImplemented();
4652    }
4653    function Sys$Net$WebRequestExecutor$get_object() {
4654        /// <value locid="P:J#Sys.Net.WebRequestExecutor.object"></value>
4655        if (arguments.length !== 0) throw Error.parameterCount();
4656        if (!this._resultObject) {
4657            this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
4658        }
4659        return this._resultObject;
4660    }
4661    function Sys$Net$WebRequestExecutor$executeRequest() {
4662        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.executeRequest" />
4663        if (arguments.length !== 0) throw Error.parameterCount();
4664        throw Error.notImplemented();
4665    }
4666    function Sys$Net$WebRequestExecutor$abort() {
4667        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.abort" />
4668        if (arguments.length !== 0) throw Error.parameterCount();
4669        throw Error.notImplemented();
4670    }
4671    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
4672        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getResponseHeader" />
4673        /// <param name="header" type="String"></param>
4674        var e = Function._validateParams(arguments, [
4675            {name: "header", type: String}
4676        ]);
4677        if (e) throw e;
4678        throw Error.notImplemented();
4679    }
4680    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
4681        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getAllResponseHeaders" />
4682        if (arguments.length !== 0) throw Error.parameterCount();
4683        throw Error.notImplemented();
4684    }
4685Sys.Net.WebRequestExecutor.prototype = {
4686    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,
4687    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,
4688    get_started: Sys$Net$WebRequestExecutor$get_started,
4689    get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable,
4690    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
4691    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
4692    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
4693    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
4694    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
4695    get_xml: Sys$Net$WebRequestExecutor$get_xml,
4696    get_object: Sys$Net$WebRequestExecutor$get_object,
4697    executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
4698    abort: Sys$Net$WebRequestExecutor$abort,
4699    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
4700    getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders
4701}
4702Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
4703 
4704Sys.Net.XMLDOM = function Sys$Net$XMLDOM(markup) {
4705    /// <summary locid="M:J#Sys.Net.XMLDOM.#ctor" />
4706    /// <param name="markup" type="String"></param>
4707    var e = Function._validateParams(arguments, [
4708        {name: "markup", type: String}
4709    ]);
4710    if (e) throw e;
4711    if (!window.DOMParser) {
4712        var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
4713        for (var i = 0, l = progIDs.length; i < l; i++) {
4714            try {
4715                var xmlDOM = new ActiveXObject(progIDs[i]);
4716                xmlDOM.async = false;
4717                xmlDOM.loadXML(markup);
4718                xmlDOM.setProperty('SelectionLanguage', 'XPath');
4719                return xmlDOM;
4720            }
4721            catch (ex) {
4722            }
4723        }
4724    }
4725    else {
4726        try {
4727            var domParser = new window.DOMParser();
4728            return domParser.parseFromString(markup, 'text/xml');
4729        }
4730        catch (ex) {
4731        }
4732    }
4733    return null;
4734}
4735Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() {
4736    /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.#ctor" />
4737    if (arguments.length !== 0) throw Error.parameterCount();
4738    Sys.Net.XMLHttpExecutor.initializeBase(this);
4739    var _this = this;
4740    this._xmlHttpRequest = null;
4741    this._webRequest = null;
4742    this._responseAvailable = false;
4743    this._timedOut = false;
4744    this._timer = null;
4745    this._aborted = false;
4746    this._started = false;
4747    this._onReadyStateChange = (function () {
4748        
4749        if (_this._xmlHttpRequest.readyState === 4 ) {
4750            try {
4751                if (typeof(_this._xmlHttpRequest.status) === "undefined") {
4752                    return;
4753                }
4754            }
4755            catch(ex) {
4756                return;
4757            }
4758            
4759            _this._clearTimer();
4760            _this._responseAvailable = true;
4761            try {
4762                _this._webRequest.completed(Sys.EventArgs.Empty);
4763            }
4764            finally {
4765                if (_this._xmlHttpRequest != null) {
4766                    _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
4767                    _this._xmlHttpRequest = null;
4768                }
4769            }
4770        }
4771    });
4772    this._clearTimer = (function() {
4773        if (_this._timer != null) {
4774            window.clearTimeout(_this._timer);
4775            _this._timer = null;
4776        }
4777    });
4778    this._onTimeout = (function() {
4779        if (!_this._responseAvailable) {
4780            _this._clearTimer();
4781            _this._timedOut = true;
4782            _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
4783            _this._xmlHttpRequest.abort();
4784            _this._webRequest.completed(Sys.EventArgs.Empty);
4785            _this._xmlHttpRequest = null;
4786        }
4787    });
4788}
4789    function Sys$Net$XMLHttpExecutor$get_timedOut() {
4790        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.timedOut"></value>
4791        if (arguments.length !== 0) throw Error.parameterCount();
4792        return this._timedOut;
4793    }
4794    function Sys$Net$XMLHttpExecutor$get_started() {
4795        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.started"></value>
4796        if (arguments.length !== 0) throw Error.parameterCount();
4797        return this._started;
4798    }
4799    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
4800        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.responseAvailable"></value>
4801        if (arguments.length !== 0) throw Error.parameterCount();
4802        return this._responseAvailable;
4803    }
4804    function Sys$Net$XMLHttpExecutor$get_aborted() {
4805        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.aborted"></value>
4806        if (arguments.length !== 0) throw Error.parameterCount();
4807        return this._aborted;
4808    }
4809    function Sys$Net$XMLHttpExecutor$executeRequest() {
4810        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.executeRequest" />
4811        if (arguments.length !== 0) throw Error.parameterCount();
4812        this._webRequest = this.get_webRequest();
4813        if (this._started) {
4814            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
4815        }
4816        if (this._webRequest === null) {
4817            throw Error.invalidOperation(Sys.Res.nullWebRequest);
4818        }
4819        var body = this._webRequest.get_body();
4820        var headers = this._webRequest.get_headers();
4821        this._xmlHttpRequest = new XMLHttpRequest();
4822        this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange;
4823        var verb = this._webRequest.get_httpVerb();
4824        this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true );
4825        if (headers) {
4826            for (var header in headers) {
4827                var val = headers[header];
4828                if (typeof(val) !== "function")
4829                    this._xmlHttpRequest.setRequestHeader(header, val);
4830            }
4831        }
4832        if (verb.toLowerCase() === "post") {
4833            if ((headers === null) || !headers['Content-Type']) {
4834                this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
4835            }
4836            if (!body) {
4837                body = "";
4838            }
4839        }
4840        var timeout = this._webRequest.get_timeout();
4841        if (timeout > 0) {
4842            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
4843        }
4844        this._xmlHttpRequest.send(body);
4845        this._started = true;
4846    }
4847    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
4848        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.getResponseHeader" />
4849        /// <param name="header" type="String"></param>
4850        /// <returns type="String"></returns>
4851        var e = Function._validateParams(arguments, [
4852            {name: "header", type: String}
4853        ]);
4854        if (e) throw e;
4855        if (!this._responseAvailable) {
4856            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
4857        }
4858        if (!this._xmlHttpRequest) {
4859            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
4860        }
4861        var result;
4862        try {
4863            result = this._xmlHttpRequest.getResponseHeader(header);
4864        } catch (e) {
4865        }
4866        if (!result) result = "";
4867        return result;
4868    }
4869    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
4870        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.getAllResponseHeaders" />
4871        /// <returns type="String"></returns>
4872        if (arguments.length !== 0) throw Error.parameterCount();
4873        if (!this._responseAvailable) {
4874            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
4875        }
4876        if (!this._xmlHttpRequest) {
4877            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
4878        }
4879        return this._xmlHttpRequest.getAllResponseHeaders();
4880    }
4881    function Sys$Net$XMLHttpExecutor$get_responseData() {
4882        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData"></value>
4883        if (arguments.length !== 0) throw Error.parameterCount();
4884        if (!this._responseAvailable) {
4885            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
4886        }
4887        if (!this._xmlHttpRequest) {
4888            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
4889        }
4890        return this._xmlHttpRequest.responseText;
4891    }
4892    function Sys$Net$XMLHttpExecutor$get_statusCode() {
4893        /// <value type="Number" locid="P:J#Sys.Net.XMLHttpExecutor.statusCode"></value>
4894        if (arguments.length !== 0) throw Error.parameterCount();
4895        if (!this._responseAvailable) {
4896            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
4897        }
4898        if (!this._xmlHttpRequest) {
4899            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
4900        }
4901        var result = 0;
4902        try {
4903            result = this._xmlHttpRequest.status;
4904        }
4905        catch(ex) {
4906        }
4907        return result;
4908    }
4909    function Sys$Net$XMLHttpExecutor$get_statusText() {
4910        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.statusText"></value>
4911        if (arguments.length !== 0) throw Error.parameterCount();
4912        if (!this._responseAvailable) {
4913            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
4914        }
4915        if (!this._xmlHttpRequest) {
4916            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
4917        }
4918        return this._xmlHttpRequest.statusText;
4919    }
4920    function Sys$Net$XMLHttpExecutor$get_xml() {
4921        /// <value locid="P:J#Sys.Net.XMLHttpExecutor.xml"></value>
4922        if (arguments.length !== 0) throw Error.parameterCount();
4923        if (!this._responseAvailable) {
4924            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
4925        }
4926        if (!this._xmlHttpRequest) {
4927            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
4928        }
4929        var xml = this._xmlHttpRequest.responseXML;
4930        if (!xml || !xml.documentElement) {
4931            xml = Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);
4932            if (!xml || !xml.documentElement)
4933                return null;
4934        }
4935        else if (navigator.userAgent.indexOf('MSIE') !== -1 && typeof(xml.setProperty) != 'undefined') {
4936            xml.setProperty('SelectionLanguage', 'XPath');
4937        }
4938        if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
4939            xml.documentElement.tagName === "parsererror") {
4940            return null;
4941        }
4942        
4943        if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
4944            return null;
4945        }
4946        
4947        return xml;
4948    }
4949    function Sys$Net$XMLHttpExecutor$abort() {
4950        /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.abort" />
4951        if (arguments.length !== 0) throw Error.parameterCount();
4952        if (!this._started) {
4953            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
4954        }
4955        if (this._aborted || this._responseAvailable || this._timedOut)
4956            return;
4957        this._aborted = true;
4958        this._clearTimer();
4959        if (this._xmlHttpRequest && !this._responseAvailable) {
4960            this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
4961            this._xmlHttpRequest.abort();
4962            
4963            this._xmlHttpRequest = null;            
4964            this._webRequest.completed(Sys.EventArgs.Empty);
4965        }
4966    }
4967Sys.Net.XMLHttpExecutor.prototype = {
4968    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,
4969    get_started: Sys$Net$XMLHttpExecutor$get_started,
4970    get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable,
4971    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,
4972    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,
4973    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,
4974    getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders,
4975    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,
4976    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,
4977    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,
4978    get_xml: Sys$Net$XMLHttpExecutor$get_xml,
4979    abort: Sys$Net$XMLHttpExecutor$abort
4980}
4981Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
4982 
4983Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() {
4984    /// <summary locid="P:J#Sys.Net.WebRequestManager.#ctor" />
4985    if (arguments.length !== 0) throw Error.parameterCount();
4986    this._defaultTimeout = 0;
4987    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
4988}
4989    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
4990        /// <summary locid="E:J#Sys.Net.WebRequestManager.invokingRequest" />
4991        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4992        if (e) throw e;
4993        this._get_eventHandlerList().addHandler("invokingRequest", handler);
4994    }
4995    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) {
4996        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
4997        if (e) throw e;
4998        this._get_eventHandlerList().removeHandler("invokingRequest", handler);
4999    }
5000    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
5001        /// <summary locid="E:J#Sys.Net.WebRequestManager.completedRequest" />
5002        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
5003        if (e) throw e;
5004        this._get_eventHandlerList().addHandler("completedRequest", handler);
5005    }
5006    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) {
5007        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
5008        if (e) throw e;
5009        this._get_eventHandlerList().removeHandler("completedRequest", handler);
5010    }
5011    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
5012        if (!this._events) {
5013            this._events = new Sys.EventHandlerList();
5014        }
5015        return this._events;
5016    }
5017    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
5018        /// <value type="Number" locid="P:J#Sys.Net.WebRequestManager.defaultTimeout"></value>
5019        if (arguments.length !== 0) throw Error.parameterCount();
5020        return this._defaultTimeout;
5021    }
5022    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
5023        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
5024        if (e) throw e;
5025        if (value < 0) {
5026            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
5027        }
5028        this._defaultTimeout = value;
5029    }
5030    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
5031        /// <value type="String" locid="P:J#Sys.Net.WebRequestManager.defaultExecutorType"></value>
5032        if (arguments.length !== 0) throw Error.parameterCount();
5033        return this._defaultExecutorType;
5034    }
5035    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
5036        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
5037        if (e) throw e;
5038        this._defaultExecutorType = value;
5039    }
5040    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
5041        /// <summary locid="M:J#Sys.Net.WebRequestManager.executeRequest" />
5042        /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
5043        var e = Function._validateParams(arguments, [
5044            {name: "webRequest", type: Sys.Net.WebRequest}
5045        ]);
5046        if (e) throw e;
5047        var executor = webRequest.get_executor();
5048        if (!executor) {
5049            var failed = false;
5050            try {
5051                var executorType = eval(this._defaultExecutorType);
5052                executor = new executorType();
5053            } catch (e) {
5054                failed = true;
5055            }
5056            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
5057                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
5058            }
5059            webRequest.set_executor(executor);
5060        }
5061        if (executor.get_aborted()) {
5062            return;
5063        }
5064        var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
5065        var handler = this._get_eventHandlerList().getHandler("invokingRequest");
5066        if (handler) {
5067            handler(this, evArgs);
5068        }
5069        if (!evArgs.get_cancel()) {
5070            executor.executeRequest();
5071        }
5072    }
5073Sys.Net._WebRequestManager.prototype = {
5074    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
5075    remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest,
5076    add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest,
5077    remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest,
5078    _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList,
5079    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
5080    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,
5081    get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType,
5082    set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType,
5083    executeRequest: Sys$Net$_WebRequestManager$executeRequest
5084}
5085Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');
5086Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
5087 
5088Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) {
5089    /// <summary locid="M:J#Sys.Net.NetworkRequestEventArgs.#ctor" />
5090    /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
5091    var e = Function._validateParams(arguments, [
5092        {name: "webRequest", type: Sys.Net.WebRequest}
5093    ]);
5094    if (e) throw e;
5095    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
5096    this._webRequest = webRequest;
5097}
5098    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
5099        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.NetworkRequestEventArgs.webRequest"></value>
5100        if (arguments.length !== 0) throw Error.parameterCount();
5101        return this._webRequest;
5102    }
5103Sys.Net.NetworkRequestEventArgs.prototype = {
5104    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
5105}
5106Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
5107 
5108Sys.Net.WebRequest = function Sys$Net$WebRequest() {
5109    /// <summary locid="M:J#Sys.Net.WebRequest.#ctor" />
5110    if (arguments.length !== 0) throw Error.parameterCount();
5111    this._url = "";
5112    this._headers = { };
5113    this._body = null;
5114    this._userContext = null;
5115    this._httpVerb = null;
5116    this._executor = null;
5117    this._invokeCalled = false;
5118    this._timeout = 0;
5119}
5120    function Sys$Net$WebRequest$add_completed(handler) {
5121    /// <summary locid="E:J#Sys.Net.WebRequest.completed" />
5122    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
5123    if (e) throw e;
5124        this._get_eventHandlerList().addHandler("completed", handler);
5125    }
5126    function Sys$Net$WebRequest$remove_completed(handler) {
5127    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
5128    if (e) throw e;
5129        this._get_eventHandlerList().removeHandler("completed", handler);
5130    }
5131    function Sys$Net$WebRequest$completed(eventArgs) {
5132        /// <summary locid="M:J#Sys.Net.WebRequest.completed" />
5133        /// <param name="eventArgs" type="Sys.EventArgs"></param>
5134        var e = Function._validateParams(arguments, [
5135            {name: "eventArgs", type: Sys.EventArgs}
5136        ]);
5137        if (e) throw e;
5138        var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");
5139        if (handler) {
5140            handler(this._executor, eventArgs);
5141        }
5142        handler = this._get_eventHandlerList().getHandler("completed");
5143        if (handler) {
5144            handler(this._executor, eventArgs);
5145        }
5146    }
5147    function Sys$Net$WebRequest$_get_eventHandlerList() {
5148        if (!this._events) {
5149            this._events = new Sys.EventHandlerList();
5150        }
5151        return this._events;
5152    }
5153    function Sys$Net$WebRequest$get_url() {
5154        /// <value type="String" locid="P:J#Sys.Net.WebRequest.url"></value>
5155        if (arguments.length !== 0) throw Error.parameterCount();
5156        return this._url;
5157    }
5158    function Sys$Net$WebRequest$set_url(value) {
5159        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
5160        if (e) throw e;
5161        this._url = value;
5162    }
5163    function Sys$Net$WebRequest$get_headers() {
5164        /// <value locid="P:J#Sys.Net.WebRequest.headers"></value>
5165        if (arguments.length !== 0) throw Error.parameterCount();
5166        return this._headers;
5167    }
5168    function Sys$Net$WebRequest$get_httpVerb() {
5169        /// <value type="String" locid="P:J#Sys.Net.WebRequest.httpVerb"></value>
5170        if (arguments.length !== 0) throw Error.parameterCount();
5171        if (this._httpVerb === null) {
5172            if (this._body === null) {
5173                return "GET";
5174            }
5175            return "POST";
5176        }
5177        return this._httpVerb;
5178    }
5179    function Sys$Net$WebRequest$set_httpVerb(value) {
5180        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
5181        if (e) throw e;
5182        if (value.length === 0) {
5183            throw Error.argument('value', Sys.Res.invalidHttpVerb);
5184        }
5185        this._httpVerb = value;
5186    }
5187    function Sys$Net$WebRequest$get_body() {
5188        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.body"></value>
5189        if (arguments.length !== 0) throw Error.parameterCount();
5190        return this._body;
5191    }
5192    function Sys$Net$WebRequest$set_body(value) {
5193        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
5194        if (e) throw e;
5195        this._body = value;
5196    }
5197    function Sys$Net$WebRequest$get_userContext() {
5198        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.userContext"></value>
5199        if (arguments.length !== 0) throw Error.parameterCount();
5200        return this._userContext;
5201    }
5202    function Sys$Net$WebRequest$set_userContext(value) {
5203        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
5204        if (e) throw e;
5205        this._userContext = value;
5206    }
5207    function Sys$Net$WebRequest$get_executor() {
5208        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.Net.WebRequest.executor"></value>
5209        if (arguments.length !== 0) throw Error.parameterCount();
5210        return this._executor;
5211    }
5212    function Sys$Net$WebRequest$set_executor(value) {
5213        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
5214        if (e) throw e;
5215        if (this._executor !== null && this._executor.get_started()) {
5216            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
5217        }
5218        this._executor = value;
5219        this._executor._set_webRequest(this);
5220    }
5221    function Sys$Net$WebRequest$get_timeout() {
5222        /// <value type="Number" locid="P:J#Sys.Net.WebRequest.timeout"></value>
5223        if (arguments.length !== 0) throw Error.parameterCount();
5224        if (this._timeout === 0) {
5225            return Sys.Net.WebRequestManager.get_defaultTimeout();
5226        }
5227        return this._timeout;
5228    }
5229    function Sys$Net$WebRequest$set_timeout(value) {
5230        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
5231        if (e) throw e;
5232        if (value < 0) {
5233            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
5234        }
5235        this._timeout = value;
5236    }
5237    function Sys$Net$WebRequest$getResolvedUrl() {
5238        /// <summary locid="M:J#Sys.Net.WebRequest.getResolvedUrl" />
5239        /// <returns type="String"></returns>
5240        if (arguments.length !== 0) throw Error.parameterCount();
5241        return Sys.Net.WebRequest._resolveUrl(this._url);
5242    }
5243    function Sys$Net$WebRequest$invoke() {
5244        /// <summary locid="M:J#Sys.Net.WebRequest.invoke" />
5245        if (arguments.length !== 0) throw Error.parameterCount();
5246        if (this._invokeCalled) {
5247            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
5248        }
5249        Sys.Net.WebRequestManager.executeRequest(this);
5250        this._invokeCalled = true;
5251    }
5252Sys.Net.WebRequest.prototype = {
5253    add_completed: Sys$Net$WebRequest$add_completed,
5254    remove_completed: Sys$Net$WebRequest$remove_completed,
5255    completed: Sys$Net$WebRequest$completed,
5256    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,
5257    get_url: Sys$Net$WebRequest$get_url,
5258    set_url: Sys$Net$WebRequest$set_url,
5259    get_headers: Sys$Net$WebRequest$get_headers,
5260    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
5261    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,
5262    get_body: Sys$Net$WebRequest$get_body,
5263    set_body: Sys$Net$WebRequest$set_body,
5264    get_userContext: Sys$Net$WebRequest$get_userContext,
5265    set_userContext: Sys$Net$WebRequest$set_userContext,
5266    get_executor: Sys$Net$WebRequest$get_executor,
5267    set_executor: Sys$Net$WebRequest$set_executor,
5268    get_timeout: Sys$Net$WebRequest$get_timeout,
5269    set_timeout: Sys$Net$WebRequest$set_timeout,
5270    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,
5271    invoke: Sys$Net$WebRequest$invoke
5272}
5273Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
5274    if (url && url.indexOf('://') !== -1) {
5275        return url;
5276    }
5277    if (!baseUrl || baseUrl.length === 0) {
5278        var baseElement = document.getElementsByTagName('base')[0];
5279        if (baseElement && baseElement.href && baseElement.href.length > 0) {
5280            baseUrl = baseElement.href;
5281        }
5282        else {
5283            baseUrl = document.URL;
5284        }
5285    }
5286    var qsStart = baseUrl.indexOf('?');
5287    if (qsStart !== -1) {
5288        baseUrl = baseUrl.substr(0, qsStart);
5289    }
5290    qsStart = baseUrl.indexOf('#');
5291    if (qsStart !== -1) {
5292        baseUrl = baseUrl.substr(0, qsStart);
5293    }
5294    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);
5295    if (!url || url.length === 0) {
5296        return baseUrl;
5297    }
5298    if (url.charAt(0) === '/') {
5299        var slashslash = baseUrl.indexOf('://');
5300        if (slashslash === -1) {
5301            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
5302        }
5303        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
5304        if (nextSlash === -1) {
5305            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
5306        }
5307        return baseUrl.substr(0, nextSlash) + url;
5308    }
5309    else {
5310        var lastSlash = baseUrl.lastIndexOf('/');
5311        if (lastSlash === -1) {
5312            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
5313        }
5314        return baseUrl.substr(0, lastSlash+1) + url;
5315    }
5316}
5317Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
5318    if (!encodeMethod)
5319        encodeMethod = encodeURIComponent;
5320    var sb = new Sys.StringBuilder();
5321    var i = 0;
5322    for (var arg in queryString) {
5323        var obj = queryString[arg];
5324        if (typeof(obj) === "function") continue;
5325        var val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
5326        if (i !== 0) {
5327            sb.append('&');
5328        }
5329        sb.append(arg);
5330        sb.append('=');
5331        sb.append(encodeMethod(val));
5332        i++;
5333    }
5334    return sb.toString();
5335}
5336Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString) {
5337    if (!queryString) {
5338        return url;
5339    }
5340    var qs = Sys.Net.WebRequest._createQueryString(queryString);
5341    if (qs.length > 0) {
5342        var sep = '?';
5343        if (url && url.indexOf('?') !== -1)
5344            sep = '&';
5345        return url + sep + qs;
5346    } else {
5347        return url;
5348    }
5349}
5350Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
5351 
5352Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() {
5353}
5354    function Sys$Net$WebServiceProxy$get_timeout() {
5355        /// <value type="Number" locid="P:J#Sys.Net.WebServiceProxy.timeout"></value>
5356        if (arguments.length !== 0) throw Error.parameterCount();
5357        return this._timeout;
5358    }
5359    function Sys$Net$WebServiceProxy$set_timeout(value) {
5360        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
5361        if (e) throw e;
5362        if (value < 0) { throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout); }
5363        this._timeout = value;
5364    }
5365    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
5366        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultUserContext"></value>
5367        if (arguments.length !== 0) throw Error.parameterCount();
5368        return this._userContext;
5369    }
5370    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
5371        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
5372        if (e) throw e;
5373        this._userContext = value;
5374    }
5375    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
5376        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultSucceededCallback"></value>
5377        if (arguments.length !== 0) throw Error.parameterCount();
5378        return this._succeeded;
5379    }
5380    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) {
5381        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
5382        if (e) throw e;
5383        this._succeeded = value;
5384    }
5385    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
5386        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultFailedCallback"></value>
5387        if (arguments.length !== 0) throw Error.parameterCount();
5388        return this._failed;
5389    }
5390    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
5391        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
5392        if (e) throw e;
5393        this._failed = value;
5394    }
5395    function Sys$Net$WebServiceProxy$get_path() {
5396        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.path"></value>
5397        if (arguments.length !== 0) throw Error.parameterCount();
5398        return this._path;
5399    }
5400    function Sys$Net$WebServiceProxy$set_path(value) {
5401        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
5402        if (e) throw e;
5403        this._path = value;
5404    }
5405    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onF
5405ailure, userContext) {
5406        /// <summary locid="M:J#Sys.Net.WebServiceProxy._invoke" />
5407        /// <param name="servicePath" type="String"></param>
5408        /// <param name="methodName" type="String"></param>
5409        /// <param name="useGet" type="Boolean"></param>
5410        /// <param name="params"></param>
5411        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
5412        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
5413        /// <param name="userContext" mayBeNull="true" optional="true"></param>
5414        /// <returns type="Sys.Net.WebRequest"></returns>
5415        var e = Function._validateParams(arguments, [
5416            {name: "servicePath", type: String},
5417            {name: "methodName", type: String},
5418            {name: "useGet", type: Boolean},
5419            {name: "params"},
5420            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
5421            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
5422            {name: "userContext", mayBeNull: true, optional: true}
5423        ]);
5424        if (e) throw e;
5425        if (onSuccess === null || typeof onSuccess === 'undefined') onSuccess = this.get_defaultSucceededCallback();
5426        if (onFailure === null || typeof onFailure === 'undefined') onFailure = this.get_defaultFailedCallback();
5427        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
5428        
5429        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
5430    }
5431Sys.Net.WebServiceProxy.prototype = {
5432    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
5433    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
5434    get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext,
5435    set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext,
5436    get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
5437    set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
5438    get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback,
5439    set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback,
5440    get_path: Sys$Net$WebServiceProxy$get_path,
5441    set_path: Sys$Net$WebServiceProxy$set_path,
5442    _invoke: Sys$Net$WebServiceProxy$_invoke
5443}
5444Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');
5445Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout) {
5446    /// <summary locid="M:J#Sys.Net.WebServiceProxy.invoke" />
5447    /// <param name="servicePath" type="String"></param>
5448    /// <param name="methodName" type="String"></param>
5449    /// <param name="useGet" type="Boolean" optional="true"></param>
5450    /// <param name="params" mayBeNull="true" optional="true"></param>
5451    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
5452    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
5453    /// <param name="userContext" mayBeNull="true" optional="true"></param>
5454    /// <param name="timeout" type="Number" optional="true"></param>
5455    /// <returns type="Sys.Net.WebRequest"></returns>
5456    var e = Function._validateParams(arguments, [
5457        {name: "servicePath", type: String},
5458        {name: "methodName", type: String},
5459        {name: "useGet", type: Boolean, optional: true},
5460        {name: "params", mayBeNull: true, optional: true},
5461        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
5462        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
5463        {name: "userContext", mayBeNull: true, optional: true},
5464        {name: "timeout", type: Number, optional: true}
5465    ]);
5466    if (e) throw e;
5467    var request = new Sys.Net.WebRequest();
5468    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
5469    if (!params) params = {};
5470    var urlParams = params;
5471    if (!useGet || !urlParams) urlParams = {};
5472    request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+encodeURIComponent(methodName), urlParams));
5473    var body = null;
5474    if (!useGet) {
5475        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
5476        if (body === "{}") body = "";
5477    }
5478    request.set_body(body);
5479    request.add_completed(onComplete);
5480    if (timeout && timeout > 0) request.set_timeout(timeout);
5481    request.invoke();
5482    function onComplete(response, eventArgs) {
5483        if (response.get_responseAvailable()) {
5484            var statusCode = response.get_statusCode();
5485            var result = null;
5486           
5487            try {
5488                var contentType = response.getResponseHeader("Content-Type");
5489                if (contentType.startsWith("application/json")) {
5490                    result = response.get_object();
5491                }
5492                else if (contentType.startsWith("text/xml")) {
5493                    result = response.get_xml();
5494                }
5495                else {
5496                    result = response.get_responseData();
5497                }
5498            } catch (ex) {
5499            }
5500            var error = response.getResponseHeader("jsonerror");
5501            var errorObj = (error === "true");
5502            if (errorObj) {
5503                if (result) {
5504                    result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType);
5505                }
5506            }
5507            else if (contentType.startsWith("application/json")) {
5508                if (!result || typeof(result.d) === "undefined") {
5509                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceInvalidJsonWrapper, methodName));
5510                }
5511                result = result.d;
5512            }
5513            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
5514                if (onFailure) {
5515                    if (!result || !errorObj) {
5516                        result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
5517                    }
5518                    result._statusCode = statusCode;
5519                    onFailure(result, userContext, methodName);
5520                }
5521                else {
5522                    var error;
5523                    if (result && errorObj) {
5524                        error = result.get_exceptionType() + "-- " + result.get_message();
5525                    }
5526                    else {
5527                        error = response.get_responseData();
5528                    }
5529                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
5530                }
5531            }
5532            else if (onSuccess) {
5533                onSuccess(result, userContext, methodName);
5534            }
5535        }
5536        else {
5537            var msg;
5538            if (response.get_timedOut()) {
5539                msg = String.format(Sys.Res.webServiceTimedOut, methodName);
5540            }
5541            else {
5542                msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName)
5543            }
5544            if (onFailure) {
5545                onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName);
5546            }
5547            else {
5548                throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg);
5549            }
5550        }
5551    }
5552    return request;
5553}
5554Sys.Net.WebServiceProxy._createFailedError = function Sys$Net$WebServiceProxy$_createFailedError(methodName, errorMessage) {
5555    var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage;
5556    var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName });
5557    e.popStackFrame();
5558    return e;
5559}
5560Sys.Net.WebServiceProxy._defaultFailedCallback = function Sys$Net$WebServiceProxy$_defaultFailedCallback(err, methodName) {
5561    var error = err.get_exceptionType() + "-- " + err.get_message();
5562    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
5563}
5564Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
5565    return function(properties) {
5566        if (properties) {
5567            for (var name in properties) {
5568                this[name] = properties[name];
5569            }
5570        }
5571        this.__type = type;
5572    }
5573}
5574 
5575Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType) {
5576    /// <summary locid="M:J#Sys.Net.WebServiceError.#ctor" />
5577    /// <param name="timedOut" type="Boolean"></param>
5578    /// <param name="message" type="String" mayBeNull="true"></param>
5579    /// <param name="stackTrace" type="String" mayBeNull="true"></param>
5580    /// <param name="exceptionType" type="String" mayBeNull="true"></param>
5581    var e = Function._validateParams(arguments, [
5582        {name: "timedOut", type: Boolean},
5583        {name: "message", type: String, mayBeNull: true},
5584        {name: "stackTrace", type: String, mayBeNull: true},
5585        {name: "exceptionType", type: String, mayBeNull: true}
5586    ]);
5587    if (e) throw e;
5588    this._timedOut = timedOut;
5589    this._message = message;
5590    this._stackTrace = stackTrace;
5591    this._exceptionType = exceptionType;
5592    this._statusCode = -1;
5593}
5594    function Sys$Net$WebServiceError$get_timedOut() {
5595        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceError.timedOut"></value>
5596        if (arguments.length !== 0) throw Error.parameterCount();
5597        return this._timedOut;
5598    }
5599    function Sys$Net$WebServiceError$get_statusCode() {
5600        /// <value type="Number" locid="P:J#Sys.Net.WebServiceError.statusCode"></value>
5601        if (arguments.length !== 0) throw Error.parameterCount();
5602        return this._statusCode;
5603    }
5604    function Sys$Net$WebServiceError$get_message() {
5605        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.message"></value>
5606        if (arguments.length !== 0) throw Error.parameterCount();
5607        return this._message;
5608    }
5609    function Sys$Net$WebServiceError$get_stackTrace() {
5610        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.stackTrace"></value>
5611        if (arguments.length !== 0) throw Error.parameterCount();
5612        return this._stackTrace;
5613    }
5614    function Sys$Net$WebServiceError$get_exceptionType() {
5615        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.exceptionType"></value>
5616        if (arguments.length !== 0) throw Error.parameterCount();
5617        return this._exceptionType;
5618    }
5619Sys.Net.WebServiceError.prototype = {
5620    get_timedOut: Sys$Net$WebServiceError$get_timedOut,
5621    get_statusCode: Sys$Net$WebServiceError$get_statusCode,
5622    get_message: Sys$Net$WebServiceError$get_message,
5623    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,
5624    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
5625}
5626Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');
5627Type.registerNamespace('Sys.Services');
5628Sys.Services._ProfileService = function Sys$Services$_ProfileService() {
5629    /// <summary locid="M:J#Sys.Net.ProfileService.#ctor" />
5630    if (arguments.length !== 0) throw Error.parameterCount();
5631    Sys.Services._ProfileService.initializeBase(this);
5632    this.properties = {};
5633}
5634Sys.Services._ProfileService.DefaultWebServicePath = '';
5635    function Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
5636        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.ProfileService.defaultLoadCompletedCallback"></value>
5637        if (arguments.length !== 0) throw Error.parameterCount();
5638        return this._defaultLoadCompletedCallback;
5639    }
5640    function Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
5641        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
5642        if (e) throw e;
5643        this._defaultLoadCompletedCallback = value;
5644    }
5645    function Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
5646        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.ProfileService.defaultSaveCompletedCallback"></value>
5647        if (arguments.length !== 0) throw Error.parameterCount();
5648        return this._defaultSaveCompletedCallback;
5649    }
5650    function Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
5651        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
5652        if (e) throw e;
5653        this._defaultSaveCompletedCallback = value;
5654    }
5655    function Sys$Services$_ProfileService$get_path() {
5656        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services.ProfileService.path"></value>
5657        if (arguments.length !== 0) throw Error.parameterCount();
5658        return this._path || '';
5659    }
5660    function Sys$Services$_ProfileService$load(propertyNames, loadCompletedCallback, failedCallback, userContext) {
5661        /// <summary locid="M:J#Sys.Services.ProfileService.load" />
5662        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
5663        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
5664        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
5665        /// <param name="userContext" optional="true" mayBeNull="true"></param>
5666        var e = Function._validateParams(arguments, [
5667            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
5668            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
5669            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
5670            {name: "userContext", mayBeNull: true, optional: true}
5671        ]);
5672        if (e) throw e;
5673        var parameters;
5674        var methodName;
5675        if (!propertyNames) {
5676            methodName = "GetAllPropertiesForCurrentUser";
5677            parameters = { authenticatedUserOnly: false };
5678        }
5679        else {
5680            methodName = "GetPropertiesForCurrentUser";
5681            parameters = { properties: this._clonePropertyNames(propertyNames), authenticatedUserOnly: false };
5682        }
5683        this._invoke(this._get_path(),
5684                                        methodName,
5685                                        false,
5686                                        parameters,
5687                                        Function.createDelegate(this, this._onLoadComplete),
5688                                        Function.createDelegate(this, this._onLoadFailed),
5689                                        [loadCompletedCallback, failedCallback, userContext]);
5690    }
5691    function Sys$Services$_ProfileService$save(propertyNames, saveCompletedCallback, failedCallback, userContext) {
5692        /// <summary locid="M:J#Sys.Services.ProfileService.save" />
5693        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
5694        /// <param name="saveCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
5695        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
5696        /// <param name="userContext" optional="true" mayBeNull="true"></param>
5697        var e = Function._validateParams(arguments, [
5698            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
5699            {name: "saveCompletedCallback", type: Function, mayBeNull: true, optional: true},
5700            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
5701            {name: "userContext", mayBeNull: true, optional: true}
5702        ]);
5703        if (e) throw e;
5704        var flattenedProperties = this._flattenProperties(propertyNames, this.properties);
5705        this._invoke(this._get_path(),
5706                                        "SetPropertiesForCurrentUser",
5707                                        false,
5708                                        { values: flattenedProperties.value, authenticatedUserOnly: false },
5709                                        Function.createDelegate(this, this._onSaveComplete),
5710                                        Function.createDelegate(this, this._onSaveFailed),
5711                                        [saveCompletedCallback, failedCallback, userContext, flattenedProperties.count]);
5712    }
5713    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
5714        var nodups = [];
5715        var seen = {};
5716        for (var i=0; i < arr.length; i++) {
5717            var prop = arr[i];
5718            if(!seen[prop]) { Array.add(nodups, prop); seen[prop]=true; };
5719        }
5720        return nodups;
5721    }
5722    function Sys$Services$_ProfileService$_flattenProperties(propertyNames, properties, groupName) {
5723        var flattenedProperties = {};
5724        var val;
5725        var key;
5726        var count = 0;
5727        if (propertyNames && propertyNames.length === 0) {
5728            return { value: flattenedProperties, count: 0 };
5729        }
5730        for (var property in properties) {
5731            val = properties[property];
5732            key = groupName ? groupName + "." + property : property;
5733            if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
5734                var obj = this._flattenProperties(propertyNames, val, key);
5735                var groupProperties = obj.value;
5736                count += obj.count; 
5737                for(var subKey in groupProperties) {
5738                    var subVal = groupProperties[subKey];
5739                    flattenedProperties[subKey] = subVal;
5740                }
5741            }
5742            else {
5743                if(!propertyNames || Array.indexOf(propertyNames, key) !== -1) {
5744                    flattenedProperties[key] = val;
5745                    count++; 
5746                }
5747            }
5748        }
5749        return { value: flattenedProperties, count: count };
5750    }
5751    function Sys$Services$_ProfileService$_get_path() {
5752        var path = this.get_path();
5753        if (!path.length) {
5754            path = Sys.Services._ProfileService.DefaultWebServicePath;
5755        }
5756        if (!path || !path.length) {
5757            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
5758        }
5759        return path;
5760    }
5761    function Sys$Services$_ProfileService$_onLoadComplete(result, context, methodName) {
5762        if (typeof(result) !== "object") {
5763            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Object"));
5764        }
5765        var unflattened = this._unflattenProperties(result);
5766        for (var name in unflattened) {
5767            this.properties[name] = unflattened[name];
5768        }
5769        
5770        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
5771        if (callback) {
5772            var userContext = context[2] || this.get_defaultUserContext();        
5773            callback(result.length, userContext, "Sys.Services.ProfileService.load");
5774        }
5775    }
5776    function Sys$Services$_ProfileService$_onLoadFailed(err, context, methodName) {
5777        var callback = context[1] || this.get_defaultFailedCallback();
5778        if (callback) {
5779            var userContext = context[2] || this.get_defaultUserContext();        
5780            callback(err, userContext, "Sys.Services.ProfileService.load");
5781        }
5782        else {
5783            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
5784        }
5785    }
5786    function Sys$Services$_ProfileService$_onSaveComplete(result, context, methodName) {
5787        var count = context[3];
5788        if (result !== null) { 
5789            if (result instanceof Array) {
5790                count -= result.length;
5791            }
5792            else if (typeof(result) === 'number') {
5793                count = result;
5794            }
5795            else {
5796                throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
5797            }
5798        }
5799        
5800        var callback = context[0] || this.get_defaultSaveCompletedCallback() || this.get_defaultSucceededCallback();
5801        if (callback) {
5802            var userContext = context[2] || this.get_defaultUserContext();
5803            callback(count, userContext, "Sys.Services.ProfileService.save");
5804        }
5805    }
5806    function Sys$Services$_ProfileService$_onSaveFailed(err, context, methodName) {
5807        var callback = context[1] || this.get_defaultFailedCallback();
5808        if (callback) {
5809            var userContext = context[2] || this.get_defaultUserContext();
5810            callback(err, userContext, "Sys.Services.ProfileService.save");
5811        }
5812        else {
5813            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
5814        }
5815    }
5816    function Sys$Services$_ProfileService$_unflattenProperties(properties) {
5817        var unflattenedProperties = {};
5818        var dotIndex;
5819        var val;
5820        var count = 0;
5821        for (var key in properties) {
5822            count++;
5823            val = properties[key];
5824            dotIndex = key.indexOf('.');
5825            if (dotIndex !== -1) {
5826                var groupName = key.substr(0, dotIndex);
5827                key = key.substr(dotIndex+1);
5828                var group = unflattenedProperties[groupName];
5829                if (!group || !Sys.Services.ProfileGroup.isInstanceOfType(group)) {
5830                    group = new Sys.Services.ProfileGroup();
5831                    unflattenedProperties[groupName] = group;
5832                }
5833                group[key] = val;
5834            }
5835            else {
5836                unflattenedProperties[key] = val;
5837            }
5838        }
5839        properties.length = count;
5840        return unflattenedProperties;
5841    }
5842Sys.Services._ProfileService.prototype = {
5843    _defaultLoadCompletedCallback: null,
5844    _defaultSaveCompletedCallback: null,
5845    _path: '',
5846    _timeout: 0,
5847    get_defaultLoadCompletedCallback: Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
5848    set_defaultLoadCompletedCallback: Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,
5849    get_defaultSaveCompletedCallback: Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
5850    set_defaultSaveCompletedCallback: Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
5851    get_path: Sys$Services$_ProfileService$get_path,
5852    load: Sys$Services$_ProfileService$load,
5853    save: Sys$Services$_ProfileService$save,
5854    _clonePropertyNames: Sys$Services$_ProfileService$_clonePropertyNames,    
5855    _flattenProperties: Sys$Services$_ProfileService$_flattenProperties,
5856    _get_path: Sys$Services$_ProfileService$_get_path,    
5857    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
5858    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
5859    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
5860    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
5861    _unflattenProperties: Sys$Services$_ProfileService$_unflattenProperties
5862}
5863Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService', Sys.Net.WebServiceProxy);
5864Sys.Services.ProfileService = new Sys.Services._ProfileService();
5865Sys.Services.ProfileGroup = function Sys$Services$ProfileGroup(properties) {
5866    /// <summary locid="M:J#Sys.Services.ProfileGroup.#ctor" />
5867    /// <param name="properties" optional="true" mayBeNull="true"></param>
5868    var e = Function._validateParams(arguments, [
5869        {name: "properties", mayBeNull: true, optional: true}
5870    ]);
5871    if (e) throw e;
5872    if (properties) {
5873        for (var property in properties) {
5874            this[property] = properties[property];
5875        }
5876    }
5877}
5878Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');
5879Sys.Services._AuthenticationService = function Sys$Services$_AuthenticationService() {
5880    /// <summary locid="M:J#Sys.Services.AuthenticationService.#ctor" />
5881    if (arguments.length !== 0) throw Error.parameterCount();
5882    Sys.Services._AuthenticationService.initializeBase(this);
5883}
5884Sys.Services._AuthenticationService.DefaultWebServicePath = '';
5885    function Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() {
5886        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.AuthenticationService.defaultLoginCompletedCallback"></value>
5887        if (arguments.length !== 0) throw Error.parameterCount();
5888        return this._defaultLoginCompletedCallback;
5889    }
5890    function Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(value) {
5891        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
5892        if (e) throw e;
5893        this._defaultLoginCompletedCallback = value;
5894    }
5895    function Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() {
5896        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.AuthenticationService.defaultLogoutCompletedCallback"></value>
5897        if (arguments.length !== 0) throw Error.parameterCount();
5898        return this._defaultLogoutCompletedCallback;
5899    }
5900    function Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(value) {
5901        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
5902        if (e) throw e;
5903        this._defaultLogoutCompletedCallback = value;
5904    }
5905    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
5906        /// <value type="Boolean" locid="P:J#Sys.Services.AuthenticationService.isLoggedIn"></value>
5907        if (arguments.length !== 0) throw Error.parameterCount();
5908        return this._authenticated;
5909    }
5910    function Sys$Services$_AuthenticationService$get_path() {
5911        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services.AuthenticationService.path"></value>
5912        if (arguments.length !== 0) throw Error.parameterCount();
5913        return this._path || '';
5914    }
5915    function Sys$Services$_AuthenticationService$login(username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext) {
5916        /// <summary locid="M:J#Sys.Services.AuthenticationService.login" />
5917        /// <param name="username" type="String" mayBeNull="false"></param>
5918        /// <param name="password" type="String" mayBeNull="true"></param>
5919        /// <param name="isPersistent" type="Boolean" optional="true" mayBeNull="true"></param>
5920        /// <param name="customInfo" type="String" optional="true" mayBeNull="true"></param>
5921        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
5922        /// <param name="loginCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
5923        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
5924        /// <param name="userContext" optional="true" mayBeNull="true"></param>
5925        var e = Function._validateParams(arguments, [
5926            {name: "username", type: String},
5927            {name: "password", type: String, mayBeNull: true},
5928            {name: "isPersistent", type: Boolean, mayBeNull: true, optional: true},
5929            {name: "customInfo", type: String, mayBeNull: true, optional: true},
5930            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
5931            {name: "loginCompletedCallback", type: Function, mayBeNull: true, optional: true},
5932            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
5933            {name: "userContext", mayBeNull: true, optional: true}
5934        ]);
5935        if (e) throw e;
5936        this._invoke(this._get_path(), "Login", false,
5937                                        { userName: username, password: password, createPersistentCookie: isPersistent },
5938                                        Function.createDelegate(this, this._onLoginComplete),
5939                                        Function.createDelegate(this, this._onLoginFailed),
5940                                        [username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext]);
5941    }
5942    function Sys$Services$_AuthenticationService$logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext) {
5943        /// <summary locid="M:J#Sys.Services.AuthenticationService.logout" />
5944        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
5945        /// <param name="logoutCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
5946        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
5947        /// <param name="userContext" optional="true" mayBeNull="true"></param>
5948        var e = Function._validateParams(arguments, [
5949            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
5950            {name: "logoutCompletedCallback", type: Function, mayBeNull: true, optional: true},
5951            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
5952            {name: "userContext", mayBeNull: true, optional: true}
5953        ]);
5954        if (e) throw e;
5955        this._invoke(this._get_path(), "Logout", false, {}, 
5956                                        Function.createDelegate(this, this._onLogoutComplete),
5957                                        Function.createDelegate(this, this._onLogoutFailed),
5958                                        [redirectUrl, logoutCompletedCallback, failedCallback, userContext]);
5959    }
5960    function Sys$Services$_AuthenticationService$_get_path() {
5961        var path = this.get_path();
5962        if(!path.length) {
5963            path = Sys.Services._AuthenticationService.DefaultWebServicePath;
5964        }
5965        if(!path || !path.length) {
5966            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
5967        }
5968        return path;
5969    }
5970    function Sys$Services$_AuthenticationService$_onLoginComplete(result, context, methodName) {
5971        if(typeof(result) !== "boolean") {
5972            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Boolean"));
5973        }
5974        
5975        var redirectUrl = context[4];
5976        var userContext = context[7] || this.get_defaultUserContext();
5977        var callback = context[5] || this.get_defaultLoginCompletedCallback() || this.get_defaultSucceededCallback();
5978        
5979        if(result) {
5980            this._authenticated = true;
5981            if (callback) {
5982                callback(true, userContext, "Sys.Services.AuthenticationService.login");
5983            }
5984            
5985            if (typeof(redirectUrl) !== "undefined" && redirectUrl !== null) {
5986                window.location.href = redirectUrl;
5987            }
5988        }
5989        else if (callback) {
5990            callback(false, userContext, "Sys.Services.AuthenticationService.login");
5991        }
5992    }
5993    function Sys$Services$_AuthenticationService$_onLoginFailed(err, context, methodName) {
5994        var callback = context[6] || this.get_defaultFailedCallback();
5995        if (callback) {
5996            var userContext = context[7] || this.get_defaultUserContext();
5997            callback(err, userContext, "Sys.Services.AuthenticationService.login");
5998        }
5999        else {
6000            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
6001        }
6002    }
6003    function Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, methodName) {
6004        if(result !== null) {
6005            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "null"));
6006        }
6007        
6008        var redirectUrl = context[0];
6009        var userContext = context[3] || this.get_defaultUserContext();
6010        var callback = context[1] || this.get_defaultLogoutCompletedCallback() || this.get_defaultSucceededCallback();
6011        this._authenticated = false;
6012        
6013        if (callback) {
6014            callback(null, userContext, "Sys.Services.AuthenticationService.logout");
6015        }
6016        
6017        if(!redirectUrl) {
6018            window.location.reload();
6019        }
6020        else {
6021            window.location.href = redirectUrl;
6022        }
6023    }
6024    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, context, methodName) {
6025        var callback = context[2] || this.get_defaultFailedCallback();
6026        if (callback) {
6027            callback(err, context[3], "Sys.Services.AuthenticationService.logout");
6028        }
6029        else {
6030            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
6031        }
6032    }
6033    function Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
6034        this._authenticated = authenticated;
6035    }
6036Sys.Services._AuthenticationService.prototype = {
6037    _defaultLoginCompletedCallback: null,
6038    _defaultLogoutCompletedCallback: null,
6039    _path: '',
6040    _timeout: 0,
6041    _authenticated: false,
6042    get_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
6043    set_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,
6044    get_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
6045    set_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,
6046    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,
6047    get_path: Sys$Services$_AuthenticationService$get_path,  
6048    login: Sys$Services$_AuthenticationService$login,
6049    logout: Sys$Services$_AuthenticationService$logout,
6050    _get_path: Sys$Services$_AuthenticationService$_get_path,
6051    _onLoginComplete: Sys$Services$_AuthenticationService$_onLoginComplete,
6052    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
6053    _onLogoutComplete: Sys$Services$_AuthenticationService$_onLogoutComplete,
6054    _onLogoutFailed: Sys$Services$_AuthenticationService$_onLogoutFailed,
6055    _setAuthenticated: Sys$Services$_AuthenticationService$_setAuthenticated    
6056}
6057Sys.Services._AuthenticationService.registerClass('Sys.Services._AuthenticationService', Sys.Net.WebServiceProxy);
6058Sys.Services.AuthenticationService = new Sys.Services._AuthenticationService();
6059Sys.Services._RoleService = function Sys$Services$_RoleService() {
6060    /// <summary locid="M:J#Sys.Services.RoleService.#ctor" />
6061    if (arguments.length !== 0) throw Error.parameterCount();
6062    Sys.Services._RoleService.initializeBase(this);
6063    this._roles = [];
6064}
6065Sys.Services._RoleService.DefaultWebServicePath = '';
6066    function Sys$Services$_RoleService$get_defaultLoadCompletedCallback() {
6067        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services.RoleService.defaultLoadCompletedCallback"></value>
6068        if (arguments.length !== 0) throw Error.parameterCount();
6069        return this._defaultLoadCompletedCallback;
6070    }
6071    function Sys$Services$_RoleService$set_defaultLoadCompletedCallback(value) {
6072        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
6073        if (e) throw e;
6074        this._defaultLoadCompletedCallback = value;
6075    }
6076    function Sys$Services$_RoleService$get_path() {
6077        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services.RoleService.path"></value>
6078        if (arguments.length !== 0) throw Error.parameterCount();
6079        return this._path || '';
6080    }
6081    function Sys$Services$_RoleService$get_roles() {
6082        /// <value type="Array" elementType="String" mayBeNull="false" locid="P:J#Sys.Services.RoleService.roles"></value>
6083        if (arguments.length !== 0) throw Error.parameterCount();
6084        return Array.clone(this._roles);
6085    }
6086    function Sys$Services$_RoleService$isUserInRole(role) {
6087        /// <summary locid="M:J#Sys.Services.RoleService.isUserInRole" />
6088        /// <param name="role" type="String" mayBeNull="false"></param>
6089        /// <returns type="Boolean"></returns>
6090        var e = Function._validateParams(arguments, [
6091            {name: "role", type: String}
6092        ]);
6093        if (e) throw e;
6094        var v = this._get_rolesIndex()[role.trim().toLowerCase()];
6095        return !!v;
6096    }
6097    function Sys$Services$_RoleService$load(loadCompletedCallback, failedCallback, userContext) {
6098        /// <summary locid="M:J#Sys.Services.RoleService.load" />
6099        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
6100        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
6101        /// <param name="userContext" optional="true" mayBeNull="true"></param>
6102        var e = Function._validateParams(arguments, [
6103            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
6104            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
6105            {name: "userContext", mayBeNull: true, optional: true}
6106        ]);
6107        if (e) throw e;
6108        Sys.Net.WebServiceProxy.invoke(
6109                    this._get_path(),
6110                    "GetRolesForCurrentUser",
6111                    false,
6112                    {} ,
6113                    Function.createDelegate(this, this._onLoadComplete),
6114                    Function.createDelegate(this, this._onLoadFailed),
6115                    [loadCompletedCallback, failedCallback, userContext],
6116                    this.get_timeout());
6117    }
6118    function Sys$Services$_RoleService$_get_path() {
6119        var path = this.get_path();
6120        if(!path || !path.length) {
6121            path = Sys.Services._RoleService.DefaultWebServicePath;
6122        }
6123        if(!path || !path.length) {
6124            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
6125        }
6126        return path;
6127    }
6128    function Sys$Services$_RoleService$_get_rolesIndex() {
6129        if (!this._rolesIndex) {
6130            var index = {};
6131            for(var i=0; i < this._roles.length; i++) {
6132                index[this._roles[i].toLowerCase()] = true;
6133            }
6134            this._rolesIndex = index;
6135        }
6136        return this._rolesIndex;
6137    }
6138    function Sys$Services$_RoleService$_onLoadComplete(result, context, methodName) {
6139        if(result && !(result instanceof Array)) {
6140            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
6141        }
6142        this._roles = result;
6143        this._rolesIndex = null;
6144        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
6145        if (callback) {
6146            var userContext = context[2] || this.get_defaultUserContext();
6147            var clonedResult = Array.clone(result);
6148            callback(clonedResult, userContext, "Sys.Services.RoleService.load");
6149        }
6150    }
6151    function Sys$Services$_RoleService$_onLoadFailed(err, context, methodName) {
6152        var callback = context[1] || this.get_defaultFailedCallback();
6153        if (callback) {
6154            var userContext = context[2] || this.get_defaultUserContext();
6155            callback(err, userContext, "Sys.Services.RoleService.load");
6156        }
6157        else {
6158            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
6159        }
6160    }
6161Sys.Services._RoleService.prototype = {
6162    _defaultLoadCompletedCallback: null,
6163    _rolesIndex: null,
6164    _timeout: 0,
6165    _path: '',
6166    get_defaultLoadCompletedCallback: Sys$Services$_RoleService$get_defaultLoadCompletedCallback,
6167    set_defaultLoadCompletedCallback: Sys$Services$_RoleService$set_defaultLoadCompletedCallback,
6168    get_path: Sys$Services$_RoleService$get_path,
6169    get_roles: Sys$Services$_RoleService$get_roles,
6170    isUserInRole: Sys$Services$_RoleService$isUserInRole,
6171    load: Sys$Services$_RoleService$load,
6172    _get_path: Sys$Services$_RoleService$_get_path,  
6173    _get_rolesIndex: Sys$Services$_RoleService$_get_rolesIndex,
6174    _onLoadComplete: Sys$Services$_RoleService$_onLoadComplete,
6175    _onLoadFailed: Sys$Services$_RoleService$_onLoadFailed
6176}
6177Sys.Services._RoleService.registerClass('Sys.Services._RoleService', Sys.Net.WebServiceProxy);
6178Sys.Services.RoleService = new Sys.Services._RoleService();
6179Type.registerNamespace('Sys.Serialization');
6180Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() {
6181    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.#ctor" />
6182    if (arguments.length !== 0) throw Error.parameterCount();
6183}
6184Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer');
6185Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs = [];
6186Sys.Serialization.JavaScriptSerializer._charsToEscape = [];
6187Sys.Serialization.JavaScriptSerializer._dateRegEx = new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"', 'g');
6188Sys.Serialization.JavaScriptSerializer._escapeChars = {};
6189Sys.Serialization.JavaScriptSerializer._escapeRegEx = new RegExp('["\\\\\\x00-\\x1F]', 'i');
6190Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal = new RegExp('["\\\\\\x00-\\x1F]', 'g');
6191Sys.Serialization.JavaScriptSerializer._jsonRegEx = new RegExp('[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]', 'g');
6192Sys.Serialization.JavaScriptSerializer._jsonStringRegEx = new RegExp('"(\\\\.|[^"\\\\])*"', 'g');
6193Sys.Serialization.JavaScriptSerializer._serverTypeFieldName = '__type';
6194Sys.Serialization.JavaScriptSerializer._init = function Sys$Serialization$JavaScriptSerializer$_init() {
6195    var replaceChars = ['\\u0000','\\u0001','\\u0002','\\u0003','\\u0004','\\u0005','\\u0006','\\u0007',
6196                        '\\b','\\t','\\n','\\u000b','\\f','\\r','\\u000e','\\u000f','\\u0010','\\u0011',
6197                        '\\u0012','\\u0013','\\u0014','\\u0015','\\u0016','\\u0017','\\u0018','\\u0019',
6198                        '\\u001a','\\u001b','\\u001c','\\u001d','\\u001e','\\u001f'];
6199    Sys.Serialization.JavaScriptSerializer._charsToEscape[0] = '\\';
6200    Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['\\'] = new RegExp('\\\\', 'g');
6201    Sys.Serialization.JavaScriptSerializer._escapeChars['\\'] = '\\\\';
6202    Sys.Serialization.JavaScriptSerializer._charsToEscape[1] = '"';
6203    Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"'] = new RegExp('"', 'g');
6204    Sys.Serialization.JavaScriptSerializer._escapeChars['"'] = '\\"';
6205    for (var i = 0; i < 32; i++) {
6206        var c = String.fromCharCode(i);
6207        Sys.Serialization.JavaScriptSerializer._charsToEscape[i+2] = c;
6208        Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[c] = new RegExp(c, 'g');
6209        Sys.Serialization.JavaScriptSerializer._escapeChars[c] = replaceChars[i];
6210    }
6211}
6212Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeBooleanWithBuilder(object, stringBuilder) {
6213    stringBuilder.append(object.toString());
6214}
6215Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeNumberWithBuilder(object, stringBuilder) {
6216    if (isFinite(object)) {
6217        stringBuilder.append(String(object));
6218    }
6219    else {
6220        throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
6221    }
6222}
6223Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeStringWithBuilder(string, stringBuilder) {
6224    stringBuilder.append('"');
6225    if (Sys.Serialization.JavaScriptSerializer._escapeRegEx.test(string)) {
6226        if (Sys.Serialization.JavaScriptSerializer._charsToEscape.length === 0) {
6227            Sys.Serialization.JavaScriptSerializer._init();
6228        }
6229        if (string.length < 128) {
6230            string = string.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal,
6231                function(x) { return Sys.Serialization.JavaScriptSerializer._escapeChars[x]; });
6232        }
6233        else {
6234            for (var i = 0; i < 34; i++) {
6235                var c = Sys.Serialization.JavaScriptSerializer._charsToEscape[i];
6236                if (string.indexOf(c) !== -1) {
6237                    if (Sys.Browser.agent === Sys.Browser.Opera || Sys.Browser.agent === Sys.Browser.FireFox) {
6238                        string = string.split(c).join(Sys.Serialization.JavaScriptSerializer._escapeChars[c]);
6239                    }
6240                    else {
6241                        string = string.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[c],
6242                            Sys.Serialization.JavaScriptSerializer._escapeChars[c]);
6243                    }
6244                }
6245            }
6246       }
6247    }
6248    stringBuilder.append(string);
6249    stringBuilder.append('"');
6250}
6251Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort, prevObjects) {
6252    var i;
6253    switch (typeof object) {
6254    case 'object':
6255        if (object) {
6256            if (prevObjects){
6257                for( var j = 0; j < prevObjects.length; j++) {
6258                    if (prevObjects[j] === object) {
6259                        throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle);
6260                    }
6261                }
6262            }
6263            else {
6264                prevObjects = new Array();
6265            }
6266            try {
6267                Array.add(prevObjects, object);
6268                
6269                if (Number.isInstanceOfType(object)){
6270                    Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder);
6271                }
6272                else if (Boolean.isInstanceOfType(object)){
6273                    Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder);
6274                }
6275                else if (String.isInstanceOfType(object)){
6276                    Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder);
6277                }
6278            
6279                else if (Array.isInstanceOfType(object)) {
6280                    stringBuilder.append('[');
6281                   
6282                    for (i = 0; i < object.length; ++i) {
6283                        if (i > 0) {
6284                            stringBuilder.append(',');
6285                        }
6286                        Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder,false,prevObjects);
6287                    }
6288                    stringBuilder.append(']');
6289                }
6290                else {
6291                    if (Date.isInstanceOfType(object)) {
6292                        stringBuilder.append('"\\/Date(');
6293                        stringBuilder.append(object.getTime());
6294                        stringBuilder.append(')\\/"');
6295                        break;
6296                    }
6297                    var properties = [];
6298                    var propertyCount = 0;
6299                    for (var name in object) {
6300                        if (name.startsWith('$')) {
6301                            continue;
6302                        }
6303                        if (name === Sys.Serialization.JavaScriptSerializer._serverTypeFieldName && propertyCount !== 0){
6304                            properties[propertyCount++] = properties[0];
6305                            properties[0] = name;
6306                        }
6307                        else{
6308                            properties[propertyCount++] = name;
6309                        }
6310                    }
6311                    if (sort) properties.sort();
6312                    stringBuilder.append('{');
6313                    var needComma = false;
6314                     
6315                    for (i=0; i<propertyCount; i++) {
6316                        var value = object[properties[i]];
6317                        if (typeof value !== 'undefined' && typeof value !== 'function') {
6318                            if (needComma) {
6319                                stringBuilder.append(',');
6320                            }
6321                            else {
6322                                needComma = true;
6323                            }
6324                           
6325                            Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i], stringBuilder, sort, prevObjects);
6326                            stringBuilder.append(':');
6327                            Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, stringBuilder, sort, prevObjects);
6328                          
6329                        }
6330                    }
6331                stringBuilder.append('}');
6332                }
6333            }
6334            finally {
6335                Array.removeAt(prevObjects, prevObjects.length - 1);
6336            }
6337        }
6338        else {
6339            stringBuilder.append('null');
6340        }
6341        break;
6342    case 'number':
6343        Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder);
6344        break;
6345    case 'string':
6346        Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder);
6347        break;
6348    case 'boolean':
6349        Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder);
6350        break;
6351    default:
6352        stringBuilder.append('null');
6353        break;
6354    }
6355}
6356Sys.Serialization.JavaScriptSerializer.serialize = function Sys$Serialization$JavaScriptSerializer$serialize(object) {
6357    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.serialize" />
6358    /// <param name="object" mayBeNull="true"></param>
6359    /// <returns type="String"></returns>
6360    var e = Function._validateParams(arguments, [
6361        {name: "object", mayBeNull: true}
6362    ]);
6363    if (e) throw e;
6364    var stringBuilder = new Sys.StringBuilder();
6365    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
6366    return stringBuilder.toString();
6367}
6368Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data, secure) {
6369    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.deserialize" />
6370    /// <param name="data" type="String"></param>
6371    /// <param name="secure" type="Boolean" optional="true"></param>
6372    /// <returns></returns>
6373    var e = Function._validateParams(arguments, [
6374        {name: "data", type: String},
6375        {name: "secure", type: Boolean, optional: true}
6376    ]);
6377    if (e) throw e;
6378    
6379    if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
6380    try {    
6381        var exp = data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx, "$1new Date($2)");
6382        
6383        if (secure && Sys.Serialization.JavaScriptSerializer._jsonRegEx.test(
6384             exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx, ''))) throw null;
6385        return eval('(' + exp + ')');
6386    }
6387    catch (e) {
6388         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
6389    }
6390}
6391 
6392Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) {
6393    /// <summary locid="M:J#Sys.CultureInfo.#ctor" />
6394    /// <param name="name" type="String"></param>
6395    /// <param name="numberFormat" type="Object"></param>
6396    /// <param name="dateTimeFormat" type="Object"></param>
6397    var e = Function._validateParams(arguments, [
6398        {name: "name", type: String},
6399        {name: "numberFormat", type: Object},
6400        {name: "dateTimeFormat", type: Object}
6401    ]);
6402    if (e) throw e;
6403    this.name = name;
6404    this.numberFormat = numberFormat;
6405    this.dateTimeFormat = dateTimeFormat;
6406}
6407    function Sys$CultureInfo$_getDateTimeFormats() {
6408        if (! this._dateTimeFormats) {
6409            var dtf = this.dateTimeFormat;
6410            this._dateTimeFormats =
6411              [ dtf.MonthDayPattern,
6412                dtf.YearMonthPattern,
6413                dtf.ShortDatePattern,
6414                dtf.ShortTimePattern,
6415                dtf.LongDatePattern,
6416                dtf.LongTimePattern,
6417                dtf.FullDateTimePattern,
6418                dtf.RFC1123Pattern,
6419                dtf.SortableDateTimePattern,
6420                dtf.UniversalSortableDateTimePattern ];
6421        }
6422        return this._dateTimeFormats;
6423    }
6424    function Sys$CultureInfo$_getMonthIndex(value) {
6425        if (!this._upperMonths) {
6426            this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames);
6427        }
6428        return Array.indexOf(this._upperMonths, this._toUpper(value));
6429    }
6430    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
6431        if (!this._upperAbbrMonths) {
6432            this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
6433        }
6434        return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
6435    }
6436    function Sys$CultureInfo$_getDayIndex(value) {
6437        if (!this._upperDays) {
6438            this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames);
6439        }
6440        return Array.indexOf(this._upperDays, this._toUpper(value));
6441    }
6442    function Sys$CultureInfo$_getAbbrDayIndex(value) {
6443        if (!this._upperAbbrDays) {
6444            this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
6445        }
6446        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
6447    }
6448    function Sys$CultureInfo$_toUpperArray(arr) {
6449        var result = [];
6450        for (var i = 0, il = arr.length; i < il; i++) {
6451            result[i] = this._toUpper(arr[i]);
6452        }
6453        return result;
6454    }
6455    function Sys$CultureInfo$_toUpper(value) {
6456        return value.split("\u00A0").join(' ').toUpperCase();
6457    }
6458Sys.CultureInfo.prototype = {
6459    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
6460    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
6461    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
6462    _getDayIndex: Sys$CultureInfo$_getDayIndex,
6463    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
6464    _toUpperArray: Sys$CultureInfo$_toUpperArray,
6465    _toUpper: Sys$CultureInfo$_toUpper
6466}
6467Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) {
6468    var cultureInfo = Sys.Serialization.JavaScriptSerializer.deserialize(value);
6469    return new Sys.CultureInfo(cultureInfo.name, cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
6470}
6471Sys.CultureInfo.registerClass('Sys.CultureInfo');
6472Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/d
6472d/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');
6473if (typeof(__cultureInfo) === 'undefined') {
6474    var __cultureInfo = '{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';
6475}
6476Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo);
6477delete __cultureInfo;
6478 
6479Sys.UI.Behavior = function Sys$UI$Behavior(element) {
6480    /// <summary locid="M:J#Sys.UI.Behavior.#ctor" />
6481    /// <param name="element" domElement="true"></param>
6482    var e = Function._validateParams(arguments, [
6483        {name: "element", domElement: true}
6484    ]);
6485    if (e) throw e;
6486    Sys.UI.Behavior.initializeBase(this);
6487    this._element = element;
6488    var behaviors = element._behaviors;
6489    if (!behaviors) {
6490        element._behaviors = [this];
6491    }
6492    else {
6493        behaviors[behaviors.length] = this;
6494    }
6495}
6496    function Sys$UI$Behavior$get_element() {
6497        /// <value domElement="true" locid="P:J#Sys.UI.Behavior.element"></value>
6498        if (arguments.length !== 0) throw Error.parameterCount();
6499        return this._element;
6500    }
6501    function Sys$UI$Behavior$get_id() {
6502        /// <value type="String" locid="P:J#Sys.UI.Behavior.id"></value>
6503        if (arguments.length !== 0) throw Error.parameterCount();
6504        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
6505        if (baseId) return baseId;
6506        if (!this._element || !this._element.id) return '';
6507        return this._element.id + '$' + this.get_name();
6508    }
6509    function Sys$UI$Behavior$get_name() {
6510        /// <value type="String" locid="P:J#Sys.UI.Behavior.name"></value>
6511        if (arguments.length !== 0) throw Error.parameterCount();
6512        if (this._name) return this._name;
6513        var name = Object.getTypeName(this);
6514        var i = name.lastIndexOf('.');
6515        if (i != -1) name = name.substr(i + 1);
6516        if (!this.get_isInitialized()) this._name = name;
6517        return name;
6518    }
6519    function Sys$UI$Behavior$set_name(value) {
6520        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
6521        if (e) throw e;
6522        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
6523            throw Error.argument('value', Sys.Res.invalidId);
6524        if (typeof(this._element[value]) !== 'undefined')
6525            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
6526        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
6527        this._name = value;
6528    }
6529    function Sys$UI$Behavior$initialize() {
6530        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
6531        var name = this.get_name();
6532        if (name) this._element[name] = this;
6533    }
6534    function Sys$UI$Behavior$dispose() {
6535        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
6536        if (this._element) {
6537            var name = this.get_name();
6538            if (name) {
6539                this._element[name] = null;
6540            }
6541            Array.remove(this._element._behaviors, this);
6542            delete this._element;
6543        }
6544    }
6545Sys.UI.Behavior.prototype = {
6546    _name: null,
6547    get_element: Sys$UI$Behavior$get_element,
6548    get_id: Sys$UI$Behavior$get_id,
6549    get_name: Sys$UI$Behavior$get_name,
6550    set_name: Sys$UI$Behavior$set_name,
6551    initialize: Sys$UI$Behavior$initialize,
6552    dispose: Sys$UI$Behavior$dispose
6553}
6554Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);
6555Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) {
6556    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorByName" />
6557    /// <param name="element" domElement="true"></param>
6558    /// <param name="name" type="String"></param>
6559    /// <returns type="Sys.UI.Behavior" mayBeNull="true"></returns>
6560    var e = Function._validateParams(arguments, [
6561        {name: "element", domElement: true},
6562        {name: "name", type: String}
6563    ]);
6564    if (e) throw e;
6565    var b = element[name];
6566    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
6567}
6568Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) {
6569    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviors" />
6570    /// <param name="element" domElement="true"></param>
6571    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
6572    var e = Function._validateParams(arguments, [
6573        {name: "element", domElement: true}
6574    ]);
6575    if (e) throw e;
6576    if (!element._behaviors) return [];
6577    return Array.clone(element._behaviors);
6578}
6579Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) {
6580    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorsByType" />
6581    /// <param name="element" domElement="true"></param>
6582    /// <param name="type" type="Type"></param>
6583    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
6584    var e = Function._validateParams(arguments, [
6585        {name: "element", domElement: true},
6586        {name: "type", type: Type}
6587    ]);
6588    if (e) throw e;
6589    var behaviors = element._behaviors;
6590    var results = [];
6591    if (behaviors) {
6592        for (var i = 0, l = behaviors.length; i < l; i++) {
6593            if (type.isInstanceOfType(behaviors[i])) {
6594                results[results.length] = behaviors[i];
6595            }
6596        }
6597    }
6598    return results;
6599}
6600 
6601Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() {
6602    /// <summary locid="M:J#Sys.UI.VisibilityMode.#ctor" />
6603    /// <field name="hide" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.hide"></field>
6604    /// <field name="collapse" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.collapse"></field>
6605    if (arguments.length !== 0) throw Error.parameterCount();
6606    throw Error.notImplemented();
6607}
6608Sys.UI.VisibilityMode.prototype = {
6609    hide: 0,
6610    collapse: 1
6611}
6612Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");
6613 
6614Sys.UI.Control = function Sys$UI$Control(element) {
6615    /// <summary locid="M:J#Sys.UI.Control.#ctor" />
6616    /// <param name="element" domElement="true"></param>
6617    var e = Function._validateParams(arguments, [
6618        {name: "element", domElement: true}
6619    ]);
6620    if (e) throw e;
6621    if (typeof(element.control) != 'undefined') throw Error.invali
6621dOperation(Sys.Res.controlAlreadyDefined);
6622    Sys.UI.Control.initializeBase(this);
6623    this._element = element;
6624    element.control = this;
6625}
6626    function Sys$UI$Control$get_element() {
6627        /// <value domElement="true" locid="P:J#Sys.UI.Control.element"></value>
6628        if (arguments.length !== 0) throw Error.parameterCount();
6629        return this._element;
6630    }
6631    function Sys$UI$Control$get_id() {
6632        /// <value type="String" locid="P:J#Sys.UI.Control.id"></value>
6633        if (arguments.length !== 0) throw Error.parameterCount();
6634        if (!this._element) return '';
6635        return this._element.id;
6636    }
6637    function Sys$UI$Control$set_id(value) {
6638        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
6639        if (e) throw e;
6640        throw Error.invalidOperation(Sys.Res.cantSetId);
6641    }
6642    function Sys$UI$Control$get_parent() {
6643        /// <value type="Sys.UI.Control" locid="P:J#Sys.UI.Control.parent"></value>
6644        if (arguments.length !== 0) throw Error.parameterCount();
6645        if (this._parent) return this._parent;
6646        if (!this._element) return null;
6647        
6648        var parentElement = this._element.parentNode;
6649        while (parentElement) {
6650            if (parentElement.control) {
6651                return parentElement.control;
6652            }
6653            parentElement = parentElement.parentNode;
6654        }
6655        return null;
6656    }
6657    function Sys$UI$Control$set_parent(value) {
6658        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
6659        if (e) throw e;
6660        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6661        var parents = [this];
6662        var current = value;
6663        while (current) {
6664            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
6665            parents[parents.length] = current;
6666            current = current.get_parent();
6667        }
6668        this._parent = value;
6669    }
6670    function Sys$UI$Control$get_visibilityMode() {
6671        /// <value type="Sys.UI.VisibilityMode" locid="P:J#Sys.UI.Control.visibilityMode"></value>
6672        if (arguments.length !== 0) throw Error.parameterCount();
6673        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6674        return Sys.UI.DomElement.getVisibilityMode(this._element);
6675    }
6676    function Sys$UI$Control$set_visibilityMode(value) {
6677        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
6678        if (e) throw e;
6679        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6680        Sys.UI.DomElement.setVisibilityMode(this._element, value);
6681    }
6682    function Sys$UI$Control$get_visible() {
6683        /// <value type="Boolean" locid="P:J#Sys.UI.Control.visible"></value>
6684        if (arguments.length !== 0) throw Error.parameterCount();
6685        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6686        return Sys.UI.DomElement.getVisible(this._element);
6687    }
6688    function Sys$UI$Control$set_visible(value) {
6689        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
6690        if (e) throw e;
6691        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6692        Sys.UI.DomElement.setVisible(this._element, value)
6693    }
6694    function Sys$UI$Control$addCssClass(className) {
6695        /// <summary locid="M:J#Sys.UI.Control.addCssClass" />
6696        /// <param name="className" type="String"></param>
6697        var e = Function._validateParams(arguments, [
6698            {name: "className", type: String}
6699        ]);
6700        if (e) throw e;
6701        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6702        Sys.UI.DomElement.addCssClass(this._element, className);
6703    }
6704    function Sys$UI$Control$dispose() {
6705        Sys.UI.Control.callBaseMethod(this, 'dispose');
6706        if (this._element) {
6707            this._element.control = undefined;
6708            delete this._element;
6709        }
6710        if (this._parent) delete this._parent;
6711    }
6712    function Sys$UI$Control$onBubbleEvent(source, args) {
6713        /// <summary locid="M:J#Sys.UI.Control.onBubbleEvent" />
6714        /// <param name="source"></param>
6715        /// <param name="args" type="Sys.EventArgs"></param>
6716        /// <returns type="Boolean"></returns>
6717        var e = Function._validateParams(arguments, [
6718            {name: "source"},
6719            {name: "args", type: Sys.EventArgs}
6720        ]);
6721        if (e) throw e;
6722        return false;
6723    }
6724    function Sys$UI$Control$raiseBubbleEvent(source, args) {
6725        /// <summary locid="M:J#Sys.UI.Control.raiseBubbleEvent" />
6726        /// <param name="source"></param>
6727        /// <param name="args" type="Sys.EventArgs"></param>
6728        var e = Function._validateParams(arguments, [
6729            {name: "source"},
6730            {name: "args", type: Sys.EventArgs}
6731        ]);
6732        if (e) throw e;
6733        var currentTarget = this.get_parent();
6734        while (currentTarget) {
6735            if (currentTarget.onBubbleEvent(source, args)) {
6736                return;
6737            }
6738            currentTarget = currentTarget.get_parent();
6739        }
6740    }
6741    function Sys$UI$Control$removeCssClass(className) {
6742        /// <summary locid="M:J#Sys.UI.Control.removeCssClass" />
6743        /// <param name="className" type="String"></param>
6744        var e = Function._validateParams(arguments, [
6745            {name: "className", type: String}
6746        ]);
6747        if (e) throw e;
6748        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6749        Sys.UI.DomElement.removeCssClass(this._element, className);
6750    }
6751    function Sys$UI$Control$toggleCssClass(className) {
6752        /// <summary locid="M:J#Sys.UI.Control.toggleCssClass" />
6753        /// <param name="className" type="String"></param>
6754        var e = Function._validateParams(arguments, [
6755            {name: "className", type: String}
6756        ]);
6757        if (e) throw e;
6758        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
6759        Sys.UI.DomElement.toggleCssClass(this._element, className);
6760    }
6761Sys.UI.Control.prototype = {
6762    _parent: null,
6763    _visibilityMode: Sys.UI.VisibilityMode.hide,
6764    get_element: Sys$UI$Control$get_element,
6765    get_id: Sys$UI$Control$get_id,
6766    set_id: Sys$UI$Control$set_id,
6767    get_parent: Sys$UI$Control$get_parent,
6768    set_parent: Sys$UI$Control$set_parent,
6769    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
6770    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
6771    get_visible: Sys$UI$Control$get_visible,
6772    set_visible: Sys$UI$Control$set_visible,
6773    addCssClass: Sys$UI$Control$addCssClass,
6774    dispose: Sys$UI$Control$dispose,
6775    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
6776    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
6777    removeCssClass: Sys$UI$Control$removeCssClass,
6778    toggleCssClass: Sys$UI$Control$toggleCssClass
6779}
6780Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);
6781
6782
6783Type.registerNamespace('Sys');
6784Sys.Res={
6785"urlMustBeLessThan1024chars":"The history state must be small enough to not make the url larger than 1024 characters.",
6786"argumentTypeName":"Value is not the name of an existing type.",
6787"methodRegisteredTwice":"Method {0} has already been registered.",
6788"cantSetIdAfterInit":"The id property can\u0027t be set on this object after initialization.",
6789"cantBeCalledAfterDispose":"Can\u0027t be called after dispose.",
6790"componentCantSetIdAfterAddedToApp":"The id property of a component can\u0027t be set after it\u0027s been added to the Application object.",
6791"behaviorDuplicateName":"A behavior with name \u0027{0}\u0027 already exists or it is the name of an existing property on the target element.",
6792"notATypeName":"Value is not a valid type name.",
6793"typeShouldBeTypeOrString":"Value is not a valid type or a valid type name.",
6794"historyInvalidHistorySettingCombination":"Cannot set enableHistory to false when ScriptManager.EnableHistory is true.",
6795"stateMustBeStringDictionary":"The state object can only have null and string fields.",
6796"boolTrueOrFalse":"Value must be \u0027true\u0027 or \u0027false\u0027.",
6797"scriptLoadFailedNoHead":"ScriptLoader requires pages to contain a \u003chead\u003e element.",
6798"stringFormatInvalid":"The format string is invalid.",
6799"referenceNotFound":"Component \u0027{0}\u0027 was not found.",
6800"enumReservedName":"\u0027{0}\u0027 is a reserved name that can\u0027t be used as an enum value name.",
6801"eventHandlerNotFound":"Handler not found.",
6802"circularParentChain":"The chain of control parents can\u0027t have circular references.",
6803"undefinedEvent":"\u0027{0}\u0027 is not an event.",
6804"notAMethod":"{0} is not a method.",
6805"propertyUndefined":"\u0027{0}\u0027 is not a property or an existing field.",
6806"historyCannotEnableHistory":"Cannot set enableHistory after initialization.",
6807"eventHandlerInvalid":"Handler was not added through the Sys.UI.DomEvent.addHandler method.",
6808"scriptLoadFailedDebug":"The script \u0027{0}\u0027 failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \u0027Display a notification about every script error\u0027 under advanced settings.\r\n Missing call to Sys.Application.notifyScriptLoaded().",
6809"propertyNotWritable":"\u0027{0}\u0027 is not a writable property.",
6810"enumInvalidValueName":"\u0027{0}\u0027 is not a valid name for an enum value.",
6811"controlAlreadyDefined":"A control is already associated with the element.",
6812"addHandlerCantBeUsedForError":"Can\u0027t add a handler for the error event using this method. Please set the window.onerror property instead.",
6813"namespaceContainsObject":"Object {0} already exists and is not a namespace.",
6814"cantAddNonFunctionhandler":"Can\u0027t add a handler that is not a function.",
6815"invalidNameSpace":"Value is not a valid namespace identifier.",
6816"notAnInterface":"Value is not a valid interface.",
6817"eventHandlerNotFunction":"Handler must be a function.",
6818"propertyNotAnArray":"\u0027{0}\u0027 is not an Array property.",
6819"typeRegisteredTwice":"Type {0} has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial update.",
6820"cantSetNameAfterInit":"The name property can\u0027t be set on this object after initialization.",
6821"historyMissingFrame":"For the history feature to work in IE, the page must have an iFrame element with id \u0027__historyFrame\u0027 pointed to a page that gets its title from the \u0027title\u0027 query string parameter and calls Sys.Application._onIFrameLoad() on the parent window. This can be done by setting EnableHistory to true on ScriptManager.",
6822"appDuplicateComponent":"Two components with the same id \u0027{0}\u0027 can\u0027t be added to the application.",
6823"historyCannotAddHistoryPointWithHistoryDisabled":"A history point can only be added if enableHistory is set to true.",
6824"appComponentMustBeInitialized":"Components must be initialized before they are added to the Application object.",
6825"baseNotAClass":"Value is not a class.",
6826"methodNotFound":"No method found with name \u0027{0}\u0027.",
6827"arrayParseBadFormat":"Value must be a valid string representation for an array. It must start with a \u0027[\u0027 and end with a \u0027]\u0027.",
6828"stateFieldNameInvalid":"State field names must not contain any \u0027=\u0027 characters.",
6829"cantSetId":"The id property can\u0027t be set on this object.",
6830"historyMissingHiddenInput":"For the history feature to work in Safari 2, the page must have a hidden input element with id \u0027__history\u0027.",
6831"stringFormatBraceMismatch":"The format string contains an unmatched opening or closing brace.",
6832"enumValueNotInteger":"An enumeration definition can only contain integer values.",
6833"propertyNullOrUndefined":"Cannot set the properties of \u0027{0}\u0027 because it returned a null value.",
6834"argumentDomNode":"Value must be a DOM element or a text node.",
6835"componentCantSetIdTwice":"The id property of a component can\u0027t be set more than once.",
6836"createComponentOnDom":"Value must be null for Components that are not Controls or Behaviors.",
6837"createNotComponent":"{0} does not derive from Sys.Component.",
6838"createNoDom":"Value must not be null for Controls and Behaviors.",
6839"cantAddWithoutId":"Can\u0027t add a component that doesn\u0027t have an id.",
6840"badTypeName":"Value is not the name of the type being registered or the name is a reserved word.",
6841"argumentInteger":"Value must be an integer.",
6842"scriptLoadMultipleCallbacks":"The script \u0027{0}\u0027 contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.",
6843"invokeCalledTwice":"Cannot call invoke more than once.",
6844"webServiceFailed":"The server method \u0027{0}\u0027 failed with the following error: {1}",
6845"webServiceInvalidJsonWrapper":"The server method \u0027{0}\u0027 returned invalid data. The \u0027d\u0027 property is missing from the JSON wrapper.",
6846"argumentType":"Object cannot be converted to the required type.",
6847"argumentNull":"Value cannot be null.",
6848"controlCantSetId":"The id property can\u0027t be set on a control.",
6849"formatBadFormatSpecifier":"Format specifier was invalid.",
6850"webServiceFailedNoMsg":"The server method \u0027{0}\u0027 failed.",
6851"argumentDomElement":"Value must be a DOM element.",
6852"invalidExecutorType":"Could not create a valid Sys.Net.WebRequestExecutor from: {0}.",
6853"cannotCallBeforeResponse":"Cannot call {0} when responseAvailable is false.",
6854"actualValue":"Actual value was {0}.",
6855"enumInvalidValue":"\u0027{0}\u0027 is not a valid value for enum {1}.",
6856"scriptLoadFailed":"The script \u0027{0}\u0027 could not be loaded.",
6857"parameterCount":"Parameter count mismatch.",
6858"cannotDeserializeEmptyString":"Cannot deserialize empty string.",
6859"formatInvalidString":"Input string was not in a correct format.",
6860"invalidTimeout":"Value must be greater than or equal to zero.",
6861"cannotAbortBeforeStart":"Cannot abort when executor has not started.",
6862"argument":"Value does not fall within the expected range.",
6863"cannotDeserializeInvalidJson":"Cannot deserialize. The data does not correspond to valid JSON.",
6864"invalidHttpVerb":"httpVerb cannot be set to an empty or null string.",
6865"nullWebRequest":"Cannot call executeRequest with a null webRequest.",
6866"eventHandlerInvalid":"Handler was not added through the Sys.UI.DomEvent.addHandler method.",
6867"cannotSerializeNonFiniteNumbers":"Cannot serialize non finite numbers.",
6868"argumentUndefined":"Value cannot be undefined.",
6869"webServiceInvalidReturnType":"The server method \u0027{0}\u0027 returned an invalid type. Expected type: {1}",
6870"servicePathNotSet":"The path to the web service has not been set.",
6871"argumentTypeWithTypes":"Object of type \u0027{0}\u0027 cannot be converted to type \u0027{1}\u0027.",
6872"cannotCallOnceStarted":"Cannot call {0} once started.",
6873"badBaseUrl1":"Base URL does not contain ://.",
6874"badBaseUrl2":"Base URL does not contain another /.",
6875"badBaseUrl3":"Cannot find last / in base URL.",
6876"setExecutorAfterActive":"Cannot set executor after it has become active.",
6877"paramName":"Parameter name: {0}",
6878"cannotCallOutsideHandler":"Cannot call {0} outside of a completed event handler.",
6879"cannotSerializeObjectWithCycle":"Cannot serialize object with cyclic reference within child properties.",
6880"format":"One of the identified items was in an invalid format.",
6881"assertFailedCaller":"Assertion Failed: {0}\r\nat {1}",
6882"argumentOutOfRange":"Specified argument was out of the range of valid values.",
6883"webServiceTimedOut":"The server method \u0027{0}\u0027 timed out.",
6884"notImplemented":"The method or operation is not implemented.",
6885"assertFailed":"Assertion Failed: {0}",
6886"invalidOperation":"Operation is not valid due to the current state of the object.",
6887"breakIntoDebugger":"{0}\r\n\r\nBreak into debugger?"
6888};
6889
6890if(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.