| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 | 
							- <!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-util-CSS'>/**
 
- </span> * Utility class for manipulating CSS rules
 
-  * @singleton
 
-  */
 
- Ext.define('Ext.util.CSS', (function() {
 
-     var rules = null,
 
-         doc = document,
 
-         camelRe = /(-[a-z])/gi,
 
-         camelFn = function(m, a){ return a.charAt(1).toUpperCase(); };
 
-     return {
 
-         singleton: true,
 
-         constructor: function() {
 
-             this.rules = {};
 
-             this.initialized = false;
 
-         },
 
- <span id='Ext-util-CSS-method-createStyleSheet'>        /**
 
- </span>         * Creates a stylesheet from a text blob of rules.
 
-          * These rules will be wrapped in a STYLE tag and appended to the HEAD of the document.
 
-          * @param {String} cssText The text containing the css rules
 
-          * @param {String} id An id to add to the stylesheet for later removal
 
-          * @return {CSSStyleSheet}
 
-          */
 
-         createStyleSheet : function(cssText, id) {
 
-             var ss,
 
-                 head = doc.getElementsByTagName("head")[0],
 
-                 styleEl = doc.createElement("style");
 
-             styleEl.setAttribute("type", "text/css");
 
-             if (id) {
 
-                styleEl.setAttribute("id", id);
 
-             }
 
-             if (Ext.isIE) {
 
-                head.appendChild(styleEl);
 
-                ss = styleEl.styleSheet;
 
-                ss.cssText = cssText;
 
-             } else {
 
-                 try{
 
-                     styleEl.appendChild(doc.createTextNode(cssText));
 
-                 } catch(e) {
 
-                    styleEl.cssText = cssText;
 
-                 }
 
-                 head.appendChild(styleEl);
 
-                 ss = styleEl.styleSheet ? styleEl.styleSheet : (styleEl.sheet || doc.styleSheets[doc.styleSheets.length-1]);
 
-             }
 
-             this.cacheStyleSheet(ss);
 
-             return ss;
 
-         },
 
- <span id='Ext-util-CSS-method-removeStyleSheet'>        /**
 
- </span>         * Removes a style or link tag by id
 
-          * @param {String} id The id of the tag
 
-          */
 
-         removeStyleSheet : function(id) {
 
-             var existing = document.getElementById(id);
 
-             if (existing) {
 
-                 existing.parentNode.removeChild(existing);
 
-             }
 
-         },
 
- <span id='Ext-util-CSS-method-swapStyleSheet'>        /**
 
- </span>         * Dynamically swaps an existing stylesheet reference for a new one
 
-          * @param {String} id The id of an existing link tag to remove
 
-          * @param {String} url The href of the new stylesheet to include
 
-          */
 
-         swapStyleSheet : function(id, url) {
 
-             var doc = document,
 
-                 ss;
 
-             this.removeStyleSheet(id);
 
-             ss = doc.createElement("link");
 
-             ss.setAttribute("rel", "stylesheet");
 
-             ss.setAttribute("type", "text/css");
 
-             ss.setAttribute("id", id);
 
-             ss.setAttribute("href", url);
 
-             doc.getElementsByTagName("head")[0].appendChild(ss);
 
-         },
 
- <span id='Ext-util-CSS-method-refreshCache'>        /**
 
- </span>         * Refresh the rule cache if you have dynamically added stylesheets
 
-          * @return {Object} An object (hash) of rules indexed by selector
 
-          */
 
-         refreshCache : function() {
 
-             return this.getRules(true);
 
-         },
 
-         // private
 
-         cacheStyleSheet : function(ss) {
 
-             if(!rules){
 
-                 rules = {};
 
-             }
 
-             try {// try catch for cross domain access issue
 
-                 var ssRules = ss.cssRules || ss.rules,
 
-                     selectorText,
 
-                     i = ssRules.length - 1,
 
-                     j,
 
-                     selectors;
 
-                 for (; i >= 0; --i) {
 
-                     selectorText = ssRules[i].selectorText;
 
-                     if (selectorText) {
 
-                         // Split in case there are multiple, comma-delimited selectors
 
-                         selectorText = selectorText.split(',');
 
-                         selectors = selectorText.length;
 
-                         for (j = 0; j < selectors; j++) {
 
-                             rules[Ext.String.trim(selectorText[j]).toLowerCase()] = ssRules[i];
 
-                         }
 
-                     }
 
-                 }
 
-             } catch(e) {}
 
-         },
 
- <span id='Ext-util-CSS-method-getRules'>        /**
 
- </span>         * Gets all css rules for the document
 
-          * @param {Boolean} refreshCache true to refresh the internal cache
 
-          * @return {Object} An object (hash) of rules indexed by selector
 
-          */
 
-         getRules : function(refreshCache) {
 
-             if (rules === null || refreshCache) {
 
-                 rules = {};
 
-                 var ds = doc.styleSheets,
 
-                     i = 0,
 
-                     len = ds.length;
 
-                 for (; i < len; i++) {
 
-                     try {
 
-                         if (!ds[i].disabled) {
 
-                             this.cacheStyleSheet(ds[i]);
 
-                         }
 
-                     } catch(e) {}
 
-                 }
 
-             }
 
-             return rules;
 
-         },
 
- <span id='Ext-util-CSS-method-getRule'>        /**
 
- </span>         * Gets an an individual CSS rule by selector(s)
 
-          * @param {String/String[]} selector The CSS selector or an array of selectors to try. The first selector that is found is returned.
 
-          * @param {Boolean} refreshCache true to refresh the internal cache if you have recently updated any rules or added styles dynamically
 
-          * @return {CSSStyleRule} The CSS rule or null if one is not found
 
-          */
 
-         getRule: function(selector, refreshCache) {
 
-             var rs = this.getRules(refreshCache),
 
-                 i;
 
-             if (!Ext.isArray(selector)) {
 
-                 return rs[selector.toLowerCase()];
 
-             }
 
-             for (i = 0; i < selector.length; i++) {
 
-                 if (rs[selector[i]]) {
 
-                     return rs[selector[i].toLowerCase()];
 
-                 }
 
-             }
 
-             return null;
 
-         },
 
- <span id='Ext-util-CSS-method-updateRule'>        /**
 
- </span>         * Updates a rule property
 
-          * @param {String/String[]} selector If it's an array it tries each selector until it finds one. Stops immediately once one is found.
 
-          * @param {String} property The css property
 
-          * @param {String} value The new value for the property
 
-          * @return {Boolean} true If a rule was found and updated
 
-          */
 
-         updateRule : function(selector, property, value){
 
-             var rule, i;
 
-             if (!Ext.isArray(selector)) {
 
-                 rule = this.getRule(selector);
 
-                 if (rule) {
 
-                     rule.style[property.replace(camelRe, camelFn)] = value;
 
-                     return true;
 
-                 }
 
-             } else {
 
-                 for (i = 0; i < selector.length; i++) {
 
-                     if (this.updateRule(selector[i], property, value)) {
 
-                         return true;
 
-                     }
 
-                 }
 
-             }
 
-             return false;
 
-         }
 
-     };
 
- }()));</pre>
 
- </body>
 
- </html>
 
 
  |