PageSourceSearch

http://grodno.gov.by/ScriptResource.axd?d=trG2h8mR1-L_xC0Mahf0bTTP…z6gwTl9rKXRNx0eAV7Na81&t=634508557360000000

js grodno.gov.by collected 2026-10-02 03:55:16 UTC 260,386 bytes, 6,633 lines download raw bytes

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