diff --git a/xpfe/components/jar.mn b/xpfe/components/jar.mn
index 3fe96ff57bf..f54ebcda79b 100644
--- a/xpfe/components/jar.mn
+++ b/xpfe/components/jar.mn
@@ -49,6 +49,7 @@ comm.jar:
content/communicator/pref/pref-search.xul (prefwindow/resources/content/pref-search.xul)
content/communicator/pref/pref-security.xul (prefwindow/resources/content/pref-security.xul)
content/communicator/pref/pref-smart_browsing.xul (prefwindow/resources/content/pref-smart_browsing.xul)
+ content/communicator/pref/pref-smart_browsing.js (prefwindow/resources/content/pref-smart_browsing.js)
content/communicator/pref/pref-smart_browsing-ac.xul (prefwindow/resources/content/pref-smart_browsing-ac.xul)
content/communicator/pref/pref-smartupdate.xul (prefwindow/resources/content/pref-smartupdate.xul)
content/communicator/pref/pref.xul (prefwindow/resources/content/pref.xul)
diff --git a/xpfe/components/prefwindow/resources/content/pref-smart_browsing.js b/xpfe/components/prefwindow/resources/content/pref-smart_browsing.js
new file mode 100644
index 00000000000..0436ed29f33
--- /dev/null
+++ b/xpfe/components/prefwindow/resources/content/pref-smart_browsing.js
@@ -0,0 +1,170 @@
+/*
+ * The contents of this file are subject to the Mozilla Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is Mozilla Communicator client code, released
+ * August 15, 2001.
+ *
+ * The Initial Developer of the Original Code is Netscape
+ * Communications Corp. Portions created by Netscape Communications
+ * Corp. are Copyright (C) 2001, Netscape Communications Corp. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+
+function Startup()
+{
+ // populate tree
+ var domainPrefField = document.getElementById( "browserRelatedDisabledForDomains" );
+ var domains = domainPrefField.getAttribute("value").split(",");
+ if (domains[0] != "")
+ {
+ for (var i = 0; i < domains.length; i++)
+ createCell( domains[i] );
+ }
+
+ // select the first item
+ selectFirstCell();
+
+ // enable buttons
+ doButtonEnabling();
+}
+
+function selectFirstCell()
+{
+ var domainKids = document.getElementById( "disabledKids" );
+ if (domainKids.childNodes.length >= 1) {
+ var domainTree = document.getElementById( "disabledDomains" );
+ domainTree.selectItem( domainKids.firstChild );
+ }
+}
+
+function addDomain()
+{
+ var domainField = document.getElementById( "addDomain" );
+ if (domainField.value != "") {
+ var domainTree = document.getElementById( "disabledDomains" );
+ domainTree.selectItem( createCell( domainField.value ) );
+ rebuildPrefValue();
+ domainField.value = "";
+ doButtonEnabling();
+ }
+}
+
+
+function removeDomain()
+{
+ var domainTree = document.getElementById( "disabledDomains" );
+ var treeKids = document.getElementById( "disabledKids" );
+ var selectedItems = domainTree.selectedItems;
+ if (selectedItems.length >= 1)
+ {
+ for (var i = 0; i < selectedItems.length; i++)
+ {
+ treeKids.removeChild( selectedItems[i] );
+ }
+ }
+ selectFirstCell();
+ rebuildPrefValue();
+}
+
+function rebuildPrefValue()
+{
+ var treeKids = document.getElementById( "disabledKids" );
+ var string = "";
+ if (treeKids.hasChildNodes())
+ {
+ for (var i = 0; i < treeKids.childNodes.length; i++)
+ {
+ var domain = treeKids.childNodes[i].firstChild.firstChild.getAttribute("label");
+ string += ( domain + "," );
+ }
+ }
+ var domainPrefField = document.getElementById( "browserRelatedDisabledForDomains" );
+ domainPrefField.setAttribute("value",string);
+}
+
+function createCell( aLabel )
+{
+ var treeKids = document.getElementById( "disabledKids" );
+ var item = document.createElement( "treeitem" );
+ var row = document.createElement( "treerow" );
+ var cell = document.createElement( "treecell" );
+ cell.setAttribute( "label", aLabel );
+ row.appendChild( cell );
+ item.appendChild( row );
+ treeKids.appendChild( item );
+ return item;
+}
+
+function treeHandleEvent( aEvent )
+{
+ if (aEvent.keyCode == 46)
+ removeDomain();
+}
+
+function doButtonEnabling()
+{
+ var addDomain = document.getElementById("addDomain");
+ var addDomainButton = document.getElementById("addDomainButton");
+ var prefstring = document.getElementById("browserRelatedDisabledForDomains").getAttribute("value");
+ if( addDomain.value == "" || prefstring.indexOf( addDomain.value + "," ) != -1 )
+ addDomainButton.disabled = true;
+ else
+ addDomainButton.removeAttribute("disabled");
+ if (parent.hPrefWindow.getPrefIsLocked(addDomainButton.getAttribute("prefstring")))
+ addDomainButton.disabled = true;
+ if (parent.hPrefWindow.getPrefIsLocked(addDomain.getAttribute("prefstring")))
+ addDomain.disabled = true;
+}
+
+function moreInfo()
+{
+ var browserURL = null;
+ var regionBundle = document.getElementById("bundle_region");
+ var smartBrowsingURL = regionBundle.getString("smartBrowsingURL");
+ if (smartBrowsingURL) {
+ try {
+ var prefs = Components.classes["@mozilla.org/preferences;1"];
+ if (prefs) {
+ prefs = prefs.getService();
+ if (prefs)
+ prefs = prefs.QueryInterface(Components.interfaces.nsIPref);
+ }
+ if (prefs) {
+ var url = prefs.CopyCharPref("browser.chromeURL");
+ if (url)
+ browserURL = url;
+ }
+ } catch(e) {
+ }
+ if (browserURL == null)
+ browserURL = "chrome://navigator/content/navigator.xul";
+ window.openDialog( browserURL, "_blank", "chrome,all,dialog=no", smartBrowsingURL );
+ }
+}
+
+function showACAdvanced()
+{
+ window.openDialog("chrome://communicator/content/pref/pref-smart_browsing-ac.xul", "",
+ "modal=yes,chrome,resizable=yes",
+ document.getElementById("browserUrlbarAutoFill").getAttribute("value"),
+ document.getElementById("browserUrlbarShowPopup").getAttribute("value"),
+ document.getElementById("browserUrlbarShowSearch").getAttribute("value"));
+}
+
+function receiveACPrefs(aAutoFill, aShowPopup, aShowSearch)
+{
+ document.getElementById("browserUrlbarAutoFill").setAttribute("value", aAutoFill);
+ document.getElementById("browserUrlbarShowPopup").setAttribute("value", aShowPopup);
+ document.getElementById("browserUrlbarShowSearch").setAttribute("value", aShowSearch);
+}
+
diff --git a/xpfe/components/prefwindow/resources/content/pref-smart_browsing.xul b/xpfe/components/prefwindow/resources/content/pref-smart_browsing.xul
index 57c88a4ebba..9e94d44ce47 100644
--- a/xpfe/components/prefwindow/resources/content/pref-smart_browsing.xul
+++ b/xpfe/components/prefwindow/resources/content/pref-smart_browsing.xul
@@ -41,6 +41,9 @@
+
+
+