| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext'>/**
 
- </span> * @class Ext
 
-  * @singleton
 
-  */
 
- var Ext = Ext || {};
 
- Ext._startTime = new Date().getTime();
 
- (function() {
 
-     var global = this,
 
-         objectPrototype = Object.prototype,
 
-         toString = objectPrototype.toString,
 
-         enumerables = true,
 
-         enumerablesTest = { toString: 1 },
 
-         emptyFn = function () {},
 
-         // This is the "$previous" method of a hook function on an instance. When called, it
 
-         // calls through the class prototype by the name of the called method.
 
-         callOverrideParent = function () {
 
-             var method = callOverrideParent.caller.caller; // skip callParent (our caller)
 
-             return method.$owner.prototype[method.$name].apply(this, arguments);
 
-         },
 
-         i;
 
-     Ext.global = global;
 
-     for (i in enumerablesTest) {
 
-         enumerables = null;
 
-     }
 
-     if (enumerables) {
 
-         enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable',
 
-                        'toLocaleString', 'toString', 'constructor'];
 
-     }
 
- <span id='Ext-property-enumerables'>    /**
 
- </span>     * An array containing extra enumerables for old browsers
 
-      * @property {String[]}
 
-      */
 
-     Ext.enumerables = enumerables;
 
- <span id='Ext-method-apply'>    /**
 
- </span>     * Copies all the properties of config to the specified object.
 
-      * Note that if recursive merging and cloning without referencing the original objects / arrays is needed, use
 
-      * {@link Ext.Object#merge} instead.
 
-      * @param {Object} object The receiver of the properties
 
-      * @param {Object} config The source of the properties
 
-      * @param {Object} [defaults] A different object that will also be applied for default values
 
-      * @return {Object} returns obj
 
-      */
 
-     Ext.apply = function(object, config, defaults) {
 
-         if (defaults) {
 
-             Ext.apply(object, defaults);
 
-         }
 
-         if (object && config && typeof config === 'object') {
 
-             var i, j, k;
 
-             for (i in config) {
 
-                 object[i] = config[i];
 
-             }
 
-             if (enumerables) {
 
-                 for (j = enumerables.length; j--;) {
 
-                     k = enumerables[j];
 
-                     if (config.hasOwnProperty(k)) {
 
-                         object[k] = config[k];
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         return object;
 
-     };
 
-     Ext.buildSettings = Ext.apply({
 
-         baseCSSPrefix: 'x-',
 
-         scopeResetCSS: false
 
-     }, Ext.buildSettings || {});
 
-     Ext.apply(Ext, {
 
- <span id='Ext-property-name'>        /**
 
- </span>         * @property {String} [name='Ext']
 
-          * <p>The name of the property in the global namespace (The <code>window</code> in browser environments) which refers to the current instance of Ext.</p>
 
-          * <p>This is usually <code>"Ext"</code>, but if a sandboxed build of ExtJS is being used, this will be an alternative name.</p>
 
-          * <p>If code is being generated for use by <code>eval</code> or to create a <code>new Function</code>, and the global instance
 
-          * of Ext must be referenced, this is the name that should be built into the code.</p>
 
-          */
 
-         name: Ext.sandboxName || 'Ext',
 
- <span id='Ext-property-emptyFn'>        /**
 
- </span>         * A reusable empty function
 
-          */
 
-         emptyFn: emptyFn,
 
- <span id='Ext-property-emptyString'>        /**
 
- </span>         * A zero length string which will pass a truth test. Useful for passing to methods
 
-          * which use a truth test to reject <i>falsy</i> values where a string value must be cleared.
 
-          */
 
-         emptyString: new String(),
 
-         baseCSSPrefix: Ext.buildSettings.baseCSSPrefix,
 
- <span id='Ext-method-applyIf'>        /**
 
- </span>         * Copies all the properties of config to object if they don't already exist.
 
-          * @param {Object} object The receiver of the properties
 
-          * @param {Object} config The source of the properties
 
-          * @return {Object} returns obj
 
-          */
 
-         applyIf: function(object, config) {
 
-             var property;
 
-             if (object) {
 
-                 for (property in config) {
 
-                     if (object[property] === undefined) {
 
-                         object[property] = config[property];
 
-                     }
 
-                 }
 
-             }
 
-             return object;
 
-         },
 
- <span id='Ext-method-iterate'>        /**
 
- </span>         * Iterates either an array or an object. This method delegates to
 
-          * {@link Ext.Array#each Ext.Array.each} if the given value is iterable, and {@link Ext.Object#each Ext.Object.each} otherwise.
 
-          *
 
-          * @param {Object/Array} object The object or array to be iterated.
 
-          * @param {Function} fn The function to be called for each iteration. See and {@link Ext.Array#each Ext.Array.each} and
 
-          * {@link Ext.Object#each Ext.Object.each} for detailed lists of arguments passed to this function depending on the given object
 
-          * type that is being iterated.
 
-          * @param {Object} scope (Optional) The scope (`this` reference) in which the specified function is executed.
 
-          * Defaults to the object being iterated itself.
 
-          * @markdown
 
-          */
 
-         iterate: function(object, fn, scope) {
 
-             if (Ext.isEmpty(object)) {
 
-                 return;
 
-             }
 
-             if (scope === undefined) {
 
-                 scope = object;
 
-             }
 
-             if (Ext.isIterable(object)) {
 
-                 Ext.Array.each.call(Ext.Array, object, fn, scope);
 
-             }
 
-             else {
 
-                 Ext.Object.each.call(Ext.Object, object, fn, scope);
 
-             }
 
-         }
 
-     });
 
-     Ext.apply(Ext, {
 
- <span id='Ext-method-extend'>        /**
 
- </span>         * This method deprecated. Use {@link Ext#define Ext.define} instead.
 
-          * @method
 
-          * @param {Function} superclass
 
-          * @param {Object} overrides
 
-          * @return {Function} The subclass constructor from the <tt>overrides</tt> parameter, or a generated one if not provided.
 
-          * @deprecated 4.0.0 Use {@link Ext#define Ext.define} instead
 
-          */
 
-         extend: (function() {
 
-             // inline overrides
 
-             var objectConstructor = objectPrototype.constructor,
 
-                 inlineOverrides = function(o) {
 
-                 for (var m in o) {
 
-                     if (!o.hasOwnProperty(m)) {
 
-                         continue;
 
-                     }
 
-                     this[m] = o[m];
 
-                 }
 
-             };
 
-             return function(subclass, superclass, overrides) {
 
-                 // First we check if the user passed in just the superClass with overrides
 
-                 if (Ext.isObject(superclass)) {
 
-                     overrides = superclass;
 
-                     superclass = subclass;
 
-                     subclass = overrides.constructor !== objectConstructor ? overrides.constructor : function() {
 
-                         superclass.apply(this, arguments);
 
-                     };
 
-                 }
 
-                 //<debug>
 
-                 if (!superclass) {
 
-                     Ext.Error.raise({
 
-                         sourceClass: 'Ext',
 
-                         sourceMethod: 'extend',
 
-                         msg: 'Attempting to extend from a class which has not been loaded on the page.'
 
-                     });
 
-                 }
 
-                 //</debug>
 
-                 // We create a new temporary class
 
-                 var F = function() {},
 
-                     subclassProto, superclassProto = superclass.prototype;
 
-                 F.prototype = superclassProto;
 
-                 subclassProto = subclass.prototype = new F();
 
-                 subclassProto.constructor = subclass;
 
-                 subclass.superclass = superclassProto;
 
-                 if (superclassProto.constructor === objectConstructor) {
 
-                     superclassProto.constructor = superclass;
 
-                 }
 
-                 subclass.override = function(overrides) {
 
-                     Ext.override(subclass, overrides);
 
-                 };
 
-                 subclassProto.override = inlineOverrides;
 
-                 subclassProto.proto = subclassProto;
 
-                 subclass.override(overrides);
 
-                 subclass.extend = function(o) {
 
-                     return Ext.extend(subclass, o);
 
-                 };
 
-                 return subclass;
 
-             };
 
-         }()),
 
- <span id='Ext-method-override'>        /**
 
- </span>         * Overrides members of the specified `target` with the given values.
 
-          * 
 
-          * If the `target` is a class declared using {@link Ext#define Ext.define}, the
 
-          * `override` method of that class is called (see {@link Ext.Base#override}) given
 
-          * the `overrides`.
 
-          *
 
-          * If the `target` is a function, it is assumed to be a constructor and the contents
 
-          * of `overrides` are applied to its `prototype` using {@link Ext#apply Ext.apply}.
 
-          * 
 
-          * If the `target` is an instance of a class declared using {@link Ext#define Ext.define},
 
-          * the `overrides` are applied to only that instance. In this case, methods are
 
-          * specially processed to allow them to use {@link Ext.Base#callParent}.
 
-          * 
 
-          *      var panel = new Ext.Panel({ ... });
 
-          *      
 
-          *      Ext.override(panel, {
 
-          *          initComponent: function () {
 
-          *              // extra processing...
 
-          *              
 
-          *              this.callParent();
 
-          *          }
 
-          *      });
 
-          *
 
-          * If the `target` is none of these, the `overrides` are applied to the `target`
 
-          * using {@link Ext#apply Ext.apply}.
 
-          *
 
-          * Please refer to {@link Ext#define Ext.define} and {@link Ext.Base#override} for
 
-          * further details.
 
-          *
 
-          * @param {Object} target The target to override.
 
-          * @param {Object} overrides The properties to add or replace on `target`. 
 
-          * @method override
 
-          */
 
-         override: function (target, overrides) {
 
-             if (target.$isClass) {
 
-                 target.override(overrides);
 
-             } else if (typeof target == 'function') {
 
-                 Ext.apply(target.prototype, overrides);
 
-             } else {
 
-                 var owner = target.self,
 
-                     name, value;
 
-                 if (owner && owner.$isClass) { // if (instance of Ext.define'd class)
 
-                     for (name in overrides) {
 
-                         if (overrides.hasOwnProperty(name)) {
 
-                             value = overrides[name];
 
-                             if (typeof value == 'function') {
 
-                                 //<debug>
 
-                                 if (owner.$className) {
 
-                                     value.displayName = owner.$className + '#' + name;
 
-                                 }
 
-                                 //</debug>
 
-                                 value.$name = name;
 
-                                 value.$owner = owner;
 
-                                 value.$previous = target.hasOwnProperty(name)
 
-                                     ? target[name] // already hooked, so call previous hook
 
-                                     : callOverrideParent; // calls by name on prototype
 
-                             }
 
-                             target[name] = value;
 
-                         }
 
-                     }
 
-                 } else {
 
-                     Ext.apply(target, overrides);
 
-                 }
 
-             }
 
-             return target;
 
-         }
 
-     });
 
-     // A full set of static methods to do type checking
 
-     Ext.apply(Ext, {
 
- <span id='Ext-method-valueFrom'>        /**
 
- </span>         * Returns the given value itself if it's not empty, as described in {@link Ext#isEmpty}; returns the default
 
-          * value (second argument) otherwise.
 
-          *
 
-          * @param {Object} value The value to test
 
-          * @param {Object} defaultValue The value to return if the original value is empty
 
-          * @param {Boolean} allowBlank (optional) true to allow zero length strings to qualify as non-empty (defaults to false)
 
-          * @return {Object} value, if non-empty, else defaultValue
 
-          */
 
-         valueFrom: function(value, defaultValue, allowBlank){
 
-             return Ext.isEmpty(value, allowBlank) ? defaultValue : value;
 
-         },
 
- <span id='Ext-method-typeOf'>        /**
 
- </span>         * Returns the type of the given variable in string format. List of possible values are:
 
-          *
 
-          * - `undefined`: If the given value is `undefined`
 
-          * - `null`: If the given value is `null`
 
-          * - `string`: If the given value is a string
 
-          * - `number`: If the given value is a number
 
-          * - `boolean`: If the given value is a boolean value
 
-          * - `date`: If the given value is a `Date` object
 
-          * - `function`: If the given value is a function reference
 
-          * - `object`: If the given value is an object
 
-          * - `array`: If the given value is an array
 
-          * - `regexp`: If the given value is a regular expression
 
-          * - `element`: If the given value is a DOM Element
 
-          * - `textnode`: If the given value is a DOM text node and contains something other than whitespace
 
-          * - `whitespace`: If the given value is a DOM text node and contains only whitespace
 
-          *
 
-          * @param {Object} value
 
-          * @return {String}
 
-          * @markdown
 
-          */
 
-         typeOf: function(value) {
 
-             var type,
 
-                 typeToString;
 
-             
 
-             if (value === null) {
 
-                 return 'null';
 
-             }
 
-             type = typeof value;
 
-             if (type === 'undefined' || type === 'string' || type === 'number' || type === 'boolean') {
 
-                 return type;
 
-             }
 
-             typeToString = toString.call(value);
 
-             switch(typeToString) {
 
-                 case '[object Array]':
 
-                     return 'array';
 
-                 case '[object Date]':
 
-                     return 'date';
 
-                 case '[object Boolean]':
 
-                     return 'boolean';
 
-                 case '[object Number]':
 
-                     return 'number';
 
-                 case '[object RegExp]':
 
-                     return 'regexp';
 
-             }
 
-             if (type === 'function') {
 
-                 return 'function';
 
-             }
 
-             if (type === 'object') {
 
-                 if (value.nodeType !== undefined) {
 
-                     if (value.nodeType === 3) {
 
-                         return (/\S/).test(value.nodeValue) ? 'textnode' : 'whitespace';
 
-                     }
 
-                     else {
 
-                         return 'element';
 
-                     }
 
-                 }
 
-                 return 'object';
 
-             }
 
-             //<debug error>
 
-             Ext.Error.raise({
 
-                 sourceClass: 'Ext',
 
-                 sourceMethod: 'typeOf',
 
-                 msg: 'Failed to determine the type of the specified value "' + value + '". This is most likely a bug.'
 
-             });
 
-             //</debug>
 
-         },
 
- <span id='Ext-method-isEmpty'>        /**
 
- </span>         * Returns true if the passed value is empty, false otherwise. The value is deemed to be empty if it is either:
 
-          *
 
-          * - `null`
 
-          * - `undefined`
 
-          * - a zero-length array
 
-          * - a zero-length string (Unless the `allowEmptyString` parameter is set to `true`)
 
-          *
 
-          * @param {Object} value The value to test
 
-          * @param {Boolean} allowEmptyString (optional) true to allow empty strings (defaults to false)
 
-          * @return {Boolean}
 
-          * @markdown
 
-          */
 
-         isEmpty: function(value, allowEmptyString) {
 
-             return (value === null) || (value === undefined) || (!allowEmptyString ? value === '' : false) || (Ext.isArray(value) && value.length === 0);
 
-         },
 
- <span id='Ext-method-isArray'>        /**
 
- </span>         * Returns true if the passed value is a JavaScript Array, false otherwise.
 
-          *
 
-          * @param {Object} target The target to test
 
-          * @return {Boolean}
 
-          * @method
 
-          */
 
-         isArray: ('isArray' in Array) ? Array.isArray : function(value) {
 
-             return toString.call(value) === '[object Array]';
 
-         },
 
- <span id='Ext-method-isDate'>        /**
 
- </span>         * Returns true if the passed value is a JavaScript Date object, false otherwise.
 
-          * @param {Object} object The object to test
 
-          * @return {Boolean}
 
-          */
 
-         isDate: function(value) {
 
-             return toString.call(value) === '[object Date]';
 
-         },
 
- <span id='Ext-method-isObject'>        /**
 
- </span>         * Returns true if the passed value is a JavaScript Object, false otherwise.
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          * @method
 
-          */
 
-         isObject: (toString.call(null) === '[object Object]') ?
 
-         function(value) {
 
-             // check ownerDocument here as well to exclude DOM nodes
 
-             return value !== null && value !== undefined && toString.call(value) === '[object Object]' && value.ownerDocument === undefined;
 
-         } :
 
-         function(value) {
 
-             return toString.call(value) === '[object Object]';
 
-         },
 
- <span id='Ext-method-isSimpleObject'>        /**
 
- </span>         * @private
 
-          */
 
-         isSimpleObject: function(value) {
 
-             return value instanceof Object && value.constructor === Object;
 
-         },
 
- <span id='Ext-method-isPrimitive'>        /**
 
- </span>         * Returns true if the passed value is a JavaScript 'primitive', a string, number or boolean.
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isPrimitive: function(value) {
 
-             var type = typeof value;
 
-             return type === 'string' || type === 'number' || type === 'boolean';
 
-         },
 
- <span id='Ext-method-isFunction'>        /**
 
- </span>         * Returns true if the passed value is a JavaScript Function, false otherwise.
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          * @method
 
-          */
 
-         isFunction:
 
-         // Safari 3.x and 4.x returns 'function' for typeof <NodeList>, hence we need to fall back to using
 
-         // Object.prototype.toString (slower)
 
-         (typeof document !== 'undefined' && typeof document.getElementsByTagName('body') === 'function') ? function(value) {
 
-             return toString.call(value) === '[object Function]';
 
-         } : function(value) {
 
-             return typeof value === 'function';
 
-         },
 
- <span id='Ext-method-isNumber'>        /**
 
- </span>         * Returns true if the passed value is a number. Returns false for non-finite numbers.
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isNumber: function(value) {
 
-             return typeof value === 'number' && isFinite(value);
 
-         },
 
- <span id='Ext-method-isNumeric'>        /**
 
- </span>         * Validates that a value is numeric.
 
-          * @param {Object} value Examples: 1, '1', '2.34'
 
-          * @return {Boolean} True if numeric, false otherwise
 
-          */
 
-         isNumeric: function(value) {
 
-             return !isNaN(parseFloat(value)) && isFinite(value);
 
-         },
 
- <span id='Ext-method-isString'>        /**
 
- </span>         * Returns true if the passed value is a string.
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isString: function(value) {
 
-             return typeof value === 'string';
 
-         },
 
- <span id='Ext-method-isBoolean'>        /**
 
- </span>         * Returns true if the passed value is a boolean.
 
-          *
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isBoolean: function(value) {
 
-             return typeof value === 'boolean';
 
-         },
 
- <span id='Ext-method-isElement'>        /**
 
- </span>         * Returns true if the passed value is an HTMLElement
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isElement: function(value) {
 
-             return value ? value.nodeType === 1 : false;
 
-         },
 
- <span id='Ext-method-isTextNode'>        /**
 
- </span>         * Returns true if the passed value is a TextNode
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isTextNode: function(value) {
 
-             return value ? value.nodeName === "#text" : false;
 
-         },
 
- <span id='Ext-method-isDefined'>        /**
 
- </span>         * Returns true if the passed value is defined.
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isDefined: function(value) {
 
-             return typeof value !== 'undefined';
 
-         },
 
- <span id='Ext-method-isIterable'>        /**
 
- </span>         * Returns true if the passed value is iterable, false otherwise
 
-          * @param {Object} value The value to test
 
-          * @return {Boolean}
 
-          */
 
-         isIterable: function(value) {
 
-             var type = typeof value,
 
-                 checkLength = false;
 
-             if (value && type != 'string') {
 
-                 // Functions have a length property, so we need to filter them out
 
-                 if (type == 'function') {
 
-                     // In Safari, NodeList/HTMLCollection both return "function" when using typeof, so we need
 
-                     // to explicitly check them here.
 
-                     if (Ext.isSafari) {
 
-                         checkLength = value instanceof NodeList || value instanceof HTMLCollection;
 
-                     }
 
-                 } else {
 
-                     checkLength = true;
 
-                 }
 
-             }
 
-             return checkLength ? value.length !== undefined : false;
 
-         }
 
-     });
 
-     Ext.apply(Ext, {
 
- <span id='Ext-method-clone'>        /**
 
- </span>         * Clone simple variables including array, {}-like objects, DOM nodes and Date without keeping the old reference.
 
-          * A reference for the object itself is returned if it's not a direct decendant of Object. For model cloning,
 
-          * see {@link Ext.data.Model#copy Model.copy}.
 
-          * 
 
-          * @param {Object} item The variable to clone
 
-          * @return {Object} clone
 
-          */
 
-         clone: function(item) {
 
-             var type,
 
-                 i,
 
-                 j,
 
-                 k,
 
-                 clone,
 
-                 key;
 
-             
 
-             if (item === null || item === undefined) {
 
-                 return item;
 
-             }
 
-             // DOM nodes
 
-             // TODO proxy this to Ext.Element.clone to handle automatic id attribute changing
 
-             // recursively
 
-             if (item.nodeType && item.cloneNode) {
 
-                 return item.cloneNode(true);
 
-             }
 
-             type = toString.call(item);
 
-             // Date
 
-             if (type === '[object Date]') {
 
-                 return new Date(item.getTime());
 
-             }
 
-             // Array
 
-             if (type === '[object Array]') {
 
-                 i = item.length;
 
-                 clone = [];
 
-                 while (i--) {
 
-                     clone[i] = Ext.clone(item[i]);
 
-                 }
 
-             }
 
-             // Object
 
-             else if (type === '[object Object]' && item.constructor === Object) {
 
-                 clone = {};
 
-                 for (key in item) {
 
-                     clone[key] = Ext.clone(item[key]);
 
-                 }
 
-                 if (enumerables) {
 
-                     for (j = enumerables.length; j--;) {
 
-                         k = enumerables[j];
 
-                         clone[k] = item[k];
 
-                     }
 
-                 }
 
-             }
 
-             return clone || item;
 
-         },
 
- <span id='Ext-method-getUniqueGlobalNamespace'>        /**
 
- </span>         * @private
 
-          * Generate a unique reference of Ext in the global scope, useful for sandboxing
 
-          */
 
-         getUniqueGlobalNamespace: function() {
 
-             var uniqueGlobalNamespace = this.uniqueGlobalNamespace,
 
-                 i;
 
-             if (uniqueGlobalNamespace === undefined) {
 
-                 i = 0;
 
-                 do {
 
-                     uniqueGlobalNamespace = 'ExtBox' + (++i);
 
-                 } while (Ext.global[uniqueGlobalNamespace] !== undefined);
 
-                 Ext.global[uniqueGlobalNamespace] = Ext;
 
-                 this.uniqueGlobalNamespace = uniqueGlobalNamespace;
 
-             }
 
-             return uniqueGlobalNamespace;
 
-         },
 
-         
 
- <span id='Ext-property-functionFactoryCache'>        /**
 
- </span>         * @private
 
-          */
 
-         functionFactoryCache: {},
 
-         
 
-         cacheableFunctionFactory: function() {
 
-             var me = this,
 
-                 args = Array.prototype.slice.call(arguments),
 
-                 cache = me.functionFactoryCache,
 
-                 idx, fn, ln;
 
-                 
 
-              if (Ext.isSandboxed) {
 
-                 ln = args.length;
 
-                 if (ln > 0) {
 
-                     ln--;
 
-                     args[ln] = 'var Ext=window.' + Ext.name + ';' + args[ln];
 
-                 }
 
-             }
 
-             idx = args.join('');
 
-             fn = cache[idx];
 
-             if (!fn) {
 
-                 fn = Function.prototype.constructor.apply(Function.prototype, args);
 
-                 
 
-                 cache[idx] = fn;
 
-             }
 
-             return fn;
 
-         },
 
-         
 
-         functionFactory: function() {
 
-             var me = this,
 
-                 args = Array.prototype.slice.call(arguments),
 
-                 ln;
 
-                 
 
-             if (Ext.isSandboxed) {
 
-                 ln = args.length;
 
-                 if (ln > 0) {
 
-                     ln--;
 
-                     args[ln] = 'var Ext=window.' + Ext.name + ';' + args[ln];
 
-                 }
 
-             }
 
-      
 
-             return Function.prototype.constructor.apply(Function.prototype, args);
 
-         },
 
- <span id='Ext-property-Logger'>        /**
 
- </span>         * @private
 
-          * @property
 
-          */
 
-         Logger: {
 
-             verbose: emptyFn,
 
-             log: emptyFn,
 
-             info: emptyFn,
 
-             warn: emptyFn,
 
-             error: function(message) {
 
-                 throw new Error(message);
 
-             },
 
-             deprecate: emptyFn
 
-         }
 
-     });
 
- <span id='Ext-method-type'>    /**
 
- </span>     * Old alias to {@link Ext#typeOf}
 
-      * @deprecated 4.0.0 Use {@link Ext#typeOf} instead
 
-      * @method
 
-      * @inheritdoc Ext#typeOf
 
-      */
 
-     Ext.type = Ext.typeOf;
 
- }());
 
- /*
 
-  * This method evaluates the given code free of any local variable. In some browsers this
 
-  * will be at global scope, in others it will be in a function.
 
-  * @parma {String} code The code to evaluate.
 
-  * @private
 
-  * @method
 
-  */
 
- Ext.globalEval = Ext.global.execScript
 
-     ? function(code) {
 
-         execScript(code);
 
-     }
 
-     : function($$code) {
 
-         // IMPORTANT: because we use eval we cannot place this in the above function or it
 
-         // will break the compressor's ability to rename local variables...
 
-         (function(){
 
-             eval($$code);
 
-         }());
 
-     };
 
- </pre>
 
- </body>
 
- </html>
 
 
  |