michael@0: /* - This Source Code Form is subject to the terms of the Mozilla Public michael@0: - License, v. 2.0. If a copy of the MPL was not distributed with this file, michael@0: - You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: "use strict"; michael@0: michael@0: const Cc = Components.classes; michael@0: const Ci = Components.interfaces; michael@0: const Cu = Components.utils; michael@0: const Cr = Components.results; michael@0: michael@0: Cu.import("resource://gre/modules/XPCOMUtils.jsm"); michael@0: Cu.import("resource://gre/modules/Services.jsm"); michael@0: michael@0: addEventListener("DOMContentLoaded", function onLoad() { michael@0: removeEventListener("DOMContentLoaded", onLoad); michael@0: init_all(); michael@0: }); michael@0: michael@0: function init_all() { michael@0: document.documentElement.instantApply = true; michael@0: gMainPane.init(); michael@0: gPrivacyPane.init(); michael@0: gAdvancedPane.init(); michael@0: gApplicationsPane.init(); michael@0: gContentPane.init(); michael@0: gSyncPane.init(); michael@0: gSecurityPane.init(); michael@0: var initFinished = document.createEvent("Event"); michael@0: initFinished.initEvent("Initialized", true, true); michael@0: document.dispatchEvent(initFinished); michael@0: michael@0: let categories = document.getElementById("categories"); michael@0: categories.addEventListener("select", event => gotoPref(event.target.value)); michael@0: michael@0: if (history.length > 1 && history.state) { michael@0: selectCategory(history.state); michael@0: } else { michael@0: history.replaceState("paneGeneral", document.title); michael@0: } michael@0: } michael@0: michael@0: function selectCategory(name) { michael@0: let categories = document.getElementById("categories"); michael@0: let item = categories.querySelector(".category[value=" + name + "]"); michael@0: categories.selectedItem = item; michael@0: } michael@0: michael@0: function gotoPref(page) { michael@0: window.history.replaceState(page, document.title); michael@0: search(page, "data-category"); michael@0: } michael@0: michael@0: function search(aQuery, aAttribute) { michael@0: let elements = document.getElementById("mainPrefPane").children; michael@0: for (let element of elements) { michael@0: let attributeValue = element.getAttribute(aAttribute); michael@0: element.hidden = (attributeValue != aQuery); michael@0: } michael@0: }