+++ /dev/null
-var webdeveloper_appliedStyles = new Array();
-var webdeveloper_javaScriptCurrentTime = null;
-var webdeveloper_javaScriptPreviousTime = null;
-var webdeveloper_outlineElement = null;
-var webdeveloper_outlinedElements = new Array();
-var webdeveloper_selectedTab = -1;
-
-window.addEventListener("load", webdeveloper_initialize, false);
-window.addEventListener("unload", webdeveloper_uninitialize, false);
-
-// Displays the about dialog
-function webdeveloper_about()
-{
- window.openDialog("chrome://webdeveloper/content/about/about.xul", "webdeveloper-about-dialog", "centerscreen,chrome,modal");
-}
-
-// Add applied style
-function webdeveloper_addAppliedStyle(id)
-{
- // If the id is not in the applied styles
- if(!webdeveloper_contains(webdeveloper_appliedStyles, id))
- {
- webdeveloper_appliedStyles.push(id);
- webdeveloper_configureElement(document.getElementById("webdeveloper-statusbar-panel"), "hidden", false);
- }
-}
-
-// Add applied style if the element exists
-function webdeveloper_addAppliedStyleByElement(id)
-{
- var currentDocument = webdeveloper_getContentDocument();
-
- // If the element exists
- if(currentDocument.getElementById(id))
- {
- webdeveloper_addAppliedStyle(id);
- }
-}
-
-// Outlines the element in the event
-function webdeveloper_addElementOutline(event, currentElement)
-{
- var element = event.target;
-
- // If the element is set and is not the same as the current outline element
- if(element && element != currentElement)
- {
- webdeveloper_removeElementOutline(currentElement);
-
- element.style.MozOutline = "1px solid #ff0000";
-
- return element;
- }
-
- return null;
-}
-
-// Adds the generated styles to a page
-function webdeveloper_addGeneratedStyles(generatedDocument)
-{
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var linkElement = generatedDocument.createElement("link");
- var styleElement = generatedDocument.createElement("style");
-
- linkElement.setAttribute("href", "chrome://webdeveloper/content/stylesheets/generated/generated_content.css");
- linkElement.setAttribute("id", "webdeveloper-generated-content-stylesheet");
- linkElement.setAttribute("rel", "stylesheet");
- linkElement.setAttribute("type", "text/css");
- headElement.appendChild(linkElement);
-
- styleElement.setAttribute("type", "text/css");
- styleElement.appendChild(generatedDocument.createTextNode("body, td, th { font-size: " + webdeveloper_getIntegerPreference("webdeveloper.generated.content.font.size", true) + "px !important; }"));
- headElement.appendChild(styleElement);
-}
-
-// Adds the generated tools to a page
-function webdeveloper_addGeneratedTools(generatedDocument)
-{
- var linkElement = generatedDocument.createElement("a");
- var listElement = generatedDocument.createElement("ul");
- var listItemElement = generatedDocument.createElement("li");
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- linkElement.setAttribute("href", "#");
- linkElement.setAttribute("id", "webdeveloper-generated-tool-collapse-all");
- linkElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_collapseAll")));
- listItemElement.appendChild(linkElement);
- listElement.appendChild(listItemElement);
-
- linkElement = generatedDocument.createElement("a");
- listItemElement = generatedDocument.createElement("li");
-
- linkElement.setAttribute("href", "#");
- linkElement.setAttribute("id", "webdeveloper-generated-tool-expand-all");
- linkElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_expandAll")));
- listItemElement.appendChild(linkElement);
- listElement.appendChild(listItemElement);
-
- listElement.setAttribute("id", "tools");
- webdeveloper_getDocumentBodyElement(generatedDocument).appendChild(listElement);
-}
-
-// Adds a status menu item
-function webdeveloper_addStatusMenuItem(statusMenu, menuId)
-{
- var originalMenuItem = document.getElementById(menuId + "-menu");
- var statusMenuItem = document.createElement("menuitem");
-
- statusMenuItem.setAttribute("checked", true);
- statusMenuItem.setAttribute("class", "webdeveloper-generated-menu");
- statusMenuItem.setAttribute("label", originalMenuItem.getAttribute("label"));
- statusMenuItem.setAttribute("oncommand", originalMenuItem.getAttribute("oncommand"));
- statusMenuItem.setAttribute("type", "checkbox");
-
- statusMenu.insertBefore(statusMenuItem, document.getElementById("webdeveloper-separator-statusbar"));
-}
-
-// Adds the style sheet at the given location with the given id
-function webdeveloper_addStyleSheet(location, id)
-{
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var linkElement = null;
- var pageDocument = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
- linkElement = pageDocument.createElement("link");
-
- linkElement.setAttribute("href", location);
- linkElement.setAttribute("id", id);
- linkElement.setAttribute("rel", "stylesheet");
- linkElement.setAttribute("type", "text/css");
-
- webdeveloper_getDocumentHeadElement(pageDocument).appendChild(linkElement);
- }
-
- webdeveloper_addAppliedStyle(id);
-}
-
-// Adjusts the position of the given element
-function webdeveloper_adjustElementPosition(element, xPosition, yPosition, offset)
-{
- // If the element is set
- if(element)
- {
- var clientHeight = element.clientHeight;
- var clientWidth = element.clientWidth;
- var contentWindow = webdeveloper_getContentWindow();
- var innerHeight = contentWindow.innerHeight;
- var innerWidth = contentWindow.innerWidth;
- var offsetX = contentWindow.pageXOffset;
- var offsetY = contentWindow.pageYOffset;
-
- // If the x position is less than 0
- if(xPosition < 0)
- {
- xPosition = 0;
- }
-
- // If the y position is less than 0
- if(yPosition < 0)
- {
- yPosition = 0;
- }
-
- // If the element will fit at the x position
- if((xPosition + clientWidth + offset + 5) < (innerWidth + offsetX))
- {
- element.style.left = xPosition + offset + "px";
- }
- else
- {
- element.style.left = (innerWidth + offsetX - clientWidth - offset) + "px";
- }
-
- // If the element will fit at the y position
- if((yPosition + clientHeight + offset + 5) < (innerHeight + offsetY))
- {
- element.style.top = yPosition + offset + "px";
- }
- else
- {
- element.style.top = (innerHeight + offsetY - clientHeight - offset) + "px";
- }
- }
-}
-
-// Applies all selected style sheets
-function webdeveloper_applyStyleSheets(reset)
-{
- var appliedStyle = null;
- var appliedStyles = webdeveloper_appliedStyles.slice(0);
- var appliedStylesLength = appliedStyles.length;
- var element = null;
-
- // Loop through the duplicated applied styles
- for(var i = 0; i < appliedStylesLength; i++)
- {
- appliedStyle = appliedStyles[i];
-
- // Switch on the style
- switch(appliedStyle)
- {
- case "webdeveloper-add-user-style-sheet":
- element = document.getElementById("webdeveloper-add-user-style-sheet-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_addUserStyleSheet(element);
- break;
- case "webdeveloper-disable-all-styles":
- element = document.getElementById("webdeveloper-disable-all-styles-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleStyles(element);
- break;
- case "webdeveloper-disable-browser-default-styles":
- element = document.getElementById("webdeveloper-disable-browser-default-styles-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleBrowserDefaultStyles(element);
- break;
- case "webdeveloper-disable-embedded-styles":
- element = document.getElementById("webdeveloper-disable-embedded-styles-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleEmbeddedStyles(element);
- break;
- case "webdeveloper-disable-inline-styles":
- element = document.getElementById("webdeveloper-disable-inline-styles-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleInlineStyles(element);
- break;
- case "webdeveloper-disable-linked-styles":
- element = document.getElementById("webdeveloper-disable-linked-styles-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleLinkedStyles(element);
- break;
- case "webdeveloper-disable-print-styles":
- element = document.getElementById("webdeveloper-disable-print-styles-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_togglePrintStyles(element);
- break;
- case "webdeveloper-display-abbreviations":
- element = document.getElementById("webdeveloper-display-abbreviations-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayAbbreviations(element);
- break;
- case "webdeveloper-display-access-keys":
- element = document.getElementById("webdeveloper-display-access-keys-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayAccessKeys(element);
- break;
- case "webdeveloper-display-alt-attributes":
- element = document.getElementById("webdeveloper-display-alt-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayAltAttributes(element);
- break;
- case "webdeveloper-display-anchors":
- element = document.getElementById("webdeveloper-display-anchors-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayAnchors(element);
- break;
- case "webdeveloper-display-block-size":
- element = document.getElementById("webdeveloper-display-block-size-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayBlockSize(element);
- break;
- case "webdeveloper-display-div-order":
- element = document.getElementById("webdeveloper-display-div-order-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayDivOrder(element);
- break;
- case "webdeveloper-display-element-information":
- element = document.getElementById("webdeveloper-display-element-information-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayElementInformation(element);
- break;
- case "webdeveloper-display-current-size-title":
- element = document.getElementById("webdeveloper-display-current-size-title-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayWindowSizeInTitle(element);
- break;
- case "webdeveloper-display-form-details":
- element = document.getElementById("webdeveloper-display-form-details-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayFormDetails(element);
- break;
- case "webdeveloper-display-handheld-css":
- element = document.getElementById("webdeveloper-display-handheld-css-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayHandheldCSS(element);
- break;
- case "webdeveloper-display-id-class-details":
- element = document.getElementById("webdeveloper-display-id-class-details-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayIdClassDetails(element);
- break;
- case "webdeveloper-display-image-dimensions":
- element = document.getElementById("webdeveloper-display-image-dimensions-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayImageDimensions(element);
- break;
- case "webdeveloper-display-image-file-sizes":
- element = document.getElementById("webdeveloper-display-image-file-sizes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayImageFileSizes(element);
- break;
- case "webdeveloper-display-image-paths":
- element = document.getElementById("webdeveloper-display-image-paths-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayImagePaths(element);
- break;
- case "webdeveloper-display-line-guides":
- element = document.getElementById("webdeveloper-display-line-guides-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayLineGuides(element);
- break;
- case "webdeveloper-display-link-details":
- element = document.getElementById("webdeveloper-display-link-details-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayLinkDetails(element);
- break;
- case "webdeveloper-display-object-information":
- element = document.getElementById("webdeveloper-display-object-information-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayObjectInformation(element);
- break;
- case "webdeveloper-display-print-css":
- element = document.getElementById("webdeveloper-display-print-css-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayPrintCSS(element);
- break;
- case "webdeveloper-display-ruler":
- element = document.getElementById("webdeveloper-display-ruler-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayRuler(element);
- break;
- case "webdeveloper-display-stack-levels":
- element = document.getElementById("webdeveloper-display-stack-levels-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayStackLevels(element);
- break;
- case "webdeveloper-display-tab-index":
- element = document.getElementById("webdeveloper-display-tab-index-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayTabIndex(element);
- break;
- case "webdeveloper-display-table-depth":
- element = document.getElementById("webdeveloper-display-table-depth-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayTableDepth(element);
- break;
- case "webdeveloper-display-table-information":
- element = document.getElementById("webdeveloper-display-table-information-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayTableInformation(element);
- break;
- case "webdeveloper-display-title-attributes":
- element = document.getElementById("webdeveloper-display-title-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayTitleAttributes(element);
- break;
- case "webdeveloper-display-topographic-information":
- element = document.getElementById("webdeveloper-display-topographic-information-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayTopographicInformation(element);
- break;
- case "webdeveloper-display-window-size-title":
- element = document.getElementById("webdeveloper-display-window-size-title-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_displayWindowSizeInTitle(element);
- break;
- case "webdeveloper-hide-background-images":
- element = document.getElementById("webdeveloper-hide-background-images-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_hideBackgroundImages(element);
- break;
- case "webdeveloper-hide-images":
- element = document.getElementById("webdeveloper-hide-images-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_hideImages(element, "webdeveloper-hide-images");
- break;
- case "webdeveloper-linearize-page":
- element = document.getElementById("webdeveloper-linearize-page-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_linearizePage(element);
- break;
- case "webdeveloper-make-images-invisible":
- element = document.getElementById("webdeveloper-make-images-invisible-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_makeImagesInvisible(element, "webdeveloper-make-images-invisible");
- break;
- case "webdeveloper-outline-absolute-positioned-elements":
- element = document.getElementById("webdeveloper-outline-absolute-positioned-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlinePositionedElements("absolute", element);
- break;
- case "webdeveloper-outline-all-images":
- element = document.getElementById("webdeveloper-outline-all-images-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineAllImages(element);
- break;
- case "webdeveloper-outline-all-tables":
- element = document.getElementById("webdeveloper-outline-all-tables-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineTables(element);
- break;
- case "webdeveloper-outline-background-images":
- element = document.getElementById("webdeveloper-outline-background-images-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineBackgroundImages(element, true);
- break;
- case "webdeveloper-outline-block-level-elements":
- element = document.getElementById("webdeveloper-outline-block-level-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineBlockLevelElements(element);
- break;
- case "webdeveloper-outline-current-element":
- element = document.getElementById("webdeveloper-outline-current-element-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineCurrentElement(element);
- break;
- case "webdeveloper-outline-custom-elements":
- element = document.getElementById("webdeveloper-outline-custom-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineElements(element);
- break;
- case "webdeveloper-outline-deprecated-elements":
- element = document.getElementById("webdeveloper-outline-deprecated-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineDeprecatedElements(element);
- break;
- case "webdeveloper-outline-external-links":
- element = document.getElementById("webdeveloper-outline-external-links-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineExternalLinks(element);
- break;
- case "webdeveloper-outline-fixed-positioned-elements":
- element = document.getElementById("webdeveloper-outline-fixed-positioned-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlinePositionedElements("fixed", element);
- break;
- case "webdeveloper-outline-floated-elements":
- element = document.getElementById("webdeveloper-outline-floated-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineFloatedElements(element);
- break;
- case "webdeveloper-outline-frames":
- element = document.getElementById("webdeveloper-outline-frames-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineFrames(element);
- break;
- case "webdeveloper-outline-headings":
- element = document.getElementById("webdeveloper-outline-headings-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineHeadings(element);
- break;
- case "webdeveloper-outline-images-with-adjusted-dimensions":
- element = document.getElementById("webdeveloper-outline-images-with-adjusted-dimensions-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineImagesWithAdjustedDimensions(element);
- break;
- case "webdeveloper-outline-images-with-empty-alt-attributes":
- element = document.getElementById("webdeveloper-outline-images-with-empty-alt-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineImagesWithEmptyAltAttributes(element);
- break;
- case "webdeveloper-outline-images-with-oversized-dimensions":
- element = document.getElementById("webdeveloper-outline-images-with-oversized-dimensions-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineImagesWithOversizedDimensions(element);
- break;
- case "webdeveloper-outline-images-without-alt-attributes":
- element = document.getElementById("webdeveloper-outline-images-without-alt-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineImagesWithoutAltAttributes(element);
- break;
- case "webdeveloper-outline-images-without-dimensions":
- element = document.getElementById("webdeveloper-outline-images-without-dimensions-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineImagesWithoutDimensions(element);
- break;
- case "webdeveloper-outline-images-without-title-attributes":
- element = document.getElementById("webdeveloper-outline-images-without-title-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineImagesWithoutTitleAttributes(element);
- break;
- case "webdeveloper-outline-links-with-ping-attributes":
- element = document.getElementById("webdeveloper-outline-links-with-ping-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineLinksWithPingAttributes(element);
- break;
- case "webdeveloper-outline-links-without-title-attributes":
- element = document.getElementById("webdeveloper-outline-links-without-title-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineLinksWithoutTitleAttributes(element);
- break;
- case "webdeveloper-outline-relative-positioned-elements":
- element = document.getElementById("webdeveloper-outline-relative-positioned-elements-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlinePositionedElements("relative", element);
- break;
- case "webdeveloper-outline-table-cells":
- element = document.getElementById("webdeveloper-outline-table-cells-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_outlineTableCells(element);
- break;
- case "webdeveloper-replace-images-with-alt-attributes":
- element = document.getElementById("webdeveloper-replace-images-with-alt-attributes-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_replaceImagesWithAltAttributes(element);
- break;
- case "webdeveloper-show-comments":
- element = document.getElementById("webdeveloper-show-comments-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleComments(element);
- break;
- case "webdeveloper-small-screen-rendering":
- element = document.getElementById("webdeveloper-small-screen-rendering-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_smallScreenRendering(element);
- break;
- case "webdeveloper-use-border-box-model":
- element = document.getElementById("webdeveloper-use-border-box-model-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_toggleBorderBoxModel(element);
- break;
- case "webdeveloper-view-style-information":
- element = document.getElementById("webdeveloper-view-style-information-menu");
- webdeveloper_configureElement(element, "checked", !reset);
- webdeveloper_viewStyleInformation(element);
- break;
- }
- }
-}
-
-// Changes the options
-function webdeveloper_changeOptions()
-{
- var element = null;
- var hideContextMenuPreference = webdeveloper_getBooleanPreference("webdeveloper.context.hide", true);
- var hideMenuPreference = webdeveloper_getBooleanPreference("webdeveloper.menu.hide", true);
- var toolbar = document.getElementById("webdeveloper-toolbar");
-
- // If the toolbar exists
- if(toolbar)
- {
- var toolbarVisible = window.toolbar.visible;
-
- // If the toolbar is visible
- if(toolbarVisible)
- {
- var toolbarButtons = toolbar.getElementsByTagName("toolbarbutton");
- var toolbarButtonsLength = toolbarButtons.length;
- var toolbarPreference = webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true);
-
- toolbar.setAttribute("mode", toolbarPreference);
-
- // If the toolbar preference is set to icons
- if(toolbarPreference == "icons")
- {
- toolbarPreference = "pictures";
- }
-
- toolbar.setAttribute("buttonstyle", toolbarPreference);
-
- // Loop through the toolbar buttons
- for(var i = 0; i < toolbarButtonsLength; i++)
- {
- toolbarButtons[i].setAttribute("buttonstyle", toolbarPreference);
- }
-
- // If the toolbar preference is not set to text
- if(toolbarPreference != "text")
- {
- element = document.getElementById("webdeveloper-javascript-statusbar");
-
- // If the element exists
- if(element)
- {
- element.removeAttribute("label");
- }
-
- element = document.getElementById("webdeveloper-render-mode-statusbar");
-
- // If the element exists
- if(element)
- {
- element.removeAttribute("label");
- }
- }
- }
- }
-
- element = document.getElementById("webdeveloper-menu");
-
- // If the element exists
- if(element)
- {
- element.setAttribute("hidden", hideMenuPreference);
- }
-
- element = document.getElementById("webdeveloper-context");
-
- // If the element exists
- if(element)
- {
- element.setAttribute("hidden", hideContextMenuPreference);
- }
-
- element = document.getElementById("webdeveloper-context-separator1");
-
- // If the element exists
- if(element)
- {
- element.setAttribute("hidden", hideContextMenuPreference);
- }
-}
-
-// Clears the applied styles
-function webdeveloper_clearAppliedStyles()
-{
- webdeveloper_appliedStyles = new Array();
-
- webdeveloper_configureElement(document.getElementById("webdeveloper-statusbar-panel"), "hidden", true);
-}
-
-// Configures the element with the given attribute and value
-function webdeveloper_configureElement(element, attribute, value)
-{
- // If the element exists
- if(element)
- {
- // If the value is set
- if(value)
- {
- element.setAttribute(attribute, value);
- }
- else
- {
- element.removeAttribute(attribute);
- }
- }
-}
-
-// Configures the element based on whether the applied style exists
-function webdeveloper_configureElementByAppliedStyle(element, attribute, id)
-{
- webdeveloper_configureElement(element, attribute, webdeveloper_contains(webdeveloper_appliedStyles, id));
-}
-
-// Configure the keyboard shortcuts
-function webdeveloper_configureKeyboardShortcuts(reset)
-{
- var bookmarklet = null;
- var id = null;
- var key = null;
- var keyElement = null;
- var keyPreference = null;
- var keyPreferenceValue = null;
- var keys = null;
- var keySet = null;
- var keysLength = null;
- var mainDocument = null;
- var path = null;
- var success = false;
- var toolCount = webdeveloper_getIntegerPreference("webdeveloper.tool.count", true);
- var url = null;
- var viewSourceWithCount = webdeveloper_getIntegerPreference("webdeveloper.view.source.with.count", true);
- var windowEnumeration = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser");
-
- // Loop through the open windows
- while(windowEnumeration.hasMoreElements())
- {
- mainDocument = windowEnumeration.getNext().document;
-
- // If a main document was found
- if(mainDocument)
- {
- keySet = mainDocument.getElementById("mainKeyset");
-
- // If the key set was not found
- if(!keySet)
- {
- keySet = mainDocument.getElementById("navKeys");
- }
-
- // If the key set was found
- if(keySet)
- {
- keys = keySet.childNodes;
- keysLength = keys.length;
-
- // Loop through the keys
- for(var i = 0; i < keysLength; i++)
- {
- key = keys.item(i);
-
- // If the key has an id starting with webdeveloper
- if(key.hasAttribute("id") && key.getAttribute("id").indexOf("webdeveloper-") == 0)
- {
- id = key.getAttribute("id").split("-").join(".");
-
- // If the key preference is set
- if(webdeveloper_isPreferenceSet(id))
- {
- keyPreferenceValue = webdeveloper_getStringPreference(id, true);
-
- key.setAttribute("key", keyPreferenceValue);
-
- // If the key preference value is set
- if(keyPreferenceValue)
- {
- key.setAttribute("disabled", false);
- }
- else
- {
- key.setAttribute("disabled", true);
- }
- }
- else if(!reset)
- {
- webdeveloper_setStringPreference(id, key.getAttribute("key"));
- }
-
- success = true;
- }
- }
-
- // Loop through the possible tools
- for(i = 1; i <= toolCount; i++)
- {
- bookmarklet = "webdeveloper.tool." + i + ".bookmarklet";
- keyPreference = "webdeveloper.tool." + i + ".key";
- keyElement = mainDocument.getElementById(keyPreference);
- path = "webdeveloper.tool." + i + ".path";
- url = "webdeveloper.tool." + i + ".url";
-
- // If the bookmarklet, path or URL preference and key preference is set
- if((webdeveloper_isPreferenceSet(bookmarklet) || webdeveloper_isPreferenceSet(path) || webdeveloper_isPreferenceSet(url)) && webdeveloper_isPreferenceSet(keyPreference))
- {
- keyPreferenceValue = webdeveloper_getStringPreference(keyPreference, true);
-
- // If the key preference value is set
- if(keyPreferenceValue)
- {
- key = mainDocument.createElement("key");
-
- key.setAttribute("id", keyPreference);
- key.setAttribute("key", keyPreferenceValue);
- key.setAttribute("modifiers", "accel,shift");
-
- // If the bookmarklet preference is set
- if(webdeveloper_getStringPreference(bookmarklet, true))
- {
- key.setAttribute("oncommand", "webdeveloper_runBookmarklet('" + encodeURIComponent(webdeveloper_getStringPreference(bookmarklet, true)).replace(new RegExp("'", "gi"), "\\'") + "')");
- }
- else if(webdeveloper_getStringPreference(path, true))
- {
- key.setAttribute("oncommand", "webdeveloper_loadApplicationWithURL('" + webdeveloper_getStringPreference(path, true).replace(/\\/gi, "\\\\") + "', getBrowser().currentURI.spec)");
- }
- else
- {
- key.setAttribute("oncommand", "webdeveloper_loadURL('" + webdeveloper_getStringPreference(url, true) + "' + encodeURIComponent(getBrowser().currentURI.spec))");
- }
-
- keySet.appendChild(key);
- }
- }
- else
- {
- webdeveloper_removeElement(keyElement);
- }
- }
-
- // Loop through the possible view source with options
- for(i = 1; i <= viewSourceWithCount; i++)
- {
- keyPreference = "webdeveloper.view.source.with." + i + ".key";
- keyElement = mainDocument.getElementById(keyPreference);
- path = "webdeveloper.view.source.with." + i + ".path";
-
- // If the path and key preferences are set
- if(webdeveloper_isPreferenceSet(path) && webdeveloper_isPreferenceSet(keyPreference))
- {
- keyPreferenceValue = webdeveloper_getStringPreference(keyPreference, true);
-
- // If the key preference value is set
- if(keyPreferenceValue)
- {
- key = mainDocument.createElement("key");
-
- key.setAttribute("id", keyPreference);
- key.setAttribute("key", keyPreferenceValue);
- key.setAttribute("modifiers", "accel,shift");
- key.setAttribute("oncommand", "webdeveloper_loadApplicationWithSource('" + webdeveloper_getStringPreference(path, true).replace(/\\/gi, "\\\\") + "')");
- keySet.appendChild(key);
- }
- }
- else
- {
- webdeveloper_removeElement(keyElement);
- }
- }
- }
- }
- }
-
- return success;
-}
-
-// Copies the elements ancestors to the clipboard
-function webdeveloper_copyElementAncestors(event)
-{
- var informationElement = document.getElementById("webdeveloper-information");
- var keyCode = event.charCode;
-
- // If the information element is set and the key code is set and is 99
- if(informationElement && keyCode && keyCode == 99)
- {
- Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(informationElement.value);
-
- event.preventDefault();
- }
-}
-
-// Disables the given preference
-function webdeveloper_disablePreference(element, preference)
-{
- // If the element and preference are set
- if(element && preference)
- {
- webdeveloper_setBooleanPreference(preference, !element.getAttribute("checked"));
- }
-}
-
-// Displays the elements ancestors in the information bar
-function webdeveloper_displayElementAncestors(event)
-{
- var eventTarget = event.target;
- var informationElement = document.getElementById("webdeveloper-information");
-
- // If there is a target and the information element is set
- if(eventTarget && informationElement)
- {
- var tagName = eventTarget.tagName;
-
- // If the tag name is set and does not equal scrollbar
- if(tagName && tagName != "scrollbar")
- {
- var ancestorList = webdeveloper_getElementAncestors(eventTarget);
- var ancestorLength = ancestorList.length;
- var ancestorText = "";
-
- // Loop through the ancestors
- for(var i = 0; i < ancestorLength; i++)
- {
- ancestorText += webdeveloper_getElementDescription(ancestorList[i]) + " > ";
- }
-
- informationElement.value = ancestorText + webdeveloper_getElementDescription(eventTarget);
-
- webdeveloper_configureElement(document.getElementById("webdeveloper-information-text-toolbar"), "hidden", false);
-
- event.preventDefault();
- }
- }
-}
-
-// Enables the given preference
-function webdeveloper_enablePreference(element, preference)
-{
- // If the element and preference are set
- if(element && preference)
- {
- var checked = element.getAttribute("checked");
-
- // If the element is checked (explicit check required)
- if(checked)
- {
- webdeveloper_setBooleanPreference(preference, true);
- }
- else
- {
- webdeveloper_setBooleanPreference(preference, false);
- }
- }
-}
-
-// Formats a file size
-function webdeveloper_formatFileSize(fileSize)
-{
- // If the file size is set
- if(fileSize)
- {
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- // If the file size is greater than a kilobyte
- if(fileSize > 1024)
- {
- return Math.round(fileSize / 1024) + " " + stringBundle.getString("webdeveloper_kilobytes");
- }
- else
- {
- return fileSize + " " + stringBundle.getString("webdeveloper_bytes");
- }
- }
- else
- {
- return "";
- }
-}
-
-// Generates a document in a new tab or window
-function webdeveloper_generateDocument(url)
-{
- var generatedPage = null;
- var request = new XMLHttpRequest();
-
- // If the open tabs preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs", true))
- {
- getBrowser().selectedTab = getBrowser().addTab(url);
-
- generatedPage = window;
- }
- else
- {
- generatedPage = window.open(url);
- }
-
- // This must be done to make generated content render
- request.open("get", "about:blank", false);
- request.send(null);
-
- return generatedPage.content.document;
-}
-
-// Returns a description for an element
-function webdeveloper_getElementDescription(element)
-{
- var description = null;
-
- // If the element and tag name are set
- if(element && element.tagName)
- {
- description = element.tagName.toLowerCase();
-
- // If the element has an id attribute
- if(element.hasAttribute("id"))
- {
- description += " #" + element.getAttribute("id");
- }
-
- // If the element has a class attribute
- if(element.hasAttribute("class"))
- {
- description += " ." + element.getAttribute("class");
- }
- }
-
- return description;
-}
-
-// Opens the help
-function webdeveloper_help()
-{
- webdeveloper_loadURL("http://chrispederick.com/work/web-developer/documentation/");
-}
-
-// Initializes the extension
-function webdeveloper_initialize(event)
-{
- var windowContent = window.document.getElementById("content");
-
- // If the window content is set
- if(windowContent)
- {
- var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService().QueryInterface(Components.interfaces.nsIConsoleService);
- var dashboard = document.getElementById("webdeveloper-dashboard");
- var tabBox = windowContent.mTabBox;
-
- webdeveloper_upgrade();
- webdeveloper_setupDefaultOptions();
- webdeveloper_setupLocalizedOptions();
- webdeveloper_configureKeyboardShortcuts(false);
- webdeveloper_changeOptions();
-
- windowContent.addEventListener("load", webdeveloper_pageLoad, true);
- windowContent.addEventListener("unload", webdeveloper_pageUnload, true);
-
- // If the dashboard is set
- if(dashboard)
- {
- webdeveloper_setupDashboardPosition(webdeveloper_getStringPreference("webdeveloper.dashboard.position", true));
- }
-
- // If the console service is set
- if(consoleService)
- {
- consoleService.registerListener(WebDeveloperErrorConsoleListener);
- }
-
- // If the tab box is set
- if(tabBox)
- {
- tabBox.addEventListener("select", webdeveloper_tabSelect, false);
- }
-
- // Try to remove the event listener
- try
- {
- window.removeEventListener("load", webdeveloper_initialize, false);
- }
- catch(exception)
- {
- // Do nothing
- }
- }
-}
-
-// Returns true if the DOM Inspector is available
-function webdeveloper_isDOMInspectorAvailable()
-{
- try
- {
- Components.classes["@mozilla.org/inspector/dom-utils;1"].getService(Components.interfaces.inIDOMUtils);
-
- return true;
- }
- catch(exception)
- {
- return false;
- }
-}
-
-// Returns true if the information text toolbar is in use
-function webdeveloper_isInformationTextToolbarInUse()
-{
- // If one of the features that use the information text toolbar is enabled
- if(webdeveloper_contains(webdeveloper_appliedStyles, "webdeveloper-display-element-information") || webdeveloper_contains(webdeveloper_appliedStyles, "webdeveloper-outline-current-element") || webdeveloper_contains(webdeveloper_appliedStyles, "webdeveloper-view-style-information"))
- {
- return true;
- }
-
- return false;
-}
-
-// Loads the given URL
-function webdeveloper_loadURL(url)
-{
- var oldTab = getBrowser().selectedTab;
-
- webdeveloper_generateDocument(url);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// Logs a debug message to the error console
-function webdeveloper_logDebug(message)
-{
- // If the debug preference is set
- if(webdeveloper_getBooleanPreference("webdeveloper.debug", true))
- {
- Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService).logStringMessage("Web Developer: " + message);
- webdeveloper_openErrorConsole(false);
- }
-}
-
-// Opens the error console
-function webdeveloper_openErrorConsole(toggle)
-{
- // If the open error console in dashboard preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.error.console.dashboard", true))
- {
- var errorConsole = document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_errorConsole");
-
- // If the error console is already open in the dashboard
- if(webdeveloper_isOpenInDashboard(errorConsole))
- {
- // If toggling the console
- if(toggle)
- {
- webdeveloper_closeInDashboard(errorConsole);
- }
- else
- {
- webdeveloper_selectInDashboard(errorConsole);
- }
- }
- else
- {
- webdeveloper_openInDashboard(errorConsole, "chrome://global/content/console.xul");
- }
- }
- else
- {
- webdeveloper_javaScriptPreviousTime = webdeveloper_javaScriptCurrentTime;
- webdeveloper_javaScriptCurrentTime = new Date().getTime();
-
- // If the previous time is not set or the current time is greater than a second different from the previous time
- if(!webdeveloper_javaScriptPreviousTime || webdeveloper_javaScriptCurrentTime - webdeveloper_javaScriptPreviousTime > 1500)
- {
- toJavaScriptConsole();
- }
- }
-}
-
-// Opens a toolbar button automatically if another toolbar button is open on the toolbar
-function webdeveloper_openToolbarButton(currentToolbarButton)
-{
- // If the toolbar button is set and is not open
- if(currentToolbarButton && !currentToolbarButton.open)
- {
- var toolbarButton = null;
- var toolbarButtons = currentToolbarButton.parentNode.getElementsByTagName("toolbarbutton");
- var toolbarButtonsLength = toolbarButtons.length;
-
- // Loop through the toolbar buttons
- for(var i = 0; i < toolbarButtonsLength; i++)
- {
- toolbarButton = toolbarButtons.item(i);
-
- // If the toolbar button is set, is not the same toolbar button and is open
- if(toolbarButton && toolbarButton != currentToolbarButton && toolbarButton.open)
- {
- toolbarButton.open = false;
- currentToolbarButton.open = true;
-
- break;
- }
- }
- }
-}
-
-// Displays the options dialog
-function webdeveloper_options(openPage)
-{
- // If an open page is set
- if(openPage)
- {
- window.openDialog("chrome://webdeveloper/content/options/options.xul", "webdeveloper-options-dialog", "centerscreen,chrome,modal,resizable", openPage);
- }
- else
- {
- window.openDialog("chrome://webdeveloper/content/options/options.xul", "webdeveloper-options-dialog", "centerscreen,chrome,modal,resizable");
- }
-
- webdeveloper_changeOptions();
-}
-
-// Handles the page being loaded
-function webdeveloper_pageLoad(event)
-{
- var eventTarget = event.target;
-
- // If the browser is the target
- if(eventTarget && eventTarget == getBrowser())
- {
- var contentDocument = eventTarget.contentDocument;
-
- // If the content document is set
- if(contentDocument)
- {
- // Try to get the original target
- try
- {
- var loadedDocument = event.originalTarget;
-
- // If the loaded document is set and has the same URI as the content document
- if(loadedDocument && contentDocument.documentURI == loadedDocument.documentURI)
- {
- // Reset the display line guides and display ruler features
- webdeveloper_configureElement(document.getElementById("webdeveloper-line-guides-toolbar"), "hidden", true);
- webdeveloper_configureElement(document.getElementById("webdeveloper-ruler-toolbar"), "hidden", true);
- webdeveloper_removeAppliedStyle("webdeveloper-display-line-guides");
- webdeveloper_removeAppliedStyle("webdeveloper-display-ruler");
-
- webdeveloper_updateMetaRedirects(eventTarget.selectedBrowser);
- webdeveloper_updateRenderMode(contentDocument);
-
- // If the persist features preference is set and is true
- if(webdeveloper_getBooleanPreference("webdeveloper.persist.features", true))
- {
- webdeveloper_applyStyleSheets(false);
- }
- else
- {
- // Reset the information text toolbar
- webdeveloper_configureElement(document.getElementById("webdeveloper-information-text-toolbar"), "hidden", true);
-
- webdeveloper_clearAppliedStyles();
- }
- }
- }
- catch(exception)
- {
- // Do nothing
- }
- }
- }
-}
-
-// Handles the page being unloaded
-function webdeveloper_pageUnload(event)
-{
- var eventTarget = event.target;
-
- // Try to get the original target
- try
- {
- var originalTarget = event.originalTarget;
-
- // If the page is the target and the URI matches
- if(eventTarget && originalTarget && eventTarget.contentDocument && eventTarget == getBrowser() && eventTarget.contentDocument.documentURI == originalTarget.documentURI)
- {
- webdeveloper_updateCSSStatus();
- webdeveloper_updateJavaScriptStatus();
- }
- }
- catch(exception)
- {
- // Do nothing
- }
-}
-
-// Remove applied style
-function webdeveloper_removeAppliedStyle(id)
-{
- // If the id is in the applied styles
- if(webdeveloper_contains(webdeveloper_appliedStyles, id))
- {
- var appliedStylesLength = webdeveloper_appliedStyles.length;
-
- // Loop through the applied styles
- for(var i = 0; i < appliedStylesLength; i++)
- {
- // If this style sheet is in the applied styles
- if(webdeveloper_appliedStyles[i] == id)
- {
- webdeveloper_appliedStyles.splice(i, 1);
- break;
- }
- }
-
- // If the only applied style has been removed
- if(webdeveloper_appliedStyles.length == 0)
- {
- webdeveloper_configureElement(document.getElementById("webdeveloper-statusbar-panel"), "hidden", true);
- }
- }
-}
-
-// Removes the outline from an element
-function webdeveloper_removeElementOutline(element)
-{
- // If the element is set
- if(element)
- {
- element.style.MozOutline = "";
-
- // If the element has an empty style attribute
- if(element.hasAttribute("style") && element.getAttribute("style") == "")
- {
- element.removeAttribute("style");
- }
- }
-}
-
-// Removes all the generated menu items from the menu
-function webdeveloper_removeGeneratedMenuItems(menu)
-{
- var generatedMenuItems = new Array();
- var menuItem = null;
- var menuItems = menu.childNodes;
- var menuItemsLength = menuItems.length;
-
- // Loop through the menu items
- for(var i = 0; i < menuItemsLength; i++)
- {
- menuItem = menuItems.item(i);
-
- // If this is a generated menu item
- if(menuItem && menuItem.hasAttribute("class") && menuItem.getAttribute("class") == "webdeveloper-generated-menu")
- {
- generatedMenuItems.push(menuItem);
- }
- }
-
- menuItemsLength = generatedMenuItems.length;
-
- // Loop through the generated menu items
- for(i = 0; i < menuItemsLength; i++)
- {
- menu.removeChild(generatedMenuItems[i]);
- }
-}
-
-// Removes the style sheet with the given id
-function webdeveloper_removeStyleSheet(id)
-{
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- webdeveloper_removeElement(documentList[i].getElementById(id));
- }
-
- webdeveloper_removeAppliedStyle(id);
-}
-
-// Resets the CSS status button
-function webdeveloper_resetCSSStatus()
-{
- var cssButton = document.getElementById("webdeveloper-css-statusbar");
-
- webdeveloper_javaScriptCurrentTime = null;
- webdeveloper_javaScriptPreviousTime = null;
-
- // If the CSS button exists
- if(cssButton)
- {
- // If the CSS button has a class attribute
- if(cssButton.hasAttribute("class"))
- {
- cssButton.removeAttribute("class");
- }
-
- // If the CSS button has a tooltip text attribute
- if(cssButton.hasAttribute("tooltiptext"))
- {
- cssButton.removeAttribute("tooltiptext");
- }
-
- // If the toolbar preference is set to text and the CSS button has a label attribute
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text" && cssButton.hasAttribute("label"))
- {
- cssButton.removeAttribute("label");
- }
- }
-}
-
-// Resets the JavaScript status button
-function webdeveloper_resetJavaScriptStatus()
-{
- var javaScriptButton = document.getElementById("webdeveloper-javascript-statusbar");
-
- webdeveloper_javaScriptCurrentTime = null;
- webdeveloper_javaScriptPreviousTime = null;
-
- // If the JavaScript button exists
- if(javaScriptButton)
- {
- // If JavaScript is enabled
- if(webdeveloper_getBooleanPreference("javascript.enabled", false))
- {
- // If the JavaScript button has a class attribute
- if(javaScriptButton.hasAttribute("class"))
- {
- javaScriptButton.removeAttribute("class");
- }
-
- // If the JavaScript button has a tooltip text attribute
- if(javaScriptButton.hasAttribute("tooltiptext"))
- {
- javaScriptButton.removeAttribute("tooltiptext");
- }
-
- // If the toolbar preference is set to text and the JavaScript button has a label attribute
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text" && javaScriptButton.hasAttribute("label"))
- {
- javaScriptButton.removeAttribute("label");
- }
- }
- else
- {
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- // If the JavaScript button does not have a class attribute or it is not set to disabled
- if(!javaScriptButton.hasAttribute("class") || javaScriptButton.getAttribute("class") != "disabled")
- {
- javaScriptButton.setAttribute("class", "disabled");
- javaScriptButton.setAttribute("tooltiptext", stringBundle.getString("webdeveloper_javaScriptDisabledTooltip"));
-
- // If the toolbar preference is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- javaScriptButton.setAttribute("label", stringBundle.getString("webdeveloper_javaScriptDisabledLabel"));
- }
- }
- }
- }
-}
-
-// Resets the page
-function webdeveloper_resetPage()
-{
- webdeveloper_applyStyleSheets(true);
- webdeveloper_clearAppliedStyles();
-
- webdeveloper_outlinedElements = new Array();
-}
-
-// Runs the given bookmarklet
-function webdeveloper_runBookmarklet(bookmarklet)
-{
- eval(decodeURIComponent(bookmarklet));
-}
-
-// Sets up the default options
-function webdeveloper_setupDefaultOptions()
-{
- // Set default custom colors
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.custom.1.color", "#ff0000");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.custom.2.color", "#33ff33");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.custom.3.color", "#3333ff");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.custom.4.color", "#ff0000");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.custom.5.color", "#33ff33");
-
- // Set default dashboard position
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.dashboard.position", "bottom");
-
- // Set default edit CSS preferences
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.edit.color.background", "#ffffff");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.edit.color.text", "#000000");
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.edit.font.size", 12);
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.edit.update.frequency", 2000);
-
- // Set default feature tooltip colors
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.feature.tooltip.color.background", "#ffff99");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.feature.tooltip.color.border", "#ffcc66");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.feature.tooltip.color.text", "#000000");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.feature.tooltip.opacity", "0.9");
-
- // Set default generated content font size
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.generated.content.font.size", 12);
-
- // Set default information preference
- webdeveloper_setBooleanPreferenceIfNotSet("webdeveloper.information.tidy", true);
-
- // Set default line guides preference
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.line.guides.color", "#000000");
-
- // Set default magnification preference
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.magnification.level", "2");
-
- // Set default open tabs preference
- webdeveloper_setBooleanPreferenceIfNotSet("webdeveloper.open.tabs", true);
-
- // Set default populate form fields email
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.populate.form.fields.email", "example@example.com");
-
- // Set default style information preference
- webdeveloper_setBooleanPreferenceIfNotSet("webdeveloper.style.information.dashboard", true);
-
- // Set default accessibility preferences
- webdeveloper_setBooleanPreferenceIfNotSet("webdeveloper.validate.local.accessibility.section508", true);
- webdeveloper_setBooleanPreferenceIfNotSet("webdeveloper.validate.local.accessibility.wai.priority1", true);
-
- // Set default CSS profile preference
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.validate.local.css.profile", "css21");
-}
-
-// Sets up the localized options
-function webdeveloper_setupLocalizedOptions()
-{
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- // If the string bundle is set
- if(stringBundle)
- {
- // Set default resize count
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.resize.count", 1);
-
- // Set 800x600
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.resize.1.description", stringBundle.getString("webdeveloper_resize800x600"));
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.resize.1.width", 800);
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.resize.1.height", 600);
-
- // Set default tool count
- webdeveloper_setIntegerPreferenceIfNotSet("webdeveloper.tool.count", 8);
-
- // Set CSS validator
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.1.description", stringBundle.getString("webdeveloper_validateCSS"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.1.url", "http://jigsaw.w3.org/css-validator/validator?profile=css21&warning=0&uri=");
-
- // Set feed validator
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.2.description", stringBundle.getString("webdeveloper_validateFeed"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.2.url", "http://validator.w3.org/feed/check.cgi?url=");
-
- // Set HTML validator
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.3.description", stringBundle.getString("webdeveloper_validateHTML"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.3.key", "H");
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.3.url", "http://validator.w3.org/check?verbose=1&uri=");
-
- // Set links validator
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.4.description", stringBundle.getString("webdeveloper_validateLinks"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.4.url", "http://validator.w3.org/checklink?check=Check&hide_type=all&summary=on&uri=");
-
- // Set section 508 validator
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.5.description", stringBundle.getString("webdeveloper_validateSection508"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.5.url", "http://www.cynthiasays.com/mynewtester/cynthia.exe?rptmode=-1&url1=");
-
- // Set WAI validator
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.6.description", stringBundle.getString("webdeveloper_validateWAI"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.6.url", "http://www.cynthiasays.com/mynewtester/cynthia.exe?rptmode=2&url1=");
-
- // Set separator
- webdeveloper_setBooleanPreferenceIfNotSet("webdeveloper.tool.7.separator", true);
-
- // Set speed report
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.8.description", stringBundle.getString("webdeveloper_viewSpeedReport"));
- webdeveloper_setStringPreferenceIfNotSet("webdeveloper.tool.8.url", "http://www.websiteoptimization.com/cgi-bin/wso/wso.pl?url=");
- }
-}
-
-// Sorts two images
-function webdeveloper_sortImages(imageOne, imageTwo)
-{
- // If both images are set
- if(imageOne && imageTwo)
- {
- var imageOneSrc = imageOne.src;
- var imageTwoSrc = imageTwo.src;
-
- // If the images are equal
- if(imageOneSrc == imageTwoSrc)
- {
- return 0;
- }
- else if(imageOneSrc < imageTwoSrc)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Handles a tab being selected
-function webdeveloper_tabSelect(event)
-{
- var selectedTab = getBrowser().mTabBox.selectedIndex;
-
- // If the selected tab is different
- if(selectedTab != webdeveloper_selectedTab)
- {
- webdeveloper_selectedTab = selectedTab;
-
- webdeveloper_resetCSSStatus();
- webdeveloper_resetJavaScriptStatus();
- webdeveloper_updateAppliedStyles();
- webdeveloper_updateRenderMode(webdeveloper_getContentDocument());
-
- // Reset the display line guides and display ruler toolbars
- webdeveloper_configureElement(document.getElementById("webdeveloper-line-guides-toolbar"), "hidden", !webdeveloper_contains(webdeveloper_appliedStyles, "webdeveloper-display-line-guides"));
- webdeveloper_configureElement(document.getElementById("webdeveloper-ruler-toolbar"), "hidden", !webdeveloper_contains(webdeveloper_appliedStyles, "webdeveloper-display-ruler"));
-
- // Reset the information text toolbar
- webdeveloper_configureElement(document.getElementById("webdeveloper-information-text-toolbar"), "hidden", !webdeveloper_isInformationTextToolbarInUse());
- }
-}
-
-// Tidies a list of images by removing duplicates and sorting
-function webdeveloper_tidyImages(imageList)
-{
- var image = null;
- var imageListLength = imageList.length;
- var imageSrc = null;
- var newImageList = new Array();
- var newImageListLength = null;
- var tidiedImageList = new Array();
-
- // Loop through the images
- for(var i = 0; i < imageListLength; i++)
- {
- image = imageList[i];
- imageSrc = image.src;
-
- // If the image src is set and does not end in '.xul'
- if(imageSrc && !imageSrc.endsWith(".xul"))
- {
- newImageList.push(image);
- }
- }
-
- newImageList.sort(webdeveloper_sortImages);
-
- newImageListLength = newImageList.length;
-
- // Loop through the images
- for(i = 0; i < newImageListLength; i++)
- {
- image = newImageList[i];
-
- // If this is not the last image and the image is the same as the next image
- if(i + 1 < newImageListLength && image.src == newImageList[i + 1].src)
- {
- continue;
- }
-
- tidiedImageList.push(image);
- }
-
- return tidiedImageList;
-}
-
-// Toggles the applied style with the given id
-function webdeveloper_toggleAppliedStyle(element, id)
-{
- webdeveloper_removeAppliedStyle(id);
-
- // If the menu is checked
- if(element && element.getAttribute("checked"))
- {
- webdeveloper_addAppliedStyle(id);
- }
-}
-
-// Toggles the feature tooltip styles
-function webdeveloper_toggleFeatureTooltipStyles(element, styleSheetId, selectors)
-{
- webdeveloper_removeStyleSheet(styleSheetId, false);
-
- // If the menu is checked
- if(element.getAttribute("checked"))
- {
- var colors = " background-color: " + webdeveloper_getStringPreference("webdeveloper.feature.tooltip.color.background", true) + " !important; border-color: " + webdeveloper_getStringPreference("webdeveloper.feature.tooltip.color.border", true) + " !important; color: " + webdeveloper_getStringPreference("webdeveloper.feature.tooltip.color.text", true) + " !important; ";
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var opacityValue = webdeveloper_getStringPreference("webdeveloper.feature.tooltip.opacity", true);
- var opacity = " -moz-opacity: " + opacityValue + " !important; opacity: " + opacityValue + " !important; ";
- var pageDocument = null;
- var styleElement = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
- styleElement = pageDocument.createElement("style");
-
- styleElement.appendChild(pageDocument.createTextNode(selectors + " {" + colors + opacity + "}"));
- styleElement.setAttribute("id", styleSheetId);
- styleElement.setAttribute("type", "text/css");
-
- webdeveloper_getDocumentHeadElement(pageDocument).appendChild(styleElement);
- }
- }
-}
-
-// Toggles an individual style sheet
-function webdeveloper_toggleIndividualStyleSheet(selectedStyleSheetHref)
-{
- var currentDocument = webdeveloper_getContentDocument();
- var styleSheet = null;
- var styleSheetHref = null;
- var styleSheetList = currentDocument.styleSheets;
- var styleSheetLength = styleSheetList.length;
-
- // Loop through the style sheets
- for(var i = 0; i < styleSheetLength; i++)
- {
- styleSheet = styleSheetList[i];
- styleSheetHref = styleSheet.href;
-
- // If this is the selected style sheet
- if(styleSheetHref == selectedStyleSheetHref)
- {
- styleSheet.disabled = !styleSheet.disabled;
- }
- }
-}
-
-// Toggles the style sheet with the given id
-function webdeveloper_toggleStyleSheet(element, location, id)
-{
- webdeveloper_removeStyleSheet(id);
-
- // If the menu is checked
- if(element && element.getAttribute("checked"))
- {
- webdeveloper_addStyleSheet(location, id);
- }
-}
-
-// Toggles the toolbar
-function webdeveloper_toggleToolbar()
-{
- var toolbar = document.getElementById("webdeveloper-toolbar");
-
- toolbar.collapsed = !toolbar.collapsed;
-
- document.persist("webdeveloper-toolbar", "collapsed");
-}
-
-// Uninitializes the extension
-function webdeveloper_uninitialize(event)
-{
- var windowContent = window.document.getElementById("content");
-
- // If the window content is set
- if(windowContent)
- {
- var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService().QueryInterface(Components.interfaces.nsIConsoleService);
- var tabBox = windowContent.mTabBox;
-
- // Try to remove the event listener
- try
- {
- windowContent.removeEventListener("load", webdeveloper_pageLoad, true);
- }
- catch(exception)
- {
- // Do nothing
- }
-
- // Try to remove the event listener
- try
- {
- windowContent.removeEventListener("unload", webdeveloper_pageUnload, true);
- }
- catch(exception)
- {
- // Do nothing
- }
-
- // If the console service is set
- if(consoleService)
- {
- // Try to remove the console listener
- try
- {
- consoleService.unregisterListener(WebDeveloperErrorConsoleListener);
- }
- catch(exception)
- {
- // Do nothing
- }
- }
-
- // If the tab box is set
- if(tabBox)
- {
- // Try to remove the event listener
- try
- {
- tabBox.removeEventListener("select", webdeveloper_tabSelect, false);
- }
- catch(exception)
- {
- // Do nothing
- }
- }
-
- // Try to remove the event listener
- try
- {
- window.removeEventListener("close", webdeveloper_uninitialize, false);
- }
- catch(exception)
- {
- // Do nothing
- }
- }
-}
-
-// Updates the applied styles
-function webdeveloper_updateAppliedStyles()
-{
- webdeveloper_clearAppliedStyles();
- webdeveloper_addAppliedStyleByElement("webdeveloper-add-user-style-sheet");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-all-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-browser-default-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-all-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-embedded-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-inline-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-linked-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-disable-print-styles");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-abbreviations");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-access-keys");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-alt-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-anchors");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-block-size");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-div-order");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-element-information");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-form-details");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-handheld-css");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-id-class-details");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-image-dimensions");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-image-file-sizes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-image-paths");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-line-guides");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-link-details");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-object-information");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-print-css");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-ruler");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-stack-levels");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-tab-index");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-table-depth");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-table-information");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-title-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-topographic-information");
- webdeveloper_addAppliedStyleByElement("webdeveloper-display-window-size-title");
- webdeveloper_addAppliedStyleByElement("webdeveloper-hide-background-images");
- webdeveloper_addAppliedStyleByElement("webdeveloper-hide-images");
- webdeveloper_addAppliedStyleByElement("webdeveloper-linearize-page");
- webdeveloper_addAppliedStyleByElement("webdeveloper-make-images-invisible");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-absolute-positioned-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-all-images");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-background-images");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-block-level-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-current-element");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-custom-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-deprecated-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-external-links");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-fixed-positioned-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-floated-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-frames");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-headings");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-images-with-adjusted-dimensions");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-images-with-empty-alt-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-images-without-alt-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-images-without-dimensions");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-images-without-title-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-links-with-ping-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-links-without-title-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-relative-positioned-elements");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-table-captions");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-table-cells");
- webdeveloper_addAppliedStyleByElement("webdeveloper-outline-all-tables");
- webdeveloper_addAppliedStyleByElement("webdeveloper-replace-images-with-alt-attributes");
- webdeveloper_addAppliedStyleByElement("webdeveloper-show-comments");
- webdeveloper_addAppliedStyleByElement("webdeveloper-small-screen-rendering");
- webdeveloper_addAppliedStyleByElement("webdeveloper-use-border-box-model");
- webdeveloper_addAppliedStyleByElement("webdeveloper-view-style-information");
-}
-
-// Updates the CSS status button
-function webdeveloper_updateCSSStatus(error)
-{
- var cssButton = document.getElementById("webdeveloper-css-statusbar");
-
- // If the CSS button is set
- if(cssButton)
- {
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- // If the error is set
- if(error)
- {
- var errorMessage = error.errorMessage;
-
- cssButton.setAttribute("tooltiptext", stringBundle.getFormattedString("webdeveloper_cssErrorTooltip", [errorMessage]));
-
- // If the CSS button does not have a class attribute or it is not set to error
- if(!cssButton.hasAttribute("class") || cssButton.getAttribute("class") != "error")
- {
- cssButton.setAttribute("class", "error");
-
- // If the toolbar preference is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- cssButton.setAttribute("label", stringBundle.getString("webdeveloper_cssErrorLabel"));
- }
- }
-
- // If the open CSS console error preference is set
- if(webdeveloper_getBooleanPreference("webdeveloper.open.css.console.error", true))
- {
- webdeveloper_openErrorConsole(false);
- }
- }
- else if(!cssButton.hasAttribute("class") || cssButton.getAttribute("class") != "valid")
- {
- cssButton.setAttribute("class", "valid");
- cssButton.setAttribute("tooltiptext", stringBundle.getString("webdeveloper_cssNoErrorsTooltip"));
-
- // If the toolbar preference is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- cssButton.setAttribute("label", stringBundle.getString("webdeveloper_cssNoErrorsLabel"));
- }
- }
- }
-}
-
-// Updates the JavaScript status button
-function webdeveloper_updateJavaScriptStatus(error)
-{
- var javaScriptButton = document.getElementById("webdeveloper-javascript-statusbar");
-
- // If the JavaScript button is set
- if(javaScriptButton)
- {
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- // If the error is set
- if(error)
- {
- var errorMessage = error.errorMessage;
- var warning = error.flags & error.warningFlag != 0;
-
- // If this is a warning
- if(warning)
- {
- javaScriptButton.setAttribute("tooltiptext", stringBundle.getFormattedString("webdeveloper_javaScriptWarningTooltip", [errorMessage]));
-
- // If the JavaScript button does not have a class attribute or it is not set to warning
- if(!javaScriptButton.hasAttribute("class") || javaScriptButton.getAttribute("class") != "warning")
- {
- javaScriptButton.setAttribute("class", "warning");
-
- // If the toolbar preference is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- javaScriptButton.setAttribute("label", stringBundle.getString("webdeveloper_javaScriptWarningLabel"));
- }
- }
-
- // If the open JavaScript console warning preference is set
- if(webdeveloper_getBooleanPreference("webdeveloper.open.javascript.console.warning", true))
- {
- webdeveloper_openErrorConsole(false);
- }
- }
- else
- {
- javaScriptButton.setAttribute("tooltiptext", stringBundle.getFormattedString("webdeveloper_javaScriptErrorTooltip", [errorMessage]));
-
- // If the JavaScript button does not have a class attribute or it is not set to error
- if(!javaScriptButton.hasAttribute("class") || javaScriptButton.getAttribute("class") != "error")
- {
- javaScriptButton.setAttribute("class", "error");
-
- // If the toolbar preference is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- javaScriptButton.setAttribute("label", stringBundle.getString("webdeveloper_javaScriptErrorLabel"));
- }
- }
-
- // If the open JavaScript console error preference is set
- if(webdeveloper_getBooleanPreference("webdeveloper.open.javascript.console.error", true))
- {
- webdeveloper_openErrorConsole(false);
- }
- }
- }
- else if(!javaScriptButton.hasAttribute("class") || javaScriptButton.getAttribute("class") != "valid")
- {
- javaScriptButton.setAttribute("class", "valid");
- javaScriptButton.setAttribute("tooltiptext", stringBundle.getString("webdeveloper_javaScriptNoErrorsTooltip"));
-
- // If the toolbar preference is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- javaScriptButton.setAttribute("label", stringBundle.getString("webdeveloper_javaScriptNoErrorsLabel"));
- }
- }
- }
-}
-
-// Updates the meta redirects status
-function webdeveloper_updateMetaRedirects(browser)
-{
- browser.docShell.allowMetaRedirects = !webdeveloper_getBooleanPreference("webdeveloper.meta.redirects.disable", true);
-}
-
-// Updates the options menu
-function webdeveloper_updateOptionsMenu(suffix)
-{
- var appliedStyles = true;
-
- // If there are no applied styles
- if(webdeveloper_appliedStyles.length == 0)
- {
- appliedStyles = false;
- }
-
- webdeveloper_configureElement(document.getElementById("webdeveloper-persist-features-" + suffix), "checked", webdeveloper_getBooleanPreference("webdeveloper.persist.features", true));
- webdeveloper_configureElement(document.getElementById("webdeveloper-reset-page-" + suffix), "disabled", !appliedStyles);
-}
-
-// Updates the render mode status button
-function webdeveloper_updateRenderMode(currentDocument)
-{
- var element = document.getElementById("webdeveloper-render-mode-statusbar");
-
- // If the render mode button exists
- if(element)
- {
- var renderMode = currentDocument.compatMode;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var textToolbar = false;
-
- // If the toolbar preference has a value and is set to text
- if(webdeveloper_getStringPreference("webdeveloper.toolbar.icons", true) == "text")
- {
- textToolbar = true;
- }
-
- // If the render mode is quirks mode
- if(renderMode == "BackCompat")
- {
- element.setAttribute("class", "quirks");
- element.setAttribute("tooltiptext", stringBundle.getString("webdeveloper_quirksModeTooltip"));
-
- // If the toolbar is in text mode
- if(textToolbar)
- {
- element.setAttribute("label", stringBundle.getString("webdeveloper_quirksModeLabel"));
- }
- }
- else
- {
- // If the render mode button has a class attribute
- if(element.hasAttribute("class"))
- {
- element.removeAttribute("class");
- }
-
- element.setAttribute("tooltiptext", stringBundle.getString("webdeveloper_standardsComplianceModeTooltip"));
-
- // If the toolbar is in text mode
- if(textToolbar)
- {
- element.setAttribute("label", stringBundle.getString("webdeveloper_standardsComplianceModeLabel"));
- }
- }
- }
-}
-
-// Updates the status menu
-function webdeveloper_updateStatusMenu(statusMenu)
-{
- var appliedStylesLength = webdeveloper_appliedStyles.length;
-
- webdeveloper_removeGeneratedMenuItems(statusMenu);
-
- // Loop through the applied styles
- for(var i = 0; i < appliedStylesLength; i++)
- {
- webdeveloper_addStatusMenuItem(statusMenu,webdeveloper_appliedStyles[i]);
- }
-
- // If the status menu has only two children
- if(statusMenu.childNodes.length == 2)
- {
- return false;
- }
-
- return true;
-}
-
-// Error console listener
-var WebDeveloperErrorConsoleListener =
-{
- // Observes changes in the console
- observe: function(error)
- {
- // If the document and error are set
- if(document && error)
- {
- // Try to convert the error to a script error
- try
- {
- error = error.QueryInterface(Components.interfaces.nsIScriptError);
-
- var errorCategory = error.category;
- var sourceName = error.sourceName;
-
- // If the error category is set and is content javascript
- if(errorCategory && errorCategory == "content javascript")
- {
- webdeveloper_updateJavaScriptStatus(error);
- }
- else if(errorCategory && errorCategory == "CSS Parser")
- {
- webdeveloper_updateCSSStatus(error);
- }
- else if(sourceName && sourceName.indexOf("chrome://webdeveloper/") != -1 && webdeveloper_getBooleanPreference("webdeveloper.debug", true))
- {
- webdeveloper_openErrorConsole(false);
- }
- }
- catch(exception)
- {
- // Do nothing
- }
- }
-
- return false;
- }
-}