+++ /dev/null
-// Formats a style rule property
-function webdeveloper_formatStyleRuleProperty(styleRuleProperty)
-{
- // Switch on the style rule property
- switch(styleRuleProperty)
- {
- case "margin-bottom-value":
- return "margin-bottom";
- case "margin-left-value":
- return "margin-left";
- case "margin-right-value":
- return "margin-right";
- case "margin-top-value":
- return "margin-top";
- case "padding-bottom-value":
- return "padding-bottom";
- case "padding-left-value":
- return "padding-left";
- case "padding-right-value":
- return "padding-right";
- case "padding-top-value":
- return "padding-top";
- case "-x-background-x-position":
- return "background-x-position";
- case "-x-background-y-position":
- return "background-y-position";
- default:
- return styleRuleProperty;
- }
-}
-
-// Formats a style rule value
-function webdeveloper_formatStyleRuleValue(styleRuleValue)
-{
- // If the style rule value is set
- if(styleRuleValue)
- {
- var rgbRegularExpression = new RegExp("rgb\\((\\d{1,3}),\\s(\\d{1,3}),\\s(\\d{1,3})\\)", "gi");
- var styleRuleValueColor = rgbRegularExpression.exec(styleRuleValue);
-
- // If the style rule value is a color
- if(styleRuleValueColor)
- {
- var blue = parseInt(styleRuleValueColor[3]).toString(16);
- var green = parseInt(styleRuleValueColor[2]).toString(16);
- var red = parseInt(styleRuleValueColor[1]).toString(16);
-
- // If the blue color is only 1 character long
- if(blue.length == 1)
- {
- blue = "0" + blue;
- }
-
- // If the green color is only 1 character long
- if(green.length == 1)
- {
- green = "0" + green;
- }
-
- // If the red color is only 1 character long
- if(red.length == 1)
- {
- red = "0" + red;
- }
-
- return "#" + red + green + blue;
- }
- }
-
- return styleRuleValue;
-}
-
-// Returns the list of the style sheets for the specified document
-function webdeveloper_getStyleSheetsForDocument(contentDocument, includeInline, includeAlternate)
-{
- var styleSheets = new Array();
-
- // If the content document is set
- if(contentDocument)
- {
- var documentStyleSheets = contentDocument.styleSheets;
- var documentStyleSheetsLength = documentStyleSheets.length;
- var documentURL = contentDocument.documentURI;
- var styleSheet = null;
-
- // Loop through the style sheets
- for(var i = 0; i < documentStyleSheetsLength; i++)
- {
- styleSheet = documentStyleSheets[i];
-
- // If this is a valid style sheet and including alternate style sheets or this is not alternate
- if(webdeveloper_isValidStyleSheet(styleSheet) && (includeAlternate || !webdeveloper_isAlternateStyleSheet(styleSheet)))
- {
- // If including inline style sheets or this is not inline
- if(includeInline || styleSheet.href != documentURL)
- {
- styleSheets.push(styleSheet);
- }
-
- styleSheets = styleSheets.concat(webdeveloper_getStyleSheetsImportedFromStyleSheet(styleSheet));
- }
- }
- }
-
- return styleSheets;
-}
-
-// Returns the list of style sheets imported from the specified style sheet
-function webdeveloper_getStyleSheetsImportedFromStyleSheet(styleSheet)
-{
- var styleSheets = new Array();
-
- // If the style sheet is set
- if(styleSheet)
- {
- var cssRule = null;
- var cssRules = styleSheet.cssRules;
- var cssRulesLength = cssRules.length;
- var importedStyleSheet = null;
- var importRule = Components.interfaces.nsIDOMCSSRule.IMPORT_RULE;
-
- // Loop through the the style sheet rules
- for(var i = 0; i < cssRulesLength; i++)
- {
- cssRule = cssRules[i];
-
- // If this is an import rule
- if(cssRule.type == importRule)
- {
- importedStyleSheet = cssRule.styleSheet;
-
- // If this style sheet is valid
- if(webdeveloper_isValidStyleSheet(importedStyleSheet))
- {
- styleSheets.push(importedStyleSheet);
-
- styleSheets = styleSheets.concat(webdeveloper_getStyleSheetsImportedFromStyleSheet(importedStyleSheet));
- }
- }
- }
- }
-
- return styleSheets;
-}
-
-// If there is a style sheet for this media type
-function webdeveloper_hasStyleSheetForMedia(styleSheetList, media)
-{
- // If the style sheet list and media are set
- if(styleSheetList && media)
- {
- var styleSheet = null;
- var styleSheetLength = styleSheetList.length;
-
- // Loop through the style sheets
- for(var i = 0; i < styleSheetLength; i++)
- {
- styleSheet = styleSheetList[i];
-
- // If this style sheet is valid and is for this media type
- if(webdeveloper_isValidStyleSheet(styleSheet) && webdeveloper_isMediaStyleSheet(styleSheet, media))
- {
- return true;
- }
- }
- }
-
- return false;
-}
-
-// Is this style sheet an alternate style sheet
-function webdeveloper_isAlternateStyleSheet(styleSheet)
-{
- // If the style sheet is set
- if(styleSheet)
- {
- var ownerNode = styleSheet.ownerNode;
-
- // If the owner node is set
- if(ownerNode)
- {
- // If the owner node is a processing instruction
- if(ownerNode.nodeType == Components.interfaces.nsIDOMNode.PROCESSING_INSTRUCTION_NODE)
- {
- // If the processing instruction data contains alternate="yes"
- if(ownerNode.data.indexOf('alternate="yes"') != -1)
- {
- return true;
- }
- }
- else if(ownerNode.hasAttribute("rel") && ownerNode.getAttribute("rel").toLowerCase() == "alternate stylesheet")
- {
- return true;
- }
- }
- }
-
- return false;
-}
-
-// Is this style sheet for this media type
-function webdeveloper_isMediaStyleSheet(styleSheet, matchMediaType)
-{
- // If the style sheet and match media type are set
- if(styleSheet && matchMediaType)
- {
- var media = styleSheet.media;
- var mediaLength = media.length;
- var mediaType = null;
-
- // If there is no media and the match media type is screen
- if(mediaLength == 0 && matchMediaType == "screen")
- {
- return true;
- }
-
- // Loop through the media
- for(var i = 0; i < mediaLength; i++)
- {
- mediaType = media.item(i).toLowerCase();
-
- // If the media type is all or matches the match media type
- if(mediaType == "all" || mediaType == matchMediaType)
- {
- return true;
- }
- }
- }
-
- return false;
-}
-
-// Is this style sheet a valid style sheet
-function webdeveloper_isValidStyleSheet(styleSheet)
-{
- // If the style sheet is set
- if(styleSheet)
- {
- var styleSheetHref = styleSheet.href;
-
- // If the style sheet href is set and this is not an internal style sheet or the style sheet href is not set and this does not have a Web Developer id
- if((styleSheetHref && styleSheetHref.indexOf("about:PreferenceStyleSheet") != 0 && styleSheetHref.indexOf("chrome://") != 0 && styleSheetHref.indexOf("data:text/css") != 0 && styleSheetHref.indexOf("jar:file://") != 0 && styleSheetHref.indexOf("resource://") != 0) || (!styleSheetHref && (!styleSheet.hasAttribute("id") || styleSheet.getAttribute("id").indexOf("webdeveloper-") != 0)))
- {
- return true;
- }
- }
-
- return false;
-}
-
-// Is this style rule is a valid style rule
-function webdeveloper_isValidStyleRule(styleRuleList, styleRule)
-{
- // If the style rule is set
- if(styleRule)
- {
- // If the style rule is an invalid style rule
- if(styleRule.indexOf("-moz-") == 0 || ((styleRule == "margin-left-ltr-source" || styleRule == "margin-left-rtl-source" || styleRule == "margin-right-ltr-source" || styleRule == "margin-right-rtl-source" || styleRule == "padding-left-ltr-source" || styleRule == "padding-left-rtl-source" || styleRule == "padding-right-ltr-source" || styleRule == "padding-right-rtl-source") && styleRuleList.getPropertyValue(styleRule) == "physical"))
- {
- return false;
- }
-
- return true;
- }
-
- return false;
-}
\ No newline at end of file