/** * HTTP Utils * @author Skitsanos.com * @version 2.0 */ var Waml; if (!Waml) { Waml = {}; } if (!Waml.Styles) { Waml.Styles = {}; } /** * Return requested style obejct */ Waml.Styles.getCSSRule = function(ruleName, deleteFlag) { ruleName = ruleName.toLowerCase(); // Convert test string to lower case. 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.toLowerCase() == ruleName) { // 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 Waml.Styles.removeCSSRule = function(ruleName) { // Delete a CSS rule return getCSSRule(ruleName, 'delete'); // just call getCSSRule w/delete flag. }; // end killCSSRule Waml.Styles.addCSSRule = function(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. }; Waml.Styles.create = function() { var cssNode = document.createElement('style'); cssNode.type = 'text/css'; cssNode.rel = 'stylesheet'; cssNode.media = 'screen'; document.getElementsByTagName("head")[0].appendChild(cssNode); }; Waml.Styles.load = function(url) { var cssNode = document.createElement('link'); cssNode.type = 'text/css'; cssNode.rel = 'stylesheet'; cssNode.href = url; cssNode.media = 'screen'; document.getElementsByTagName("head")[0].appendChild(cssNode); };