topical media & game development

talk show tell print

#javascript-css-tool-script.js / js



  /* This script and many more are available free online at
  The JavaScript Source!! http://javascript.internet.com
  Created by: Patrick Hunlock | http://www.hunlock.com */
  function getCSSRule(ruleName, deleteFlag) {               // Return requested style obejct
    if (document.styleSheets) {                             // If browser can play with stylesheets
      for (var i=0; i<document.styleSheets.length; i++) {   // For each stylesheet
        var styleSheet=document.styleSheets[i];             // Get the current Stylesheet
        var ii=0;                                           // Initialize subCounter.
        var cssRule=false;                                  // Initialize cssRule. 
        do {                                                // For each rule in stylesheet
          if (styleSheet.cssRules) {                        // Browser uses cssRules?
            cssRule = styleSheet.cssRules[ii];              // Yes -- Mozilla Style
          } else {                                          // Browser usses rules?
            cssRule = styleSheet.rules[ii];                 // Yes IE style. 
          }                                                 // End IE check.
          if (cssRule)  {                                   // If we found a rule...
            if (cssRule.selectorText==ruleName) {           // Does current rule match ruleName?
              if (deleteFlag=='delete') {                   // Yes.  Are we deleteing?
                if (styleSheet.cssRules) {                  // Yes, deleting...
                  styleSheet.deleteRule(ii);                // Delete rule, Moz Style
                } else {                                    // Still deleting.
                  styleSheet.removeRule(ii);                // Delete rule IE style.
                }                                           // End IE check.
                return true;                                // return true, class deleted.
              } else {                                      // found and not deleting.
                return cssRule;                             // return the style object.
              }                                             // End delete Check
            }                                               // End found rule name
          }                                                 // end found cssRule
          ii++;                                             // Increment sub-counter
        } while (cssRule)                                   // end While loop
      }                                                     // end For loop
    }                                                       // end styleSheet ability check
    return false;                                           // we found NOTHING!
  }                                                         // end getCSSRule 
  
  function killCSSRule(ruleName) {                          // Delete a CSS rule   
    return getCSSRule(ruleName,'delete');                   // just call getCSSRule w/delete flag.
  }                                                         // end killCSSRule
  
  function addCSSRule(ruleName) {                           // Create a new css rule
    if (document.styleSheets) {                             // Can browser do styleSheets?
      if (!getCSSRule(ruleName)) {                          // if rule doesn't exist...
        if (document.styleSheets[0].addRule) {              // Browser is IE?
          document.styleSheets[0].addRule(ruleName, null,0);      // Yes, add IE style
        } else {                                            // Browser is IE?
          document.styleSheets[0].insertRule(ruleName+' { }', 0); // Yes, add Moz style.
        }                                                   // End browser check
      }                                                     // End already exist check.
    }                                                       // End browser ability check.
    return getCSSRule(ruleName);                            // return rule we just created.
  } 
  
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.