git-svn-id: svn://euphorik.ch/pompage@47 02bbb61a-6d21-0410-aba0-cb053bdfd66a
[pompage.git] / doc / webdeveloper / webdeveloper.js
diff --git a/doc/webdeveloper/webdeveloper.js b/doc/webdeveloper/webdeveloper.js
deleted file mode 100644 (file)
index 43b1b33..0000000
+++ /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;
-    }
-}