home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 123 / cdrom123.iso / essenc / extens / wweb / Web Developer.xpi / chrome / webdeveloper.jar / content / webdeveloper / options / options.js < prev    next >
Encoding:
Text File  |  2004-11-21  |  51.5 KB  |  1,172 lines

  1. var webdeveloper_optionsDataBoolean = new Array();
  2. var webdeveloper_optionsDataInteger = new Array();
  3. var webdeveloper_optionsDataString  = new Array();
  4. var webdeveloper_resizeDescription  = null;
  5. var webdeveloper_resizeHeight       = null;
  6. var webdeveloper_resizeWidth        = null;
  7. var webdeveloper_toolDescription    = null;
  8. var webdeveloper_toolKey            = null;
  9. var webdeveloper_toolURL            = null;
  10.  
  11. // Adds a resize option
  12. function webdeveloper_addResize()
  13. {
  14.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  15.     const resizeBox    = pageDocument.getElementById("webdeveloper-listbox");
  16.  
  17.     window.openDialog("chrome://webdeveloper/content/options/dialogs/resize.xul", "webdeveloper-resize-dialog", "centerscreen,chrome,modal", "add");
  18.  
  19.     // If the description, height and width are set
  20.     if(webdeveloper_resizeDescription && webdeveloper_resizeHeight && webdeveloper_resizeWidth)
  21.     {
  22.         var listCell = pageDocument.createElement("listcell");
  23.         var listItem = pageDocument.createElement("listitem");
  24.  
  25.         listCell.setAttribute("label", webdeveloper_resizeDescription);
  26.         listItem.appendChild(listCell);
  27.  
  28.         listCell = pageDocument.createElement("listcell");
  29.         listCell.setAttribute("label", webdeveloper_resizeWidth);
  30.         listItem.appendChild(listCell);
  31.  
  32.         listCell = pageDocument.createElement("listcell");
  33.         listCell.setAttribute("label", webdeveloper_resizeHeight);
  34.         listItem.appendChild(listCell);
  35.  
  36.         resizeBox.selectItem(resizeBox.appendChild(listItem));
  37.     }
  38. }
  39.  
  40. // Adds a tool
  41. function webdeveloper_addTool()
  42. {
  43.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  44.     const toolBox      = pageDocument.getElementById("webdeveloper-listbox");
  45.  
  46.     window.openDialog("chrome://webdeveloper/content/options/dialogs/tool.xul", "webdeveloper-tool-dialog", "centerscreen,chrome,modal", "add");
  47.  
  48.     // If the description and URL are set
  49.     if(webdeveloper_toolDescription && webdeveloper_toolURL)
  50.     {
  51.         var listCell = pageDocument.createElement("listcell");
  52.         var listItem = pageDocument.createElement("listitem");
  53.  
  54.         listCell.setAttribute("label", webdeveloper_toolDescription);
  55.         listItem.appendChild(listCell);
  56.  
  57.         listCell = pageDocument.createElement("listcell");
  58.         listCell.setAttribute("label", webdeveloper_toolURL);
  59.         listCell.setAttribute("crop", "end");
  60.         listItem.appendChild(listCell);
  61.  
  62.         listCell = pageDocument.createElement("listcell");
  63.         listCell.setAttribute("label", webdeveloper_toolKey);
  64.         listItem.appendChild(listCell);
  65.  
  66.         toolBox.selectItem(toolBox.appendChild(listItem));
  67.     }
  68. }
  69.  
  70. // Handles changing the options page
  71. function webdeveloper_changePage(pageList)
  72. {
  73.     webdeveloper_storeOptions();
  74.  
  75.     document.getElementById("webdeveloper-options-iframe").setAttribute("src", pageList.selectedItem.getAttribute("value"));
  76. }
  77.  
  78. // Deletes a resize option
  79. function webdeveloper_deleteResize()
  80. {
  81.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  82.     const resizeBox    = pageDocument.getElementById("webdeveloper-listbox");
  83.     const selectedItem = resizeBox.selectedItem;
  84.     const stringBundle = document.getElementById("webdeveloper-string-bundle");
  85.  
  86.     // If an item is selected and the deletion is confirmed
  87.     if(selectedItem && confirm(stringBundle.getString("webdeveloper_resizeDeleteConfirmation")))
  88.     {
  89.         resizeBox.removeChild(selectedItem);
  90.     }
  91. }
  92.  
  93. // Deletes a tool
  94. function webdeveloper_deleteTool()
  95. {
  96.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  97.     const stringBundle = document.getElementById("webdeveloper-string-bundle");
  98.     const toolBox      = pageDocument.getElementById("webdeveloper-listbox");
  99.     const selectedItem = toolBox.selectedItem;
  100.  
  101.     // If an item is selected and the deletion is confirmed
  102.     if(selectedItem && confirm(stringBundle.getString("webdeveloper_toolDeleteConfirmation")))
  103.     {
  104.         toolBox.removeChild(selectedItem);
  105.     }
  106. }
  107.  
  108. // Edits a resize option
  109. function webdeveloper_editResize()
  110. {
  111.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  112.     const resizeBox    = pageDocument.getElementById("webdeveloper-listbox");
  113.     const selectedItem = resizeBox.selectedItem;
  114.  
  115.     // If an option is selected
  116.     if(selectedItem)
  117.     {
  118.         window.openDialog("chrome://webdeveloper/content/options/dialogs/resize.xul", "webdeveloper-resize-dialog", "centerscreen,chrome,modal", "edit", selectedItem.childNodes[0].getAttribute("label"), selectedItem.childNodes[1].getAttribute("label"), selectedItem.childNodes[2].getAttribute("label"));
  119.  
  120.         // If the description, height and width are set
  121.         if(webdeveloper_resizeDescription && webdeveloper_resizeHeight && webdeveloper_resizeWidth)
  122.         {
  123.             var listCell = pageDocument.createElement("listcell");
  124.  
  125.             webdeveloper_removeAllChildNodes(selectedItem);
  126.  
  127.             listCell.setAttribute("label", webdeveloper_resizeDescription);
  128.             selectedItem.appendChild(listCell);
  129.  
  130.             listCell = pageDocument.createElement("listcell");
  131.             listCell.setAttribute("label", webdeveloper_resizeWidth);
  132.             selectedItem.appendChild(listCell);
  133.  
  134.             listCell = pageDocument.createElement("listcell");
  135.             listCell.setAttribute("label", webdeveloper_resizeHeight);
  136.             selectedItem.appendChild(listCell);
  137.         }
  138.     }
  139. }
  140.  
  141. // Edits a tool
  142. function webdeveloper_editTool()
  143. {
  144.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  145.     const toolBox      = pageDocument.getElementById("webdeveloper-listbox");
  146.     const selectedItem = toolBox.selectedItem;
  147.  
  148.     // If an option is selected
  149.     if(selectedItem)
  150.     {
  151.         window.openDialog("chrome://webdeveloper/content/options/dialogs/tool.xul", "webdeveloper-tool-dialog", "centerscreen,chrome,modal", "edit", selectedItem.childNodes[0].getAttribute("label"), selectedItem.childNodes[1].getAttribute("label"), selectedItem.childNodes[2].getAttribute("label"));
  152.  
  153.         // If the description and url are set
  154.         if(webdeveloper_toolDescription && webdeveloper_toolURL)
  155.         {
  156.             var listCell = pageDocument.createElement("listcell");
  157.  
  158.             webdeveloper_removeAllChildNodes(selectedItem);
  159.  
  160.             listCell.setAttribute("label", webdeveloper_toolDescription);
  161.             selectedItem.appendChild(listCell);
  162.  
  163.             listCell = pageDocument.createElement("listcell");
  164.             listCell.setAttribute("label", webdeveloper_toolURL);
  165.             listCell.setAttribute("crop", "end");
  166.             selectedItem.appendChild(listCell);
  167.  
  168.             listCell = pageDocument.createElement("listcell");
  169.             listCell.setAttribute("label", webdeveloper_toolKey);
  170.             selectedItem.appendChild(listCell);
  171.         }
  172.     }
  173. }
  174.  
  175. // Initializes the colors page
  176. function webdeveloper_initializeColors()
  177. {
  178.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  179.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  180.  
  181.     // If the feature tooltip text color is set
  182.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.text"] != "undefined")
  183.     {
  184.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.text").color = webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.text"].trim();
  185.     }
  186.     else if(preferencesService.prefHasUserValue("webdeveloper.color.feature.tooltip.text"))
  187.     {
  188.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.text").color = preferencesService.getCharPref("webdeveloper.color.feature.tooltip.text").trim();
  189.     }
  190.  
  191.     // If the feature tooltip background color is set
  192.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.background"] != "undefined")
  193.     {
  194.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.background").color = webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.background"].trim();
  195.     }
  196.     else if(preferencesService.prefHasUserValue("webdeveloper.color.feature.tooltip.background"))
  197.     {
  198.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.background").color = preferencesService.getCharPref("webdeveloper.color.feature.tooltip.background").trim();
  199.     }
  200.  
  201.     // If the feature tooltip opacity is set
  202.     if(typeof webdeveloper_optionsDataString["webdeveloper.feature.tooltip.opacity"] != "undefined")
  203.     {
  204.         pageDocument.getElementById("webdeveloper.feature.tooltip.opacity").value = webdeveloper_optionsDataString["webdeveloper.feature.tooltip.opacity"];
  205.     }
  206.     else if(preferencesService.prefHasUserValue("webdeveloper.feature.tooltip.opacity"))
  207.     {
  208.         pageDocument.getElementById("webdeveloper.feature.tooltip.opacity").value = preferencesService.getCharPref("webdeveloper.feature.tooltip.opacity");
  209.     }
  210.  
  211.     // If the class text color is set
  212.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.class.text"] != "undefined")
  213.     {
  214.         pageDocument.getElementById("webdeveloper.color.class.text").color = webdeveloper_optionsDataString["webdeveloper.color.class.text"].trim();
  215.     }
  216.     else if(preferencesService.prefHasUserValue("webdeveloper.color.class.text"))
  217.     {
  218.         pageDocument.getElementById("webdeveloper.color.class.text").color = preferencesService.getCharPref("webdeveloper.color.class.text").trim();
  219.     }
  220.  
  221.     // If the class background color is set
  222.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.class.background"] != "undefined")
  223.     {
  224.         pageDocument.getElementById("webdeveloper.color.class.background").color = webdeveloper_optionsDataString["webdeveloper.color.class.background"].trim();
  225.     }
  226.     else if(preferencesService.prefHasUserValue("webdeveloper.color.class.background"))
  227.     {
  228.         pageDocument.getElementById("webdeveloper.color.class.background").color = preferencesService.getCharPref("webdeveloper.color.class.background").trim();
  229.     }
  230.  
  231.     // If the ID text color is set
  232.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.text"] != "undefined")
  233.     {
  234.         pageDocument.getElementById("webdeveloper.color.id.text").color = webdeveloper_optionsDataString["webdeveloper.color.id.text"].trim();
  235.     }
  236.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.text"))
  237.     {
  238.         pageDocument.getElementById("webdeveloper.color.id.text").color = preferencesService.getCharPref("webdeveloper.color.id.text").trim();
  239.     }
  240.  
  241.     // If the ID background color is set
  242.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.background"] != "undefined")
  243.     {
  244.         pageDocument.getElementById("webdeveloper.color.id.background").color = webdeveloper_optionsDataString["webdeveloper.color.id.background"].trim();
  245.     }
  246.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.background"))
  247.     {
  248.         pageDocument.getElementById("webdeveloper.color.id.background").color = preferencesService.getCharPref("webdeveloper.color.id.background").trim();
  249.     }
  250.  
  251.     // If the ID and class text color is set
  252.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.class.text"] != "undefined")
  253.     {
  254.         pageDocument.getElementById("webdeveloper.color.id.class.text").color = webdeveloper_optionsDataString["webdeveloper.color.id.class.text"].trim();
  255.     }
  256.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.class.text"))
  257.     {
  258.         pageDocument.getElementById("webdeveloper.color.id.class.text").color = preferencesService.getCharPref("webdeveloper.color.id.class.text").trim();
  259.     }
  260.  
  261.     // If the ID and class background color is set
  262.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.class.background"] != "undefined")
  263.     {
  264.         pageDocument.getElementById("webdeveloper.color.id.class.background").color = webdeveloper_optionsDataString["webdeveloper.color.id.class.background"].trim();
  265.     }
  266.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.class.background"))
  267.     {
  268.         pageDocument.getElementById("webdeveloper.color.id.class.background").color = preferencesService.getCharPref("webdeveloper.color.id.class.background").trim();
  269.     }
  270. }
  271.  
  272. // Initializes the forms page
  273. function webdeveloper_initializeForms()
  274. {
  275.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  276.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  277.  
  278.     // If the populate form fields email preference is set
  279.     if(typeof webdeveloper_optionsDataString["webdeveloper.populate.form.fields.email"] != "undefined")
  280.     {
  281.         pageDocument.getElementById("webdeveloper.populate.form.fields.email").value = webdeveloper_optionsDataString["webdeveloper.populate.form.fields.email"];
  282.     }
  283.     else if(preferencesService.prefHasUserValue("webdeveloper.populate.form.fields.email"))
  284.     {
  285.         pageDocument.getElementById("webdeveloper.populate.form.fields.email").value = preferencesService.getCharPref("webdeveloper.populate.form.fields.email");
  286.     }
  287. }
  288.  
  289. // Initializes the general page
  290. function webdeveloper_initializeGeneral()
  291. {
  292.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  293.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  294.  
  295.     // If the hide menu preference is set
  296.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.menu.hide"] != "undefined")
  297.     {
  298.         pageDocument.getElementById("webdeveloper.menu.hide").checked = webdeveloper_optionsDataBoolean["webdeveloper.menu.hide"];
  299.     }
  300.     else if(preferencesService.prefHasUserValue("webdeveloper.menu.hide"))
  301.     {
  302.         pageDocument.getElementById("webdeveloper.menu.hide").checked = preferencesService.getBoolPref("webdeveloper.menu.hide");
  303.     }
  304.     else
  305.     {
  306.         pageDocument.getElementById("webdeveloper.menu.hide").checked = false;
  307.     }
  308.  
  309.     // If the hide context menu preference is set
  310.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.context.hide"] != "undefined")
  311.     {
  312.         pageDocument.getElementById("webdeveloper.context.hide").checked = webdeveloper_optionsDataBoolean["webdeveloper.context.hide"];
  313.     }
  314.     else if(preferencesService.prefHasUserValue("webdeveloper.context.hide"))
  315.     {
  316.         pageDocument.getElementById("webdeveloper.context.hide").checked = preferencesService.getBoolPref("webdeveloper.context.hide");
  317.     }
  318.     else
  319.     {
  320.         pageDocument.getElementById("webdeveloper.context.hide").checked = false;
  321.     }
  322.  
  323.     // If the show outlined element names preference is set
  324.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.outline.show.element.names"] != "undefined")
  325.     {
  326.         pageDocument.getElementById("webdeveloper.outline.show.element.names").checked = webdeveloper_optionsDataBoolean["webdeveloper.outline.show.element.names"];
  327.     }
  328.     else if(preferencesService.prefHasUserValue("webdeveloper.outline.show.element.names"))
  329.     {
  330.         pageDocument.getElementById("webdeveloper.outline.show.element.names").checked = preferencesService.getBoolPref("webdeveloper.outline.show.element.names");
  331.     }
  332.     else
  333.     {
  334.         pageDocument.getElementById("webdeveloper.outline.show.element.names").checked = false;
  335.     }
  336.  
  337.     // If the toolbar icons preference is set
  338.     if(typeof webdeveloper_optionsDataString["webdeveloper.toolbar.icons"] != "undefined")
  339.     {
  340.         pageDocument.getElementById("webdeveloper.toolbar.icons").value = webdeveloper_optionsDataString["webdeveloper.toolbar.icons"];
  341.     }
  342.     else if(preferencesService.prefHasUserValue("webdeveloper.toolbar.icons"))
  343.     {
  344.         pageDocument.getElementById("webdeveloper.toolbar.icons").value = preferencesService.getCharPref("webdeveloper.toolbar.icons");
  345.     }
  346.     else
  347.     {
  348.         pageDocument.getElementById("webdeveloper.toolbar.icons").selectedIndex = 0;
  349.     }
  350.  
  351.     // If the open tabs preference is set
  352.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.tabs"] != "undefined")
  353.     {
  354.         pageDocument.getElementById("webdeveloper.open.tabs").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.tabs"];
  355.     }
  356.     else if(preferencesService.prefHasUserValue("webdeveloper.open.tabs"))
  357.     {
  358.         pageDocument.getElementById("webdeveloper.open.tabs").checked = preferencesService.getBoolPref("webdeveloper.open.tabs");
  359.     }
  360.  
  361.     // If the open tabs background preference is set
  362.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.tabs.background"] != "undefined")
  363.     {
  364.         pageDocument.getElementById("webdeveloper.open.tabs.background").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.tabs.background"];
  365.     }
  366.     else if(preferencesService.prefHasUserValue("webdeveloper.open.tabs.background"))
  367.     {
  368.         pageDocument.getElementById("webdeveloper.open.tabs.background").checked = preferencesService.getBoolPref("webdeveloper.open.tabs.background");
  369.     }
  370.     else
  371.     {
  372.         pageDocument.getElementById("webdeveloper.open.tabs.background").checked = false;
  373.     }
  374.  
  375.     // If the view source in tab preference is set
  376.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.view.source.tab"] != "undefined")
  377.     {
  378.         pageDocument.getElementById("webdeveloper.view.source.tab").checked = webdeveloper_optionsDataBoolean["webdeveloper.view.source.tab"];
  379.     }
  380.     else if(preferencesService.prefHasUserValue("webdeveloper.view.source.tab"))
  381.     {
  382.         pageDocument.getElementById("webdeveloper.view.source.tab").checked = preferencesService.getBoolPref("webdeveloper.view.source.tab");
  383.     }
  384.     else
  385.     {
  386.         pageDocument.getElementById("webdeveloper.view.source.tab").checked = false;
  387.     }
  388.  
  389.     pageDocument.getElementById("webdeveloper.open.tabs.background").disabled = !pageDocument.getElementById("webdeveloper.open.tabs").checked;
  390. }
  391.  
  392. // Initializes the JavaScript page
  393. function webdeveloper_initializeJavaScript()
  394. {
  395.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  396.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  397.  
  398.     // If the JavaScript options strict preference is set
  399.     if(typeof webdeveloper_optionsDataBoolean["javascript.options.strict"] != "undefined")
  400.     {
  401.         pageDocument.getElementById("webdeveloper.javascript.options.strict").checked = webdeveloper_optionsDataBoolean["javascript.options.strict"];
  402.     }
  403.     else if(preferencesService.prefHasUserValue("javascript.options.strict"))
  404.     {
  405.         pageDocument.getElementById("webdeveloper.javascript.options.strict").checked = preferencesService.getBoolPref("javascript.options.strict");
  406.     }
  407.     else
  408.     {
  409.         pageDocument.getElementById("webdeveloper.javascript.options.strict").checked = false;
  410.     }
  411.  
  412.     // If the open JavaScript console warning preference is set
  413.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.warning"] != "undefined")
  414.     {
  415.         pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.warning"];
  416.     }
  417.     else if(preferencesService.prefHasUserValue("webdeveloper.open.javascript.console.warning"))
  418.     {
  419.         pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked = preferencesService.getBoolPref("webdeveloper.open.javascript.console.warning");
  420.     }
  421.     else
  422.     {
  423.         pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked = false;
  424.     }
  425.  
  426.     // If the open JavaScript console error preference is set
  427.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.error"] != "undefined")
  428.     {
  429.         pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.error"];
  430.     }
  431.     else if(preferencesService.prefHasUserValue("webdeveloper.open.javascript.console.error"))
  432.     {
  433.         pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked = preferencesService.getBoolPref("webdeveloper.open.javascript.console.error");
  434.     }
  435.     else
  436.     {
  437.         pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked = false;
  438.     }
  439. }
  440.  
  441. // Initializes the keys page
  442. function webdeveloper_initializeKeys()
  443. {
  444.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  445.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  446.  
  447.     var mainDocument = null;
  448.  
  449.     // If there is a parent window
  450.     if(window.opener)
  451.     {
  452.         // If there is a grand parent window
  453.         if(window.opener.opener)
  454.         {
  455.             mainDocument = window.opener.opener.document;
  456.         }
  457.         else
  458.         {
  459.             mainDocument = window.opener.document;
  460.         }
  461.     }
  462.     else
  463.     {
  464.         mainDocument = document;
  465.     }
  466.  
  467.     // If a main document was found
  468.     if(mainDocument)
  469.     {
  470.         const rows         = pageDocument.getElementById("webdeveloper-key-rows");
  471.         const stringBundle = document.getElementById("webdeveloper-string-bundle");
  472.  
  473.         var description = null;
  474.         var hbox        = null;
  475.         var id          = null;
  476.         var label       = null;
  477.         var key         = null;
  478.         var keys        = null;
  479.         var keySet      = mainDocument.getElementById("mainKeyset");
  480.         var row         = null;
  481.         var spacer      = null;
  482.         var textbox     = null;
  483.  
  484.         // If the key set was not found
  485.         if(!keySet)
  486.         {
  487.             keySet = mainDocument.getElementById("navKeys");
  488.         }
  489.  
  490.         keys = keySet.childNodes;
  491.  
  492.         // Loop through the keys
  493.         for(var i = 0; i < keys.length; i++)
  494.         {
  495.             key = keys.item(i);
  496.  
  497.             // If the key has and id attribute starting with webdeveloper-
  498.             if(key.hasAttribute("id") && key.getAttribute("id").indexOf("webdeveloper-") == 0)
  499.             {
  500.                 description = pageDocument.createElement("description");
  501.                 hbox        = pageDocument.createElement("hbox");
  502.                 id          = key.getAttribute("id").split("-").join(".");
  503.                 label       = pageDocument.createElement("label");
  504.                 row         = pageDocument.createElement("row");
  505.                 spacer      = pageDocument.createElement("spacer");
  506.                 textbox     = pageDocument.createElement("textbox");
  507.  
  508.                 label.setAttribute("value", key.getAttribute("label"));
  509.                 label.setAttribute("control", id);
  510.                 row.appendChild(label);
  511.  
  512.                 spacer.setAttribute("class", "small-spacer");
  513.                 row.appendChild(spacer);
  514.  
  515.                 description.setAttribute("value", stringBundle.getString("webdeveloper_keyboardShortcutsModifier"));
  516.                 hbox.appendChild(description);
  517.  
  518.                 // If the option is defined
  519.                 if(typeof webdeveloper_optionsDataString[id] != "undefined")
  520.                 {
  521.                     textbox.setAttribute("value", webdeveloper_optionsDataString[id].trim());
  522.                 }
  523.                 else if(preferencesService.prefHasUserValue(id))
  524.                 {
  525.                     textbox.setAttribute("value", preferencesService.getCharPref(id).trim());
  526.                 }
  527.  
  528.                 textbox.setAttribute("id", id);
  529.                 textbox.setAttribute("size", "1");
  530.                 textbox.setAttribute("maxlength", "1");
  531.                 hbox.appendChild(textbox);
  532.  
  533.                 hbox.setAttribute("align", "center");
  534.                 row.appendChild(hbox);
  535.  
  536.                 row.setAttribute("align", "center");
  537.                 rows.appendChild(row);
  538.             }
  539.         }
  540.     }
  541. }
  542.  
  543. // Initializes the options dialog
  544. function webdeveloper_initializeOptions()
  545. {
  546.     const selectedPage = document.getElementById("webdeveloper-page-list").selectedItem.getAttribute("value");
  547.  
  548.     // If this is the general page
  549.     if(selectedPage.indexOf("general") != -1)
  550.     {
  551.         webdeveloper_initializeGeneral();
  552.     }
  553.     else if(selectedPage.indexOf("colors") != -1)
  554.     {
  555.         webdeveloper_initializeColors();
  556.     }
  557.     else if(selectedPage.indexOf("forms") != -1)
  558.     {
  559.         webdeveloper_initializeForms();
  560.     }
  561.     else if(selectedPage.indexOf("javascript") != -1)
  562.     {
  563.         webdeveloper_initializeJavaScript();
  564.     }
  565.     else if(selectedPage.indexOf("keys") != -1)
  566.     {
  567.         webdeveloper_initializeKeys();
  568.     }
  569.     else if(selectedPage.indexOf("resize") != -1)
  570.     {
  571.         webdeveloper_initializeResize();
  572.     }
  573.     else if(selectedPage.indexOf("sidebar") != -1)
  574.     {
  575.         webdeveloper_initializeSidebar();
  576.     }
  577.     else if(selectedPage.indexOf("tidied_html") != -1)
  578.     {
  579.         webdeveloper_initializeTidiedHTML();
  580.     }
  581.     else if(selectedPage.indexOf("tools") != -1)
  582.     {
  583.         webdeveloper_initializeTools();
  584.     }
  585. }
  586.  
  587. // Initializes the resize page
  588. function webdeveloper_initializeResize()
  589. {
  590.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  591.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  592.     const resizeBox          = pageDocument.getElementById("webdeveloper-listbox");
  593.  
  594.     var description      = null;
  595.     var descriptionValue = null;
  596.     var height           = null;
  597.     var heightValue      = null;
  598.     var listCell         = null;
  599.     var listItem         = null;
  600.     var resizeCount      = 0;
  601.     var width            = null;
  602.     var widthValue       = null;
  603.  
  604.     // If the resize count preference is set
  605.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.resize.count"] != "undefined")
  606.     {
  607.         resizeCount = webdeveloper_optionsDataInteger["webdeveloper.resize.count"];
  608.     }
  609.     else if(preferencesService.prefHasUserValue("webdeveloper.resize.count"))
  610.     {
  611.         resizeCount = preferencesService.getIntPref("webdeveloper.resize.count");
  612.     }
  613.  
  614.     // Loop through the possible resize options
  615.     for(var i = 1; i <= resizeCount; i++)
  616.     {
  617.         description = "webdeveloper.resize." + i + ".description";
  618.         height      = "webdeveloper.resize." + i + ".height";
  619.         width       = "webdeveloper.resize." + i + ".width";
  620.  
  621.         // If the description is set
  622.         if(typeof webdeveloper_optionsDataString[description] != "undefined")
  623.         {
  624.             descriptionValue = webdeveloper_optionsDataString[description].trim();
  625.         }
  626.         else if(preferencesService.prefHasUserValue(description))
  627.         {
  628.             descriptionValue = preferencesService.getCharPref(description).trim();
  629.         }
  630.         else
  631.         {
  632.             descriptionValue = null;
  633.         }
  634.  
  635.         // If the width is set
  636.         if(typeof webdeveloper_optionsDataInteger[width] != "undefined")
  637.         {
  638.             widthValue = webdeveloper_optionsDataInteger[width];
  639.         }
  640.         else if(preferencesService.prefHasUserValue(width))
  641.         {
  642.             widthValue = preferencesService.getIntPref(width);
  643.         }
  644.         else
  645.         {
  646.             widthValue = null;
  647.         }
  648.  
  649.         // If the height is set
  650.         if(typeof webdeveloper_optionsDataInteger[height] != "undefined")
  651.         {
  652.             heightValue = webdeveloper_optionsDataInteger[height];
  653.         }
  654.         else if(preferencesService.prefHasUserValue(height))
  655.         {
  656.             heightValue = preferencesService.getIntPref(height);
  657.         }
  658.         else
  659.         {
  660.             heightValue = null;
  661.         }
  662.  
  663.         // If the description, width and height are set
  664.         if(descriptionValue && widthValue && heightValue)
  665.         {
  666.             listItem = pageDocument.createElement("listitem");
  667.  
  668.             listCell = pageDocument.createElement("listcell");
  669.             listCell.setAttribute("label", descriptionValue);
  670.             listItem.appendChild(listCell);
  671.  
  672.             listCell = pageDocument.createElement("listcell");
  673.             listCell.setAttribute("label", widthValue);
  674.             listItem.appendChild(listCell);
  675.  
  676.             listCell = pageDocument.createElement("listcell");
  677.             listCell.setAttribute("label", heightValue);
  678.             listItem.appendChild(listCell);
  679.  
  680.             resizeBox.appendChild(listItem);
  681.         }
  682.     }
  683. }
  684.  
  685. // Initializes the sidebar page
  686. function webdeveloper_initializeSidebar()
  687. {
  688.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  689.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  690.  
  691.     // If the edit CSS font preference is set
  692.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.edit.css.font"] != "undefined")
  693.     {
  694.         pageDocument.getElementById("webdeveloper.edit.css.font").value = webdeveloper_optionsDataInteger["webdeveloper.edit.css.font"];
  695.     }
  696.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.font"))
  697.     {
  698.         pageDocument.getElementById("webdeveloper.edit.css.font").value = preferencesService.getIntPref("webdeveloper.edit.css.font");
  699.     }
  700.  
  701.     // If the edit CSS wrap preference is set
  702.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.edit.css.wrap"] != "undefined")
  703.     {
  704.         pageDocument.getElementById("webdeveloper.edit.css.wrap").checked = webdeveloper_optionsDataBoolean["webdeveloper.edit.css.wrap"];
  705.     }
  706.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.wrap"))
  707.     {
  708.         pageDocument.getElementById("webdeveloper.edit.css.wrap").checked = preferencesService.getBoolPref("webdeveloper.edit.css.wrap");
  709.     }
  710.  
  711.     // If the edit CSS text color is set
  712.     if(typeof webdeveloper_optionsDataString["webdeveloper.edit.css.color.text"] != "undefined")
  713.     {
  714.         pageDocument.getElementById("webdeveloper.edit.css.color.text").color = webdeveloper_optionsDataString["webdeveloper.edit.css.color.text"].trim();
  715.     }
  716.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.color.text"))
  717.     {
  718.         pageDocument.getElementById("webdeveloper.edit.css.color.text").color = preferencesService.getCharPref("webdeveloper.edit.css.color.text").trim();
  719.     }
  720.  
  721.     // If the edit CSS background color is set
  722.     if(typeof webdeveloper_optionsDataString["webdeveloper.edit.css.color.background"] != "undefined")
  723.     {
  724.         pageDocument.getElementById("webdeveloper.edit.css.color.background").color = webdeveloper_optionsDataString["webdeveloper.edit.css.color.background"].trim();
  725.     }
  726.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.color.background"))
  727.     {
  728.         pageDocument.getElementById("webdeveloper.edit.css.color.background").color = preferencesService.getCharPref("webdeveloper.edit.css.color.background").trim();
  729.     }
  730.  
  731.     // If the edit CSS update frequency preference is set
  732.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"] != "undefined")
  733.     {
  734.         pageDocument.getElementById("webdeveloper.edit.css.update.frequency").value = webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"];
  735.     }
  736.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.update.frequency"))
  737.     {
  738.         pageDocument.getElementById("webdeveloper.edit.css.update.frequency").value = preferencesService.getIntPref("webdeveloper.edit.css.update.frequency");
  739.     }
  740.  
  741.     // If the view style information sidebar preference is set
  742.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.view.style.information.sidebar"] != "undefined")
  743.     {
  744.         pageDocument.getElementById("webdeveloper.view.style.information.sidebar").checked = webdeveloper_optionsDataBoolean["webdeveloper.view.style.information.sidebar"];
  745.     }
  746.     else if(preferencesService.prefHasUserValue("webdeveloper.view.style.information.sidebar"))
  747.     {
  748.         pageDocument.getElementById("webdeveloper.view.style.information.sidebar").checked = preferencesService.getBoolPref("webdeveloper.view.style.information.sidebar");
  749.     }
  750. }
  751.  
  752. // Initializes the tidied HTML page
  753. function webdeveloper_initializeTidiedHTML()
  754. {
  755.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  756.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  757.  
  758.     // If the close <br> preference is set
  759.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.close.br"] != "undefined")
  760.     {
  761.         pageDocument.getElementById("webdeveloper.tidied.html.close.br").checked = webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.close.br"];
  762.     }
  763.     else if(preferencesService.prefHasUserValue("webdeveloper.tidied.html.close.br"))
  764.     {
  765.         pageDocument.getElementById("webdeveloper.tidied.html.close.br").checked = preferencesService.getBoolPref("webdeveloper.tidied.html.close.br");
  766.     }
  767.  
  768.     // If the escape ampersand preference is set
  769.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.escape.ampersand"] != "undefined")
  770.     {
  771.         pageDocument.getElementById("webdeveloper.tidied.html.escape.ampersand").checked = webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.escape.ampersand"];
  772.     }
  773.     else if(preferencesService.prefHasUserValue("webdeveloper.tidied.html.escape.ampersand"))
  774.     {
  775.         pageDocument.getElementById("webdeveloper.tidied.html.escape.ampersand").checked = preferencesService.getBoolPref("webdeveloper.tidied.html.escape.ampersand");
  776.     }
  777. }
  778.  
  779. // Initializes the tools page
  780. function webdeveloper_initializeTools()
  781. {
  782.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  783.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  784.     const toolBox            = pageDocument.getElementById("webdeveloper-listbox");
  785.  
  786.     var description      = null;
  787.     var descriptionValue = null;
  788.     var key              = null;
  789.     var keyValue         = null;
  790.     var listCell         = null;
  791.     var listItem         = null;
  792.     var toolCount        = 0;
  793.     var url              = null;
  794.     var urlValue         = null;
  795.  
  796.     // If the tool count preference is set
  797.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.tool.count"] != "undefined")
  798.     {
  799.         toolCount = webdeveloper_optionsDataInteger["webdeveloper.tool.count"];
  800.     }
  801.     else if(preferencesService.prefHasUserValue("webdeveloper.tool.count"))
  802.     {
  803.         toolCount = preferencesService.getIntPref("webdeveloper.tool.count");
  804.     }
  805.  
  806.     // Loop through the possible tools
  807.     for(var i = 1; i <= toolCount; i++)
  808.     {
  809.         description = "webdeveloper.tool." + i + ".description";
  810.         key         = "webdeveloper.tool." + i + ".key";
  811.         url         = "webdeveloper.tool." + i + ".url";
  812.  
  813.         // If the description is set
  814.         if(typeof webdeveloper_optionsDataString[description] != "undefined")
  815.         {
  816.             descriptionValue = webdeveloper_optionsDataString[description].trim();
  817.         }
  818.         else if(preferencesService.prefHasUserValue(description))
  819.         {
  820.             descriptionValue = preferencesService.getCharPref(description).trim();
  821.         }
  822.         else
  823.         {
  824.             descriptionValue = null;
  825.         }
  826.  
  827.         // If the key is set
  828.         if(typeof webdeveloper_optionsDataString[key] != "undefined")
  829.         {
  830.             keyValue = webdeveloper_optionsDataString[key].trim();
  831.         }
  832.         else if(preferencesService.prefHasUserValue(key))
  833.         {
  834.             keyValue = preferencesService.getCharPref(key).trim();
  835.         }
  836.         else
  837.         {
  838.             keyValue = null;
  839.         }
  840.  
  841.         // If the URL is set
  842.         if(typeof webdeveloper_optionsDataString[url] != "undefined")
  843.         {
  844.             urlValue = webdeveloper_optionsDataString[url].trim();
  845.         }
  846.         else if(preferencesService.prefHasUserValue(url))
  847.         {
  848.             urlValue = preferencesService.getCharPref(url).trim();
  849.         }
  850.         else
  851.         {
  852.             urlValue = null;
  853.         }
  854.  
  855.         // If the description and URL are set
  856.         if(descriptionValue && urlValue)
  857.         {
  858.             listItem = pageDocument.createElement("listitem");
  859.  
  860.             listCell = pageDocument.createElement("listcell");
  861.             listCell.setAttribute("label", descriptionValue);
  862.             listItem.appendChild(listCell);
  863.  
  864.             listCell = pageDocument.createElement("listcell");
  865.             listCell.setAttribute("label", urlValue);
  866.             listCell.setAttribute("crop", "end");
  867.             listItem.appendChild(listCell);
  868.  
  869.             listCell = pageDocument.createElement("listcell");
  870.  
  871.             // If the key is set
  872.             if(keyValue)
  873.             {
  874.                 listCell.setAttribute("label", keyValue);
  875.             }
  876.  
  877.             listItem.appendChild(listCell);
  878.  
  879.             toolBox.appendChild(listItem);
  880.        }
  881.     }
  882. }
  883.  
  884. // Moves the selected item down
  885. function webdeveloper_moveDown()
  886. {
  887.     const pageDocument  = document.getElementById("webdeveloper-options-iframe").contentDocument;
  888.     const resizeBox     = pageDocument.getElementById("webdeveloper-listbox");
  889.     const resizeCount   = resizeBox.getRowCount();
  890.     const selectedIndex = resizeBox.selectedIndex;
  891.     const selectedItem  = resizeBox.selectedItem;
  892.  
  893.     // If an item is selected and it is not at the bottom
  894.     if(selectedItem && selectedIndex != resizeCount - 1)
  895.     {
  896.         resizeBox.selectItem(resizeBox.insertBefore(selectedItem, resizeBox.getNextItem(selectedItem, 2)));
  897.     }
  898. }
  899.  
  900. // Moves the selected item up
  901. function webdeveloper_moveUp()
  902. {
  903.     const pageDocument  = document.getElementById("webdeveloper-options-iframe").contentDocument;
  904.     const resizeBox     = pageDocument.getElementById("webdeveloper-listbox");
  905.     const selectedIndex = resizeBox.selectedIndex;
  906.     const selectedItem  = resizeBox.selectedItem;
  907.  
  908.     // If an item is selected and it is not at the top
  909.     if(selectedItem && selectedIndex != 0)
  910.     {
  911.         resizeBox.selectItem(resizeBox.insertBefore(selectedItem, resizeBox.getPreviousItem(selectedItem, 1)));
  912.     }
  913. }
  914.  
  915. // Resets the user's options
  916. function webdeveloper_resetOptions()
  917. {
  918.     const stringBundle = document.getElementById("webdeveloper-string-bundle");
  919.  
  920.     // If the reset is confirmed
  921.     if(confirm(stringBundle.getString("webdeveloper_resetConfirmation")))
  922.     {
  923.         const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  924.  
  925.         webdeveloper_optionsDataBoolean = new Array();
  926.         webdeveloper_optionsDataInteger = new Array();
  927.         webdeveloper_optionsDataString  = new Array();
  928.  
  929.         preferencesService.deleteBranch("webdeveloper.");
  930.         webdeveloper_configureKeyboardShortcuts(true);
  931.         webdeveloper_setupDefaultOptions();
  932.         webdeveloper_initializeOptions();
  933.     }
  934. }
  935.  
  936. // Saves the user's options
  937. function webdeveloper_saveOptions()
  938. {
  939.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  940.  
  941.     var parentWindow = null;
  942.     var option       = null;
  943.     var optionValue  = null;
  944.  
  945.     // Make sure current page is stored
  946.     webdeveloper_storeOptions();
  947.  
  948.     // Loop through the boolean options
  949.     for(option in webdeveloper_optionsDataBoolean)
  950.     {
  951.         preferencesService.setBoolPref(option, webdeveloper_optionsDataBoolean[option]);
  952.     }
  953.  
  954.     // Loop through the integer options
  955.     for(option in webdeveloper_optionsDataInteger)
  956.     {
  957.         optionValue = webdeveloper_optionsDataInteger[option];
  958.  
  959.         // If the option value is set
  960.         if(optionValue)
  961.         {
  962.             preferencesService.setIntPref(option, optionValue);
  963.         }
  964.         else if(preferencesService.prefHasUserValue(option))
  965.         {
  966.             preferencesService.clearUserPref(option);
  967.         }
  968.     }
  969.  
  970.     // Loop through the string options
  971.     for(option in webdeveloper_optionsDataString)
  972.     {
  973.         optionValue = webdeveloper_optionsDataString[option];
  974.  
  975.         // If the option value is set or the preference currently has a value
  976.         if(optionValue || preferencesService.prefHasUserValue(option))
  977.         {
  978.             preferencesService.setCharPref(option, optionValue);
  979.         }
  980.     }
  981. }
  982.  
  983. // Stores the user's options to be saved later
  984. function webdeveloper_storeOptions()
  985. {
  986.     const iFrame             = document.getElementById("webdeveloper-options-iframe");
  987.     const iFrameSrc          = iFrame.getAttribute("src");
  988.     const pageDocument       = iFrame.contentDocument;
  989.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  990.  
  991.     var childNodes  = null;
  992.     var description = null;
  993.     var i           = 0;
  994.     var listItem    = null;
  995.  
  996.     // If this is the colors page
  997.     if(iFrameSrc.indexOf("colors") != -1)
  998.     {
  999.         webdeveloper_optionsDataString["webdeveloper.color.class.background"]           = pageDocument.getElementById("webdeveloper.color.class.background").color;
  1000.         webdeveloper_optionsDataString["webdeveloper.color.class.text"]                 = pageDocument.getElementById("webdeveloper.color.class.text").color;
  1001.         webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.background"] = pageDocument.getElementById("webdeveloper.color.feature.tooltip.background").color;
  1002.         webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.text"]       = pageDocument.getElementById("webdeveloper.color.feature.tooltip.text").color;
  1003.         webdeveloper_optionsDataString["webdeveloper.color.id.background"]              = pageDocument.getElementById("webdeveloper.color.id.background").color;
  1004.         webdeveloper_optionsDataString["webdeveloper.color.id.class.background"]        = pageDocument.getElementById("webdeveloper.color.id.class.background").color;
  1005.         webdeveloper_optionsDataString["webdeveloper.color.id.class.text"]              = pageDocument.getElementById("webdeveloper.color.id.class.text").color;
  1006.         webdeveloper_optionsDataString["webdeveloper.color.id.text"]                    = pageDocument.getElementById("webdeveloper.color.id.text").color;
  1007.         webdeveloper_optionsDataString["webdeveloper.feature.tooltip.opacity"]          = pageDocument.getElementById("webdeveloper.feature.tooltip.opacity").value;
  1008.     }
  1009.     else if(iFrameSrc.indexOf("forms") != -1)
  1010.     {
  1011.         webdeveloper_optionsDataString["webdeveloper.populate.form.fields.email"] = pageDocument.getElementById("webdeveloper.populate.form.fields.email").value;
  1012.     }
  1013.     else if(iFrameSrc.indexOf("general") != -1)
  1014.     {
  1015.         webdeveloper_optionsDataBoolean["webdeveloper.context.hide"]               = pageDocument.getElementById("webdeveloper.context.hide").checked;
  1016.         webdeveloper_optionsDataBoolean["webdeveloper.menu.hide"]                  = pageDocument.getElementById("webdeveloper.menu.hide").checked;
  1017.         webdeveloper_optionsDataBoolean["webdeveloper.open.tabs"]                  = pageDocument.getElementById("webdeveloper.open.tabs").checked;
  1018.         webdeveloper_optionsDataBoolean["webdeveloper.open.tabs.background"]       = pageDocument.getElementById("webdeveloper.open.tabs.background").checked;
  1019.         webdeveloper_optionsDataBoolean["webdeveloper.outline.show.element.names"] = pageDocument.getElementById("webdeveloper.outline.show.element.names").checked;
  1020.         webdeveloper_optionsDataBoolean["webdeveloper.view.source.tab"]            = pageDocument.getElementById("webdeveloper.view.source.tab").checked;
  1021.         webdeveloper_optionsDataString["webdeveloper.toolbar.icons"]               = pageDocument.getElementById("webdeveloper.toolbar.icons").value;
  1022.     }
  1023.     else if(iFrameSrc.indexOf("javascript") != -1)
  1024.     {
  1025.         webdeveloper_optionsDataBoolean["javascript.options.strict"]                    = pageDocument.getElementById("webdeveloper.javascript.options.strict").checked;
  1026.         webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.warning"] = pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked;
  1027.         webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.error"]   = pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked;
  1028.     }
  1029.     else if(iFrameSrc.indexOf("keys") != -1)
  1030.     {
  1031.         const textBoxes = pageDocument.getElementById("webdeveloper-key-rows").getElementsByTagName("textbox");
  1032.  
  1033.         var textbox = null;
  1034.  
  1035.         // Loop through the text boxes
  1036.         for(i = 0; i < textBoxes.length; i++)
  1037.         {
  1038.             textbox = textBoxes.item(i);
  1039.  
  1040.             webdeveloper_optionsDataString[textbox.getAttribute("id")] = textbox.value.trim();
  1041.         }
  1042.     }
  1043.     else if(iFrameSrc.indexOf("resize") != -1)
  1044.     {
  1045.         const resizeBox = pageDocument.getElementById("webdeveloper-listbox");
  1046.  
  1047.         var height      = null;
  1048.         var resizeCount = 0;
  1049.         var width       = null;
  1050.  
  1051.         // If the resize count preference is set
  1052.         if(preferencesService.prefHasUserValue("webdeveloper.resize.count"))
  1053.         {
  1054.             resizeCount = preferencesService.getIntPref("webdeveloper.resize.count");
  1055.         }
  1056.  
  1057.         // Loop through the previous resize options
  1058.         for(i = 1; i <= resizeCount; i++)
  1059.         {
  1060.             description = "webdeveloper.resize." + i + ".description";
  1061.             height      = "webdeveloper.resize." + i + ".height";
  1062.             width       = "webdeveloper.resize." + i + ".width";
  1063.  
  1064.             webdeveloper_optionsDataInteger[height]     = "";
  1065.             webdeveloper_optionsDataInteger[width]      = "";
  1066.             webdeveloper_optionsDataString[description] = "";
  1067.         }
  1068.  
  1069.         resizeCount = resizeBox.getRowCount();
  1070.  
  1071.         // Loop through the possible resize options
  1072.         for(i = 1; i <= resizeCount; i++)
  1073.         {
  1074.             description = "webdeveloper.resize." + i + ".description";
  1075.             height      = "webdeveloper.resize." + i + ".height";
  1076.             listItem    = resizeBox.getItemAtIndex(i - 1);
  1077.             childNodes  = listItem.childNodes;
  1078.             width       = "webdeveloper.resize." + i + ".width";
  1079.  
  1080.             webdeveloper_optionsDataInteger[width]      = listItem.childNodes[1].getAttribute("label");
  1081.             webdeveloper_optionsDataInteger[height]     = listItem.childNodes[2].getAttribute("label");
  1082.             webdeveloper_optionsDataString[description] = listItem.childNodes[0].getAttribute("label").trim();
  1083.         }
  1084.  
  1085.         webdeveloper_optionsDataInteger["webdeveloper.resize.count"] = resizeCount;
  1086.     }
  1087.     else if(iFrameSrc.indexOf("sidebar") != -1)
  1088.     {
  1089.         var updateFrequency = pageDocument.getElementById("webdeveloper.edit.css.update.frequency").value;
  1090.  
  1091.         webdeveloper_optionsDataBoolean["webdeveloper.edit.css.wrap"]                  = pageDocument.getElementById("webdeveloper.edit.css.wrap").checked;
  1092.         webdeveloper_optionsDataBoolean["webdeveloper.view.style.information.sidebar"] = pageDocument.getElementById("webdeveloper.view.style.information.sidebar").checked;
  1093.         webdeveloper_optionsDataInteger["webdeveloper.edit.css.font"]                  = pageDocument.getElementById("webdeveloper.edit.css.font").value;
  1094.         webdeveloper_optionsDataString["webdeveloper.edit.css.color.background"]       = pageDocument.getElementById("webdeveloper.edit.css.color.background").color;
  1095.         webdeveloper_optionsDataString["webdeveloper.edit.css.color.text"]             = pageDocument.getElementById("webdeveloper.edit.css.color.text").color;
  1096.  
  1097.         // If the update frequency is set and is a valid integer and is positive
  1098.         if(updateFrequency && parseInt(updateFrequency) == updateFrequency && updateFrequency >= 0)
  1099.         {
  1100.             webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"] = updateFrequency;
  1101.         }
  1102.         else
  1103.         {
  1104.             webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"] = 0;
  1105.         }
  1106.     }
  1107.     else if(iFrameSrc.indexOf("tidied_html") != -1)
  1108.     {
  1109.         webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.close.br"]         = pageDocument.getElementById("webdeveloper.tidied.html.close.br").checked;
  1110.         webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.escape.ampersand"] = pageDocument.getElementById("webdeveloper.tidied.html.escape.ampersand").checked;
  1111.     }
  1112.     else if(iFrameSrc.indexOf("tools") != -1)
  1113.     {
  1114.         const toolBox = pageDocument.getElementById("webdeveloper-listbox");
  1115.  
  1116.         var key       = null;
  1117.         var toolCount = 0;
  1118.         var url       = null;
  1119.  
  1120.         // If the tool count preference is set
  1121.         if(preferencesService.prefHasUserValue("webdeveloper.tool.count"))
  1122.         {
  1123.             toolCount = preferencesService.getIntPref("webdeveloper.tool.count");
  1124.         }
  1125.  
  1126.         // Loop through the previous tools
  1127.         for(i = 1; i <= toolCount; i++)
  1128.         {
  1129.             description = "webdeveloper.tool." + i + ".description";
  1130.             key         = "webdeveloper.tool." + i + ".key";
  1131.             url         = "webdeveloper.tool." + i + ".url";
  1132.  
  1133.             webdeveloper_optionsDataString[description] = "";
  1134.             webdeveloper_optionsDataString[key]         = "";
  1135.             webdeveloper_optionsDataString[url]         = "";
  1136.         }
  1137.  
  1138.         toolCount = toolBox.getRowCount();
  1139.  
  1140.         // Loop through the possible tools
  1141.         for(i = 1; i <= toolCount; i++)
  1142.         {
  1143.             description = "webdeveloper.tool." + i + ".description";
  1144.             listItem    = toolBox.getItemAtIndex(i - 1);
  1145.             childNodes  = listItem.childNodes;
  1146.             key         = "webdeveloper.tool." + i + ".key";
  1147.             url         = "webdeveloper.tool." + i + ".url";
  1148.  
  1149.             webdeveloper_optionsDataString[description] = listItem.childNodes[0].getAttribute("label").trim();
  1150.             webdeveloper_optionsDataString[key]         = listItem.childNodes[2].getAttribute("label").trim();
  1151.             webdeveloper_optionsDataString[url]         = listItem.childNodes[1].getAttribute("label").trim();
  1152.         }
  1153.  
  1154.         webdeveloper_optionsDataInteger["webdeveloper.tool.count"] = toolCount;
  1155.     }
  1156. }
  1157.  
  1158. // Updates the tab option status
  1159. function webdeveloper_updateTabOptionStatus()
  1160. {
  1161.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  1162.  
  1163.     var disabled = false;
  1164.  
  1165.     // If open tabs is checked
  1166.     if(pageDocument.getElementById("webdeveloper.open.tabs").checked)
  1167.     {
  1168.         disabled = true;
  1169.     }
  1170.  
  1171.     pageDocument.getElementById("webdeveloper.open.tabs.background").disabled = disabled;
  1172. }