| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682 | 
							- <!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-is'>/**
 
- </span> * @class Ext.is
 
-  * 
 
-  * Determines information about the current platform the application is running on.
 
-  * 
 
-  * @singleton
 
-  */
 
- Ext.is = {
 
-     init : function(navigator) {
 
-         var platforms = this.platforms,
 
-             ln = platforms.length,
 
-             i, platform;
 
-         navigator = navigator || window.navigator;
 
-         for (i = 0; i < ln; i++) {
 
-             platform = platforms[i];
 
-             this[platform.identity] = platform.regex.test(navigator[platform.property]);
 
-         }
 
- <span id='Ext-is-property-Desktop'>        /**
 
- </span>         * @property Desktop True if the browser is running on a desktop machine
 
-          * @type {Boolean}
 
-          */
 
-         this.Desktop = this.Mac || this.Windows || (this.Linux && !this.Android);
 
- <span id='Ext-is-property-Tablet'>        /**
 
- </span>         * @property Tablet True if the browser is running on a tablet (iPad)
 
-          */
 
-         this.Tablet = this.iPad;
 
- <span id='Ext-is-property-Phone'>        /**
 
- </span>         * @property Phone True if the browser is running on a phone.
 
-          * @type {Boolean}
 
-          */
 
-         this.Phone = !this.Desktop && !this.Tablet;
 
- <span id='Ext-is-property-iOS'>        /**
 
- </span>         * @property iOS True if the browser is running on iOS
 
-          * @type {Boolean}
 
-          */
 
-         this.iOS = this.iPhone || this.iPad || this.iPod;
 
-         
 
- <span id='Ext-is-property-Standalone'>        /**
 
- </span>         * @property Standalone Detects when application has been saved to homescreen.
 
-          * @type {Boolean}
 
-          */
 
-         this.Standalone = !!window.navigator.standalone;
 
-     },
 
-     
 
- <span id='Ext-is-property-iPhone'>    /**
 
- </span>     * @property iPhone True when the browser is running on a iPhone
 
-      * @type {Boolean}
 
-      */
 
-     platforms: [{
 
-         property: 'platform',
 
-         regex: /iPhone/i,
 
-         identity: 'iPhone'
 
-     },
 
-     
 
- <span id='Ext-is-property-iPod'>    /**
 
- </span>     * @property iPod True when the browser is running on a iPod
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'platform',
 
-         regex: /iPod/i,
 
-         identity: 'iPod'
 
-     },
 
-     
 
- <span id='Ext-is-property-iPad'>    /**
 
- </span>     * @property iPad True when the browser is running on a iPad
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'userAgent',
 
-         regex: /iPad/i,
 
-         identity: 'iPad'
 
-     },
 
-     
 
- <span id='Ext-is-property-Blackberry'>    /**
 
- </span>     * @property Blackberry True when the browser is running on a Blackberry
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'userAgent',
 
-         regex: /Blackberry/i,
 
-         identity: 'Blackberry'
 
-     },
 
-     
 
- <span id='Ext-is-property-Android'>    /**
 
- </span>     * @property Android True when the browser is running on an Android device
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'userAgent',
 
-         regex: /Android/i,
 
-         identity: 'Android'
 
-     },
 
-     
 
- <span id='Ext-is-property-Mac'>    /**
 
- </span>     * @property Mac True when the browser is running on a Mac
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'platform',
 
-         regex: /Mac/i,
 
-         identity: 'Mac'
 
-     },
 
-     
 
- <span id='Ext-is-property-Windows'>    /**
 
- </span>     * @property Windows True when the browser is running on Windows
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'platform',
 
-         regex: /Win/i,
 
-         identity: 'Windows'
 
-     },
 
-     
 
- <span id='Ext-is-property-Linux'>    /**
 
- </span>     * @property Linux True when the browser is running on Linux
 
-      * @type {Boolean}
 
-      */
 
-     {
 
-         property: 'platform',
 
-         regex: /Linux/i,
 
-         identity: 'Linux'
 
-     }]
 
- };
 
- Ext.is.init();
 
- <span id='Ext-supports'>/**
 
- </span> * @class Ext.supports
 
-  *
 
-  * Determines information about features are supported in the current environment
 
-  * 
 
-  * @singleton
 
-  */
 
