X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fwebdeveloper%2Fwebdeveloper.js;fp=doc%2Fwebdeveloper%2Fwebdeveloper.js;h=0000000000000000000000000000000000000000;hb=eb7467621891b71883916c90f91bddf4c38d615f;hp=43b1b3332c2bbfd1b985c554985f53bbb0b81d3d;hpb=de6efc861c1f471125cb4d3ab3d0f82572b3d21b;p=pompage.git diff --git a/doc/webdeveloper/webdeveloper.js b/doc/webdeveloper/webdeveloper.js deleted file mode 100644 index 43b1b33..0000000 --- a/doc/webdeveloper/webdeveloper.js +++ /dev/null @@ -1,2099 +0,0 @@ -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; - } -}