- (function(){
 
-     // this is a local copy of certain logic from (Abstract)Element.getStyle
 
-     // to break a dependancy between the supports mechanism and Element
 
-     // use this instead of element references to check for styling info
 
-     var getStyle = function(element, styleName){
 
-         var view = element.ownerDocument.defaultView,
 
-             style = (view ? view.getComputedStyle(element, null) : element.currentStyle) || element.style;
 
-         return style[styleName];
 
-     };
 
- Ext.supports = {
 
- <span id='Ext-supports-method-init'>    /**
 
- </span>     * Runs feature detection routines and sets the various flags. This is called when
 
-      * the scripts loads (very early) and again at {@link Ext#onReady}. Some detections
 
-      * are flagged as `early` and run immediately. Others that require the document body
 
-      * will not run until ready.
 
-      *
 
-      * Each test is run only once, so calling this method from an onReady function is safe
 
-      * and ensures that all flags have been set.
 
-      * @markdown
 
-      * @private
 
-      */
 
-     init : function() {
 
-         var me = this,
 
-             doc = document,
 
-             tests = me.tests,
 
-             n = tests.length,
 
-             div = n && Ext.isReady && doc.createElement('div'),
 
-             test, notRun = [];
 
-         if (div) {
 
-             div.innerHTML = [
 
-                 '<div style="height:30px;width:50px;">',
 
-                     '<div style="height:20px;width:20px;"></div>',
 
-                 '</div>',
 
-                 '<div style="width: 200px; height: 200px; position: relative; padding: 5px;">',
 
-                     '<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',
 
-                 '</div>',
 
-                 '<div style="position: absolute; left: 10%; top: 10%;"></div>',
 
-                 '<div style="float:left; background-color:transparent;"></div>'
 
-             ].join('');
 
-             doc.body.appendChild(div);
 
-         }
 
-         while (n--) {
 
-             test = tests[n];
 
-             if (div || test.early) {
 
-                 me[test.identity] = test.fn.call(me, doc, div);
 
-             } else {
 
-                 notRun.push(test);
 
-             }
 
-         }
 
-         if (div) {
 
-             doc.body.removeChild(div);
 
-         }
 
-         me.tests = notRun;
 
-     },
 
- <span id='Ext-supports-property-PointerEvents'>    /**
 
- </span>     * @property PointerEvents True if document environment supports the CSS3 pointer-events style.
 
-      * @type {Boolean}
 
-      */
 
-     PointerEvents: 'pointerEvents' in document.documentElement.style,
 
- <span id='Ext-supports-property-CSS3BoxShadow'>    /**
 
- </span>     * @property CSS3BoxShadow True if document environment supports the CSS3 box-shadow style.
 
-      * @type {Boolean}
 
-      */
 
-     CSS3BoxShadow: 'boxShadow' in document.documentElement.style || 'WebkitBoxShadow' in document.documentElement.style || 'MozBoxShadow' in document.documentElement.style,
 
- <span id='Ext-supports-property-ClassList'>    /**
 
- </span>     * @property ClassList True if document environment supports the HTML5 classList API.
 
-      * @type {Boolean}
 
-      */
 
-     ClassList: !!document.documentElement.classList,
 
- <span id='Ext-supports-property-OrientationChange'>    /**
 
- </span>     * @property OrientationChange True if the device supports orientation change
 
-      * @type {Boolean}
 
-      */
 
-     OrientationChange: ((typeof window.orientation != 'undefined') && ('onorientationchange' in window)),
 
- <span id='Ext-supports-property-DeviceMotion'>    /**
 
- </span>     * @property DeviceMotion True if the device supports device motion (acceleration and rotation rate)
 
-      * @type {Boolean}
 
-      */
 
-     DeviceMotion: ('ondevicemotion' in window),
 
- <span id='Ext-supports-property-Touch'>    /**
 
- </span>     * @property Touch True if the device supports touch
 
-      * @type {Boolean}
 
-      */
 
-     // is.Desktop is needed due to the bug in Chrome 5.0.375, Safari 3.1.2
 
-     // and Safari 4.0 (they all have 'ontouchstart' in the window object).
 
-     Touch: ('ontouchstart' in window) && (!Ext.is.Desktop),
 
- <span id='Ext-supports-property-TimeoutActualLateness'>    /**
 
- </span>     * @property TimeoutActualLateness True if the browser passes the "actualLateness" parameter to
 
-      * setTimeout. See: https://developer.mozilla.org/en/DOM/window.setTimeout
 
-      * @type {Boolean}
 
-      */
 
-     TimeoutActualLateness: (function(){
 
-         setTimeout(function(){
 
-             Ext.supports.TimeoutActualLateness = arguments.length !== 0;
 
-         }, 0);
 
-     }()),
 
-     tests: [
 
- <span id='Ext-supports-property-Transitions'>        /**
 
- </span>         * @property Transitions True if the device supports CSS3 Transitions
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Transitions',
 
-             fn: function(doc, div) {
 
-                 var prefix = [
 
-                         'webkit',
 
-                         'Moz',
 
-                         'o',
 
-                         'ms',
 
-                         'khtml'
 
-                     ],
 
-                     TE = 'TransitionEnd',
 
-                     transitionEndName = [
 
-                         prefix[0] + TE,
 
-                         'transitionend', //Moz bucks the prefixing convention
 
-                         prefix[2] + TE,
 
-                         prefix[3] + TE,
 
-                         prefix[4] + TE
 
-                     ],
 
-                     ln = prefix.length,
 
-                     i = 0,
 
-                     out = false;
 
-                 for (; i < ln; i++) {
 
-                     if (getStyle(div, prefix[i] + "TransitionProperty")) {
 
-                         Ext.supports.CSS3Prefix = prefix[i];
 
-                         Ext.supports.CSS3TransitionEnd = transitionEndName[i];
 
-                         out = true;
 
-                         break;
 
-                     }
 
-                 }
 
-                 return out;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-RightMargin'>        /**
 
- </span>         * @property RightMargin True if the device supports right margin.
 
-          * See https://bugs.webkit.org/show_bug.cgi?id=13343 for why this is needed.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'RightMargin',
 
-             fn: function(doc, div) {
 
-                 var view = doc.defaultView;
 
-                 return !(view && view.getComputedStyle(div.firstChild.firstChild, null).marginRight != '0px');
 
-             }
 
-         },
 
- <span id='Ext-supports-property-DisplayChangeInputSelectionBug'>        /**
 
- </span>         * @property DisplayChangeInputSelectionBug True if INPUT elements lose their
 
-          * selection when their display style is changed. Essentially, if a text input
 
-          * has focus and its display style is changed, the I-beam disappears.
 
-          *
 
-          * This bug is encountered due to the work around in place for the {@link #RightMargin}
 
-          * bug. This has been observed in Safari 4.0.4 and older, and appears to be fixed
 
-          * in Safari 5. It's not clear if Safari 4.1 has the bug, but it has the same WebKit
 
-          * version number as Safari 5 (according to http://unixpapa.com/js/gecko.html).
 
-          */
 
-         {
 
-             identity: 'DisplayChangeInputSelectionBug',
 
-             early: true,
 
-             fn: function() {
 
-                 var webKitVersion = Ext.webKitVersion;
 
-                 // WebKit but older than Safari 5 or Chrome 6:
 
-                 return 0 < webKitVersion && webKitVersion < 533;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-DisplayChangeTextAreaSelectionBug'>        /**
 
- </span>         * @property DisplayChangeTextAreaSelectionBug True if TEXTAREA elements lose their
 
-          * selection when their display style is changed. Essentially, if a text area has
 
-          * focus and its display style is changed, the I-beam disappears.
 
-          *
 
-          * This bug is encountered due to the work around in place for the {@link #RightMargin}
 
-          * bug. This has been observed in Chrome 10 and Safari 5 and older, and appears to
 
-          * be fixed in Chrome 11.
 
-          */
 
-         {
 
-             identity: 'DisplayChangeTextAreaSelectionBug',
 
-             early: true,
 
-             fn: function() {
 
-                 var webKitVersion = Ext.webKitVersion;
 
-                 /*
 
-                 Has bug w/textarea:
 
-                 (Chrome) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US)
 
-                             AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127
 
-                             Safari/534.16
 
-                 (Safari) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us)
 
-                             AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5
 
-                             Safari/533.21.1
 
-                 No bug:
 
-                 (Chrome) Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7)
 
-                             AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.57
 
-                             Safari/534.24
 
-                 */
 
-                 return 0 < webKitVersion && webKitVersion < 534.24;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-TransparentColor'>        /**
 
- </span>         * @property TransparentColor True if the device supports transparent color
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'TransparentColor',
 
-             fn: function(doc, div, view) {
 
-                 view = doc.defaultView;
 
-                 return !(view && view.getComputedStyle(div.lastChild, null).backgroundColor != 'transparent');
 
-             }
 
-         },
 
- <span id='Ext-supports-property-ComputedStyle'>        /**
 
- </span>         * @property ComputedStyle True if the browser supports document.defaultView.getComputedStyle()
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'ComputedStyle',
 
-             fn: function(doc, div, view) {
 
-                 view = doc.defaultView;
 
-                 return view && view.getComputedStyle;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Svg'>        /**
 
- </span>         * @property Svg True if the device supports SVG
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Svg',
 
-             fn: function(doc) {
 
-                 return !!doc.createElementNS && !!doc.createElementNS( "http:/" + "/www.w3.org/2000/svg", "svg").createSVGRect;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Canvas'>        /**
 
- </span>         * @property Canvas True if the device supports Canvas
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Canvas',
 
-             fn: function(doc) {
 
-                 return !!doc.createElement('canvas').getContext;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Vml'>        /**
 
- </span>         * @property Vml True if the device supports VML
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Vml',
 
-             fn: function(doc) {
 
-                 var d = doc.createElement("div");
 
-                 d.innerHTML = "<!--[if vml]><br/><br/><![endif]-->";
 
-                 return (d.childNodes.length == 2);
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Float'>        /**
 
- </span>         * @property Float True if the device supports CSS float
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Float',
 
-             fn: function(doc, div) {
 
-                 return !!div.lastChild.style.cssFloat;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-AudioTag'>        /**
 
- </span>         * @property AudioTag True if the device supports the HTML5 audio tag
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'AudioTag',
 
-             fn: function(doc) {
 
-                 return !!doc.createElement('audio').canPlayType;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-History'>        /**
 
- </span>         * @property History True if the device supports HTML5 history
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'History',
 
-             fn: function() {
 
-                 var history = window.history;
 
-                 return !!(history && history.pushState);
 
-             }
 
-         },
 
- <span id='Ext-supports-property-CSS3DTransform'>        /**
 
- </span>         * @property CSS3DTransform True if the device supports CSS3DTransform
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'CSS3DTransform',
 
-             fn: function() {
 
-                 return (typeof WebKitCSSMatrix != 'undefined' && new WebKitCSSMatrix().hasOwnProperty('m41'));
 
-             }
 
-         },
 
- <span id='Ext-supports-property-CSS3LinearGradient'>		/**
 
- </span>         * @property CSS3LinearGradient True if the device supports CSS3 linear gradients
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'CSS3LinearGradient',
 
-             fn: function(doc, div) {
 
-                 var property = 'background-image:',
 
-                     webkit   = '-webkit-gradient(linear, left top, right bottom, from(black), to(white))',
 
-                     w3c      = 'linear-gradient(left top, black, white)',
 
-                     moz      = '-moz-' + w3c,
 
-                     opera    = '-o-' + w3c,
 
-                     options  = [property + webkit, property + w3c, property + moz, property + opera];
 
-                 div.style.cssText = options.join(';');
 
-                 return ("" + div.style.backgroundImage).indexOf('gradient') !== -1;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-CSS3BorderRadius'>        /**
 
- </span>         * @property CSS3BorderRadius True if the device supports CSS3 border radius
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'CSS3BorderRadius',
 
-             fn: function(doc, div) {
 
-                 var domPrefixes = ['borderRadius', 'BorderRadius', 'MozBorderRadius', 'WebkitBorderRadius', 'OBorderRadius', 'KhtmlBorderRadius'],
 
-                     pass = false,
 
-                     i;
 
-                 for (i = 0; i < domPrefixes.length; i++) {
 
-                     if (document.body.style[domPrefixes[i]] !== undefined) {
 
-                         return true;
 
-                     }
 
-                 }
 
-                 return pass;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-GeoLocation'>        /**
 
- </span>         * @property GeoLocation True if the device supports GeoLocation
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'GeoLocation',
 
-             fn: function() {
 
-                 return (typeof navigator != 'undefined' && typeof navigator.geolocation != 'undefined') || (typeof google != 'undefined' && typeof google.gears != 'undefined');
 
-             }
 
-         },
 
- <span id='Ext-supports-property-MouseEnterLeave'>        /**
 
- </span>         * @property MouseEnterLeave True if the browser supports mouseenter and mouseleave events
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'MouseEnterLeave',
 
-             fn: function(doc, div){
 
-                 return ('onmouseenter' in div && 'onmouseleave' in div);
 
-             }
 
-         },
 
- <span id='Ext-supports-property-MouseWheel'>        /**
 
- </span>         * @property MouseWheel True if the browser supports the mousewheel event
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'MouseWheel',
 
-             fn: function(doc, div) {
 
-                 return ('onmousewheel' in div);
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Opacity'>        /**
 
- </span>         * @property Opacity True if the browser supports normal css opacity
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Opacity',
 
-             fn: function(doc, div){
 
-                 // Not a strict equal comparison in case opacity can be converted to a number.
 
-                 if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8) {
 
-                     return false;
 
-                 }
 
-                 div.firstChild.style.cssText = 'opacity:0.73';
 
-                 return div.firstChild.style.opacity == '0.73';
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Placeholder'>        /**
 
- </span>         * @property Placeholder True if the browser supports the HTML5 placeholder attribute on inputs
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Placeholder',
 
-             fn: function(doc) {
 
-                 return 'placeholder' in doc.createElement('input');
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Direct2DBug'>        /**
 
- </span>         * @property Direct2DBug True if when asking for an element's dimension via offsetWidth or offsetHeight,
 
-          * getBoundingClientRect, etc. the browser returns the subpixel width rounded to the nearest pixel.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Direct2DBug',
 
-             fn: function() {
 
-                 return Ext.isString(document.body.style.msTransformOrigin);
 
-             }
 
-         },
 
- <span id='Ext-supports-property-BoundingClientRect'>        /**
 
- </span>         * @property BoundingClientRect True if the browser supports the getBoundingClientRect method on elements
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'BoundingClientRect',
 
-             fn: function(doc, div) {
 
-                 return Ext.isFunction(div.getBoundingClientRect);
 
-             }
 
-         },
 
-         {
 
-             identity: 'IncludePaddingInWidthCalculation',
 
-             fn: function(doc, div){
 
-                 return div.childNodes[1].firstChild.offsetWidth == 210;
 
-             }
 
-         },
 
-         {
 
-             identity: 'IncludePaddingInHeightCalculation',
 
-             fn: function(doc, div){
 
-                 return div.childNodes[1].firstChild.offsetHeight == 210;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-ArraySort'>        /**
 
- </span>         * @property ArraySort True if the Array sort native method isn't bugged.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'ArraySort',
 
-             fn: function() {
 
-                 var a = [1,2,3,4,5].sort(function(){ return 0; });
 
-                 return a[0] === 1 && a[1] === 2 && a[2] === 3 && a[3] === 4 && a[4] === 5;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-Range'>        /**
 
- </span>         * @property Range True if browser support document.createRange native method.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'Range',
 
-             fn: function() {
 
-                 return !!document.createRange;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-CreateContextualFragment'>        /**
 
- </span>         * @property CreateContextualFragment True if browser support CreateContextualFragment range native methods.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'CreateContextualFragment',
 
-             fn: function() {
 
-                 var range = Ext.supports.Range ? document.createRange() : false;
 
-                 return range && !!range.createContextualFragment;
 
-             }
 
-         },
 
- <span id='Ext-supports-property-WindowOnError'>        /**
 
- </span>         * @property WindowOnError True if browser supports window.onerror.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'WindowOnError',
 
-             fn: function () {
 
-                 // sadly, we cannot feature detect this...
 
-                 return Ext.isIE || Ext.isGecko || Ext.webKitVersion >= 534.16; // Chrome 10+
 
-             }
 
-         },
 
- <span id='Ext-supports-property-TextAreaMaxLength'>        /**
 
- </span>         * @property TextAreaMaxLength True if the browser supports maxlength on textareas.
 
-          * @type {Boolean}
 
-          */
 
-         {
 
-             identity: 'TextAreaMaxLength',
 
-             fn: function(){
 
-                 var el = document.createElement('textarea');
 
-                 return ('maxlength' in el);
 
-             }
 
-         },
 
- <span id='Ext-supports-property-GetPositionPercentage'>        /**
 
- </span>         * @property GetPositionPercentage True if the browser will return the left/top/right/bottom
 
-          * position as a percentage when explicitly set as a percentage value.
 
-          * @type {Boolean}
 
-          */
 
-         // Related bug: https://bugzilla.mozilla.org/show_bug.cgi?id=707691#c7
 
-         {
 
-             identity: 'GetPositionPercentage',
 
-             fn: function(doc, div){
 
-                return getStyle(div.childNodes[2], 'left') == '10%';
 
-             }
 
-         }
 
-     ]
 
- };
 
- }());
 
- Ext.supports.init(); // run the "early" detections now
 
- </pre>
 
- </body>
 
- </html>
 
 
  |