Merge from mozilla-central.
authorBrendan Eich <brendan@mozilla.org>
Fri, 08 Aug 2008 18:58:04 -0700
changeset 18005 b5774531645c940a7281cb9bb611ef9e3f9b1ebf
parent 18004 905b652d020130401fcfc6467886039175f5ba5c (current diff)
parent 16524 29f2c16ef6e2b91975b6e9277d9e4e7b99c6aa95 (diff)
child 18009 30360335e75c1f7fa63f28cfce4a4236019f86e8
push idunknown
push userunknown
push dateunknown
milestone1.9.1a2pre
Merge from mozilla-central.
.hgtags
browser/locales/en-US/chrome/help/accessibility.xhtml
browser/locales/en-US/chrome/help/cookies.xhtml
browser/locales/en-US/chrome/help/customization.xhtml
browser/locales/en-US/chrome/help/download_manager.xhtml
browser/locales/en-US/chrome/help/firebird-toc.rdf
browser/locales/en-US/chrome/help/firebirdhelp.rdf
browser/locales/en-US/chrome/help/firefox_welcome.xhtml
browser/locales/en-US/chrome/help/forieusers.xhtml
browser/locales/en-US/chrome/help/glossary.xhtml
browser/locales/en-US/chrome/help/menu_reference.xhtml
browser/locales/en-US/chrome/help/mouse_shortcuts.xhtml
browser/locales/en-US/chrome/help/platformStrings.dtd
browser/locales/en-US/chrome/help/popup.xhtml
browser/locales/en-US/chrome/help/prefs.xhtml
browser/locales/en-US/chrome/help/search-db.rdf
browser/locales/en-US/chrome/help/shortcuts.xhtml
browser/locales/en-US/chrome/help/tabbed_browsing.xhtml
browser/locales/en-US/chrome/help/using_firebird.xhtml
browser/locales/en-US/extra-jar.mn
dom/src/base/nsJSEnvironment.cpp
dom/tests/mochitest/ajax/jquery/src/Makefile.in
dom/tests/mochitest/ajax/jquery/src/ajax/Makefile.in
dom/tests/mochitest/ajax/jquery/src/ajax/ajax.js
dom/tests/mochitest/ajax/jquery/src/ajax/ajaxTest.js
dom/tests/mochitest/ajax/jquery/src/event/Makefile.in
dom/tests/mochitest/ajax/jquery/src/event/event.js
dom/tests/mochitest/ajax/jquery/src/event/eventTest.js
dom/tests/mochitest/ajax/jquery/src/fx/Makefile.in
dom/tests/mochitest/ajax/jquery/src/fx/fx.js
dom/tests/mochitest/ajax/jquery/src/fx/fxTest.js
dom/tests/mochitest/ajax/jquery/src/intro.js
dom/tests/mochitest/ajax/jquery/src/jquery/Makefile.in
dom/tests/mochitest/ajax/jquery/src/jquery/coreTest.js
dom/tests/mochitest/ajax/jquery/src/jquery/jquery.js
dom/tests/mochitest/ajax/jquery/src/outro.js
dom/tests/mochitest/ajax/jquery/src/selector/Makefile.in
dom/tests/mochitest/ajax/jquery/src/selector/selector.js
dom/tests/mochitest/ajax/jquery/src/selector/selectorTest.js
editor/ui/composer/content/pref-publish.xul
editor/ui/locales/en-US/chrome/composer/pref-publish.dtd
gfx/thebes/public/gfxXlibNativeRenderer.h
gfx/thebes/src/cairo-xlib-utils.h
gfx/thebes/src/gfxXlibNativeRenderer.cpp
js/src/Makefile.in
js/src/Makefile.ref
js/src/config.mk
js/src/js.cpp
js/src/jsapi.cpp
js/src/jsapi.h
js/src/jsarray.cpp
js/src/jsbool.cpp
js/src/jscntxt.cpp
js/src/jscntxt.h
js/src/jsdate.cpp
js/src/jsdbgapi.cpp
js/src/jsdtoa.cpp
js/src/jsemit.cpp
js/src/jsemit.h
js/src/jsexn.cpp
js/src/jsfun.cpp
js/src/jsgc.cpp
js/src/jsinterp.cpp
js/src/jsinterp.h
js/src/jsiter.cpp
js/src/jslock.cpp
js/src/jsmath.cpp
js/src/jsnum.cpp
js/src/jsobj.cpp
js/src/jsobj.h
js/src/jsopcode.cpp
js/src/jsopcode.h
js/src/jsopcode.tbl
js/src/jsparse.cpp
js/src/jsregexp.cpp
js/src/jsscan.cpp
js/src/jsscript.cpp
js/src/jsscript.h
js/src/jsstr.cpp
js/src/jstracer.cpp
js/src/jsxdrapi.h
js/src/jsxml.cpp
js/src/rules.mk
toolkit/themes/gnomestripe/mozapps/extensions/searchIcons.png
toolkit/themes/pinstripe/mozapps/extensions/searchIcons.png
--- a/.hgignore
+++ b/.hgignore
@@ -14,15 +14,14 @@
 ^config\.cache$
 ^config\.log$
 ^ID$
 
 # Empty marker file that's generated when we check out NSS
 ^security/manager/\.nss\.checkout$
 
 # Build directories
-^obj-
-^objdir-
+^obj
 
 # Build directories for js shell
 _DBG\.OBJ/
 _OPT\.OBJ/
 
--- a/.hgtags
+++ b/.hgtags
@@ -1,4 +1,10 @@
 df7a3c8ffeeaba229067efee5a20e21dae0dd877 MOZILLA_1_9_a4_BASE
 4209e16b58411750ac73f761023e46b76b793e2c MOZILLA_1_9_a6_BASE
 66a5c7bce7ee86a820d3c0d54fa07cb719be751c MOZILLA_1_9_a7_BASE
 caeba7562e495a9f604984df0b48b6f99bec3e2e FENNEC_M4
+9d9941eacb14827fdab4716710042fdde84eb60d FIREFOX_3_1a1_RELEASE
+9d9941eacb14827fdab4716710042fdde84eb60d FIREFOX_3_1a1_BUILD1
+c1d7e318a27574c995631fec166ad42672475702 FIREFOX_3_1a1_BUILD2
+c1d7e318a27574c995631fec166ad42672475702 FIREFOX_3_1a1_RELEASE
+afc4ee509d9ca3bb4031015c3c22963dcb4b7e7f FIREFOX_3_1a1_RELEASE
+afc4ee509d9ca3bb4031015c3c22963dcb4b7e7f FIREFOX_3_1a1_BUILD2
--- a/Makefile.in
+++ b/Makefile.in
@@ -61,16 +61,21 @@ tier_base_dirs = \
 	build \
 	probes \
 	$(NULL)
 
 ifdef MOZ_MEMORY
 tier_base_dirs += memory/jemalloc
 endif
 
+ifdef ENABLE_TESTS
+# Additional makefile targets to call automated test suites
+include $(topsrcdir)/testing/testsuite-targets.mk
+endif
+
 include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk
 
 TIERS += testharness
 
 # test harnesses
 ifdef ENABLE_TESTS
 tier_testharness_dirs += tools/test-harness
 endif
--- a/accessible/build/Makefile.in
+++ b/accessible/build/Makefile.in
@@ -89,13 +89,16 @@ EXTRA_DSO_LDOPTS =           \
 	$(MOZ_COMPONENT_LIBS)    \
 	$(NULL)
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
 EXTRA_DSO_LDOPTS += $(MOZ_GTK2_LIBS)
 endif
 
 ifeq ($(OS_ARCH),WINNT)
-OS_LIBS += oleaut32.lib
+OS_LIBS += \
+	oleaut32.lib \
+	version.lib \
+	$(NULL)
 endif
 
 include $(topsrcdir)/config/rules.mk
 
--- a/accessible/public/msaa/ISimpleDOMDocument.idl
+++ b/accessible/public/msaa/ISimpleDOMDocument.idl
@@ -87,40 +87,32 @@ cpp_quote("// * See latest W3C CSS specs
 cpp_quote("//")
 cpp_quote("//")
 cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
 cpp_quote("")
 cpp_quote("")
 
 import "objidl.idl";
 import "oaidl.idl";
-        
-        
-const long DISPID_DOC_URL         = -5904;
-const long DISPID_DOC_TITLE       = -5905;
-const long DISPID_DOC_MIMETYPE    = -5906;
-const long DISPID_DOC_DOCTYPE     = -5907;
-const long DISPID_DOC_NAMESPACE   = -5908;
-const long DISPID_DOC_MEDIATYPES  = -5909;
 
 [object, uuid(0D68D6D0-D93D-4d08-A30D-F00DD1F45B24)]
 interface ISimpleDOMDocument : IUnknown
 {
-  [propget, id(DISPID_DOC_URL)] HRESULT URL(
+  [propget] HRESULT URL(
     [out, retval] BSTR * url
   );
-  [propget, id(DISPID_DOC_TITLE)] HRESULT title(
+  [propget] HRESULT title(
     [out, retval] BSTR * title
   );
-  [propget, id(DISPID_DOC_MIMETYPE)] HRESULT mimeType(
+  [propget] HRESULT mimeType(
     [out, retval] BSTR * mimeType
   );
-  [propget, id(DISPID_DOC_DOCTYPE)] HRESULT docType(
+  [propget] HRESULT docType(
     [out, retval] BSTR * docType
   );
-  [propget, id(DISPID_DOC_NAMESPACE)] HRESULT nameSpaceURIForID(
+  [propget] HRESULT nameSpaceURIForID(
     [in]  short nameSpaceID,
     [out, retval] BSTR * nameSpaceURI
   );
-  [propput, id(DISPID_DOC_MEDIATYPES)] HRESULT alternateViewMediaTypes(
+  [propput] HRESULT alternateViewMediaTypes(
     [in] BSTR * commaSeparatedMediaTypes
 	);
 }
--- a/accessible/public/msaa/ISimpleDOMNode.idl
+++ b/accessible/public/msaa/ISimpleDOMNode.idl
@@ -128,23 +128,19 @@ cpp_quote("// Returns the computed langu
 cpp_quote("//")
 cpp_quote("//")
 cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
 cpp_quote("")
 cpp_quote("")
 
 import "objidl.idl";
 import "oaidl.idl";
-        
-const long DISPID_NODE_NODEINFO   = -5900;
-const long DISPID_NODE_ATTRIBUTES = -5901;
-const long DISPID_NODE_ATTRIBUTESFORNAMES = -5902;
-const long DISPID_NODE_COMPSTYLE  = -5903;
-const long DISPID_NODE_COMPSTYLEFORPROPS = -5904;
-const long DISPID_NODE_LANGUAGE = -5905;
+
+import "ISimpleDOMText.idl";
+import "ISimpleDOMDocument.idl";
 
 [object, uuid(1814ceeb-49e2-407f-af99-fa755a7d2607)]
 interface ISimpleDOMNode : IUnknown
 {
   const unsigned short NODETYPE_ELEMENT = 1;
   const unsigned short NODETYPE_ATTRIBUTE = 2;
   const unsigned short NODETYPE_TEXT = 3;
   const unsigned short NODETYPE_CDATA_SECTION = 4;
@@ -152,49 +148,49 @@ interface ISimpleDOMNode : IUnknown
   const unsigned short NODETYPE_ENTITY = 6;
   const unsigned short NODETYPE_PROCESSING_INSTRUCTION = 7;
   const unsigned short NODETYPE_COMMENT = 8;
   const unsigned short NODETYPE_DOCUMENT = 9;
   const unsigned short NODETYPE_DOCUMENT_TYPE = 10;
   const unsigned short NODETYPE_DOCUMENT_FRAGMENT = 11;
   const unsigned short NODETYPE_NOTATION = 12;
 
-  [propget, id(DISPID_NODE_NODEINFO)] HRESULT nodeInfo(
+  [propget] HRESULT nodeInfo(
     [out] BSTR *nodeName,   // for performance returns NULL for text nodes (true nodeName would be "#text")
     [out] short *nameSpaceID,
     [out] BSTR *nodeValue,
     [out] unsigned int *numChildren,
     [out] unsigned int *uniqueID, // In Win32 accessible events we generate, the target's childID matches to this
     [out, retval] unsigned short *nodeType
   );
 
-  [propget, id(DISPID_NODE_ATTRIBUTES)] HRESULT attributes(  
+  [propget] HRESULT attributes(  
     [in] unsigned short maxAttribs,
     [out, size_is(maxAttribs), length_is(*numAttribs)] BSTR *attribNames, 
     [out, size_is(maxAttribs), length_is(*numAttribs)] short *nameSpaceID,  
     [out, size_is(maxAttribs), length_is(*numAttribs)] BSTR *attribValues,
     [out, retval] unsigned short *numAttribs
   );
 
-  [propget, id(DISPID_NODE_ATTRIBUTESFORNAMES)] HRESULT attributesForNames(  
+  [propget] HRESULT attributesForNames(  
     [in] unsigned short numAttribs,
     [in, size_is(numAttribs), length_is(numAttribs)] BSTR *attribNames, 
     [in, size_is(numAttribs), length_is(numAttribs)] short *nameSpaceID,  
     [out, retval, size_is(numAttribs), length_is(numAttribs)] BSTR *attribValues
   );
 
-  [propget, id(DISPID_NODE_COMPSTYLE)] HRESULT computedStyle(  
+  [propget] HRESULT computedStyle(  
     [in] unsigned short maxStyleProperties,
     [in] boolean useAlternateView,  // If TRUE, returns properites for media as set in nsIDOMDocument::set_alternateViewMediaTypes
     [out, size_is(maxStyleProperties), length_is(*numStyleProperties)] BSTR *styleProperties, 
     [out, size_is(maxStyleProperties), length_is(*numStyleProperties)] BSTR *styleValues,
     [out, retval] unsigned short *numStyleProperties
   );
 
-  [propget, id(DISPID_NODE_COMPSTYLEFORPROPS)] HRESULT computedStyleForProperties(  
+  [propget] HRESULT computedStyleForProperties(  
     [in] unsigned short numStyleProperties, 
     [in] boolean useAlternateView,  // If TRUE, returns properites for media as set in nsIDOMDocument::set_alternateViewMediaTypes
     [in, size_is(numStyleProperties), length_is(numStyleProperties)] BSTR *styleProperties, 
     [out, retval, size_is(numStyleProperties), length_is(numStyleProperties)] BSTR *styleValues
   );
 
   HRESULT scrollTo([in] boolean placeTopLeft);
 
@@ -205,12 +201,23 @@ interface ISimpleDOMNode : IUnknown
   [propget] HRESULT nextSibling([out, retval] ISimpleDOMNode **node);
   [propget] HRESULT childAt([in] unsigned childIndex, 
                             [out, retval] ISimpleDOMNode **node);
 
   [propget] HRESULT innerHTML([out, retval] BSTR *innerHTML);
 
   [propget, local] HRESULT localInterface([out][retval] void **localInterface);
 
-  [propget, id(DISPID_NODE_LANGUAGE)] HRESULT language([out, retval] BSTR *language);
+  [propget] HRESULT language([out, retval] BSTR *language);
 }
 
 
+[
+    uuid(a6245497-9c0b-4449-85a5-bd6ad07df8ea), 
+    helpstring("ISimpleDOM Type Library")
+] 
+library ISimpleDOM 
+{
+  interface ISimpleDOMNode;
+  interface ISimpleDOMText;
+  interface ISimpleDOMDocument;
+};
+
--- a/accessible/public/msaa/Makefile.in
+++ b/accessible/public/msaa/Makefile.in
@@ -93,17 +93,17 @@ OS_LIBS = \
 	$(NULL)
 
 $(MIDL_GENERATED_FILES): done_gen
 
 done_gen: ISimpleDOMNode.idl \
           ISimpleDOMDocument.idl \
           ISimpleDOMText.idl
 
-	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMNode.idl
+	$(MIDL) $(MIDL_FLAGS) -I $(srcdir) -Oicf $(srcdir)/ISimpleDOMNode.idl
 	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMDocument.idl
 	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMText.idl
 	touch $@
 
 EXPORTS = \
 	ISimpleDOMNode.h \
 	ISimpleDOMNode_i.c \
 	ISimpleDOMDocument.h \
--- a/accessible/src/base/nsAccessNode.cpp
+++ b/accessible/src/base/nsAccessNode.cpp
@@ -107,22 +107,33 @@ nsIAccessibilityService *nsAccessNode::G
 
   return sAccService;
 }
 
 /*
  * Class nsAccessNode
  */
  
-//-----------------------------------------------------
-// construction 
-//-----------------------------------------------------
-NS_IMPL_QUERY_INTERFACE2(nsAccessNode, nsIAccessNode, nsPIAccessNode)
-NS_IMPL_ADDREF(nsAccessNode)
-NS_IMPL_RELEASE_WITH_DESTROY(nsAccessNode, LastRelease())
+////////////////////////////////////////////////////////////////////////////////
+// nsAccessible. nsISupports
+
+NS_IMPL_CYCLE_COLLECTION_0(nsAccessNode)
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsAccessNode)
+  NS_INTERFACE_MAP_ENTRY(nsIAccessNode)
+  NS_INTERFACE_MAP_ENTRY(nsPIAccessNode)
+  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessNode)
+NS_INTERFACE_MAP_END
+ 
+NS_IMPL_CYCLE_COLLECTING_ADDREF_AMBIGUOUS(nsAccessNode, nsIAccessNode)
+NS_IMPL_CYCLE_COLLECTING_RELEASE_FULL(nsAccessNode, nsIAccessNode,
+                                      LastRelease())
+
+////////////////////////////////////////////////////////////////////////////////
+// nsAccessible. Constructor
 
 nsAccessNode::nsAccessNode(nsIDOMNode *aNode, nsIWeakReference* aShell): 
   mDOMNode(aNode), mWeakShell(aShell)
 {
 #ifdef DEBUG_A11Y
   mIsInitialized = PR_FALSE;
 #endif
 }
@@ -186,18 +197,17 @@ NS_IMETHODIMP nsAccessNode::Init()
     do_QueryInterface(docAccessible);
   NS_ASSERTION(privateDocAccessible, "No private docaccessible for docaccessible");
   privateDocAccessible->CacheAccessNode(uniqueID, this);
 
   // Make sure an ancestor in real content is cached
   // so that nsDocAccessible::RefreshNodes() can find the anonymous subtree to release when
   // the root node goes away
   nsCOMPtr<nsIContent> content = do_QueryInterface(mDOMNode);
-  if (content && (content->IsNativeAnonymous() ||
-                  content->GetBindingParent())) {
+  if (content && content->IsInAnonymousSubtree()) {
     // Specific examples of where this is used: <input type="file"> and <xul:findbar>
     nsCOMPtr<nsIAccessible> parentAccessible;
     docAccessible->GetAccessibleInParentChain(mDOMNode, PR_TRUE, getter_AddRefs(parentAccessible));
     if (parentAccessible) {
       PRInt32 childCountUnused;
       parentAccessible->GetChildCount(&childCountUnused);
     }
   }
--- a/accessible/src/base/nsAccessNode.h
+++ b/accessible/src/base/nsAccessNode.h
@@ -69,23 +69,26 @@ class nsApplicationAccessibleWrap;
 class nsIDocShellTreeItem;
 
 #define ACCESSIBLE_BUNDLE_URL "chrome://global-platform/locale/accessible.properties"
 #define PLATFORM_KEYS_BUNDLE_URL "chrome://global-platform/locale/platformKeys.properties"
 
 typedef nsInterfaceHashtable<nsVoidPtrHashKey, nsIAccessNode>
         nsAccessNodeHashtable;
 
-class nsAccessNode: public nsIAccessNode, public nsPIAccessNode
+class nsAccessNode: public nsIAccessNode,
+                    public nsPIAccessNode
 {
   public: // construction, destruction
     nsAccessNode(nsIDOMNode *, nsIWeakReference* aShell);
     virtual ~nsAccessNode();
 
-    NS_DECL_ISUPPORTS
+    NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+    NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsAccessNode, nsIAccessNode)
+
     NS_DECL_NSIACCESSNODE
     NS_DECL_NSPIACCESSNODE
 
     static void InitXPAccessibility();
     static void ShutdownXPAccessibility();
 
     /**
      * Return an application accessible.
--- a/accessible/src/base/nsAccessibilityUtils.cpp
+++ b/accessible/src/base/nsAccessibilityUtils.cpp
@@ -60,16 +60,17 @@
 #include "nsIDOMWindowInternal.h"
 #include "nsIEventListenerManager.h"
 #include "nsIPresShell.h"
 #include "nsPresContext.h"
 #include "nsIScrollableFrame.h"
 #include "nsIEventStateManager.h"
 #include "nsISelection2.h"
 #include "nsISelectionController.h"
+#include "nsGUIEvent.h"
 
 #include "nsContentCID.h"
 #include "nsComponentManagerUtils.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsWhitespaceTokenizer.h"
 
 static NS_DEFINE_IID(kRangeCID, NS_RANGE_CID);
 
@@ -286,16 +287,58 @@ nsAccUtils::HasListener(nsIContent *aCon
 {
   NS_ENSURE_TRUE(aContent, PR_FALSE);
   nsCOMPtr<nsIEventListenerManager> listenerManager;
   aContent->GetListenerManager(PR_FALSE, getter_AddRefs(listenerManager));
 
   return listenerManager && listenerManager->HasListenersFor(aEventType);  
 }
 
+PRBool
+nsAccUtils::DispatchMouseEvent(PRUint32 aEventType,
+                               nsIPresShell *aPresShell,
+                               nsIContent *aContent)
+{
+  nsIFrame *frame = aPresShell->GetPrimaryFrameFor(aContent);
+  if (!frame)
+    return PR_FALSE;
+
+  nsIFrame* rootFrame = aPresShell->GetRootFrame();
+  if (!rootFrame)
+    return PR_FALSE;
+
+  nsCOMPtr<nsIWidget> rootWidget = rootFrame->GetWindow();
+  if (!rootWidget)
+    return PR_FALSE;
+
+  // Compute x and y coordinates.
+  nsPoint point = frame->GetOffsetToExternal(rootFrame);
+  nsSize size = frame->GetSize();
+
+  nsPresContext* presContext = aPresShell->GetPresContext();
+
+  PRInt32 x = presContext->AppUnitsToDevPixels(point.x + size.width / 2);
+  PRInt32 y = presContext->AppUnitsToDevPixels(point.y + size.height / 2);
+  
+  // Fire mouse event.
+  nsMouseEvent event(PR_TRUE, aEventType, rootWidget,
+                     nsMouseEvent::eReal, nsMouseEvent::eNormal);
+
+  event.refPoint = nsIntPoint(x, y);
+  
+  event.clickCount = 1;
+  event.button = nsMouseEvent::eLeftButton;
+  event.time = PR_IntervalNow();
+  
+  nsEventStatus status = nsEventStatus_eIgnore;
+  aPresShell->HandleEventWithTarget(&event, frame, aContent, &status);
+
+  return PR_TRUE;
+}
+
 PRUint32
 nsAccUtils::GetAccessKeyFor(nsIContent *aContent)
 {
   if (!aContent)
     return 0;
 
   // Accesskeys are registered by @accesskey attribute only. At first check
   // whether it is presented on the given element to avoid the slow
@@ -787,29 +830,28 @@ nsAccUtils::FindNeighbourPointingToNode(
 
 nsIContent*
 nsAccUtils::FindNeighbourPointingToNode(nsIContent *aForNode, 
                                         nsIAtom **aRelationAttrs,
                                         PRUint32 aAttrNum,
                                         nsIAtom *aTagName,
                                         PRUint32 aAncestorLevelsToSearch)
 {
-  nsCOMPtr<nsIContent> binding;
   nsAutoString controlID;
   if (!nsAccUtils::GetID(aForNode, controlID)) {
-    binding = aForNode->GetBindingParent();
-    if (binding == aForNode)
+    if (!aForNode->IsInAnonymousSubtree())
       return nsnull;
 
     aForNode->GetAttr(kNameSpaceID_None, nsAccessibilityAtoms::anonid, controlID);
     if (controlID.IsEmpty())
       return nsnull;
   }
 
   // Look for label in subtrees of nearby ancestors
+  nsCOMPtr<nsIContent> binding(aForNode->GetBindingParent());
   PRUint32 count = 0;
   nsIContent *labelContent = nsnull;
   nsIContent *prevSearched = nsnull;
 
   while (!labelContent && ++count <= aAncestorLevelsToSearch &&
          (aForNode = aForNode->GetParent()) != nsnull) {
 
     if (aForNode == binding) {
--- a/accessible/src/base/nsAccessibilityUtils.h
+++ b/accessible/src/base/nsAccessibilityUtils.h
@@ -120,16 +120,27 @@ public:
 
   /**
    * Return true if the given node has registered event listener of the given
    * type.
    */
   static PRBool HasListener(nsIContent *aContent, const nsAString& aEventType);
 
   /**
+   * Send mouse events to the given element.
+   *
+   * @param aEventType  an event type (see nsGUIEvent.h for constants)
+   * @param aPresShell  the presshell for the given element
+   * @param aContent    the element element
+   */
+  static PRBool DispatchMouseEvent(PRUint32 aEventType,
+                                   nsIPresShell *aPresShell,
+                                   nsIContent *aContent);
+
+  /**
    * Return an accesskey registered on the given element by
    * nsIEventStateManager or 0 if there is no registered accesskey.
    *
    * @param aContent - the given element.
    */
   static PRUint32 GetAccessKeyFor(nsIContent *aContent);
 
   /**
--- a/accessible/src/base/nsAccessible.cpp
+++ b/accessible/src/base/nsAccessible.cpp
@@ -135,19 +135,33 @@ nsAccessibleDOMStringList::Contains(cons
 
   return NS_OK;
 }
 
 /*
  * Class nsAccessible
  */
 
-//-----------------------------------------------------
-// construction 
-//-----------------------------------------------------
+////////////////////////////////////////////////////////////////////////////////
+// nsAccessible. nsISupports
+
+NS_IMPL_CYCLE_COLLECTION_CLASS(nsAccessible)
+
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsAccessible, nsAccessNode)
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mParent)
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mFirstChild)
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mNextSibling)
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
+
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsAccessible, nsAccessNode)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mParent)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mFirstChild)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mNextSibling)
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+
 NS_IMPL_ADDREF_INHERITED(nsAccessible, nsAccessNode)
 NS_IMPL_RELEASE_INHERITED(nsAccessible, nsAccessNode)
 
 #ifdef DEBUG_A11Y
 /*
  * static
  * help method. to detect whether this accessible object implements
  * nsIAccessibleText, when it is text or has text child node.
@@ -183,17 +197,22 @@ PRBool nsAccessible::IsTextInterfaceSupp
 }
 #endif
 
 nsresult nsAccessible::QueryInterface(REFNSIID aIID, void** aInstancePtr)
 {
   // Custom-built QueryInterface() knows when we support nsIAccessibleSelectable
   // based on role attribute and aria-multiselectable
   *aInstancePtr = nsnull;
-  
+
+  if (aIID.Equals(NS_GET_IID(nsXPCOMCycleCollectionParticipant))) {
+    *aInstancePtr = &NS_CYCLE_COLLECTION_NAME(nsAccessible);
+    return NS_OK;
+  }
+
   if (aIID.Equals(NS_GET_IID(nsIAccessible))) {
     *aInstancePtr = static_cast<nsIAccessible*>(this);
     NS_ADDREF_THIS();
     return NS_OK;
   }
 
   if(aIID.Equals(NS_GET_IID(nsPIAccessible))) {
     *aInstancePtr = static_cast<nsPIAccessible*>(this);
@@ -478,17 +497,17 @@ NS_IMETHODIMP nsAccessible::SetFirstChil
 {
   mFirstChild = aFirstChild;
 
   return NS_OK;
 }
 
 NS_IMETHODIMP nsAccessible::SetNextSibling(nsIAccessible *aNextSibling)
 {
-  mNextSibling = aNextSibling? aNextSibling: DEAD_END_ACCESSIBLE;
+  mNextSibling = aNextSibling;
   return NS_OK;
 }
 
 nsIContent *nsAccessible::GetRoleContent(nsIDOMNode *aDOMNode)
 {
   // Given the DOM node for an acessible, return content node that
   // we should look for ARIA properties on.
   // For non-document accessibles, this is the associated content node.
@@ -533,25 +552,23 @@ NS_IMETHODIMP nsAccessible::Shutdown()
 NS_IMETHODIMP nsAccessible::InvalidateChildren()
 {
   // Document has transformed, reset our invalid children and child count
 
   // Reset the sibling pointers, they will be set up again the next time
   // CacheChildren() is called.
   // Note: we don't want to start creating accessibles at this point,
   // so don't use GetNextSibling() here. (bug 387252)
-  nsAccessible* child = static_cast<nsAccessible*>(mFirstChild);
+  nsAccessible* child = static_cast<nsAccessible*>(mFirstChild.get());
   while (child) {
     child->mParent = nsnull;
-    if (child->mNextSibling == DEAD_END_ACCESSIBLE) {
-      break;
-    }
-    nsIAccessible *next = child->mNextSibling;
+
+    nsCOMPtr<nsIAccessible> next = child->mNextSibling;
     child->mNextSibling = nsnull;
-    child = static_cast<nsAccessible*>(next);
+    child = static_cast<nsAccessible*>(next.get());
   }
 
   mAccChildCount = eChildCountUninitialized;
   mFirstChild = nsnull;
   return NS_OK;
 }
 
 NS_IMETHODIMP nsAccessible::GetParent(nsIAccessible **  aParent)
@@ -603,19 +620,18 @@ NS_IMETHODIMP nsAccessible::GetNextSibli
       PRInt32 numChildren;
       parent->GetChildCount(&numChildren);  // Make sure we cache all of the children
     }
   }
 
   if (mNextSibling || !mParent) {
     // If no parent, don't try to calculate a new sibling
     // It either means we're at the root or shutting down the parent
-    if (mNextSibling != DEAD_END_ACCESSIBLE) {
-      NS_IF_ADDREF(*aNextSibling = mNextSibling);
-    }
+    NS_IF_ADDREF(*aNextSibling = mNextSibling);
+
     return NS_OK;
   }
 
   return NS_ERROR_FAILURE;
 }
 
   /* readonly attribute nsIAccessible previousSibling; */
 NS_IMETHODIMP nsAccessible::GetPreviousSibling(nsIAccessible * *aPreviousSibling) 
@@ -3132,50 +3148,40 @@ NS_IMETHODIMP nsAccessible::ExtendSelect
 /* [noscript] void getNativeInterface(out voidPtr aOutAccessible); */
 NS_IMETHODIMP nsAccessible::GetNativeInterface(void **aOutAccessible)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 void nsAccessible::DoCommandCallback(nsITimer *aTimer, void *aClosure)
 {
-  NS_ASSERTION(gDoCommandTimer, "How did we get here if there was no gDoCommandTimer?");
+  NS_ASSERTION(gDoCommandTimer,
+               "How did we get here if there was no gDoCommandTimer?");
   NS_RELEASE(gDoCommandTimer);
 
-  nsIContent *content = reinterpret_cast<nsIContent*>(aClosure);
-  nsCOMPtr<nsIDOMXULElement> xulElement(do_QueryInterface(content));
-  if (xulElement) {
-    xulElement->Click();
-  }
-  else {
-    nsIDocument *doc = content->GetDocument();
-    if (!doc) {
-      return;
-    }
-    nsCOMPtr<nsIPresShell> presShell = doc->GetPrimaryShell();
-    nsPIDOMWindow *outerWindow = doc->GetWindow();
-    if (presShell && outerWindow) {
-      nsAutoPopupStatePusher popupStatePusher(outerWindow, openAllowed);
-
-      nsMouseEvent downEvent(PR_TRUE, NS_MOUSE_BUTTON_DOWN, nsnull,
-                             nsMouseEvent::eSynthesized);
-      nsMouseEvent upEvent(PR_TRUE, NS_MOUSE_BUTTON_UP, nsnull,
-                           nsMouseEvent::eSynthesized);
-      nsMouseEvent clickEvent(PR_TRUE, NS_MOUSE_CLICK, nsnull,
-                              nsMouseEvent::eSynthesized);
-
-      nsEventStatus eventStatus = nsEventStatus_eIgnore;
-      content->DispatchDOMEvent(&downEvent, nsnull,
-                                 presShell->GetPresContext(), &eventStatus);
-      content->DispatchDOMEvent(&upEvent, nsnull,
-                                 presShell->GetPresContext(), &eventStatus);
-      content->DispatchDOMEvent(&clickEvent, nsnull,
-                                 presShell->GetPresContext(), &eventStatus);
-    }
-  }
+  nsCOMPtr<nsIContent> content =
+    reinterpret_cast<nsIContent*>(aClosure);
+
+  nsIDocument *doc = content->GetDocument();
+  if (!doc)
+    return;
+
+  nsCOMPtr<nsIPresShell> presShell = doc->GetPrimaryShell();
+
+  // Scroll into view.
+  presShell->ScrollContentIntoView(content, NS_PRESSHELL_SCROLL_ANYWHERE,
+                                   NS_PRESSHELL_SCROLL_ANYWHERE);
+
+  // Fire mouse down and mouse up events.
+  PRBool res = nsAccUtils::DispatchMouseEvent(NS_MOUSE_BUTTON_DOWN, presShell,
+                                              content);
+  if (!res)
+    return;
+
+  nsAccUtils::DispatchMouseEvent(NS_MOUSE_BUTTON_UP, presShell, content);
 }
 
 /*
  * Use Timer to execute "Click" command of XUL/HTML element (e.g. menuitem, button...).
  *
  * When "Click" is to open a "modal" dialog/window, it won't return untill the
  * dialog/window is closed. If executing "Click" command directly in
  * nsXXXAccessible::DoAction, it will block AT-Tools(e.g. GOK) that invoke
--- a/accessible/src/base/nsAccessible.h
+++ b/accessible/src/base/nsAccessible.h
@@ -64,19 +64,16 @@ class nsIFrame;
 class nsIPresShell;
 class nsIDOMNode;
 class nsIAtom;
 class nsIView;
 
 #define NS_OK_NO_ARIA_VALUE \
 NS_ERROR_GENERATE_SUCCESS(NS_ERROR_MODULE_GENERAL, 0x21)
 
-// When mNextSibling is set to this, it indicates there ar eno more siblings
-#define DEAD_END_ACCESSIBLE static_cast<nsIAccessible*>((void*)1)
-
 // Saves a data member -- if child count equals this value we haven't
 // cached children or child count yet
 enum { eChildCountUninitialized = -1 };
 
 class nsAccessibleDOMStringList : public nsIDOMDOMStringList
 {
 public:
   nsAccessibleDOMStringList();
@@ -101,16 +98,18 @@ class nsAccessible : public nsAccessNode
                      public nsIAccessibleSelectable,
                      public nsIAccessibleValue
 {
 public:
   nsAccessible(nsIDOMNode* aNode, nsIWeakReference* aShell);
   virtual ~nsAccessible();
 
   NS_DECL_ISUPPORTS_INHERITED
+  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsAccessible, nsAccessNode)
+
   NS_DECL_NSIACCESSIBLE
   NS_DECL_NSPIACCESSIBLE
   NS_DECL_NSIACCESSIBLEHYPERLINK
   NS_DECL_NSIACCESSIBLESELECTABLE
   NS_DECL_NSIACCESSIBLEVALUE
 
   // nsIAccessNode
   NS_IMETHOD Shutdown();
@@ -267,16 +266,18 @@ protected:
    * in xul:tree accessible to lie to AT. Must be overridden in wrap classes.
    *
    * @param aEvent  the accessible event to fire.
    */
   virtual nsresult FirePlatformEvent(nsIAccessibleEvent *aEvent) = 0;
 
   // Data Members
   nsCOMPtr<nsIAccessible> mParent;
-  nsIAccessible *mFirstChild, *mNextSibling;
+  nsCOMPtr<nsIAccessible> mFirstChild;
+  nsCOMPtr<nsIAccessible> mNextSibling;
+
   nsRoleMapEntry *mRoleMapEntry; // Non-null indicates author-supplied role; possibly state & value as well
   PRInt32 mAccChildCount;
 };
 
 
 #endif  
 
--- a/accessible/src/base/nsAccessibleEventData.cpp
+++ b/accessible/src/base/nsAccessibleEventData.cpp
@@ -52,17 +52,32 @@
 #include "nsIAccessibleText.h"
 #include "nsIContent.h"
 #include "nsIPresShell.h"
 #include "nsPresContext.h"
 
 PRBool nsAccEvent::gLastEventFromUserInput = PR_FALSE;
 nsIDOMNode* nsAccEvent::gLastEventNodeWeak = 0;
 
-NS_IMPL_ISUPPORTS2(nsAccEvent, nsAccEvent, nsIAccessibleEvent)
+////////////////////////////////////////////////////////////////////////////////
+// nsAccEvent. nsISupports
+
+NS_IMPL_CYCLE_COLLECTION_2(nsAccEvent, mAccessible, mDocAccessible)
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsAccEvent)
+  NS_INTERFACE_MAP_ENTRY(nsIAccessibleEvent)
+  NS_INTERFACE_MAP_ENTRY(nsAccEvent)
+  NS_INTERFACE_MAP_ENTRY(nsISupports)
+NS_INTERFACE_MAP_END
+
+NS_IMPL_CYCLE_COLLECTING_ADDREF(nsAccEvent)
+NS_IMPL_CYCLE_COLLECTING_RELEASE(nsAccEvent)
+
+////////////////////////////////////////////////////////////////////////////////
+// nsAccEvent. Constructors
 
 nsAccEvent::nsAccEvent(PRUint32 aEventType, nsIAccessible *aAccessible,
                        PRBool aIsAsynch, EEventRule aEventRule):
   mEventType(aEventType), mAccessible(aAccessible), mEventRule(aEventRule)
 {
   CaptureIsFromUserInput(aIsAsynch);
 }
 
--- a/accessible/src/base/nsAccessibleEventData.h
+++ b/accessible/src/base/nsAccessibleEventData.h
@@ -44,16 +44,17 @@
 #include "nsAutoPtr.h"
 #include "nsCOMPtr.h"
 #include "nsCOMArray.h"
 #include "nsIAccessibleEvent.h"
 #include "nsIAccessible.h"
 #include "nsIAccessibleDocument.h"
 #include "nsIDOMNode.h"
 #include "nsString.h"
+#include "nsCycleCollectionParticipant.h"
 
 class nsIPresShell;
 
 #define NS_ACCEVENT_IMPL_CID                            \
 {  /* 55b89892-a83d-4252-ba78-cbdf53a86936 */           \
   0x55b89892,                                           \
   0xa83d,                                               \
   0x4252,                                               \
@@ -88,35 +89,37 @@ public:
              PRBool aIsAsynch = PR_FALSE,
              EEventRule aEventRule = eRemoveDupes);
   // Initialize with an nsIDOMNode
   nsAccEvent(PRUint32 aEventType, nsIDOMNode *aDOMNode,
              PRBool aIsAsynch = PR_FALSE,
              EEventRule aEventRule = eRemoveDupes);
   virtual ~nsAccEvent() {}
 
-  NS_DECL_ISUPPORTS
+  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+  NS_DECL_CYCLE_COLLECTION_CLASS(nsAccEvent)
+
   NS_DECL_NSIACCESSIBLEEVENT
 
   static void GetLastEventAttributes(nsIDOMNode *aNode,
                                      nsIPersistentProperties *aAttributes);
 
 protected:
   already_AddRefed<nsIAccessible> GetAccessibleByNode();
 
   void CaptureIsFromUserInput(PRBool aIsAsynch);
   PRBool mIsFromUserInput;
 
-private:
   PRUint32 mEventType;
   EEventRule mEventRule;
   nsCOMPtr<nsIAccessible> mAccessible;
   nsCOMPtr<nsIDOMNode> mDOMNode;
   nsCOMPtr<nsIAccessibleDocument> mDocAccessible;
 
+private:
   static PRBool gLastEventFromUserInput;
   static nsIDOMNode* gLastEventNodeWeak;
 
 public:
   static PRUint32 EventType(nsIAccessibleEvent *aAccEvent) {
     PRUint32 eventType;
     aAccEvent->GetEventType(&eventType);
     return eventType;
--- a/accessible/src/base/nsApplicationAccessible.cpp
+++ b/accessible/src/base/nsApplicationAccessible.cpp
@@ -45,21 +45,58 @@
 #include "nsIComponentManager.h"
 #include "nsServiceManagerUtils.h"
 
 nsApplicationAccessible::nsApplicationAccessible():
     nsAccessibleWrap(nsnull, nsnull), mChildren(nsnull)
 {
 }
 
+////////////////////////////////////////////////////////////////////////////////
 // nsISupports
-NS_IMPL_ISUPPORTS_INHERITED0(nsApplicationAccessible,
-                             nsAccessible)
+
+NS_IMPL_CYCLE_COLLECTION_CLASS(nsApplicationAccessible)
+
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsApplicationAccessible,
+                                                  nsAccessible)
+
+  nsCOMPtr<nsISimpleEnumerator> enumerator;
+  tmp->mChildren->Enumerate(getter_AddRefs(enumerator));
+
+  nsCOMPtr<nsIWeakReference> childWeakRef;
+  nsCOMPtr<nsIAccessible> accessible;
+
+  PRBool hasMoreElements;
+  while(NS_SUCCEEDED(enumerator->HasMoreElements(&hasMoreElements))
+        && hasMoreElements) {
 
+    enumerator->GetNext(getter_AddRefs(childWeakRef));
+    accessible = do_QueryReferent(childWeakRef);
+    if (accessible) {
+      NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, accessible);
+      cb.NoteXPCOMChild(accessible);
+    }
+  }
+  
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
+
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsApplicationAccessible,
+                                                nsAccessible)
+  tmp->mChildren->Clear();
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsApplicationAccessible)
+NS_INTERFACE_MAP_END_INHERITING(nsAccessible)
+
+NS_IMPL_ADDREF_INHERITED(nsApplicationAccessible, nsAccessible)
+NS_IMPL_RELEASE_INHERITED(nsApplicationAccessible, nsAccessible)
+
+////////////////////////////////////////////////////////////////////////////////
 // nsIAccessNode
+
 NS_IMETHODIMP
 nsApplicationAccessible::Init()
 {
   nsresult rv;
   mChildren = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
   return rv;
 }
 
--- a/accessible/src/base/nsApplicationAccessible.h
+++ b/accessible/src/base/nsApplicationAccessible.h
@@ -58,16 +58,18 @@
 
 class nsApplicationAccessible: public nsAccessibleWrap
 {
 public:
   nsApplicationAccessible();
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
+  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsApplicationAccessible,
+                                           nsAccessible)
 
   // nsPIAccessNode
   NS_IMETHOD Init();
 
   // nsIAccessible
   NS_IMETHOD GetName(nsAString & aName);
   NS_IMETHOD GetRole(PRUint32 *aRole);
   NS_IMETHOD GetFinalRole(PRUint32 *aFinalRole);
--- a/accessible/src/base/nsBaseWidgetAccessible.cpp
+++ b/accessible/src/base/nsBaseWidgetAccessible.cpp
@@ -183,21 +183,24 @@ nsLinkableAccessible::GetActionName(PRUi
     return NS_ERROR_NOT_IMPLEMENTED;
   }
   return NS_ERROR_INVALID_ARG;
 }
 
 NS_IMETHODIMP
 nsLinkableAccessible::DoAction(PRUint8 aIndex)
 {
+  if (aIndex != eAction_Jump)
+    return NS_ERROR_INVALID_ARG;
+  
   nsCOMPtr<nsIAccessible> actionAcc = GetActionAccessible();
   if (actionAcc)
     return actionAcc->DoAction(aIndex);
-
-  return NS_ERROR_INVALID_ARG;
+  
+  return nsHyperTextAccessibleWrap::DoAction(aIndex);
 }
 
 NS_IMETHODIMP
 nsLinkableAccessible::GetKeyboardShortcut(nsAString& aKeyboardShortcut)
 {
   aKeyboardShortcut.Truncate();
 
   nsCOMPtr<nsIAccessible> actionAcc = GetActionAccessible();
--- a/accessible/src/base/nsDocAccessible.cpp
+++ b/accessible/src/base/nsDocAccessible.cpp
@@ -130,17 +130,44 @@ nsDocAccessible::nsDocAccessible(nsIDOMN
 
 //-----------------------------------------------------
 // destruction
 //-----------------------------------------------------
 nsDocAccessible::~nsDocAccessible()
 {
 }
 
-NS_INTERFACE_MAP_BEGIN(nsDocAccessible)
+////////////////////////////////////////////////////////////////////////////////
+// nsDocAccessible. nsISupports
+
+PR_STATIC_CALLBACK(PLDHashOperator)
+ElementTraverser(const void *aKey, nsIAccessNode *aAccessNode,
+                 void *aUserArg)
+{
+  nsCycleCollectionTraversalCallback *cb = 
+    static_cast<nsCycleCollectionTraversalCallback*>(aUserArg);
+
+  NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*cb, aAccessNode);
+  cb->NoteXPCOMChild(aAccessNode);
+  return PL_DHASH_NEXT;
+}
+
+NS_IMPL_CYCLE_COLLECTION_CLASS(nsDocAccessible)
+
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsDocAccessible, nsAccessible)
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMARRAY(mEventsToFire)
+  tmp->mAccessNodeCache.EnumerateRead(ElementTraverser, &cb); 
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
+
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsDocAccessible, nsAccessible)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMARRAY(mEventsToFire)
+  tmp->ClearCache(tmp->mAccessNodeCache);
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsDocAccessible)
   NS_INTERFACE_MAP_ENTRY(nsIAccessibleDocument)
   NS_INTERFACE_MAP_ENTRY(nsPIAccessibleDocument)
   NS_INTERFACE_MAP_ENTRY(nsIDocumentObserver)
   NS_INTERFACE_MAP_ENTRY(nsIMutationObserver)
   NS_INTERFACE_MAP_ENTRY(nsIScrollPositionListener)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessibleDocument)
   NS_INTERFACE_MAP_ENTRY(nsIObserver)
@@ -1755,19 +1782,18 @@ void nsDocAccessible::RefreshNodes(nsIDO
         children->GetLength(&childCount);
       nsCOMPtr<nsIDOMNode> possibleAnonNode;
       for (PRUint32 index = 0; index < childCount; index++) {
         nsCOMPtr<nsIAccessNode> childAccessNode;
         children->QueryElementAt(index, NS_GET_IID(nsIAccessNode),
                                  getter_AddRefs(childAccessNode));
         childAccessNode->GetDOMNode(getter_AddRefs(possibleAnonNode));
         nsCOMPtr<nsIContent> iterContent = do_QueryInterface(possibleAnonNode);
-        if (iterContent && (iterContent->IsNativeAnonymous() ||
-                            iterContent->GetBindingParent())) {
-          // GetBindingParent() check is a perf win -- make sure we don't
+        if (iterContent && iterContent->IsInAnonymousSubtree()) {
+          // IsInAnonymousSubtree() check is a perf win -- make sure we don't
           // shut down the same subtree twice since we'll reach non-anon content via
           // DOM traversal later in this method
           RefreshNodes(possibleAnonNode);
         }
       }
     }
   }
 
--- a/accessible/src/base/nsDocAccessible.h
+++ b/accessible/src/base/nsDocAccessible.h
@@ -60,16 +60,18 @@ class nsDocAccessible : public nsHyperTe
                         public nsIAccessibleDocument,
                         public nsPIAccessibleDocument,
                         public nsIDocumentObserver,
                         public nsIObserver,
                         public nsIScrollPositionListener,
                         public nsSupportsWeakReference
 {  
   NS_DECL_ISUPPORTS_INHERITED
+  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsDocAccessible, nsAccessible)
+
   NS_DECL_NSIACCESSIBLEDOCUMENT
   NS_DECL_NSPIACCESSIBLEDOCUMENT
   NS_DECL_NSIOBSERVER
 
   public:
     nsDocAccessible(nsIDOMNode *aNode, nsIWeakReference* aShell);
     virtual ~nsDocAccessible();
 
--- a/accessible/src/base/nsTextUtils.cpp
+++ b/accessible/src/base/nsTextUtils.cpp
@@ -84,17 +84,18 @@ static nsCSSTextAttrMapItem gCSSTextAttr
   { "color",             kAnyValue,       kCopyName,                  kCopyValue },
   { "font-family",       kAnyValue,       kCopyName,                  kCopyValue },
   { "font-size",         kAnyValue,       kCopyName,                  kCopyValue },
   { "font-style",        kAnyValue,       kCopyName,                  kCopyValue },
   { "font-weight",       kAnyValue,       kCopyName,                  kCopyValue },
   { "text-decoration",   "line-through",  "text-line-through-style",  "solid" },
   { "text-decoration",   "underline",     "text-underline-style",     "solid" },
   { "text-align",        kAnyValue,       kCopyName,                  kCopyValue },
-  { "text-indent",       kAnyValue,       kCopyName,                  kCopyValue }
+  { "text-indent",       kAnyValue,       kCopyName,                  kCopyValue },
+  { "vertical-align",    kAnyValue,       "text-position",            kCopyValue }
 };
 
 nsCSSTextAttr::nsCSSTextAttr(PRBool aIncludeDefAttrValue, nsIDOMElement *aElm,
                              nsIDOMElement *aRootElm) :
   mIndex(-1), mIncludeDefAttrValue(aIncludeDefAttrValue)
 {
   nsAccessNode::GetComputedStyleDeclaration(EmptyString(), aElm,
                                             getter_AddRefs(mStyleDecl));
--- a/accessible/src/html/nsHyperTextAccessible.cpp
+++ b/accessible/src/html/nsHyperTextAccessible.cpp
@@ -635,17 +635,19 @@ nsresult nsHyperTextAccessible::DOMPoint
   // Get accessible for this findNode, or if that node isn't accessible, use the
   // accessible for the next DOM node which has one (based on forward depth first search)
   nsCOMPtr<nsIAccessible> descendantAccessible;
   if (findNode) {
     nsCOMPtr<nsIContent> findContent = do_QueryInterface(findNode);
     if (findContent->IsNodeOfType(nsINode::eHTML) && 
         findContent->NodeInfo()->Equals(nsAccessibilityAtoms::br)) {
       nsIContent *parent = findContent->GetParent();
-      if (parent && parent->IsNativeAnonymous() && parent->GetChildCount() == 1) {
+      if (parent &&
+          parent->IsRootOfNativeAnonymousSubtree() &&
+          parent->GetChildCount() == 1) {
         // This <br> is the only node in a text control, therefore it is the hacky
         // "bogus node" used when there is no text in a control
         *aHyperTextOffset = 0;
         return NS_OK;
       }
     }
     descendantAccessible = GetFirstAvailableAccessible(findNode);
   }
@@ -879,16 +881,19 @@ BOUNDARY_LINE_START       From the line 
 BOUNDARY_LINE_END         From the line end before/at/after the offset to the next line start.
 */
 
 nsresult nsHyperTextAccessible::GetTextHelper(EGetTextType aType, nsAccessibleTextBoundary aBoundaryType,
                                               PRInt32 aOffset, PRInt32 *aStartOffset, PRInt32 *aEndOffset,
                                               nsAString &aText)
 {
   aText.Truncate();
+
+  NS_ENSURE_ARG_POINTER(aStartOffset);
+  NS_ENSURE_ARG_POINTER(aEndOffset);
   *aStartOffset = *aEndOffset = 0;
 
   nsCOMPtr<nsIPresShell> presShell = GetPresShell();
   if (!presShell) {
     return NS_ERROR_FAILURE;
   }
 
   if (aOffset == nsIAccessibleText::TEXT_OFFSET_END_OF_TEXT) {
@@ -916,16 +921,62 @@ nsresult nsHyperTextAccessible::GetTextH
         -- aOffset;  // We are at the start of a line
       }
     }
   }
   else if (aOffset < 0) {
     return NS_ERROR_FAILURE;
   }
 
+  nsSelectionAmount amount;
+  PRBool needsStart = PR_FALSE;
+  switch (aBoundaryType) {
+    case BOUNDARY_CHAR:
+      amount = eSelectCharacter;
+      if (aType == eGetAt)
+        aType = eGetAfter; // Avoid returning 2 characters
+      break;
+
+    case BOUNDARY_WORD_START:
+      needsStart = PR_TRUE;
+      amount = eSelectWord;
+      break;
+
+    case BOUNDARY_WORD_END:
+      amount = eSelectWord;
+      break;
+
+    case BOUNDARY_LINE_START:
+      // Newlines are considered at the end of a line. Since getting
+      // the BOUNDARY_LINE_START gets the text from the line-start to the next
+      // line-start, the newline is included at the end of the string.
+      needsStart = PR_TRUE;
+      amount = eSelectLine;
+      break;
+
+    case BOUNDARY_LINE_END:
+      // Newlines are considered at the end of a line. Since getting
+      // the BOUNDARY_END_START gets the text from the line-end to the next
+      //line-end, the newline is included at the beginning of the string.
+      amount = eSelectLine;
+      break;
+
+    case BOUNDARY_ATTRIBUTE_RANGE:
+    {
+      nsresult rv = GetTextAttributes(PR_FALSE, aOffset,
+                                      aStartOffset, aEndOffset, nsnull);
+      NS_ENSURE_SUCCESS(rv, rv);
+      
+      return GetText(*aStartOffset, *aEndOffset, aText);
+    }
+
+    default:  // Note, sentence support is deprecated and falls through to here
+      return NS_ERROR_INVALID_ARG;
+  }
+
   PRInt32 startOffset = aOffset + (aBoundaryType == BOUNDARY_LINE_END);  // Avoid getting the previous line
   PRInt32 endOffset = startOffset;
 
   // Convert offsets to frame-relative
   nsCOMPtr<nsIAccessible> startAcc;
   nsIFrame *startFrame = GetPosAndText(startOffset, endOffset, nsnull, nsnull,
                                        nsnull, getter_AddRefs(startAcc));
 
@@ -943,70 +994,16 @@ nsresult nsHyperTextAccessible::GetTextH
       return aOffset > textLength ? NS_ERROR_FAILURE : NS_OK;
     }
     else {
       // We're on the last continuation since we're on the last character
       startFrame = startFrame->GetLastContinuation();
     }
   }
 
-  nsSelectionAmount amount;
-  PRBool needsStart = PR_FALSE;
-  switch (aBoundaryType)
-  {
-  case BOUNDARY_CHAR:
-    amount = eSelectCharacter;
-    if (aType == eGetAt) {
-      aType = eGetAfter; // Avoid returning 2 characters
-    }
-    break;
-  case BOUNDARY_WORD_START:
-    needsStart = PR_TRUE;
-    amount = eSelectWord;
-    break;
-  case BOUNDARY_WORD_END:
-    amount = eSelectWord;
-    break;
-  case BOUNDARY_LINE_START:
-    // Newlines are considered at the end of a line,
-    // Since getting the BOUNDARY_LINE_START gets the text from the line-start
-    // to the next line-start, the newline is included at the end of the string
-    needsStart = PR_TRUE;
-    amount = eSelectLine;
-    break;
-  case BOUNDARY_LINE_END:
-    // Newlines are considered at the end of a line,
-    // Since getting the BOUNDARY_END_START gets the text from the line-end
-    // to the next line-end, the newline is included at the beginning of the string
-    amount = eSelectLine;
-    break;
-  case BOUNDARY_ATTRIBUTE_RANGE:
-    {
-      // XXX We should merge identically formatted frames
-      // XXX deal with static text case
-      // XXX deal with boundary type
-      nsIContent *textContent = startFrame->GetContent();
-      // If not text, then it's represented by an embedded object char 
-      // (length of 1)
-      // XXX did this mean to check for eTEXT?
-      // XXX This is completely wrong, needs to be reimplemented
-      PRInt32 textLength = textContent ? textContent->TextLength() : 1;
-      if (textLength < 0) {
-        return NS_ERROR_FAILURE;
-      }
-      *aStartOffset = aOffset - startOffset;
-      *aEndOffset = *aStartOffset + textLength;
-      startOffset = *aStartOffset;
-      endOffset = *aEndOffset;
-      return GetText(startOffset, endOffset, aText);
-    }
-  default:  // Note, sentence support is deprecated and falls through to here
-    return NS_ERROR_INVALID_ARG;
-  }
-
   PRInt32 finalStartOffset, finalEndOffset;
 
   // If aType == eGetAt we'll change both the start and end offset from
   // the original offset
   if (aType == eGetAfter) {
     finalStartOffset = aOffset;
   }
   else {
@@ -1115,53 +1112,56 @@ nsHyperTextAccessible::GetTextAttributes
 
   NS_ENSURE_ARG_POINTER(aStartOffset);
   *aStartOffset = 0;
 
   NS_ENSURE_ARG_POINTER(aEndOffset);
   nsresult rv = GetCharacterCount(aEndOffset);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  NS_ENSURE_ARG_POINTER(aAttributes);
-  *aAttributes = nsnull;
+  if (aAttributes) {
+    *aAttributes = nsnull;
 
-  nsCOMPtr<nsIPersistentProperties> attributes =
-    do_CreateInstance(NS_PERSISTENTPROPERTIES_CONTRACTID);
-  NS_ENSURE_TRUE(attributes, NS_ERROR_OUT_OF_MEMORY);
+    nsCOMPtr<nsIPersistentProperties> attributes =
+      do_CreateInstance(NS_PERSISTENTPROPERTIES_CONTRACTID);
+    NS_ENSURE_TRUE(attributes, NS_ERROR_OUT_OF_MEMORY);
 
-  NS_ADDREF(*aAttributes = attributes);
+    NS_ADDREF(*aAttributes = attributes);
+  }
 
   if (!mDOMNode)
     return NS_ERROR_FAILURE;
 
   nsCOMPtr<nsIDOMNode> node;
   PRInt32 nodeOffset = 0;
   rv = HypertextOffsetToDOMPoint(aOffset, getter_AddRefs(node), &nodeOffset);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // Set 'misspelled' text attribute.
   rv = GetSpellTextAttribute(node, nodeOffset, aStartOffset, aEndOffset,
-                             *aAttributes);
+                             aAttributes ? *aAttributes : nsnull);
   NS_ENSURE_SUCCESS(rv, rv);
 
   nsCOMPtr<nsIContent> content(do_QueryInterface(node));
   if (content && content->IsNodeOfType(nsINode::eELEMENT))
     node = do_QueryInterface(content->GetChildAt(nodeOffset));
 
   if (!node)
     return NS_OK;
 
   // Set 'lang' text attribute.
   rv =  GetLangTextAttributes(aIncludeDefAttrs, node,
-                              aStartOffset, aEndOffset, *aAttributes);
+                              aStartOffset, aEndOffset,
+                              aAttributes ? *aAttributes : nsnull);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // Set CSS based text attributes.
   rv = GetCSSTextAttributes(aIncludeDefAttrs, node,
-                            aStartOffset, aEndOffset, *aAttributes);
+                            aStartOffset, aEndOffset,
+                            aAttributes ? *aAttributes : nsnull);
   return rv;
 }
 
 // nsIPersistentProperties
 // nsIAccessibleText::defaultTextAttributes
 NS_IMETHODIMP
 nsHyperTextAccessible::GetDefaultTextAttributes(nsIPersistentProperties **aAttributes)
 {
@@ -2224,18 +2224,20 @@ nsHyperTextAccessible::GetSpellTextAttri
                                           &endHTOffset);
       NS_ENSURE_SUCCESS(rv, rv);
 
       if (startHTOffset > *aHTStartOffset)
         *aHTStartOffset = startHTOffset;
       if (endHTOffset < *aHTEndOffset)
         *aHTEndOffset = endHTOffset;
 
-      nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::invalid,
-                             NS_LITERAL_STRING("spelling"));
+      if (aAttributes) {
+        nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::invalid,
+                               NS_LITERAL_STRING("spelling"));
+      }
 
       return NS_OK;
     }
   }
 
   return NS_OK;
 }
 
@@ -2254,23 +2256,25 @@ nsHyperTextAccessible::GetLangTextAttrib
 
   nsAutoString lang;
   nsAccUtils::GetLanguageFor(content, rootContent, lang);
 
   nsAutoString rootLang;
   nsresult rv = GetLanguage(rootLang);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  // Expose 'language' text attribute if the DOM 'lang' attribute is
-  // presented and it's different from the 'lang' attribute on the root
-  // element or we should include default values of text attribute.
-  const nsAString& resultLang = lang.IsEmpty() ? rootLang : lang;
-  if (!resultLang.IsEmpty() && (aIncludeDefAttrs || lang != rootLang))
-    nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::language,
-                           resultLang);
+  if (aAttributes) {
+    // Expose 'language' text attribute if the DOM 'lang' attribute is
+    // presented and it's different from the 'lang' attribute on the root
+    // element or we should include default values of text attribute.
+    const nsAString& resultLang = lang.IsEmpty() ? rootLang : lang;
+    if (!resultLang.IsEmpty() && (aIncludeDefAttrs || lang != rootLang))
+      nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::language,
+                             resultLang);
+  }
 
   nsLangTextAttr textAttr(lang, rootContent);
   return GetRangeForTextAttr(aSourceNode, &textAttr,
                              aStartHTOffset, aEndHTOffset);
 }
 
 // nsHyperTextAccessible
 nsresult
@@ -2282,17 +2286,17 @@ nsHyperTextAccessible::GetCSSTextAttribu
 {
   nsCOMPtr<nsIDOMElement> sourceElm(nsAccUtils::GetDOMElementFor(aSourceNode));
   nsCOMPtr<nsIDOMElement> rootElm(nsAccUtils::GetDOMElementFor(mDOMNode));
 
   nsCSSTextAttr textAttr(aIncludeDefAttrs, sourceElm, rootElm);
   while (textAttr.iterate()) {
     nsCAutoString name;
     nsAutoString value, oldValue;
-    if (textAttr.get(name, value))
+    if (aAttributes && textAttr.get(name, value))
       aAttributes->SetStringProperty(name, value, oldValue);
 
     nsresult rv = GetRangeForTextAttr(aSourceNode, &textAttr,
                                       aStartHTOffset, aEndHTOffset);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   return NS_OK;
--- a/accessible/src/html/nsHyperTextAccessible.h
+++ b/accessible/src/html/nsHyperTextAccessible.h
@@ -282,50 +282,50 @@ protected:
    * then we expose only range offsets where text is not misspelled. The method
    * is used by GetTextAttributes() method.
    *
    * @param aIncludeDefAttrs  [in] points whether text attributes having default
    *                          values of attributes should be included
    * @param aSourceNode       [in] the node we start to traverse from
    * @param aStartOffset      [in, out] the start offset
    * @param aEndOffset        [in, out] the end offset
-   * @param aAttributes       [out] result attributes
+   * @param aAttributes       [out, optional] result attributes
    */
   nsresult GetSpellTextAttribute(nsIDOMNode *aNode, PRInt32 aNodeOffset,
                                  PRInt32 *aStartOffset,
                                  PRInt32 *aEndOffset,
                                  nsIPersistentProperties *aAttributes);
 
   /**
    * Set 'lang' text attribute and return range offsets where attibute is
    * stretched. The method is used by GetTextAttributes() method.
    *
    * @param aIncludeDefAttrs  [in] points whether text attributes having default
    *                          values of attributes should be included
    * @param aSourceNode       [in] the node we start to traverse from
    * @param aStartOffset      [in, out] the start offset
    * @param aEndOffset        [in, out] the end offset
-   * @param aAttributes       [out] result attributes
+   * @param aAttributes       [out, optional] result attributes
    */
   nsresult GetLangTextAttributes(PRBool aIncludeDefAttrs,
                                  nsIDOMNode *aSourceNode,
                                  PRInt32 *aStartOffset,
                                  PRInt32 *aEndOffset,
                                  nsIPersistentProperties *aAttributes);
 
   /**
    * Set CSS based text attribute and return range offsets where attibutes are
    * stretched. The method is used by GetTextAttributes() method.
    *
    * @param aIncludeDefAttrs  [in] points whether text attributes having default
    *                          values of attributes should be included
    * @param aSourceNode       [in] the node we start to traverse from
    * @param aStartOffset      [in, out] the start offset
    * @param aEndOffset        [in, out] the end offset
-   * @param aAttributes       [out] result attributes
+   * @param aAttributes       [out, optional] result attributes
    */
   nsresult GetCSSTextAttributes(PRBool aIncludeDefAttrs,
                                 nsIDOMNode *aSourceNode,
                                 PRInt32 *aStartOffset,
                                 PRInt32 *aEndOffset,
                                 nsIPersistentProperties *aAttributes);
 
   /**
--- a/accessible/src/msaa/nsAccessNodeWrap.cpp
+++ b/accessible/src/msaa/nsAccessNodeWrap.cpp
@@ -32,16 +32,17 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsAccessNodeWrap.h"
+#include <tchar.h> 
 #include "ISimpleDOMNode_i.c"
 #include "nsAccessibilityAtoms.h"
 #include "nsIAccessibilityService.h"
 #include "nsIAccessible.h"
 #include "nsAttrName.h"
 #include "nsIDocument.h"
 #include "nsIDOMCSSStyleDeclaration.h"
 #include "nsIDOMNodeList.h"
@@ -61,16 +62,18 @@
 /// the accessible library and cached methods
 HINSTANCE nsAccessNodeWrap::gmAccLib = nsnull;
 HINSTANCE nsAccessNodeWrap::gmUserLib = nsnull;
 LPFNACCESSIBLEOBJECTFROMWINDOW nsAccessNodeWrap::gmAccessibleObjectFromWindow = nsnull;
 LPFNNOTIFYWINEVENT nsAccessNodeWrap::gmNotifyWinEvent = nsnull;
 LPFNGETGUITHREADINFO nsAccessNodeWrap::gmGetGUIThreadInfo = nsnull;
 
 PRBool nsAccessNodeWrap::gIsEnumVariantSupportDisabled = 0;
+// Used to determine whether an IAccessible2 compatible screen reader is loaded.
+PRBool nsAccessNodeWrap::gIsIA2Disabled = PR_FALSE;
 
 nsIAccessibleTextChangeEvent *nsAccessNodeWrap::gTextEvent = nsnull;
 
 
 /* For documentation of the accessibility architecture, 
  * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
  */
 
@@ -594,16 +597,18 @@ void nsAccessNodeWrap::InitAccessibility
 
   if (gmUserLib) {
     if (!gmNotifyWinEvent)
       gmNotifyWinEvent = (LPFNNOTIFYWINEVENT)GetProcAddress(gmUserLib,"NotifyWinEvent");
     if (!gmGetGUIThreadInfo)
       gmGetGUIThreadInfo = (LPFNGETGUITHREADINFO)GetProcAddress(gmUserLib,"GetGUIThreadInfo");
   }
 
+  DoATSpecificProcessing();
+  
   nsAccessNode::InitXPAccessibility();
 }
 
 void nsAccessNodeWrap::ShutdownAccessibility()
 {
   NS_IF_RELEASE(gTextEvent);
   ::DestroyCaret();
 
@@ -650,8 +655,45 @@ GetHRESULT(nsresult aResult)
     case NS_ERROR_NOT_IMPLEMENTED:
       return E_NOTIMPL;
 
     default:
       return E_FAIL;
   }
 }
 
+PRBool nsAccessNodeWrap::IsOnlyMsaaCompatibleJawsPresent()
+{
+  HMODULE jhookhandle = ::GetModuleHandleW(NS_LITERAL_STRING("jhook").get());
+  if (!jhookhandle)
+    return PR_FALSE;  // No JAWS, or some other screen reader, use IA2
+
+  PRUnichar fileName[MAX_PATH];
+  ::GetModuleFileNameW(jhookhandle, fileName, MAX_PATH);
+
+  DWORD dummy;
+  DWORD length = ::GetFileVersionInfoSizeW(fileName, &dummy);
+
+  LPBYTE versionInfo = new BYTE[length];
+  ::GetFileVersionInfoW(fileName, 0, length, versionInfo);
+
+  UINT uLen;
+  VS_FIXEDFILEINFO *fixedFileInfo;
+  ::VerQueryValueW(versionInfo, L"\\", (LPVOID*)&fixedFileInfo, &uLen);
+  DWORD dwFileVersionMS = fixedFileInfo->dwFileVersionMS;
+  DWORD dwFileVersionLS = fixedFileInfo->dwFileVersionLS;
+  delete [] versionInfo;
+
+  DWORD dwLeftMost = HIWORD(dwFileVersionMS);
+//  DWORD dwSecondLeft = LOWORD(dwFileVersionMS);
+  DWORD dwSecondRight = HIWORD(dwFileVersionLS);
+//  DWORD dwRightMost = LOWORD(dwFileVersionLS);
+
+  return (dwLeftMost < 8
+          || (dwLeftMost == 8 && dwSecondRight < 2173));
+}
+
+void nsAccessNodeWrap::DoATSpecificProcessing()
+{
+  if (IsOnlyMsaaCompatibleJawsPresent())
+    // All versions below 8.0.2173 are not compatible
+    gIsIA2Disabled  = PR_TRUE;
+}
--- a/accessible/src/msaa/nsAccessNodeWrap.h
+++ b/accessible/src/msaa/nsAccessNodeWrap.h
@@ -153,23 +153,31 @@ class nsAccessNodeWrap :  public nsAcces
     static HINSTANCE gmAccLib;
     static HINSTANCE gmUserLib;
     static LPFNACCESSIBLEOBJECTFROMWINDOW gmAccessibleObjectFromWindow;
     static LPFNNOTIFYWINEVENT gmNotifyWinEvent;
     static LPFNGETGUITHREADINFO gmGetGUIThreadInfo;
 
     static int FilterA11yExceptions(unsigned int aCode, EXCEPTION_POINTERS *aExceptionInfo);
 
+    static PRBool IsOnlyMsaaCompatibleJawsPresent();
+    static void DoATSpecificProcessing();
   protected:
     void GetAccessibleFor(nsIDOMNode *node, nsIAccessible **newAcc);
     ISimpleDOMNode* MakeAccessNode(nsIDOMNode *node);
 
     static PRBool gIsEnumVariantSupportDisabled;
 
     /**
+     * Used to determine whether an IAccessible2 compatible screen reader is
+     * loaded. Currently used for JAWS versions older than 8.0.2173.
+     */
+     static PRBool gIsIA2Disabled;
+
+    /**
      * It is used in nsHyperTextAccessibleWrap for IA2::newText/oldText
      * implementation.
      */
     static nsIAccessibleTextChangeEvent *gTextEvent;
 };
 
 /**
  * Converts nsresult to HRESULT.
--- a/accessible/src/msaa/nsAccessibleWrap.cpp
+++ b/accessible/src/msaa/nsAccessibleWrap.cpp
@@ -112,17 +112,17 @@ STDMETHODIMP nsAccessibleWrap::QueryInte
     *ppv = static_cast<IAccessible*>(this);
   else if (IID_IEnumVARIANT == iid && !gIsEnumVariantSupportDisabled) {
     long numChildren;
     get_accChildCount(&numChildren);
     if (numChildren > 0)  // Don't support this interface for leaf elements
       *ppv = static_cast<IEnumVARIANT*>(this);
   } else if (IID_IServiceProvider == iid)
     *ppv = static_cast<IServiceProvider*>(this);
-  else if (IID_IAccessible2 == iid)
+  else if (IID_IAccessible2 == iid && !gIsIA2Disabled)
     *ppv = static_cast<IAccessible2*>(this);
 
   if (NULL == *ppv) {
     HRESULT hr = CAccessibleComponent::QueryInterface(iid, ppv);
     if (SUCCEEDED(hr))
       return hr;
   }
 
--- a/accessible/tests/mochitest/Makefile.in
+++ b/accessible/tests/mochitest/Makefile.in
@@ -42,25 +42,28 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 relativesrcdir  = accessible
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/rules.mk
 
 _TEST_FILES =\
 		moz.png \
+		nsIAccessible_actions.js \
 		nsIAccessible_name.css \
 		nsIAccessible_name.xbl \
 		test_aria_activedescendant.html \
 		test_aria_role_article.html \
 		test_bug368835.xul \
 		test_bug420863.html \
 		test_cssattrs.html \
 		test_groupattrs.xul \
 	$(warning test_table_indexes.html temporarily disabled) \
+		test_nsIAccessible_actions.html \
+		test_nsIAccessible_actions.xul \
 		test_nsIAccessible_name.html \
 		test_nsIAccessible_name.xul \
 		test_nsIAccessibleTable_1.html \
 		test_nsIAccessibleTable_2.html \
 		test_nsIAccessibleTable_3.html \
 		test_nsIAccessibleTable_4.html \
 		test_nsIAccessibleTable_listboxes.xul \
 		test_nsIAccessibleDocument.html \
new file mode 100644
--- /dev/null
+++ b/accessible/tests/mochitest/nsIAccessible_actions.js
@@ -0,0 +1,150 @@
+////////////////////////////////////////////////////////////////////////////////
+// General
+
+const nsIAccessibleRetrieval = Components.interfaces.nsIAccessibleRetrieval;
+const nsIAccessibleRole = Components.interfaces.nsIAccessibleRole;
+
+var gAccRetrieval = null;
+
+function initialize()
+{
+  gAccRetrieval = Components.classes["@mozilla.org/accessibleRetrieval;1"].
+  getService(nsIAccessibleRetrieval);
+}
+
+addLoadEvent(initialize);
+
+////////////////////////////////////////////////////////////////////////////////
+// Event constants
+
+const MOUSEDOWN_EVENT = 1;
+const MOUSEUP_EVENT = 2;
+const CLICK_EVENT = 4;
+const COMMAND_EVENT = 8;
+
+const CLICK_EVENTS = MOUSEDOWN_EVENT | MOUSEUP_EVENT | CLICK_EVENT;
+const ALL_EVENTS = CLICK_EVENTS | COMMAND_EVENT;
+
+////////////////////////////////////////////////////////////////////////////////
+// Public functions
+
+function testActions(aArray, aIndex)
+{
+  if (!aIndex)
+    aIndex = 0;
+
+  if (aIndex == aArray.length) {
+    SimpleTest.finish();
+    return;
+  }
+
+  var ID = aArray[aIndex].ID;
+  var actionName = aArray[aIndex].actionName;
+  var events = aArray[aIndex].events;
+
+  var elm = document.getElementById(ID);
+  if (!elm) {
+    ok(false, "There is no element with ID " + ID);
+    SimpleTest.finish();
+    return null;
+  }
+
+  var acc = null;
+  try {
+    acc = gAccRetrieval.getAccessibleFor(elm);
+  } catch(e) {
+  }
+
+  if (!acc) {
+    ok(false, "There is no accessible for " + ID);
+    SimpleTest.finish();
+    return null;
+  }
+
+  is(acc.getActionName(0), actionName,
+     "Wrong action name of the accessible for " + ID);
+
+  gEventHandler.initialize(ID, elm, events);
+
+  acc.doAction(0);
+
+  window.setTimeout(
+    function()
+    {
+      gEventHandler.checkEvents();
+      testActions(aArray, aIndex + 1);
+    },
+    200
+  );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Private
+
+var gEventHandler =
+{
+  initialize: function(aID, aElm, aExpectedEvents)
+  {
+    this.ID = aID,
+    this.element = aElm;
+    this.mExpectedEvents = aExpectedEvents;
+    this.mFiredEvents = 0;
+
+    if (this.mExpectedEvents & MOUSEDOWN_EVENT)
+      aElm.addEventListener("mousedown", this, false);
+
+    if (this.mExpectedEvents & MOUSEUP_EVENT)
+      aElm.addEventListener("mouseup", this, false);
+
+    if (this.mExpectedEvents & CLICK_EVENT)
+      aElm.addEventListener("click", this, false);
+
+    if (this.mExpectedEvents & COMMAND_EVENT)
+      aElm.addEventListener("command", this, false);
+  },
+
+  checkEvents: function()
+  {
+    if (this.mExpectedEvents & MOUSEDOWN_EVENT) {
+      ok(this.mFiredEvents & MOUSEDOWN_EVENT,
+         "mousedown hasn't been fired for " + this.ID);
+      this.element.removeEventListener("mousedown", this, false);
+    }
+
+    if (this.mExpectedEvents & MOUSEUP_EVENT) {
+      ok(this.mFiredEvents & MOUSEUP_EVENT,
+         "mouseup hasn't been fired for " + this.ID);
+      this.element.removeEventListener("mouseup", this, false);
+    }
+
+    if (this.mExpectedEvents & CLICK_EVENT) {
+      ok(this.mFiredEvents & CLICK_EVENT,
+         "click hasn't been fired for " + this.ID);
+      this.element.removeEventListener("click", this, false);
+    }
+
+    if (this.mExpectedEvents & COMMAND_EVENT) {
+      ok(this.mFiredEvents & COMMAND_EVENT,
+         "command hasn't been fired for " + this.ID);
+      this.element.removeEventListener("command", this, false);
+    }
+  },
+
+  ID: "",
+  element: null,
+
+  handleEvent : function(aEvent)
+  {
+    if (aEvent.type == "mousedown")
+      this.mFiredEvents |= MOUSEDOWN_EVENT;
+    else if(aEvent.type == "mouseup")
+      this.mFiredEvents |= MOUSEUP_EVENT;
+    else if(aEvent.type == "click")
+      this.mFiredEvents |= CLICK_EVENT;
+    else if(aEvent.type == "command")
+      this.mFiredEvents |= COMMAND_EVENT;
+  },
+
+  mExpectedEvents: 0,
+  mFiredEvents: 0
+};
new file mode 100644
--- /dev/null
+++ b/accessible/tests/mochitest/test_nsIAccessible_actions.html
@@ -0,0 +1,49 @@
+<html>
+
+<head>
+  <title>nsIAccessible actions testing</title>
+
+  <link rel="stylesheet" type="text/css"
+        href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+
+  <script type="application/javascript"
+          src="chrome://mochikit/content/MochiKit/packed.js"></script>
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="application/javascript"
+          src="chrome://mochikit/content/a11y/accessible/nsIAccessible_actions.js"></script>
+
+  <script type="application/javascript">
+    function doTest()
+    {
+      var actionsArray = [
+        {
+          ID: "clickable",
+          actionName: "click",
+          events: CLICK_EVENTS
+        }
+      ];
+      testActions(actionsArray);
+    }
+
+    SimpleTest.waitForExplicitFinish();
+    addLoadEvent(doTest);
+  </script>
+</head>
+
+<body>
+
+  <a target="_blank"
+     href="https://bugzilla.mozilla.org/show_bug.cgi?id=410765"
+     title="nsIAccessible actions testing">
+    Mozilla Bug 410765
+  </a>
+  <p id="display"></p>
+  <div id="content" style="display: none"></div>
+  <pre id="test">
+  </pre>
+
+  <div id="clickable" onclick="">Clickable text</div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/accessible/tests/mochitest/test_nsIAccessible_actions.xul
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
+                 type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/a11y/accessible/nsIAccessible_name.css"
+                 type="text/css"?>
+
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        title="nsIAccessible actions testing">
+
+  <script type="application/javascript" 
+          src="chrome://mochikit/content/MochiKit/packed.js"></script>
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
+  <script type="application/javascript"
+          src="chrome://mochikit/content/a11y/accessible/nsIAccessible_actions.js" />
+
+  <script type="application/javascript">
+  <![CDATA[
+    function doTest()
+    {
+      var actionsArray = [
+        {
+          ID: "menu",
+          actionName: "click",
+          events: CLICK_EVENTS
+        },
+        {
+          ID: "submenu",
+          actionName: "click",
+          events: CLICK_EVENTS
+        },
+        {
+          ID: "menuitem",
+          actionName: "click",
+          events: ALL_EVENTS
+        },
+        {
+          ID: "button",
+          actionName: "press",
+          events: ALL_EVENTS
+        },
+        {
+          ID: "buttonmenu",
+          actionName: "press",
+          events: CLICK_EVENTS
+        },
+        {
+          ID: "buttonmenu_item",
+          actionName: "click",
+          events: CLICK_EVENTS
+        }
+      ];
+      testActions(actionsArray);
+    }
+
+    SimpleTest.waitForExplicitFinish();
+    addLoadEvent(doTest);
+  ]]>
+  </script>
+
+  <body xmlns="http://www.w3.org/1999/xhtml">
+    <a target="_blank"
+       href="https://bugzilla.mozilla.org/show_bug.cgi?id=410765"
+       title="nsIAccessible actions testing">
+      Mozilla Bug 410765
+    </a>
+    <p id="display"></p>
+    <div id="content" style="display: none">
+    </div>
+    <pre id="test">
+    </pre>
+  </body>
+
+  <menubar>
+    <menu label="menu" id="menu">
+      <menupopup>
+        <menuitem label="menu item" id="menuitem"/>
+        <menu label="submenu" id="submenu">
+          <menupopup>
+            <menuitem label="menu item"/>
+          </menupopup>
+        </menu>
+      </menupopup>
+    </menu>
+  </menubar>
+
+  <button label="button" id="button"/>
+
+  <button type="menu" id="buttonmenu" label="button">
+    <menupopup>
+      <menuitem label="item1" id="buttonmenu_item"/>
+      <menuitem label="item1"/>
+    </menupopup>
+  </button>
+</window>
+
--- a/accessible/tests/mochitest/test_textattrs.html
+++ b/accessible/tests/mochitest/test_textattrs.html
@@ -62,60 +62,63 @@
       } catch (e) {
       }
 
       if (!attrs) {
         ok(false, "Can't get text attributes for " + aID);
         return;
       }
 
+      var errorMsg = " for " + aID + "at offset " + aOffset;
       is(startOffset.value, aStartOffset,
-         "Wrong start offset for " + aID);
+         "Wrong start offset" + errorMsg);
       is(endOffset.value, aEndOffset,
-          "Wrong end offset for " + aID);
+          "Wrong end offset" + errorMsg);
 
-      compareTextAttrs(aID, attrs, aAttrs);
+      compareTextAttrs(errorMsg, attrs, aAttrs);
 
       var defAttrs = null;
       try{
         defAttrs = accessible.defaultTextAttributes;
       } catch (e) {
       }
 
       if (!defAttrs) {
         ok(false, "Can't get default attributes for " + aID);
         return;
       }
 
-      compareTextAttrs(aID, defAttrs, aDefAttrs);
+      compareTextAttrs(errorMsg, defAttrs, aDefAttrs);
     }
 
-    function compareTextAttrs(aID, aAttrs, aExpectedAttrs)
+    function compareTextAttrs(aErrorMsg, aAttrs, aExpectedAttrs)
     {
       var enumerate = aAttrs.enumerate();
       while (enumerate.hasMoreElements()) {
         var prop = enumerate.getNext().
           QueryInterface(Components.interfaces.nsIPropertyElement);
 
         if (!(prop.key in aExpectedAttrs))
-          ok(false, "Unexpected attribute '" + prop.key + "' for " + aID);
+          ok(false,
+             "Unexpected attribute '" + prop.key + "'" + aErrorMsg);
         else
           is(prop.value, aExpectedAttrs[prop.key],
-             "Attribute '" + prop.key + "' has wrong value for " + aID);
+             "Attribute '" + prop.key + "' has wrong value" + aErrorMsg);
       }
 
       for (var name in aExpectedAttrs) {
         var value = "";
         try {
           value = aAttrs.getStringProperty(name);
         } catch(e) {
         }
 
         if (!value)
-          ok(false, "There is no expected attribute '" + name + "' for " + aID);
+          ok(false,
+             "There is no expected attribute '" + name + "'" + aErrorMsg);
       }
     }
 
     var gObserverService = null;
     var gA11yEventObserver = null;
 
     function testSpellTextAttrs()
     {
@@ -137,17 +140,17 @@
 
       // Add accessibility event listeners
       var gObserverService = Components.classes["@mozilla.org/observer-service;1"].
                             getService(nsIObserverService);
 
       gObserverService.addObserver(gA11yEventObserver, "accessible-event",
                                   false);
 
-      ID = "area7";
+      ID = "area8";
   
       var node = document.getElementById(ID);
       node.focus();
 
       var editor = node.QueryInterface(nsIDOMNSEditableElement).editor;
       var spellchecker = editor.getInlineSpellChecker(true);
       spellchecker.enableRealTimeSpell = true;
 
@@ -156,17 +159,18 @@
           var defAttrs = {
             "font-style": "normal",
             "text-align": "start",
             "font-size": "11px",
             "background-color": "rgb(255, 255, 255)",
             "font-weight": "400",
             "text-indent": "0px",
             "color": "rgb(0, 0, 0)",
-            "font-family": "Lucida Grande"
+            "font-family": "Lucida Grande",
+            "text-position": "baseline"
           };
 
           var attrs = { "background-color": "transparent" };
           var misspelledAttrs = {
             "background-color": "transparent",
             "invalid": "spelling"
           };
 
@@ -196,17 +200,18 @@
       var defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       var attrs = {};
       testTextAttrs(ID, 0, attrs, 0, 7, defAttrs);
 
       attrs = {"font-weight": "401"};
       testTextAttrs(ID, 7, attrs, 7, 11, defAttrs);
 
@@ -219,17 +224,18 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {};
       testTextAttrs(ID, 0, attrs, 0, 7, defAttrs);
 
       attrs = {"font-weight": "401"};
       testTextAttrs(ID, 7, attrs, 7, 12, defAttrs);
 
@@ -248,17 +254,18 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"color": "rgb(0, 128, 0)"};
       testTextAttrs(ID, 0, attrs, 0, 6, defAttrs);
 
       attrs = {"color": "rgb(255, 0, 0)"};
       testTextAttrs(ID, 6, attrs, 6, 26, defAttrs);
 
@@ -271,17 +278,18 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"color": "rgb(0, 128, 0)"};
       testTextAttrs(ID, 0, attrs, 0, 16, defAttrs);
 
       attrs = {"color": "rgb(255, 0, 0)"};
       testTextAttrs(ID, 16, attrs, 16, 33, defAttrs);
 
@@ -294,43 +302,84 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"color": "rgb(0, 128, 0)"};
       testTextAttrs(ID, 0, attrs, 0, 5, defAttrs);
 
       attrs = {};
       testTextAttrs(ID, 7, attrs, 5, 8, defAttrs);
 
       attrs = {"color": "rgb(255, 0, 0)"};
       testTextAttrs(ID, 9, attrs, 8, 11, defAttrs);
 
       attrs = {};
       testTextAttrs(ID, 11, attrs, 11, 18, defAttrs);
 
       //////////////////////////////////////////////////////////////////////////
-      // area6
+      // area6 (CSS vertical-align property, bug 445938)
       ID = "area6";
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
+      };
+
+      attrs = {};
+      testTextAttrs(ID, 0, attrs, 0, 5, defAttrs);
+
+      attrs = {"text-position": "super", "font-size": "13px" };
+      testTextAttrs(ID, 5, attrs, 5, 13, defAttrs);
+
+      attrs = {};
+      testTextAttrs(ID, 13, attrs, 13, 27, defAttrs);
+
+      attrs = {"text-position": "super" };
+      testTextAttrs(ID, 27, attrs, 27, 35, defAttrs);
+
+      attrs = {};
+      testTextAttrs(ID, 35, attrs, 35, 39, defAttrs);
+
+      attrs = {"text-position": "sub", "font-size": "13px" };
+      testTextAttrs(ID, 39, attrs, 39, 50, defAttrs);
+
+      attrs = {};
+      testTextAttrs(ID, 50, attrs, 50, 55, defAttrs);
+
+      attrs = {"text-position": "sub" };
+      testTextAttrs(ID, 55, attrs, 55, 64, defAttrs);
+
+      //////////////////////////////////////////////////////////////////////////
+      // area7
+      ID = "area7";
+      defAttrs = {
+        "font-style": "normal",
+        "text-align": "start",
+        "font-size": "16px",
+        "background-color": "transparent",
+        "font-weight": "400",
+        "text-indent": "0px",
+        "color": "rgb(0, 0, 0)",
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"language": "ru"};
       testTextAttrs(ID, 0, attrs, 0, 12, defAttrs);
 
       attrs = {"language": "en"};
       testTextAttrs(ID, 12, attrs, 12, 13, defAttrs);
 
@@ -398,23 +447,30 @@
       Green again
     </span>
   </p>
   <p id="area5">
     <span style="color: green">Green</span>
     <img src="moz.png" alt="image"/>
     <span style="color: red">Red</span>Normal
   </p>
-  <p lang="en" id="area6">
+  <p id="area6">
+    This <sup>sentence</sup> has the word 
+    <span style="vertical-align:super;">sentence</span> in 
+    <sub>superscript</sub> and 
+    <span style="vertical-align:sub;">subscript</span>
+  </p>
+
+  <p lang="en" id="area7">
     <span lang="ru">Привет</span>
     <span style="background-color: blue">Blue BG color</span>
     <span lang="de">Ich bin/Du bist</span>
     <span lang="en">
       Normal
       <span style="color: magenta">Magenta<b>Bold</b>Magenta</span>
     </span>
   </p>
 
-  <input id="area7" value="valid text inalid tixt"/>
+  <input id="area8" value="valid text inalid tixt"/>
 
   <p id="output"/>
 </body>
 </html>
--- a/browser/app/module.ver
+++ b/browser/app/module.ver
@@ -1,8 +1,8 @@
 WIN32_MODULE_COMPANYNAME=Mozilla Corporation
 WIN32_MODULE_COPYRIGHT=Firefox and Mozilla Developers, according to the MPL 1.1/GPL 2.0/LGPL 2.1 licenses, as applicable.
 WIN32_MODULE_PRODUCTVERSION=3,1,0,0
-WIN32_MODULE_PRODUCTVERSION_STRING=3.1a1pre
+WIN32_MODULE_PRODUCTVERSION_STRING=3.1a2pre
 WIN32_MODULE_TRADEMARKS=Firefox is a Trademark of The Mozilla Foundation.
 WIN32_MODULE_DESCRIPTION=Firefox
 WIN32_MODULE_PRODUCTNAME=Firefox
 WIN32_MODULE_NAME=Firefox
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0cf87d712919a07e9be01bf4024c1a598cbd7e6f
GIT binary patch
literal 7897
zc$@**9wy<5P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOJ-
z3nnFVpvHIr03KOML_t(|+U1*hkY-nT-hXGg+qd;P-7`I-(acCf8)6#-LIKGVl2{xf
zyinMfa+O^UG7!g<w^ZVyV#o245IY8MDA)wsB7g=NBwG?7WEr$rAR)A`v-d2$f9u`v
zIVXSIuN&mJTqz5oKipl_UDe&+ch7mZ=Xsy^ZNW?UaqNlvFX)ZZpBrZU-5W2z;zq!I
zzt13FN(1DU1LvQ!?`N^`XWxG9+h6`toI$^o2KdZh-SXVt-DjMCYUy+~JJHTxiZiH}
z(g0D^y6yDp>KP9``S`!P`KDVR;a}p%hkp6rU;k1*U%u1^Xok_5|Dp{LHKK+6`}ceQ
zA`S5IkAL)>ZBtX{oPELB=f3M*?}}cEGl&=a0cCjg<<C~9%!Snx_W<&*KKo}EDdl|x
zB`!9VHO82kXAT{~_dO<Bjn7{9fnWOZ@5jX-WWV>aptJAAgh5dRSNvQl%HRD;^~9%v
zd#0zO1tq<ETdh_zD{}HI#aP4qwprFTy7+$hV}J4|zxRc?xw(_RuhYq>JyH!D+f_Sw
z<F(hOK=uFoaQD$qy*YpQ=v)8z)Dyq`3tv94@!h{$<PFh6v-#j7<@$ep(ITMa!Z((k
zowwb#XQl05u<wpHe&o0A><<Umj*{e(BrC+)`Ud^skR;8>^MbsrsHzf#KuSp%1nESl
zowTAbZZ#Wgk3RO;iBl&|e)Z>m_PWpSx!|>@|H;eWdgo>C!=L-gqZdsC58QG0SO4v)
z`>+0P$GGU48=f)!cOEX*r@yBLc;bm0eQkE_YfevI-1^#+e=1)8GCwsrrS>^-a*074
zGaQas-{=x22}zn#Rt9S=QcAQ|L}7@pJ)D55GE~;$X+_}s1ir_aI~R`4&riSq6|eb$
z+yBwa-*;cc`~U3O6MNgc9(wXA+>v#THOwdP>3{ou2f&u$RsVS?$`3zOb^rHO<)c6I
zf(`KCgV%c#!OM4p{DsI5u2R0<8G3%xYlXz!A&W~ZtgLR3l?7E*k!3kanh?hcahg(<
z6~<W*5NMwu^l5|<K@i}aBh7M#aYB`6SRoNOCR)wnN8j_qm!7$B{<ofY`H$VuaUZ|q
zvAE24-_yw$KJqjJmT3m(aNNs(=~uGpZmzvQyRTehgY;!Tnm_g23o^jbCm(#x$(6NV
zPtxRHx0?;-w@uS(HqlyRD#Mcp53}AK01ij((LApWFc=IOjAHU4$2sskjTDj~@M$-j
zG@A{4&!?&?hH*@s<s?Z);A>PEGT-TZtMidR_+N9|_WqZbU4F&l!f*Y`#dh}ETTEWO
z<AEKL)5lM<Rz5>p%@XK2deZP(n$}t;kJ)7Lo!LXXUr;ab;FrF%<EewkZt4wtdjt+=
zEm0Jrl%~^Eto3@Vb^AymKuCmhNF@;h*48&j5M-+>NNb1@43dob?Q=*e$?}}Q_wlrc
zANWMpQj`@^IE0X>Q>V!P@Z<Y0c*EPTpJ>dndec4g2g6Gr5OK19If9MTBL>wXLMTEt
zONk?Ll5dMxMozHqn~#vaz-DMMUVTTLWM_7JeS*Me``jG9=OKX77?LCd=Mb`{8bV5>
zwXAP+*)`GPoCAN%-gJ#pH|RE}c=UqT^MDid`h7glqbN&!-^cSbq3?5|KcH%as0Y8z
z?yud$Wk2=-il<L=>Kk97%o38Q_1dYx<6t&mn4MziHkb^~XQ04h$Cni-1dj=O!wYJL
zZn)uNokq~PK2EdwqsJEMwA(Dq&(Uc&2?L)b%~@VsAA7B?>Pjh2EiEzKU*pOf|2r4_
z@H=Sz*iX?uem~pRPH^6lr)ivh9)}4q#t;Spp68);?IRV1aM#z_cKaQ?`m$@O9ymt#
zp{FQJNht(nRdT9`>6-zo<`{vu6YEWox-PkbQfVxXo@ej-jozbw^n#e+TeC+le*HIY
ze)*f1p5)3`ozL>}GFnTd5LCvJq$zn(AVf{Iq!e{7udVTlhwo(jzDao7JK@~(kw1D3
z;#JdlO~<S6zL|GjbvcVCPEwQw))=gHlvPFV?)!*txs7wq+K>F^Db|l1W8H&iJjc_%
zV?`@sDpsna2;D{m^9(&3kMfhhFGkN%xEL!X2gC9=Ua%f8lb!x0d+=MZxQ?7XoAsak
zj~qRAf~m;~Tv1Sz6>hBUY(_ww3?LpbGdK#bo`S){koq8wAuryGU44q_M^`8|R@k?9
z4{4gwYBsU9qPM()_~PHt@It0fX-30U`kr8D3nnWtSXLXBmUNiP68U?`sW|GFzxdHI
zzy6PudeZMd`^#x-U-M(94}Iwc8Nl6jmu7GNR(Z)W?4SH93lBfdd~b<UtyzkqL`q4T
zWf*H}qAf%n2@bO12v1o=Tf>R3LeK#nLZg6A2m!1gJV;&%6i`(aMo0!<yPN4aW=7AG
z$3rS5IVnnZ*gA(d+-cg`4E@#=Q(QnH1S4gRef0EWp8)uvF`ocF!SK-cpc&eI>@8G1
zNFGP--wpF2GpCNAd>>;Bd6tu88OB&70x9Y!2m+tDIYBQIh+bNgT9biEVVEOEIVj1k
z$5%Oid=cjyl`&*Rj(qe9goKa~BOI9!^n}46i0L6j2qK~q79%7^Se|ND?}Ksm`<_Z-
z2S57`rY;8QLF7T`aXii_vK-?aX`Yeg#Xsn`1Yr;`F+I)Q``*OvM{dE3G%QR(Ww1}L
zAWx6Dy|IVY+|Y0ii=(P4(!mJ5zJWlH3PBUdBotCI6n&h{@Z}CxRLwRjVOjIs?L*hQ
z`^C`&3-=1TPePW#i2-E{UmCz=T45?flH?d;an9j{7*imKf`B~>^DOxnbBiar=5KGN
zJ#zv|L%L!3a&#7--*+*t-=jG{hqDf23@*zNQX+(8Kt@XlN}!aEbrsT*6ZC{-Jrv9$
zC<WQkX8Au396OPI&kf*y4arj{_qsuW+enayS2!?v31xediB20+8H%dJIfoDeoWnV=
z)*`fGVPOY(QP6+GTex-q6?6_gPM*dbnp|K#%jrM)4BKXB2z?)C48}N2RpCbwlqIQ4
z$Rr2^3j`bv9nw_@DVbIQVF{_S5A=_5&x@i8AARMAI<rR)HPs^zvX%<&nRp$y&YaI1
z_w6PK0*b1ns!VMx=RgRYb2XG1gRec#+`XIrV90uwGT3_|RzSA2%&DbC_U_${vvnw2
z2jGzH7ICY=<X}MMhV<=-hU(C<igQGRL|QZgzW~oVcgJ-8Ghf(vx_D7k;j8}5kDqa5
z_QDT5bKaHSo&G%cmjVCkRTr{r=R)l@=bo4ULI{KqH54j|piT)X1=`a%>lpS2#7Roj
zY+$X$))qi2Nf-t+qll%+N!kxSgfA7j?PFzxmJK{72%W$;&S}K(OEbkAZaVVR6EE6a
zpz>y$Rb}mwlgH>A!TwiW#QfYm);f%HG^3C_FBqj6QYxHt^m}~<qY*_>5GM)!{(v}+
z8T1FFc}|`eRK_5MKx>T`__Uf$CbdQ&&`L44Zx4@Mc^T*4_f1-5Nmd>rF%5h<Ls)>l
z^p#7?v%ysdZa(nji#iyw%6ZZW(P%`pvL;$-@;qas*JEwH%lg_n-NAr<ug}WzD$gzT
z2wjQGW7=lK(ptj6!K8w|0jU&$mdrN<rxJnE3Z)b~cP(($)mMT5EhSUU1{?cd!$XY*
ztwTqc?DdJNlCtFp-g-4Z^waN6W&?ftKiz!b#hnZ(Lu@6!l#-3^2H$%4VOCeyIeg?e
zGU>B6NO}LhirxqwTY`IkDBu_WzT&=B!wqi>`1Es{Pd-!en{V)VV8!yOXAQ5Kmwe)_
zAwO_q%4%GIb8M`2>%xfuA!tSsyBBtlCMl;ppH=73LCDnnHZD5nEEZ;`vyDW@FZyU~
zxf>tdHq-KqF?{LEcXIgPA<ClU+TDWRxjNv2&s99o6Pz465(}5#loJDCv&oz9)Px$s
zFz18!WGE?_nwsFaYIF79HQ08Bpq-{Hudb078B)j^LY)HvtwzM`^dxzfF^pq&FKovE
zohU>~6<>Jag~f|*fa|WiF1hKzUsg&f?X0CNN&xOy3;FiLdwKJl=V(t(@w%PcIqR%F
z%+JkXj3G`Es>-00L~9Sv(<DjC(&{Q3-7ayGB7jz-L6#<b_OpM5kOE^Yd08TINm*7n
z=TKT9gkY`Pqtoe7RTWCe{`YM-dVF#5-l^&7%axM+;M=d^1MmB3+7oToH+l#u@jMSD
z1vp5u3~4MK?NOPEs;o$}jMcR@*1LVyH`W=&2}N0Ajb)iNeBbB%m!HpYI3kK7#85C8
zj!4oJV+=)6A^_(sX`0e%L_Ge)Q`tW@a{&xcd`}JV$fJ*b<t^7-bNSr-9IwCRb!-d<
zBt=broGoiL$MXP3lB6|47(-DMWJS(s6w~Vu==J+!NvxnUCAO9YG1fA-eV%T&hv#Vq
zN>f=wl4fWj==J&tB~h|QjqTf}x;NZ-;L~Hy?cTO$--li|x%28q*y#A7uTp2S9ox2@
zI(Pfd2juL;O_%)Ie>m}i1|yeUy8oK%KKTCIzHrN}>dZ6GWXJp*voq5O0j9FG!mA|4
z7?LEVC~BkRWm)TiNy;dR=?{j)aZFK^7*ltSN~-ZSAdX`uCnjk&Bb2Hk)j3O+<yjO(
z+04}BWE2KYYxVf&Z@J}vUcBnge5ZfLhdZT^eN#{<D1AX0Xq>MJ8X>c-7W?*J_{^?1
zUi7O^&duF?#T8dn{~S>?_=`WkKD+Dd_Y#B=?M{oyPN$v)lqJR*oOP6@B90UKgAqxR
zprpW23nOtHgR}U)M>A^BY=kH;BuNUIkz{(Z!R*WoLD0ZCF*d4Ve%lOx`S~y4X`gPd
zkClRn!tvg3_S|F%g%BbaP)f*zBU6r8IT8(pw0KB%Z=dJVYp-VE^%s7+{r0!L_n#w(
z<oEskH*ViHH}|&FOH1_o1A5IaS}Q!Q5o0|c1VP}jZ`Tew?GDzNx`;_dvl-!e9#TrI
zbyy@t?+JeRqWh>^gE)mjs#)rV9LnE9tJP$x)8X-_pJgyin4a`_*}grj9A4xn?q6a@
zAw@3hu2UlL3}{j7e-4Ke7K0#FmcvU+c(>lgB~t!G`t`eK|49R!`fq=9zRaqHa%ug7
zqMuezG5Y3vZ~M%l3(xADJ=<90;xj6Sv1K6l(wUf|tV(boq^NUC)Wy(PyQz&Jr9ueC
zv>23<NRy*|!xtZW6NPKx<OB%C)P&D`XNq<!BF}T~ec)T1v9KL$Ezdmt96$8rfE}g8
z3GkdlIfoVkBLo`oj6geq=W0lG(ozb?k)tQ@KK0kALHd?|ECs~+CqJ_*dF;@QCeF?`
zy?DZ`56L$MY&1QV-u-H%y`7QS!TQi=Vrm+{wFhL)^=p--Zi4F1`l_C%iNc5|3JC)r
zDFn_zQ9*X{bL^QoMpl|SHMAosG>hKPvva=9?9>Fm{Rh``^u$SgrJ0<WBKX!p-uG07
zP<1=AseIVFgizrqg`|*@R0{f@qpvLk&te43=8_9V=l?~4)!+Zq4|Q+7|MzS^p*Xcp
zvfO2qrL43(s-NG-&h}rEmk|r$NvioNR^;UbfgZCqx5eJ15GbYaeN7{bXf#5iFhom*
z)(R;FP6+Zeq1*mRQaqGaXescu!^hAv9%r4olRx~_4IDbUh|-d@D3EEwPoJnzLSn~V
zr~Iy}uEQo?r%jRN3`Ya7j>-s1A;^>@R+heRSsD($V}KiPyivXB>E(~D{`ps~D^K+i
zm7_Q6aWo%NU3?ZhfBijF*@)%gexzJtEtSmg+RwbNwkr6h{JmKZJgo_Q4^L~fQXmA@
zIh=J^=TJhB_Mhe4ZG*aSmKIy~c=)MxX3qK%cJG|!j=S&Wwy%B--}lD(ENCwcc$p0u
zinuoTSb=poJQdM8?@aXkB-T0fvnMf&Cy5N?LJ(L-CLva^9DWxMc-`MT^!tmS`P&aT
zEJ1sM)DtWQj`Vfs@v2|{8IqMRGF3go*%Ka0dmM5fWc%E7-Lp%zh097Rw30|Ew}v9l
zTC$>~tSZW?s+FFxXfn(@-1|g@a|O5xX#y($Z02WYIK8~W$N%DU_`b$Da86Kac+IJV
zGB5CCfYctM79MfN5}mog^bfus6K5pP9LJyS;2m2+NrOh<S%Gr3B)R5W^j$yjYkF?u
ziBF#VKexYE3Q5$QBE@oKG$6k8Y+m!>pF#&dYWGhd+`Acx5^Du#w%T>CFY9?gUHEDR
zxHJ}9mRRF3&SEM<Wh#twTdR;_Tz#VEB#qYemUd{JW1`hSNx>&ReE@_*Dzz0gRyekw
z9-^aZg83=bOtXHiwYa=u?mbsB`+*;Uyx{n+UQhoU&*EH(bP{Dj+qy=9CDx!P58n6g
z?#a{dkxGfMHN~jNIa&=FT(pZze(Pt!y1FwHW2%OSRFGzQEqejhZFX*T1={@in6qMR
ztr0>!BoX5IMytJRkwVan0v5K<@WtEj<ly0>byFl9PCA@1h{__2qYNa<I_xk90nS)3
z7H2J_8RP}UsddtgwHkdyErDwUYAmPc0(5eE=@Uvx6?CStosgxa9^&n<<;vf@4q4f;
zs#E8<QW7ca;wGisf-)&;I1@tRc^WmwcN|-yC<3IYYlKt^A-+?#l;_ndvlO5kjJnI*
zeg6X}t+(>Kvh{L^t_(v@(M|d^k^yq8?K|rbz~b-TNOpLMvOi+=%lD6;KSn19(vFSb
zL=BtHx+t2P$G`9lRtJ5u-FrCeeea;ka-4<Am@Rf^jG;7!${2*BE;33Xl^h#EQ<;i9
zFEGYZR&@s_#u}k>Zp;>Kt@{~EHRcH8tq?B1>~fY*onU!=y=ISY^YD_&RS08QYY4Uv
z1=bpT>(HCpo^zP)1}8pwGtN4k9LsWmbPk0;JBPLcZ9z+c_PmhB{<E;#+MIsyB=LEB
zIGrXOf2NP`X%GTqEoE6!6eUGjQf*#L)CZSi+1go)v9{jqsOrC~#)Z#1_q-OwjkUi`
z?XcNsu-@&C-@{-kGk#yjMyw4{0V^S_=a#BeG=w8^4&PezrV@<<C7w6^k$|=iUrKyu
z@f}zL+Mk+0pE1kQ+B%CHYfR3)lEvdE=}feNdfs1FB^&(_aT1fnF-bh6EGn$hXg@%E
zK2obX<V{JQ<#mgT#0r5E5*_$dMS-V1Oj*!UjwlF_Qc{*B)02}p>sUO!gqC8fj>s{R
zSX<-05pbdjXOA4<D2$-01WgH%bI((G$Fte7_rXIDSO|?ERI-i+Z*CInYnE5n=vFzM
zK(k}}9P8^Fv|BBVG4#7Vp3^fhG0W;`k;$_!zz;*JBtb_Z!t=?qgu%u-jj0(Bl6=sk
zJvD<=iln<iduE2EqleHF(>QBbd-f6LWLa|rtyx`P$M-$5te_G3s4>Iai~?(GS{-T4
z>FI!Uqd>aa2o{Mo5@9R>?s@D^j+vo$4kH}C6Euv#l!CxYv}^_>al-2AIt3Q5-69AA
zcJ5rDEb9;+r77!WpH{nt=ll4cLR1wdPe`kROvt)bjbmC<Gbk<bwZ;?~m9tbuPBI+e
zc>#@f8|C|)K3IEx3r2+;t3cmbn%ZQO0M<C95Og{n9B^o7%6W@1vJyBf2!VDIX)Nj=
z^!Z|J2+uhxYYBzKFC{zD3Y|T7n!!eoyxYe!4zJVL8fMt>cL_}GSYT?~ENjP)5;j^0
zDKVy^F)@MCwa2O=r!zB4RhE=lP7pP~fmR-ki77zfg^fCwD}xnwOY_^DA=F7<qm8FL
zv{zrp0ZJ=YHa5u8jFriVvri-x(jlE7myUrFC=}Wlym3+7q{(hvD1AU0OK2U>?QWuv
z3|Bau7?xzk6dKixFxG8VZE#4f=^j5q)?Fn}6HHa%1p(=BfGJDt7%4`*9xKNVBb7&<
z#&yn?1z9{Ijfcd&E_pn{Z!~Ho@oO%yRY(EfQ<SE}(;i`1?+Ml7D0rU7?Bo<ZH6RHz
z2it=4dX7vwoD)dp$gCg|HN?q(I0knP511$_?mu^myIwPozDtZKabTgFk2phuGS!$X
z)t>P@kEy1{pPnWicm(Y>NKM@9QsybHs%jXtB?^ad6=ghRn5C3yLLLtZ!iXx*@NGdh
zl!V2IU~(J2r}2G%>?MIz3Y;VGeOj#+zUNVvwZ0G)Aw{0!YY#0H-`*yfj}0v&V9Wy&
z3z3s}<6+BY6l|q|wS4u`T|9Qq6uYLU(KR2bXK@<nWeFW)(Aq;uiE|M6KD*KZYtNm;
z_WP_22jpo|a}+5MN`t8XcKNwSFl90B|LYvqo`+KsPb$oC8DDF*%}f&pK4BOV2Eljn
zin@Uc!;pzq3#Ao#Ue-cOS<x#?imKcaRZhHemh&GtMWQ7ZkQyQ@2(3VFMuBrk1i7y`
z@Y-z*UVR3ym|I|GW*VKhLz0$9BB60~jn$1Vs@)+BL$uQ44KG2f5#gLA)QVQKL6PSa
zWrel2#`Mhz^7FscxxLvXDuw5H_10(L6NMpB=%ckpBB`uJYfTvVG#U*$trkvz6bk2{
zYShnDN|EI`t!9H>C*+asn)B8w5?xd4KuemojshQ1iy%`TfBD*JCTFKOdt!!NI~Q=y
zp-)`0m!REZdUBE?Nf@qf(2^cFf#+MaQuV+R@Rf%RYwY$tuV#tk&d!ZT;hT+4tx!pX
zsONh^2((sct?@k%-}i|^pD+wiN+Xa|Ww}MCqaYxP!g2U+7RY)Zu_#MMaZJ0_;>gkC
z_|ra-fw@72)pfO>DkW2;<?&g~*LMXxy**+!@R^#JV0vnj-e6Ee@a)VC+h%7_N-_Yf
zsaaoM6gVuEtYOF)i^Xn*HDfu;+M2JsEt#v%MLC8wDQnMbrO=*6E4^iiFs%1~rPK(Z
zP_j-tYw$dc=hdyQtqej+!q8{3-J;cOAaD%h5!YP)CholZUY?xwInq%?m80nt6U`PY
zQyyLEh$_pp=izHjmgTIhuCaY?4$t?|Q<D=+v|FsKtz(QqDMeXTWO+_yD}3!CM6Jwj
zVzd}<e+j8-Pvf@w`>m0<l=ZMvZiaq+X{8iesyYIquvUkJ#5q^9KIe#w0yP#?v{y%C
z$JaE1kkz#{(j;a3{2X@4@yx+Pgh7CHmNe9qT2X`%Zlc3kyB6qmd*pdRmStNa%#Q8b
z(OP1v3Vp$O=i(`aP>O>G57#<fQH+Nax?Xk~AIw_2#Sb=PU5vY}&0LofgpgxZ$U`fQ
z=Z(FtG;%yW3Im@Y@K8e5qjW4nNJ>-p4sx6_q3`1>MXS|7>$)RVo@RMvjg6pB)u<RH
zDP=Y87RNON=g?BwGj=Y><BKQpJ&$d(vuvN=Hm+N;o<2KgF;-xVqchPVj_YX+LZFPn
z8jVzAPmeb~>V|_Y<=1U3LV%JIt@YN$y>Zy9&CvHW%_zk8YJ3+$;3+-U4oWO`EUVYa
z)Qm!;5;*Hf;*{mpb-KMCQb4=a0OuIQF}kd9)ZJ;|`-DNj^2*B5An+TLlat#UjR;@Y
zbxV(<8U)(+d<KIdd693mu|<(@6)lIua}Jc+QgNQIAq$kKkz(`mp3-=}w{`hC^v5Y7
z)R_1P?0EQ#sJF$PbL3-BTIVQ>k}&is%aY~w4MuTHJW4RukmflP?KX#xpCIsSB*8h9
z()hlIQVL_uqk}>GjZUlc+s@kW$WUX1%CZcZr77Khf2(z^i=e67*l{mljIG7Y@k_U8
zs}x&W|MMU&^y@`u?S01(TBD>!NHNwJ>=;EXm8lSjT5uVkG0zLux*II7ZE)oH363tF
z<mBlUHu?jyysRh6Qm|*|0znXrp*6twYXMeCg+NvZK6BuA(meZi{huiHn=7d}bodDO
zee*$dtKFj8?{jQ%jU-7C61>X87+vq`NP*RMEA%({y4)Ic)SmT}u5;e24dLmr%sp0*
zq>x(&5Y(gZS}LO^L0(;7Hp@$16r@?k`bLj9i77WZhjnNr$;y%_2v}NM->MCpa4E)@
z^*vnz;w!h^{=Rqp_`APht(9>c^XQ|G(;W<HHXBGG1X5`nu(GyFniaKxX${Vq=N)R3
z6v^=el&+yF(6z_?(8u@u@49?l^`%e<CB|#BbsecHgB@#lm8~~Iv%DBLV)f`di4!(@
zJ>sNZzRdGlS&p-O{GTTovr|(ws(Ai*+*ZSM5C(){C;@l)@Zy7qo_Y2&&N}*oAt*%@
zMYV&=s$wu2lB5Zq?~$g-_;58nwzh6VtICjNDP>vK0;ZJsO5rPsuLYr&1Ohx+OHFE=
z=Tb<tmUTL452f^$AvROeT1%4UHTQ7!^Rg@>%`%F-sAV)`u&$mW&rD7rrKBi}F^zX)
z#i~FmO&Eswen6+w_BS2(`On|--uBGIiJE78hrRw^PATz%VW(E&00000NkvXXu0mjf
DJYPrh
--- a/browser/base/content/aboutRobots.xhtml
+++ b/browser/base/content/aboutRobots.xhtml
@@ -24,16 +24,17 @@
 #
 # Contributor(s):
 #   Adam Lock <adamlock@netscape.com>
 #   William R. Price <wrprice@alumni.rice.edu>
 #   Henrik Skupin <mozilla@hskupin.info>
 #   Jeff Walden <jwalden+code@mit.edu>
 #   Johnathan Nightingale <johnath@mozilla.com>
 #   Justin Dolske <dolske@mozilla.com>
+#   Ehsan Akhgari <ehsan.akhgari@gmail.com>
 #
 # Alternatively, the contents of this file may be used under the terms of
 # either the GNU General Public License Version 2 or later (the "GPL"), or
 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 # in which case the provisions of the GPL or the LGPL are applicable instead
 # of those above. If you wish to allow use of your version of this file only
 # under the terms of either the GPL or the LGPL, and not to allow others to
 # use your version of this file under the terms of the MPL, indicate your
@@ -75,23 +76,42 @@
           button.style.visibility = "hidden";
         } else {
           var newLabel = button.getAttribute("label2");
           button.setAttribute("label", newLabel);
           buttonClicked = true;
         }
       }
     ]]></script>
+
+    <style type="text/css"><![CDATA[
+      #errorPageContainer {
+        background: url('chrome://browser/content/aboutRobots-icon.png') left 0 no-repeat -moz-Field;
+        -moz-background-origin: content;
+      }
+
+      #errorTrailerDescText {
+        float: right;
+      }
+
+      body[dir=rtl] #errorPageContainer {
+        background-image: url('chrome://browser/content/aboutRobots-icon-rtl.png');
+        background-position: right 0;
+      }
+
+      body[dir=rtl] #errorTrailerDescText {
+        float: left;
+      }
+    ]]></style>
   </head>
 
   <body dir="&locale.dir;">
 
     <!-- PAGE CONTAINER (for styling purposes only) -->
-    <div id="errorPageContainer"
-         style="background: url('chrome://browser/content/aboutRobots-icon.png') left 0 no-repeat -moz-Field; -moz-background-origin: content;">
+    <div id="errorPageContainer">
     
       <!-- Error Title -->
       <div id="errorTitle">
         <h1 id="errorTitleText">&robots.errorTitleText;</h1>
       </div>
       
       <!-- LONG CONTENT (the section most likely to require scrolling) -->
       <div id="errorLongContent">
@@ -108,17 +128,17 @@
             <li>&robots.errorLongDesc2;</li>
             <li>&robots.errorLongDesc3;</li>
             <li>&robots.errorLongDesc4;</li>
           </ul>
         </div>
 
         <!-- Short Description -->
         <div id="errorTrailerDesc">
-          <p id="errorTrailerDescText" style="float: right;">&robots.errorTrailerDescText;</p>
+          <p id="errorTrailerDescText">&robots.errorTrailerDescText;</p>
         </div>
 
       </div>
 
       <!-- Button -->
       <xul:button xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
                   id="errorTryAgain"
                   label="&retry.label;"
--- a/browser/base/content/browser-context.inc
+++ b/browser/base/content/browser-context.inc
@@ -174,17 +174,16 @@
                 accesskey="&selectAllCmd.accesskey;"
                 command="cmd_selectAll"/>      
       <menuseparator id="context-sep-selectall"/>
       <menuitem id="context-keywordfield"
                 label="&keywordfield.label;"
                 accesskey="&keywordfield.accesskey;"
                 oncommand="AddKeywordForSearchField();"/>
       <menuitem id="context-searchselect"
-                accesskey="&search.accesskey;"
                 oncommand="BrowserSearch.loadSearch(getBrowserSelection(), true);"/>
       <menuseparator id="frame-sep"/>
       <menu id="frame" label="&thisFrameMenu.label;" accesskey="&thisFrameMenu.accesskey;">
         <menupopup>
           <menuitem id="context-showonlythisframe"
                     label="&showOnlyThisFrameCmd.label;"
                     accesskey="&showOnlyThisFrameCmd.accesskey;"
                     oncommand="gContextMenu.showOnlyThisFrame();"/>
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -17,17 +17,16 @@
 # Portions created by the Initial Developer are Copyright (C) 2006
 # the Initial Developer. All Rights Reserved.
 #
 # Contributor(s):
 #   Ben Goodger <beng@google.com>
 #   Annie Sullivan <annie.sullivan@gmail.com>
 #   Joe Hughes <joe@retrovirus.com>
 #   Asaf Romano <mano@mozilla.com>
-#   Ehsan Akhgari <ehsan.akhgari@gmail.com>
 #
 # Alternatively, the contents of this file may be used under the terms of
 # either the GNU General Public License Version 2 or later (the "GPL"), or
 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 # in which case the provisions of the GPL or the LGPL are applicable instead
 # of those above. If you wish to allow use of your version of this file only
 # under the terms of either the GPL or the LGPL, and not to allow others to
 # use your version of this file under the terms of the MPL, indicate your
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -68,29 +68,22 @@ const MAX_HISTORY_MENU_ITEMS = 15;
 
 // We use this once, for Clear Private Data
 const GLUE_CID = "@mozilla.org/browser/browserglue;1";
 
 var gURIFixup = null;
 var gCharsetMenu = null;
 var gLastBrowserCharset = null;
 var gPrevCharset = null;
-var gURLBar = null;
-var gFindBar = null;
 var gProxyFavIcon = null;
-var gNavigatorBundle = null;
 var gIsLoadingBlank = false;
 var gLastValidURLStr = "";
 var gMustLoadSidebar = false;
-var gProgressMeterPanel = null;
 var gProgressCollapseTimer = null;
-var gPrefService = null;
 var appCore = null;
-var gBrowser = null;
-var gNavToolbox = null;
 var gSidebarCommand = "";
 var gInPrintPreviewMode = false;
 let gDownloadMgr = null;
 
 // Global variable that holds the nsContextMenu instance.
 var gContextMenu = null;
 
 var gChromeState = null; // chrome state before we went into print preview
@@ -103,16 +96,44 @@ var gBookmarkAllTabsHandler = null;
 #ifdef XP_MACOSX
 var gClickAndHoldTimer = null;
 #endif
 
 #ifndef XP_MACOSX
 var gEditUIVisible = true;
 #endif
 
+[
+  ["gBrowser",            "content"],
+  ["gNavToolbox",         "navigator-toolbox"],
+  ["gURLBar",             "urlbar"],
+  ["gNavigatorBundle",    "bundle_browser"],
+  ["gProgressMeterPanel", "statusbar-progresspanel"],
+  ["gFindBar",            "FindToolbar"]
+].forEach(function (elementGlobal) {
+  var [name, id] = elementGlobal;
+  window.__defineGetter__(name, function () {
+    var element = document.getElementById(id);
+    if (!element)
+      return null;
+    delete window[name];
+    return window[name] = element;
+  });
+  window.__defineSetter__(name, function (val) {
+    delete window[name];
+    return window[name] = val;
+  });
+});
+
+__defineGetter__("gPrefService", function() {
+  delete this.gPrefService;
+  return this.gPrefService = Cc["@mozilla.org/preferences-service;1"].
+                             getService(Ci.nsIPrefBranch2);
+});
+
 /**
 * We can avoid adding multiple load event listeners and save some time by adding
 * one listener that calls all real handlers.
 */
 
 function pageShowEventHandlers(event)
 {
   // Filter out events that are not about the document load we are interested in
@@ -248,19 +269,19 @@ function SetClickAndHoldHandlers()
     _addClickAndHoldListenersOnElement(forwardButton);
     unifiedButton._clickHandlersAttached = true;
   }
 }
 #endif
 
 function BookmarkThisTab()
 {
-  var tab = getBrowser().mContextTab;
+  var tab = gBrowser.mContextTab;
   if (tab.localName != "tab")
-    tab = getBrowser().mCurrentTab;
+    tab = gBrowser.mCurrentTab;
 
   PlacesCommandHook.bookmarkPage(tab.linkedBrowser,
                                  PlacesUtils.bookmarksMenuFolderId, true);
 }
 
 const gSessionHistoryObserver = {
   observe: function(subject, topic, data)
   {
@@ -329,19 +350,16 @@ const gPopupBlockerObserver = {
     }
 
     this._reportButton.setAttribute("blocked", true);
 
     // Only show the notification again if we've not already shown it. Since
     // notifications are per-browser, we don't need to worry about re-adding
     // it.
     if (!gBrowser.pageReport.reported) {
-      if (!gPrefService)
-        gPrefService = Components.classes["@mozilla.org/preferences-service;1"]
-                                 .getService(Components.interfaces.nsIPrefBranch2);
       if (gPrefService.getBoolPref("privacy.popups.showBrowserMessage")) {
         var bundle_browser = document.getElementById("bundle_browser");
         var brandBundle = document.getElementById("bundle_brand");
         var brandShortName = brandBundle.getString("brandShortName");
         var message;
         var popupCount = gBrowser.pageReport.length;
 #ifdef XP_WIN
         var popupButtonText = bundle_browser.getString("popupWarningButton");
@@ -572,19 +590,18 @@ const gXPInstallObserver = {
       if (docShell == aSoughtShell)
         return docShell;
     }
     return null;
   },
 
   _getBrowser: function (aDocShell)
   {
-    var tabbrowser = getBrowser();
-    for (var i = 0; i < tabbrowser.browsers.length; ++i) {
-      var browser = tabbrowser.getBrowserAtIndex(i);
+    for (var i = 0; i < gBrowser.browsers.length; ++i) {
+      var browser = gBrowser.getBrowserAtIndex(i);
       if (this._findChildShell(browser.docShell, aDocShell))
         return browser;
     }
     return null;
   },
 
   observe: function (aSubject, aTopic, aData)
   {
@@ -651,18 +668,16 @@ const gXPInstallObserver = {
       }
       break;
     }
   }
 };
 
 function BrowserStartup()
 {
-  gBrowser = document.getElementById("content");
-
   var uriToLoad = null;
 
   // window.arguments[0]: URI to load (string), or an nsISupportsArray of
   //                      nsISupportsStrings to load
   //                 [1]: character set (string)
   //                 [2]: referrer (nsIURI)
   //                 [3]: postData (nsIInputStream)
   //                 [4]: allowThirdPartyFixup (bool)
@@ -821,20 +836,16 @@ function HandleAppCommandEvent(evt)
     break;
   default:
     break;
   }
 }
 
 function prepareForStartup()
 {
-  gURLBar = document.getElementById("urlbar");
-  gNavigatorBundle = document.getElementById("bundle_browser");
-  gProgressMeterPanel = document.getElementById("statusbar-progresspanel");
-  gFindBar = document.getElementById("FindToolbar");
   gBrowser.addEventListener("DOMUpdatePageReport", gPopupBlockerObserver.onUpdatePageReport, false);
   // Note: we need to listen to untrusted events, because the pluginfinder XBL
   // binding can't fire trusted ones (runs with page privileges).
   gBrowser.addEventListener("PluginNotFound", gMissingPluginInstaller.newMissingPlugin, true, true);
   gBrowser.addEventListener("PluginBlocklisted", gMissingPluginInstaller.newMissingPlugin, true, true);
   gBrowser.addEventListener("NewPluginInstalled", gMissingPluginInstaller.refreshBrowser, false);
   gBrowser.addEventListener("NewTab", BrowserOpenTab, false);
   window.addEventListener("AppCommand", HandleAppCommandEvent, true);
@@ -907,19 +918,16 @@ function prepareForStartup()
 }
 
 function delayedStartup()
 {
   var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
   os.addObserver(gSessionHistoryObserver, "browser:purge-session-history", false);
   os.addObserver(gXPInstallObserver, "xpinstall-install-blocked", false);
 
-  if (!gPrefService)
-    gPrefService = Components.classes["@mozilla.org/preferences-service;1"]
-                             .getService(Components.interfaces.nsIPrefBranch2);
   BrowserOffline.init();
   OfflineApps.init();
 
   gBrowser.addEventListener("pageshow", function(evt) { setTimeout(pageShowEventHandlers, 0, evt); }, true);
 
   // Ensure login manager is up and running.
   Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager);
 
@@ -941,19 +949,18 @@ function delayedStartup()
   // initiated by a web page script
   window.addEventListener("fullscreen", onFullScreen, true);
 
   if (gIsLoadingBlank && gURLBar && isElementVisible(gURLBar))
     focusElement(gURLBar);
   else
     focusElement(content);
 
-  var navToolbox = getNavToolbox();
-  navToolbox.customizeDone = BrowserToolboxCustomizeDone;
-  navToolbox.customizeChange = BrowserToolboxCustomizeChange;
+  gNavToolbox.customizeDone = BrowserToolboxCustomizeDone;
+  gNavToolbox.customizeChange = BrowserToolboxCustomizeChange;
 
   // Set up Sanitize Item
   gSanitizeListener = new SanitizeListener();
 
   // Enable/Disable auto-hide tabbar
   gAutoHideTabbarPrefListener = new AutoHideTabbarPrefListener();
   gPrefService.addObserver(gAutoHideTabbarPrefListener.domain,
                            gAutoHideTabbarPrefListener, false);
@@ -1204,27 +1211,22 @@ function nonBrowserWindowStartup()
         element.setAttribute("disabled", "true");
     }
 
     // also hide the window-list separator
     element = document.getElementById("sep-window-list");
     element.setAttribute("hidden", "true");
   }
 
-  gNavigatorBundle = document.getElementById("bundle_browser");
 
   setTimeout(nonBrowserWindowDelayedStartup, 0);
 }
 
 function nonBrowserWindowDelayedStartup()
 {
-  // init global pref service
-  gPrefService = Components.classes["@mozilla.org/preferences-service;1"]
-                           .getService(Components.interfaces.nsIPrefBranch2);
-
   // initialise the offline listener
   BrowserOffline.init();
   
   // Set up Sanitize Item
   gSanitizeListener = new SanitizeListener();
 }
 
 function nonBrowserWindowShutdown()
@@ -1332,17 +1334,17 @@ function gotoHistoryIndex(aEvent)
     return false;
 
   var where = whereToOpenLink(aEvent);
 
   if (where == "current") {
     // Normal click.  Go there in the current tab and update session history.
 
     try {
-      getBrowser().gotoIndex(index);
+      gBrowser.gotoIndex(index);
     }
     catch(ex) {
       return false;
     }
     return true;
   }
   else {
     // Modified click.  Go there in a new tab/window.
@@ -1357,17 +1359,17 @@ function gotoHistoryIndex(aEvent)
 }
 
 function BrowserForward(aEvent, aIgnoreAlt)
 {
   var where = whereToOpenLink(aEvent, false, aIgnoreAlt);
 
   if (where == "current") {
     try {
-      getBrowser().goForward();
+      gBrowser.goForward();
     }
     catch(ex) {
     }
   }
   else {
     var sessionHistory = getWebNavigation().sessionHistory;
     var currentIndex = sessionHistory.index;
     var entry = sessionHistory.getEntryAtIndex(currentIndex + 1, false);
@@ -1377,17 +1379,17 @@ function BrowserForward(aEvent, aIgnoreA
 }
 
 function BrowserBack(aEvent, aIgnoreAlt)
 {
   var where = whereToOpenLink(aEvent, false, aIgnoreAlt);
 
   if (where == "current") {
     try {
-      getBrowser().goBack();
+      gBrowser.goBack();
     }
     catch(ex) {
     }
   }
   else {
     var sessionHistory = getWebNavigation().sessionHistory;
     var currentIndex = sessionHistory.index;
     var entry = sessionHistory.getEntryAtIndex(currentIndex - 1, false);
@@ -1648,17 +1650,17 @@ function loadURI(uri, referrer, postData
 {
   try {
     if (postData === undefined)
       postData = null;
     var flags = nsIWebNavigation.LOAD_FLAGS_NONE;
     if (allowThirdPartyFixup) {
       flags = nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
     }
-    getBrowser().loadURIWithFlags(uri, flags, referrer, null, postData);
+    gBrowser.loadURIWithFlags(uri, flags, referrer, null, postData);
   } catch (e) {
   }
 }
 
 function BrowserLoadURL(aTriggeringEvent, aPostData) {
   var url = gURLBar.value;
 
   if (aTriggeringEvent instanceof MouseEvent) {
@@ -1929,17 +1931,17 @@ function checkForDirectoryListing()
   if ( "HTTPIndex" in content &&
        content.HTTPIndex instanceof Components.interfaces.nsIHTTPIndex ) {
     content.wrappedJSObject.defaultCharacterset =
       getMarkupDocumentViewer().defaultCharacterSet;
   }
 }
 
 function URLBarSetURI(aURI) {
-  var value = getBrowser().userTypedValue;
+  var value = gBrowser.userTypedValue;
   var state = "invalid";
 
   if (!value) {
     if (aURI) {
       // If the url has "wyciwyg://" as the protocol, strip it off.
       // Nobody wants to see it on the urlbar for dynamically generated
       // pages.
       if (!gURIFixup)
@@ -2394,17 +2396,17 @@ function toggleAffectedChrome(aHide)
   //   (*) navigation bar
   //   (*) bookmarks toolbar
   //   (*) tabstrip
   //   (*) browser messages
   //   (*) sidebar
   //   (*) find bar
   //   (*) statusbar
 
-  getNavToolbox().hidden = aHide;
+  gNavToolbox.hidden = aHide;
   if (aHide)
   {
     gChromeState = {};
     var sidebar = document.getElementById("sidebar-box");
     gChromeState.sidebarOpen = !sidebar.hidden;
     gSidebarCommand = sidebar.getAttribute("sidebarcommand");
 
     gChromeState.hadTabStrip = gBrowser.getStripVisibility();
@@ -2455,17 +2457,17 @@ function onExitPrintPreview()
   // restore chrome to original state
   gInPrintPreviewMode = false;
   FullZoom.setSettingValue();
   toggleAffectedChrome(false);
 }
 
 function getPPBrowser()
 {
-  return getBrowser();
+  return gBrowser;
 }
 
 function getMarkupDocumentViewer()
 {
   return gBrowser.markupDocumentViewer;
 }
 
 /**
@@ -2994,18 +2996,18 @@ const BrowserSearch = {
     // getSubmission can return null if the engine doesn't have a URL
     // with a text/html response type.  This is unlikely (since
     // SearchService._addEngineToStore() should fail for such an engine),
     // but let's be on the safe side.
     if (!submission)
       return;
   
     if (useNewTab) {
-      getBrowser().loadOneTab(submission.uri.spec, null, null,
-                              submission.postData, null, false);
+      gBrowser.loadOneTab(submission.uri.spec, null, null,
+                          submission.postData, null, false);
     } else
       loadURI(submission.uri.spec, null, submission.postData, false);
   },
 
   /**
    * Returns the search bar element if it is present in the toolbar, null otherwise.
    */
   get searchBar() {
@@ -3201,22 +3203,22 @@ function BrowserCustomizeToolbar()
     sheetFrame.contentWindow.location.reload()
   else
     sheetFrame.setAttribute("src", customizeURL);
 
   // XXXmano: there's apparently no better way to get this when the iframe is
   // hidden
   var sheetWidth = sheetFrame.style.width.match(/([0-9]+)px/)[1];
   document.getElementById("customizeToolbarSheetPopup")
-          .openPopup(getNavToolbox(), "after_start", (window.innerWidth - sheetWidth) / 2, 0);
+          .openPopup(gNavToolbox, "after_start", (window.innerWidth - sheetWidth) / 2, 0);
 #else
   window.openDialog(customizeURL,
                     "CustomizeToolbar",
                     "chrome,all,dependent",
-                    getNavToolbox());
+                    gNavToolbox);
 #endif
 }
 
 function BrowserToolboxCustomizeDone(aToolboxChanged)
 {
 #ifdef TOOLBAR_CUSTOMIZATION_SHEET
   document.getElementById("customizeToolbarSheetIFrame").hidden = true;
   document.getElementById("customizeToolbarSheetPopup").hidePopup();
@@ -3400,17 +3402,17 @@ var FullScreen =
       if (fullScrToggler) {
         fullScrToggler.removeEventListener("mouseover", this._expandCallback, false);
         fullScrToggler.removeEventListener("dragenter", this._expandCallback, false);
       }
 
       // The user may quit fullscreen during an animation
       clearInterval(this._animationInterval);
       clearTimeout(this._animationTimeout);
-      getNavToolbox().style.marginTop = "0px";
+      gNavToolbox.style.marginTop = "0px";
       if (this._isChromeCollapsed)
         this.mouseoverToggle(true);
       this._isAnimating = false;
       // This is needed if they use the context menu to quit fullscreen
       this._isPopupOpen = false;
 
       gBrowser.mPanelContainer.removeEventListener("mousemove",
                                                    this._collapseCallback, false);
@@ -3511,31 +3513,30 @@ var FullScreen =
   {
     // check again, the user may have done something before the animation was due to start
     if (!window.fullScreen || !FullScreen._safeToCollapse(false)) {
       FullScreen._isAnimating = false;
       FullScreen._shouldAnimate = true;
       return;
     }
 
-    var navToolbox = getNavToolbox();
     var animateFrameAmount = 2;
     function animateUpFrame() {
       animateFrameAmount *= 2;
       if (animateFrameAmount >=
-          (navToolbox.boxObject.height + gBrowser.mStrip.boxObject.height)) {
+          (gNavToolbox.boxObject.height + gBrowser.mStrip.boxObject.height)) {
         // We've animated enough
         clearInterval(FullScreen._animationInterval);
-        navToolbox.style.marginTop = "0px";
+        gNavToolbox.style.marginTop = "0px";
         FullScreen._isAnimating = false;
         FullScreen._shouldAnimate = false; // Just to make sure
         FullScreen.mouseoverToggle(false);
         return;
       }
-      navToolbox.style.marginTop = (animateFrameAmount * -1) + "px";
+      gNavToolbox.style.marginTop = (animateFrameAmount * -1) + "px";
     }
 
     FullScreen._animationInterval = setInterval(animateUpFrame, 70);
   },
 
   mouseoverToggle: function(aShow, forceHide)
   {
     // Don't do anything if:
@@ -3633,21 +3634,20 @@ var FullScreen =
         // so that new windows don't have missing toolbars
         if (aShow)
           els[i].removeAttribute("moz-collapsed");
         else
           els[i].setAttribute("moz-collapsed", "true");
       }
     }
 
-    var toolbox = getNavToolbox();
     if (aShow)
-      toolbox.removeAttribute("inFullscreen");
+      gNavToolbox.removeAttribute("inFullscreen");
     else
-      toolbox.setAttribute("inFullscreen", true);
+      gNavToolbox.setAttribute("inFullscreen", true);
 
 #ifndef XP_MACOSX
     var controls = document.getElementsByAttribute("fullscreencontrol", "true");
     for (var i = 0; i < controls.length; ++i)
       controls[i].hidden = aShow;
 #endif
   }
 };
@@ -3709,17 +3709,17 @@ nsBrowserStatusHandler.prototype =
     this.reloadSkipCacheCommand = document.getElementById("Browser:ReloadSkipCache");
     this.statusTextField        = document.getElementById("statusbar-display");
     this.securityButton         = document.getElementById("security-button");
     this.urlBar                 = document.getElementById("urlbar");
     this.isImage                = document.getElementById("isImage");
 
     // Initialize the security button's state and tooltip text.  Remember to reset
     // _hostChanged, otherwise onSecurityChange will short circuit.
-    var securityUI = getBrowser().securityUI;
+    var securityUI = gBrowser.securityUI;
     this._hostChanged = true;
     this.onSecurityChange(null, null, securityUI.state);
   },
 
   destroy : function()
   {
     // XXXjag to avoid leaks :-/, see bug 60729
     this.throbberElement        = null;
@@ -3855,17 +3855,17 @@ nsBrowserStatusHandler.prototype =
       if (aRequest) {
         var msg = "";
           // Get the URI either from a channel or a pseudo-object
           if (aRequest instanceof nsIChannel || "URI" in aRequest) {
             var location = aRequest.URI;
 
             // For keyword URIs clear the user typed value since they will be changed into real URIs
             if (location.scheme == "keyword" && aWebProgress.DOMWindow == content)
-              getBrowser().userTypedValue = null;
+              gBrowser.userTypedValue = null;
 
             if (location.spec != "about:blank") {
               const kErrorBindingAborted = 0x804B0002;
               const kErrorNetTimeout = 0x804B000E;
               switch (aStatus) {
                 case kErrorBindingAborted:
                   msg = gNavigatorBundle.getString("nv_stopped");
                   break;
@@ -3932,17 +3932,17 @@ nsBrowserStatusHandler.prototype =
     // This code here does not compare uris exactly when determining
     // whether or not the message should be hidden since the message
     // may be prematurely hidden when an install is invoked by a click
     // on a link that looks like this:
     //
     // <a href="#" onclick="return install();">Install Foo</a>
     //
     // - which fires a onLocationChange message to uri + '#'...
-    var selectedBrowser = getBrowser().selectedBrowser;
+    var selectedBrowser = gBrowser.selectedBrowser;
     if (selectedBrowser.lastURI) {
       var oldSpec = selectedBrowser.lastURI.spec;
       var oldIndexOfHash = oldSpec.indexOf("#");
       if (oldIndexOfHash != -1)
         oldSpec = oldSpec.substr(0, oldIndexOfHash);
       var newSpec = location;
       var newIndexOfHash = newSpec.indexOf("#");
       if (newIndexOfHash != -1)
@@ -3964,17 +3964,17 @@ nsBrowserStatusHandler.prototype =
 
     this.setOverLink("", null);
 
     // We should probably not do this if the value has changed since the user
     // searched
     // Update urlbar only if a new page was loaded on the primary content area
     // Do not update urlbar if there was a subframe navigation
 
-    var browser = getBrowser().selectedBrowser;
+    var browser = gBrowser.selectedBrowser;
     if (aWebProgress.DOMWindow == content) {
 
       if ((location == "about:blank" && !content.opener) ||
            location == "") {  // Second condition is for new tabs, otherwise
                               // reload function is enabled until tab is refreshed.
         this.reloadCommand.setAttribute("disabled", "true");
         this.reloadSkipCacheCommand.setAttribute("disabled", "true");
       } else {
@@ -4266,20 +4266,16 @@ nsBrowserAccess.prototype =
     var referrer = null;
     var isExternal = (aContext == Ci.nsIBrowserDOMWindow.OPEN_EXTERNAL);
 
     if (isExternal && aURI && aURI.schemeIs("chrome")) {
       dump("use -chrome command-line option to load external chrome urls\n");
       return null;
     }
 
-    if (!gPrefService)
-      gPrefService = Components.classes["@mozilla.org/preferences-service;1"]
-                               .getService(Components.interfaces.nsIPrefBranch2);
-
     var loadflags = isExternal ?
                        Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL :
                        Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
     var location;
     if (aWhere == Ci.nsIBrowserDOMWindow.OPEN_DEFAULTWINDOW) {
       switch (aContext) {
         case Ci.nsIBrowserDOMWindow.OPEN_EXTERNAL :
           aWhere = gPrefService.getIntPref("browser.link.open_external");
@@ -4426,19 +4422,18 @@ function onViewToolbarsPopupShowing(aEve
   for (i = popup.childNodes.length-1; i >= 0; --i) {
     var deadItem = popup.childNodes[i];
     if (deadItem.hasAttribute("toolbarindex"))
       popup.removeChild(deadItem);
   }
 
   var firstMenuItem = popup.firstChild;
 
-  var toolbox = getNavToolbox();
-  for (i = 0; i < toolbox.childNodes.length; ++i) {
-    var toolbar = toolbox.childNodes[i];
+  for (i = 0; i < gNavToolbox.childNodes.length; ++i) {
+    var toolbar = gNavToolbox.childNodes[i];
     var toolbarName = toolbar.getAttribute("toolbarname");
     var type = toolbar.getAttribute("type");
     if (toolbarName && type != "menubar") {
       var menuItem = document.createElement("menuitem");
       menuItem.setAttribute("toolbarindex", i);
       menuItem.setAttribute("type", "checkbox");
       menuItem.setAttribute("label", toolbarName);
       menuItem.setAttribute("accesskey", toolbar.getAttribute("accesskey"));
@@ -4448,19 +4443,18 @@ function onViewToolbarsPopupShowing(aEve
       menuItem.addEventListener("command", onViewToolbarCommand, false);
     }
     toolbar = toolbar.nextSibling;
   }
 }
 
 function onViewToolbarCommand(aEvent)
 {
-  var toolbox = getNavToolbox();
   var index = aEvent.originalTarget.getAttribute("toolbarindex");
-  var toolbar = toolbox.childNodes[index];
+  var toolbar = gNavToolbox.childNodes[index];
 
   toolbar.collapsed = aEvent.originalTarget.getAttribute("checked") != "true";
   document.persist(toolbar.id, "collapsed");
 }
 
 function displaySecurityInfo()
 {
   BrowserPageInfo(null, "securityTab");
@@ -4955,30 +4949,16 @@ var contentAreaDNDObserver = {
       flavourSet.appendFlavour("text/x-moz-url");
       flavourSet.appendFlavour("text/unicode");
       flavourSet.appendFlavour("application/x-moz-file", "nsIFile");
       return flavourSet;
     }
 
 };
 
-function getBrowser()
-{
-  if (!gBrowser)
-    gBrowser = document.getElementById("content");
-  return gBrowser;
-}
-
-function getNavToolbox()
-{
-  if (!gNavToolbox)
-    gNavToolbox = document.getElementById("navigator-toolbox");
-  return gNavToolbox;
-}
-
 function MultiplexHandler(event)
 { try {
     var node = event.target;
     var name = node.getAttribute('name');
 
     if (name == 'detectorGroup') {
         SetForcedDetector(true);
         SelectDetector(event, false);
@@ -5025,27 +5005,26 @@ function SetForcedDetector(doReload)
 
 function SetForcedCharset(charset)
 {
     BrowserSetForcedCharacterSet(charset);
 }
 
 function BrowserSetForcedCharacterSet(aCharset)
 {
-  var docCharset = getBrowser().docShell.QueryInterface(
-                            Components.interfaces.nsIDocCharset);
+  var docCharset = gBrowser.docShell.QueryInterface(Ci.nsIDocCharset);
   docCharset.charset = aCharset;
   // Save the forced character-set
   PlacesUtils.history.setCharsetForURI(getWebNavigation().currentURI, aCharset);
   BrowserReloadWithFlags(nsIWebNavigation.LOAD_FLAGS_CHARSET_CHANGE);
 }
 
 function BrowserSetForcedDetector(doReload)
 {
-  getBrowser().documentCharsetInfo.forcedDetector = true;
+  gBrowser.documentCharsetInfo.forcedDetector = true;
   if (doReload)
     BrowserReloadWithFlags(nsIWebNavigation.LOAD_FLAGS_CHARSET_CHANGE);
 }
 
 function UpdateCurrentCharset()
 {
     // extract the charset from DOM
     var wnd = document.commandDispatcher.focusedWindow;
@@ -5401,17 +5380,17 @@ var OfflineApps = {
   // the best browser in which to warn the user about space usage
   _getBrowserForCacheUpdate: function(aCacheUpdate) {
     // Prefer the current browser
     var uri = this._getManifestURI(gBrowser.mCurrentBrowser.contentWindow);
     if (uri && uri.equals(aCacheUpdate.manifestURI)) {
       return gBrowser.mCurrentBrowser;
     }
 
-    var browsers = getBrowser().browsers;
+    var browsers = gBrowser.browsers;
     for (var i = 0; i < browsers.length; ++i) {
       uri = this._getManifestURI(browsers[i].contentWindow);
       if (uri && uri.equals(aCacheUpdate.manifestURI)) {
         return browsers[i];
       }
     }
 
     return null;
@@ -5610,37 +5589,36 @@ var OfflineApps = {
         }
       }
     }
   }
 };
 
 function WindowIsClosing()
 {
-  var browser = getBrowser();
-  var cn = browser.tabContainer.childNodes;
+  var cn = gBrowser.tabContainer.childNodes;
   var numtabs = cn.length;
   var reallyClose = true;
 
   for (var i = 0; reallyClose && i < numtabs; ++i) {
-    var ds = browser.getBrowserForTab(cn[i]).docShell;
+    var ds = gBrowser.getBrowserForTab(cn[i]).docShell;
 
     if (ds.contentViewer && !ds.contentViewer.permitUnload())
       reallyClose = false;
   }
 
   if (!reallyClose)
     return false;
 
   // closeWindow takes a second optional function argument to open up a
   // window closing warning dialog if we're not quitting. (Quitting opens
   // up another dialog so we don't need to.)
   return closeWindow(false,
     function () {
-      return browser.warnAboutClosingTabs(true);
+      return gBrowser.warnAboutClosingTabs(true);
     });
 }
 
 var MailIntegration = {
   sendLinkForWindow: function (aWindow) {
     this.sendMessage(aWindow.location.href,
                      aWindow.document.title);
   },
@@ -5799,26 +5777,25 @@ function getPluginInfo(pluginElement)
       tagMimetype = pluginElement.type;
     }
   }
 
   return {mimetype: tagMimetype, pluginsPage: pluginsPage};
 }
 
 missingPluginInstaller.prototype.installSinglePlugin = function(aEvent){
-  var tabbrowser = getBrowser();
   var missingPluginsArray = {};
 
   var pluginInfo = getPluginInfo(aEvent.target);
   missingPluginsArray[pluginInfo.mimetype] = pluginInfo;
 
   if (missingPluginsArray) {
     window.openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul",
                       "PFSWindow", "chrome,centerscreen,resizable=yes",
-                      {plugins: missingPluginsArray, browser: tabbrowser.selectedBrowser});
+                      {plugins: missingPluginsArray, browser: gBrowser.selectedBrowser});
   }
 
   aEvent.preventDefault();
 }
 
 missingPluginInstaller.prototype.newMissingPlugin = function(aEvent){
   // Since we are expecting also untrusted events, make sure
   // that the target is a plugin
@@ -5837,28 +5814,27 @@ missingPluginInstaller.prototype.newMiss
                                    false);
   }
 
   try {
     if (gPrefService.getBoolPref("plugins.hide_infobar_for_missing_plugin"))
       return;
   } catch (ex) {} // if the pref is missing, treat it as false, which shows the infobar
 
-  var tabbrowser = getBrowser();
-  const browsers = tabbrowser.mPanelContainer.childNodes;
+  const browsers = gBrowser.mPanelContainer.childNodes;
 
   var contentWindow = aEvent.target.ownerDocument.defaultView.top;
 
   var i = 0;
   for (; i < browsers.length; i++) {
-    if (tabbrowser.getBrowserAtIndex(i).contentWindow == contentWindow)
+    if (gBrowser.getBrowserAtIndex(i).contentWindow == contentWindow)
       break;
   }
 
-  var browser = tabbrowser.getBrowserAtIndex(i);
+  var browser = gBrowser.getBrowserAtIndex(i);
   if (!browser.missingPlugins)
     browser.missingPlugins = {};
 
   var pluginInfo = getPluginInfo(aEvent.target);
 
   browser.missingPlugins[pluginInfo.mimetype] = pluginInfo;
 
   var notificationBox = gBrowser.getNotificationBox(browser);
@@ -5930,22 +5906,21 @@ function blocklistInfo()
   var url = formatter.formatURLPref("extensions.blocklist.detailsURL");
   gBrowser.loadOneTab(url, null, null, null, false, false);
   return true;
 }
 
 function pluginsMissing()
 {
   // get the urls of missing plugins
-  var tabbrowser = getBrowser();
-  var missingPluginsArray = tabbrowser.selectedBrowser.missingPlugins;
+  var missingPluginsArray = gBrowser.selectedBrowser.missingPlugins;
   if (missingPluginsArray) {
     window.openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul",
                       "PFSWindow", "chrome,centerscreen,resizable=yes",
-                      {plugins: missingPluginsArray, browser: tabbrowser.selectedBrowser});
+                      {plugins: missingPluginsArray, browser: gBrowser.selectedBrowser});
   }
 }
 
 var gMissingPluginInstaller = new missingPluginInstaller();
 
 function convertFromUnicode(charset, str)
 {
   try {
@@ -6218,44 +6193,43 @@ HistoryMenu.populateUndoSubmenu = functi
   * @param aEvent
   *        The event when the user clicks the menu item
   */
 function undoCloseMiddleClick(aEvent) {
   if (aEvent.button != 1)
     return;
 
   undoCloseTab(aEvent.originalTarget.value);
-  getBrowser().moveTabToEnd();
+  gBrowser.moveTabToEnd();
 }
 
 /**
  * Re-open a closed tab.
  * @param aIndex
  *        The index of the tab (via nsSessionStore.getClosedTabData)
  */
 function undoCloseTab(aIndex) {
   // wallpaper patch to prevent an unnecessary blank tab (bug 343895)
-  var tabbrowser = getBrowser();
   var blankTabToRemove = null;
-  if (tabbrowser.tabContainer.childNodes.length == 1 &&
+  if (gBrowser.tabContainer.childNodes.length == 1 &&
       !gPrefService.getBoolPref("browser.tabs.autoHide") &&
-      tabbrowser.selectedBrowser.sessionHistory.count < 2 &&
-      tabbrowser.selectedBrowser.currentURI.spec == "about:blank" &&
-      !tabbrowser.selectedBrowser.contentDocument.body.hasChildNodes() &&
-      !tabbrowser.selectedTab.hasAttribute("busy"))
-    blankTabToRemove = tabbrowser.selectedTab;
+      gBrowser.selectedBrowser.sessionHistory.count < 2 &&
+      gBrowser.selectedBrowser.currentURI.spec == "about:blank" &&
+      !gBrowser.selectedBrowser.contentDocument.body.hasChildNodes() &&
+      !gBrowser.selectedTab.hasAttribute("busy"))
+    blankTabToRemove = gBrowser.selectedTab;
 
   var ss = Cc["@mozilla.org/browser/sessionstore;1"].
            getService(Ci.nsISessionStore);
   if (ss.getClosedTabCount(window) == 0)
     return;
   ss.undoCloseTab(window, aIndex || 0);
 
   if (blankTabToRemove)
-    tabbrowser.removeTab(blankTabToRemove);
+    gBrowser.removeTab(blankTabToRemove);
 }
 
 /**
  * Format a URL
  * eg:
  * echo formatURL("http://%LOCALE%.amo.mozilla.org/%LOCALE%/%APP%/%VERSION%/");
  * > http://en-US.amo.mozilla.org/en-US/firefox/3.0a1/
  *
@@ -6757,8 +6731,12 @@ let DownloadMonitorPanel = {
   onSecurityChange: function(aWebProgress, aRequest, aState, aDownload) {
   },
 
   //////////////////////////////////////////////////////////////////////////////
   //// nsISupports
 
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIDownloadProgressListener]),
 };
+
+/* DEPRECATED */
+function getBrowser() gBrowser;
+function getNavToolbox() gNavToolbox;
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -99,20 +99,24 @@
     <tooltip id="aHTMLTooltip" onpopupshowing="return FillInHTMLTooltip(document.tooltipNode);"/>
 
     <!-- for search and content formfill/pw manager -->
     <panel type="autocomplete" chromedir="&locale.dir;" id="PopupAutoComplete" noautofocus="true" hidden="true"/>
 
     <!-- for url bar autocomplete -->
     <panel type="autocomplete-richlistbox" chromedir="&locale.dir;" id="PopupAutoCompleteRichResult" noautofocus="true" hidden="true"/>
 
+    <!-- XXX panel element that has one or more text fields should not be
+             top-most panel, for IME users. See bug 433340 comment 100. -->
     <panel id="editBookmarkPanel"
            orient="vertical"
            ignorekeys="true"
            hidden="true"
+           noautohide="true"
+           onpopupshowing="this.removeAttribute('noautohide');"
            onpopupshown="StarUI.panelShown(event);"
            aria-labelledby="editBookmarkPanelTitle">
       <hbox flex="1" align="top">
         <image id="editBookmarkPanelStarIcon"/>
         <vbox flex="1">
           <label id="editBookmarkPanelTitle" flex="1"/>
           <description id="editBookmarkPanelDescription" flex="1"/>
           <hbox>
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -1184,16 +1184,18 @@ nsContextMenu.prototype = {
     else
       engineName = ss.defaultEngine.name;
 
     // format "Search <engine> for <selection>" string to show in menu
     var menuLabel = gNavigatorBundle.getFormattedString("contextMenuSearchText",
                                                         [engineName,
                                                          selectedText]);
     document.getElementById("context-searchselect").label = menuLabel;
+    document.getElementById("context-searchselect").accessKey =
+             gNavigatorBundle.getString("contextMenuSearchText.accesskey"); 
 
     return true;
   },
 
   // Returns true if anything is selected.
   isContentSelection: function() {
     return !document.commandDispatcher.focusedWindow.getSelection().isCollapsed;
   },
--- a/browser/base/content/pageinfo/pageInfo.xul
+++ b/browser/base/content/pageinfo/pageInfo.xul
@@ -65,21 +65,21 @@
   persist="screenX screenY width height sizemode">
 
   <script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"/>
   <script type="application/x-javascript" src="chrome://global/content/contentAreaUtils.js"/>
   <script type="application/x-javascript" src="chrome://browser/content/pageinfo/pageInfo.js"/>
   <script type="application/x-javascript" src="chrome://browser/content/pageinfo/feeds.js"/>
   <script type="application/x-javascript" src="chrome://browser/content/pageinfo/permissions.js"/>
   <script type="application/x-javascript" src="chrome://browser/content/pageinfo/security.js"/>
-  <script type="application/x-javascript" src="chrome://global/content/strres.js"/>
   <script type="application/x-javascript" src="chrome://browser/content/utilityOverlay.js"/>
 
   <stringbundleset id="pageinfobundleset">
     <stringbundle id="pageinfobundle" src="chrome://browser/locale/pageInfo.properties"/>
+    <stringbundle id="pkiBundle" src="chrome://pippki/locale/pippki.properties"/>
   </stringbundleset>
 
   <commandset id="pageInfoCommandSet">
     <command id="cmd_close"     oncommand="window.close();"/>
     <command id="cmd_help"      oncommand="doHelpButton();"/>
     <command id="cmd_copy"      oncommand="doCopy();"/>
     <command id="cmd_selectall" oncommand="doSelectAll();"/>
 
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -181,30 +181,29 @@ var security = {
                         "Toolkit:PasswordManager", "", 
                         {filterString : this._getSecurityInfo().hostName});
   },
 
   _cert : null
 };
 
 function securityOnLoad() {
-  var bundle = srGetStrBundle("chrome://pippki/locale/pippki.properties");
-  var pageInfoBundle = document.getElementById("pageinfobundle");
-
   var info = security._getSecurityInfo();
   if (!info) {
     document.getElementById("securityTab").hidden = true;
     document.getElementById("securityBox").collapsed = true;
     return;
   }
   else {
     document.getElementById("securityTab").hidden = false;
     document.getElementById("securityBox").collapsed = false;
   }
 
+  const pageInfoBundle = document.getElementById("pageinfobundle");
+
   /* Set Identity section text */
   setText("security-identity-domain-value", info.hostName);
   
   var owner, verifier, generalPageIdentityString;
   if (info.cert && !info.isBroken) {
     // Try to pull out meaningful values.  Technically these fields are optional
     // so we'll employ fallbacks where appropriate.  The EV spec states that Org
     // fields must be specified for subject and issuer so that case is simpler.
@@ -268,45 +267,46 @@ function securityOnLoad() {
     setText("security-privacy-history-value",
             pageInfoBundle.getString("securityOneVisit"));
   }
   else {
     setText("security-privacy-history-value", noStr);        
   }
 
   /* Set the Technical Detail section messages */
+  const pkiBundle = document.getElementById("pkiBundle");
   var hdr;
   var msg1;
   var msg2;
 
   if (info.isBroken) {
-    hdr = bundle.GetStringFromName("pageInfo_MixedContent");
-    msg1 = bundle.GetStringFromName("pageInfo_Privacy_Mixed1");
-    msg2 = bundle.GetStringFromName("pageInfo_Privacy_None2");
+    hdr = pkiBundle.getString("pageInfo_MixedContent");
+    msg1 = pkiBundle.getString("pageInfo_Privacy_Mixed1");
+    msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
   }
   else if (info.encryptionStrength >= 90) {
-    hdr = bundle.formatStringFromName("pageInfo_StrongEncryption",
-                          [ info.encryptionAlgorithm, info.encryptionStrength + "" ], 2);
-    msg1 = bundle.GetStringFromName("pageInfo_Privacy_Strong1");
-    msg2 = bundle.GetStringFromName("pageInfo_Privacy_Strong2");
+    hdr = pkiBundle.getFormattedString("pageInfo_StrongEncryption",
+                                       [info.encryptionAlgorithm, info.encryptionStrength + ""]);
+    msg1 = pkiBundle.getString("pageInfo_Privacy_Strong1");
+    msg2 = pkiBundle.getString("pageInfo_Privacy_Strong2");
     security._cert = info.cert;
   }
   else if (info.encryptionStrength > 0) {
-    hdr  = bundle.formatStringFromName("pageInfo_WeakEncryption",
-                          [ info.encryptionAlgorithm, info.encryptionStrength + "" ], 2);
-    msg1 = bundle.formatStringFromName("pageInfo_Privacy_Weak1", [ info.hostName ], 1);
-    msg2 = bundle.GetStringFromName("pageInfo_Privacy_Weak2");
+    hdr  = pkiBundle.getFormattedString("pageInfo_WeakEncryption",
+                                        [info.encryptionAlgorithm, info.encryptionStrength + ""]);
+    msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_Weak1", [info.hostName]);
+    msg2 = pkiBundle.getString("pageInfo_Privacy_Weak2");
   }
   else {
-    hdr = bundle.GetStringFromName("pageInfo_NoEncryption");
+    hdr = pkiBundle.getString("pageInfo_NoEncryption");
     if (info.hostName != null)
-      msg1 = bundle.formatStringFromName("pageInfo_Privacy_None1", [ info.hostName ], 1);
+      msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [info.hostName]);
     else
-      msg1 = bundle.GetStringFromName("pageInfo_Privacy_None3");
-    msg2 = bundle.GetStringFromName("pageInfo_Privacy_None2");
+      msg1 = pkiBundle.getString("pageInfo_Privacy_None3");
+    msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
   }
   setText("security-technical-shortform", hdr);
   setText("security-technical-longform1", msg1);
   setText("security-technical-longform2", msg2); 
   setText("general-security-privacy", hdr);
 }
 
 function setText(id, value)
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -273,17 +273,16 @@
         <parameter name="aStartsBlank"/>
         <body>
         <![CDATA[
           return ({
             mTabBrowser: this,
             mTab: aTab,
             mBrowser: aBrowser,
             mBlank: aStartsBlank,
-            mLastURI: null,
 
             // cache flags for correct status bar update after tab switching
             mStateFlags: 0,
             mStatus: 0,
             mMessage: "",
             mTotalProgress: 0,
 
             // count of open requests (should always be 0 or 1)
@@ -1386,31 +1385,45 @@
           ]]>
         </body>
       </method>
 
       <method name="removeTab">
         <parameter name="aTab"/>
         <body>
           <![CDATA[
+            this._endRemoveTab(this._beginRemoveTab(aTab, true));
+          ]]>
+        </body>
+      </method>
+
+      <!-- Returns the tab being removed.  This might not be the same as aTab,
+           in cases when aTab is not actually a tab -->
+      <method name="_beginRemoveTab">
+        <parameter name="aTab"/>
+        <parameter name="aFireBeforeUnload"/>
+        <body>
+          <![CDATA[
             this._browsers = null; // invalidate cache
             if (aTab.localName != "tab")
               aTab = this.mCurrentTab;
 
             var l = this.mTabContainer.childNodes.length;
             if (l == 1 && this.mPrefs.getBoolPref("browser.tabs.autoHide")) {
               // hide the tab bar
               this.mPrefs.setBoolPref("browser.tabs.forceHide", true);
               this.setStripVisibilityTo(false);
               return;
             }
 
-            var ds = this.getBrowserForTab(aTab).docShell;
-            if (ds.contentViewer && !ds.contentViewer.permitUnload())
-              return;
+            if (aFireBeforeUnload) {
+              var ds = this.getBrowserForTab(aTab).docShell;
+              if (ds.contentViewer && !ds.contentViewer.permitUnload())
+                return;
+            }
 
             // see notes in addTab
             var _delayedUpdate = function(aTabContainer) {
               aTabContainer.adjustTabstrip();
               aTabContainer.mTabstrip._updateScrollButtonsDisabledState();
             }
             setTimeout(_delayedUpdate, 0, this.mTabContainer);
 
@@ -1430,76 +1443,82 @@
             // We're committed to closing the tab now.  
             // Dispatch a notification.
             // We dispatch it before any teardown so that event listeners can
             // inspect the tab that's about to close.
             var evt = document.createEvent("Events");
             evt.initEvent("TabClose", true, false);
             aTab.dispatchEvent(evt);
 
-            var index = -1;
-            if (this.mCurrentTab == aTab)
-              index = this.mTabContainer.selectedIndex;
-            else {
-              // Find and locate the tab in our list.
-              for (var i = 0; i < l; i++)
-                if (this.mTabContainer.childNodes[i] == aTab)
-                  index = i;
-            }
+            var index = aTab._tPos;
 
             // Remove the tab's filter and progress listener.
             const filter = this.mTabFilters[index];
             var oldBrowser = this.getBrowserAtIndex(index);
             oldBrowser.webProgress.removeProgressListener(filter);
             filter.removeProgressListener(this.mTabListeners[index]);
             this.mTabFilters.splice(index, 1);
             this.mTabListeners.splice(index, 1);
 
             // Remove our title change and blocking listeners
             oldBrowser.removeEventListener("DOMTitleChanged", this.onTitleChanged, true);
 
             // We are no longer the primary content area.
             oldBrowser.setAttribute("type", "content-targetable");
 
-            // Get the index of the tab we're removing before unselecting it
-            var currentIndex = this.mTabContainer.selectedIndex;
-
-            var oldTab = aTab;
-
-            // clean up the before/afterselected attributes before removing the tab
-            oldTab._selected = false;
-
             // Remove this tab as the owner of any other tabs, since it's going away.
-            for (i = 0; i < this.mTabContainer.childNodes.length; ++i) {
+            for (var i = 0; i < this.mTabs.length; ++i) {
               var tab = this.mTabContainer.childNodes[i];
-              if ("owner" in tab && tab.owner == oldTab)
+              if ("owner" in tab && tab.owner == aTab)
                 // |tab| is a child of the tab we're removing, make it an orphan
                 tab.owner = null;
             }
 
+            return aTab;
+          ]]>
+        </body>
+      </method>
+
+      <method name="_endRemoveTab">
+        <parameter name="aTab"/>
+        <body>
+          <![CDATA[
+            var browser = this.getBrowserForTab(aTab);
+            var length = this.mTabs.length;
+
+            // Get the index of the tab we're removing before unselecting it
+            var currentIndex = this.mTabContainer.selectedIndex;
+            var index = aTab._tPos;
+
+            // clean up the before/afterselected attributes before removing the
+            // tab.  But make sure this happens after we grab currentIndex.
+            aTab._selected = false;
+
             // Because of the way XBL works (fields just set JS
             // properties on the element) and the code we have in place
             // to preserve the JS objects for any elements that have
             // JS properties set on them, the browser element won't be
             // destroyed until the document goes away.  So we force a
             // cleanup ourselves.
             // This has to happen before we remove the child so that the
             // XBL implementation of nsIObserver still works.  But
             // clearing focusedWindow happens below because it gets
             // reset by updateCurrentBrowser.
-            oldBrowser.destroy();
-
-            if (oldBrowser == this.mCurrentBrowser)
+            browser.destroy();
+
+            if (browser == this.mCurrentBrowser)
               this.mCurrentBrowser = null;
 
             // Remove the tab
-            this.mTabContainer.removeChild(oldTab);
+            this.mTabContainer.removeChild(aTab);
+            // Update our length
+            --length;
             // invalidate cache, because mTabContainer is about to change
             this._browsers = null; 
-            this.mPanelContainer.removeChild(oldBrowser.parentNode);
+            this.mPanelContainer.removeChild(browser.parentNode);
 
             try {
               // if we're at the right side (and not the logical end,
               // which is why this works for both LTR and RTL)
               // of the tabstrip, we need to ensure that we stay 
               // completely scrolled to the right side
               var tabStrip = this.mTabContainer.mTabstrip;
               var scrollPos = {};
@@ -1518,44 +1537,89 @@
 
             // Find the tab to select
             var newIndex = -1;
             if (currentIndex > index)
               newIndex = currentIndex-1;
             else if (currentIndex < index)
               newIndex = currentIndex;
             else {
-              if ("owner" in oldTab && oldTab.owner &&
+              if ("owner" in aTab && aTab.owner &&
                   this.mPrefs.getBoolPref("browser.tabs.selectOwnerOnClose")) {
-                for (i = 0; i < this.mTabContainer.childNodes.length; ++i) {
+                for (var i = 0; i < length; ++i) {
                   tab = this.mTabContainer.childNodes[i];
-                  if (tab == oldTab.owner) {
+                  if (tab == aTab.owner) {
                     newIndex = i;
                     break;
                   }
                 }
               }
               if (newIndex == -1)
-                newIndex = (index == l - 1) ? index - 1 : index;
+                newIndex = (index == length) ? index - 1 : index;
             }
 
             // Select the new tab
-            this.selectedTab = this.mTabContainer.childNodes[newIndex];
-
-            for (i = oldTab._tPos; i < this.mTabContainer.childNodes.length; i++) {
+            this.selectedTab = this.mTabs[newIndex];
+
+            for (i = aTab._tPos; i < length; i++) {
               this.mTabContainer.childNodes[i]._tPos = i;
             }
             this.mTabBox.selectedPanel = this.getBrowserForTab(this.mCurrentTab).parentNode;
             this.mCurrentTab._selected = true;
 
             this.updateCurrentBrowser();
 
             // see comment above destroy above
-            oldBrowser.focusedWindow = null;
-            oldBrowser.focusedElement = null;
+            browser.focusedWindow = null;
+            browser.focusedElement = null;
+          ]]>
+        </body>
+      </method>
+
+      <method name="swapBrowsersAndCloseOther">
+        <parameter name="aOurTab"/>
+        <parameter name="aOtherTab"/>
+        <body>
+          <![CDATA[
+            var remoteBrowser =
+              aOtherTab.ownerDocument.defaultView.getBrowser();
+            var tabCount = remoteBrowser.mTabs.length;
+
+            // First, start teardown of the other browser.  Make sure to not
+            // fire the beforeunload event in the process.
+            var tabToRemove = remoteBrowser._beginRemoveTab(aOtherTab, false);
+
+            // Unhook our progress listener
+            var ourIndex = aOurTab._tPos;
+            const filter = this.mTabFilters[ourIndex];
+            var tabListener = this.mTabListeners[ourIndex];
+            var ourBrowser = this.getBrowserForTab(aOurTab);
+            ourBrowser.webProgress.removeProgressListener(filter);
+            filter.removeProgressListener(tabListener);
+            var tabListenerBlank = tabListener.mBlank;
+
+            // Swap the docshells
+            ourBrowser.swapDocShells(remoteBrowser.getBrowserForTab(aOtherTab));
+
+            // Finish tearing down the tab that's going away.
+            remoteBrowser._endRemoveTab(tabToRemove);
+
+            // Restore the progress listener
+            tabListener = this.mTabProgressListener(aOurTab, ourBrowser,
+                                                    tabListenerBlank);
+            this.mTabListeners[ourIndex] = tabListener;
+            filter.addProgressListener(tabListener,
+              Components.interfaces.nsIWebProgress.NOTIFY_ALL);
+              
+            ourBrowser.webProgress.addProgressListener(filter,
+              Components.interfaces.nsIWebProgress.NOTIFY_ALL);
+
+            // close the other window if this was its last tab
+            if (tabCount == 1)
+              aOtherTab.ownerDocument.defaultView.close();
           ]]>
         </body>
       </method>
 
       <method name="reloadAllTabs">
         <body>
           <![CDATA[
             var l = this.mPanelContainer.childNodes.length;
@@ -1874,29 +1938,36 @@
                 // move the dropped tab
                 if (newIndex > draggedTab._tPos)
                   newIndex--;
                 if (newIndex != draggedTab._tPos)
                   this.moveTabTo(draggedTab, newIndex);
               }
             }
             else if (draggedTab) {
-              // copy the dropped tab and remove it from the other window
-              // (making it seem to have moved between windows)
+              // swap the dropped tab with a new one we create and then close
+              // it in the other window (making it seem to have moved between
+              // windows)
               newIndex = this.getNewIndex(aEvent);
-              newTab = this.duplicateTab(draggedTab);
-              this.moveTabTo(newTab, newIndex);
-              this.selectedTab = newTab;
+              newTab = this.addTab("about:blank");
+              var newBrowser = this.getBrowserForTab(newTab);
+              // Stop the about:blank load
+              newBrowser.stop();
+              // make sure it has a docshell
+              newBrowser.docShell;
               
-              var remoteBrowser = draggedTab.ownerDocument.defaultView.getBrowser();
-              var tabCount = remoteBrowser.tabContainer.childNodes.length;
-              remoteBrowser.removeTab(draggedTab);
-              // close the other window if this was its last tab
-              if (tabCount == 1)
-                draggedTab.ownerDocument.defaultView.close();
+              this.moveTabTo(newTab, newIndex);
+              
+              this.swapBrowsersAndCloseOther(newTab, draggedTab);
+
+              // We need to set selectedTab after we've done
+              // swapBrowsersAndCloseOther, so that the updateCurrentBrowser
+              // it triggers will correctly update our URL bar.
+              this.selectedTab = newTab;
+              this.setTabTitle(newTab);
             }
             else {
               var url = transferUtils.retrieveURLFromData(aXferData.data, aXferData.flavour.contentType);
 
               // valid urls don't contain spaces ' '; if we have a space it isn't a valid url.
               // Also disallow dropping javascript: or data: urls--bail out
               if (!url || !url.length || url.indexOf(" ", 0) != -1 ||
                   /^\s*(javascript|data):/.test(url))
--- a/browser/base/content/test/Makefile.in
+++ b/browser/base/content/test/Makefile.in
@@ -54,16 +54,18 @@ include $(topsrcdir)/config/rules.mk
 _BROWSER_FILES = browser_bug321000.js \
                  browser_bug405137.js \
                  browser_bug409481.js \
                  browser_autodiscovery.js \
                  browser_bug420160.js \
                  autodiscovery.html \
                  moz.png \
                  browser_getshortcutoruri.js \
+                 browser_page_style_menu.js \
+                 page_style_sample.html \
     $(NULL)
 
 ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
 _BROWSER_FILES += browser_customize.js \
     $(NULL)
 endif
 
 # disable tests on linux for now..
--- a/browser/base/content/test/browser_bug409481.js
+++ b/browser/base/content/test/browser_bug409481.js
@@ -3,16 +3,17 @@ function test() {
 
   // XXX This looks a bit odd, but is needed to avoid throwing when removing the
   // event listeners below. See bug 310955.
   document.getElementById("sidebar").addEventListener("load", delayedOpenUrl, true);
   toggleSidebar("viewWebPanelsSidebar", true);
 }
 
 function delayedOpenUrl() {
+  ok(true, "Ran delayedOpenUrl");
   setTimeout(openPanelUrl, 100);
 }
 
 function openPanelUrl(event) {
   ok(!document.getElementById("sidebar-box").hidden, "Sidebar showing");
 
   var sidebar = document.getElementById("sidebar");
   var root = sidebar.contentDocument.documentElement;
@@ -21,16 +22,17 @@ function openPanelUrl(event) {
   sidebar.removeEventListener("load", delayedOpenUrl, true);
   // XXX See comment above
   sidebar.contentDocument.addEventListener("load", delayedRunTest, true);
   var url = 'data:text/html,<div%20id="test_bug409481">Content!</div>';
   sidebar.contentWindow.loadWebPanel(url);
 }
 
 function delayedRunTest() {
+  ok(true, "Ran delayedRunTest");
   setTimeout(runTest, 100);
 }
 
 function runTest(event) {
   var sidebar = document.getElementById("sidebar");
   sidebar.contentDocument.removeEventListener("load", delayedRunTest, true);
 
   var browser = sidebar.contentDocument.getElementById("web-panels-browser");
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/browser_page_style_menu.js
@@ -0,0 +1,66 @@
+function test() {
+  waitForExplicitFinish();
+  finish();
+  return;
+
+  var tab = gBrowser.addTab();
+  gBrowser.selectedTab = tab;
+  tab.linkedBrowser.addEventListener("load", checkPageStyleMenu, true);
+  content.location =
+    "chrome://mochikit/content/browser/browser/base/content/test/page_style_sample.html";
+}
+
+function checkPageStyleMenu() {
+  var menupopup = document.getElementById("pageStyleMenu")
+                          .getElementsByTagName("menupopup")[0];
+  stylesheetFillPopup(menupopup);
+
+  var items = [];
+  var current = menupopup.getElementsByTagName("menuseparator")[0];
+  while (current.nextSibling) {
+    current = current.nextSibling;
+    items.push(current);
+  }
+
+  var validLinks = 0;
+  Array.forEach(content.document.getElementsByTagName("link"), function (link) {
+    var title = link.getAttribute("title");
+    var rel = link.getAttribute("rel");
+    var media = link.getAttribute("media");
+    var idstring = "link " + (title ? title : "without title and") +
+                   " with rel=\"" + rel + "\"" +
+                   (media ? " and media=\"" + media + "\"" : "");
+
+    var item = items.filter(function (item) item.label == title);
+    var found = item.length == 1;
+    var checked = found && (item[0].getAttribute("checked") == "true");
+
+    switch (link.getAttribute("data-state")) {
+      case "0":
+        ok(!found, idstring + " does not show up in page style menu");
+        break;
+      case "0-todo":
+        validLinks++;
+        todo(!found, idstring + " should not show up in page style menu");
+        ok(!checked, idstring + " is not selected");
+        break;
+      case "1":
+        validLinks++;
+        ok(found, idstring + " shows up in page style menu");
+        ok(!checked, idstring + " is not selected");
+        break;
+      case "2":
+        validLinks++;
+        ok(found, idstring + " shows up in page style menu");
+        ok(checked, idstring + " is selected");
+        break;
+      default:
+        throw "data-state attribute is missing or has invalid value";
+    }
+  });
+
+  is(validLinks, items.length, "all valid links found");
+
+  gBrowser.removeCurrentTab();
+  finish();
+}
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/page_style_sample.html
@@ -0,0 +1,31 @@
+<html>
+  <head>
+    <title>Test for page style menu</title>
+    <!-- data-state values:
+      0:      should not appear in the page style menu
+      0-todo: should not appear in the page style menu, but does
+      1:      should appear in the page style menu
+      2:      should appear in the page style menu as the selected stylesheet -->
+    <link data-state="1" href="404.css" title="1" rel="alternate stylesheet">
+    <link data-state="0"                title="2" rel="alternate stylesheet">
+    <link data-state="0" href="404.css"           rel="alternate stylesheet">
+    <link data-state="0" href="404.css" title=""  rel="alternate stylesheet">
+    <link data-state="1" href="404.css" title="3" rel="stylesheet alternate">
+    <link data-state="1" href="404.css" title="4" rel=" alternate stylesheet ">
+    <link data-state="1" href="404.css" title="5" rel="alternate stylesheet">
+    <link data-state="2" href="404.css" title="6" rel="stylesheet">
+    <link data-state="1" href="404.css" title="7" rel="foo stylesheet">
+    <link data-state="0" href="404.css" title="8" rel="alternate">
+    <link data-state="1" href="404.css" title="9" rel="alternate STYLEsheet">
+    <link data-state="1" href="404.css" title="10" rel="alternate stylesheet" media="">
+    <link data-state="1" href="404.css" title="11" rel="alternate stylesheet" media="all">
+    <link data-state="1" href="404.css" title="12" rel="alternate stylesheet" media="ALL ">
+    <link data-state="1" href="404.css" title="13" rel="alternate stylesheet" media="screen">
+    <link data-state="1" href="404.css" title="14" rel="alternate stylesheet" media=" Screen">
+    <link data-state="1" href="404.css" title="15" rel="alternate stylesheet" media="screen foo">
+    <link data-state="1" href="404.css" title="16" rel="alternate stylesheet" media="all  screen">
+    <link data-state="0-todo" href="404.css" title="17" rel="alternate stylesheet" media="allscreen">
+    <link data-state="0-todo" href="404.css" title="18" rel="alternate stylesheet" media="_all">
+  </head>
+  <body></body>
+</html>
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -37,17 +37,16 @@
 #
 # ***** END LICENSE BLOCK *****
 
 /**
  * Communicator Shared Utility Library
  * for shared application glue for the Communicator suite of applications
  **/
 
-var goPrefWindow = 0;
 var gBidiUI = false;
 
 function getBrowserURL()
 {
   return "chrome://browser/content/browser.xul";
 }
 
 function goToggleToolbar( id, elementID )
--- a/browser/base/content/web-panels.js
+++ b/browser/base/content/web-panels.js
@@ -110,17 +110,16 @@ function load()
                                                  Ci.nsIWebProgress.NOTIFY_ALL);
     if (panelBrowser.getAttribute("cachedurl")) {
         panelBrowser.webNavigation
                     .loadURI(panelBrowser.getAttribute("cachedurl"),
                              nsIWebNavigation.LOAD_FLAGS_NONE, null,
                              null, null);
     }
 
-    gNavigatorBundle = document.getElementById("bundle_browser");
     gLoadFired = true;
 }
 
 function unload()
 {
     getPanelBrowser().webProgress.removeProgressListener(panelProgressListener);
 }
 
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -10,16 +10,17 @@ browser.jar:
 %  overlay chrome://global/content/viewPartialSource.xul chrome://browser/content/viewSourceOverlay.xul
 %  style chrome://global/content/customizeToolbar.xul chrome://browser/content/browser.css
 %  style chrome://global/content/customizeToolbar.xul chrome://browser/skin/
 *       content/browser/aboutDialog.xul               (content/aboutDialog.xul)
 *       content/browser/aboutDialog.js                (content/aboutDialog.js)
         content/browser/aboutDialog.css               (content/aboutDialog.css)
 *       content/browser/aboutRobots.xhtml             (content/aboutRobots.xhtml)
         content/browser/aboutRobots-icon.png          (content/aboutRobots-icon.png)
+        content/browser/aboutRobots-icon-rtl.png      (content/aboutRobots-icon-rtl.png)
         content/browser/aboutRobots-widget-left.png   (content/aboutRobots-widget-left.png)
         content/browser/aboutRobots-widget-right.png  (content/aboutRobots-widget-right.png)
 *       content/browser/browser.css                   (content/browser.css)
 *       content/browser/browser.js                    (content/browser.js)
 *       content/browser/browser.xul                   (content/browser.xul)
 *       content/browser/credits.xhtml                 (content/credits.xhtml)
 *       content/browser/EULA.js                       (content/EULA.js)
 *       content/browser/EULA.xhtml                    (content/EULA.xhtml)
--- a/browser/build.mk
+++ b/browser/build.mk
@@ -54,8 +54,19 @@ tier_app_dirs += browser
 installer:
 	@$(MAKE) -C browser/installer installer
 
 package:
 	@$(MAKE) -C browser/installer
 
 install::
 	@$(MAKE) -C browser/installer install
+
+ifdef ENABLE_TESTS
+# Implemented in testing/testsuite-targets.mk
+mochitest-browser-chrome:
+	$(RUN_MOCHITEST) --browser-chrome
+	$(CHECK_TEST_ERROR)
+
+mochitest:: mochitest-browser-chrome
+
+.PHONY: mochitest-browser-chrome
+endif
--- a/browser/components/places/content/bookmarksPanel.xul
+++ b/browser/components/places/content/bookmarksPanel.xul
@@ -58,18 +58,17 @@
           src="chrome://browser/content/bookmarks/bookmarksPanel.js"/>
 
   <commandset id="placesCommands"/>
   <commandset id="editMenuCommands"/>
   <popup id="placesContext"/>
 
   <hbox align="center">
     <label value="&search.label;" accesskey="&search.accesskey;" control="search-box"/>
-    <textbox id="search-box" flex="1"
-             type="timed" timeout="500"
+    <textbox id="search-box" flex="1" type="search"
              oncommand="searchBookmarks(this.value);"/>
   </hbox>
 
   <tree id="bookmarks-view" class="sidebar-placesTree" type="places"
         flex="1"
         hidecolumnpicker="true"
         context="placesContext"
         onkeypress="SidebarUtils.handleTreeKeyPress(event);"
--- a/browser/components/places/content/history-panel.xul
+++ b/browser/components/places/content/history-panel.xul
@@ -81,17 +81,17 @@
               selection="link"
               selectiontype="single"
               oncommand="historyAddBookmarks();"/>
   </popup>
 
   <hbox align="center">
     <label value="&find.label;" accesskey="&find.accesskey;" 
            control="search-box"/>
-    <textbox id="search-box" flex="1" type="timed" timeout="500"
+    <textbox id="search-box" flex="1" type="search"
              oncommand="searchHistory(this.value);"/>
     <button id="viewButton" style="min-width:0px !important;" type="menu"
             label="&view.label;" accesskey="&view.accesskey;" selectedsort="day"
             persist="selectedsort">
       <menupopup>
         <menuitem id="bydayandsite" label="&byDayAndSite.label;" 
                   accesskey="&byDayAndSite.accesskey;" type="radio"
                   oncommand="this.parentNode.parentNode.setAttribute('selectedsort', 'dayandsite'); GroupBy('dayandsite');"/>
--- a/browser/components/places/content/menu.xml
+++ b/browser/components/places/content/menu.xml
@@ -897,45 +897,62 @@
         ]]></getter>
       </property>
 
       <!-- nsIPlacesView -->
       <property name="insertionPoint">
         <getter><![CDATA[
           // By default, the insertion point is at the top level, at the end.
           var index = PlacesUtils.bookmarks.DEFAULT_INDEX;
-          var folderId = 0;
+          var container = null;
           var orientation = Ci.nsITreeView.DROP_BEFORE;
           var isTag = false;
 
           if (PlacesUtils.nodeIsFolder(this._resultNode)) {
-            folderId = PlacesUtils.getConcreteItemId(this._resultNode);
+            container = this._resultNode;
             isTag = PlacesUtils.nodeIsTagQuery(this._resultNode);
           }
 
           var selectedNode = this.selectedNode;
           if (selectedNode) {
             var popupNode = document.popupNode;
             if (!popupNode.node) {
               // If a static menuitem is selected the insertion point
               // is inside the folder, at the end.
-              folderId = PlacesUtils.getConcreteItemId(selectedNode);
+              container = selectedNode;
               orientation = Ci.nsITreeView.DROP_ON;
             }
             else {
               // In all other cases the insertion point is before that node.
-              folderId = PlacesUtils.getConcreteItemId(selectedNode.parent);
+              container = selectedNode.parent;
               index = PlacesUtils.getIndexOfNode(selectedNode);
               isTag = PlacesUtils.nodeIsTagQuery(selectedNode.parent);
             }
           }
-          return new InsertionPoint(folderId, index, orientation, isTag);
+
+          if (this._disallowInsertion(container))
+            return null;
+
+          return new InsertionPoint(PlacesUtils.getConcreteItemId(container),
+                                    index, orientation, isTag);
         ]]></getter>
       </property>
 
+      <method name="_disallowInsertion">
+        <parameter name="aContainer"/>
+        <body><![CDATA[
+          // allow dropping into Tag containers
+          if (PlacesUtils.nodeIsTagQuery(aContainer))
+            return false;
+          // Disallow insertion of items under readonly folders
+          return (!PlacesUtils.nodeIsFolder(aContainer) ||
+                   PlacesUtils.nodeIsReadOnly(aContainer));
+        ]]></body>
+      </method>
+
       <!-- nsIPlacesView -->
       <method name="selectAll">
         <body/>
       </method>
 
       <method name="selectItems">
         <body/>
       </method>
--- a/browser/components/places/content/places.js
+++ b/browser/components/places/content/places.js
@@ -848,16 +848,20 @@ var PlacesSearchBox = {
     switch (PlacesSearchBox.filterCollection) {
     case "collection":
       content.applyFilter(filterString, this.folders);
       // XXX changing the button text is badness
       //var scopeBtn = document.getElementById("scopeBarFolder");
       //scopeBtn.label = PlacesOrganizer._places.selectedNode.title;
       break;
     case "bookmarks":
+      // Make sure we're getting uri results.
+      // We do not yet support searching into grouped queries or into
+      // tag containers, so we must fall to the default case.
+      currentOptions.resultType = currentOptions.RESULT_TYPE_URI;
       content.applyFilter(filterString,
                           [PlacesUtils.bookmarksMenuFolderId,
                            PlacesUtils.toolbarFolderId,
                            PlacesUtils.unfiledBookmarksFolderId]);
       break;
     case "history":
       if (currentOptions.queryType != Ci.nsINavHistoryQueryOptions.QUERY_TYPE_HISTORY) {
         var query = PlacesUtils.history.getNewQuery();
--- a/browser/components/places/content/toolbar.xml
+++ b/browser/components/places/content/toolbar.xml
@@ -380,40 +380,57 @@
         ]]></getter>
       </property>
 
       <!-- nsIPlacesView -->
       <property name="insertionPoint">
         <getter><![CDATA[
           // By default, the insertion point is at the top level, at the end. 
           var index = PlacesUtils.bookmarks.DEFAULT_INDEX;
-          var folderId = PlacesUtils.getConcreteItemId(this._result.root);
+          var container = this._result.root;
           var orientation = Ci.nsITreeView.DROP_BEFORE;
           var isTag = false;
 
           var selectedNode = this.selectedNode;
           if (selectedNode) {
             var popupNode = document.popupNode;
             if (!popupNode.node) {
               // If a static menuitem is selected the insertion point
               // is inside the folder, at the end.
-              folderId = PlacesUtils.getConcreteItemId(selectedNode);
+              container = selectedNode;
               orientation = Ci.nsITreeView.DROP_ON;
             }
             else {
               // In all other cases the insertion point is before that node.
-              folderId = PlacesUtils.getConcreteItemId(selectedNode.parent);
+              container = selectedNode.parent;
               index = PlacesUtils.getIndexOfNode(selectedNode);
               isTag = PlacesUtils.nodeIsTagQuery(selectedNode.parent);
             }
           }
-          return new InsertionPoint(folderId, index, orientation, isTag);
+
+          if (this._disallowInsertion(container))
+            return null;
+
+          return new InsertionPoint(PlacesUtils.getConcreteItemId(container),
+                                    index, orientation, isTag);
         ]]></getter>
       </property>
 
+      <method name="_disallowInsertion">
+        <parameter name="aContainer"/>
+        <body><![CDATA[
+          // allow dropping into Tag containers
+          if (PlacesUtils.nodeIsTagQuery(aContainer))
+            return false;
+          // Disallow insertion of items under readonly folders
+          return (!PlacesUtils.nodeIsFolder(aContainer) ||
+                   PlacesUtils.nodeIsReadOnly(aContainer));
+        ]]></body>
+      </method>
+
       <!-- nsIPlacesView -->
       <method name="selectAll">
         <body><![CDATA[ 
           // Nothing
         ]]></body>
       </method>
 
       <method name="selectItems">
--- a/browser/components/places/content/tree.xml
+++ b/browser/components/places/content/tree.xml
@@ -482,17 +482,17 @@
               !this.flatList)
             orientation = Ci.nsITreeView.DROP_ON;
 
           this._cachedInsertionPoint =
             this._getInsertionPoint(max.value, orientation);
           return this._cachedInsertionPoint;
         ]]></getter>
       </property>
-      
+
       <method name="_disallowInsertion">
         <parameter name="aContainer"/>
         <body><![CDATA[
           // allow dropping into Tag containers
           if (PlacesUtils.nodeIsTagQuery(aContainer))
             return false;
           // Disallow insertion of items under readonly folders
           return (!PlacesUtils.nodeIsFolder(aContainer) ||
--- a/browser/components/places/content/treeView.js
+++ b/browser/components/places/content/treeView.js
@@ -934,16 +934,21 @@ PlacesTreeView.prototype = {
     this._ensureValidRow(aRow);
 
     var node = this._visibleElements[aRow].node;
     if (PlacesUtils.nodeIsContainer(node)) {
       // the root node is always expandable
       if (!node.parent)
         return true;
 
+      // Flat-lists may ignore expandQueries and other query options when
+      // they are asked to open a container.
+      if (this._flatList)
+        return true;
+
       // treat non-expandable childless queries as non-containers
       if (PlacesUtils.nodeIsQuery(node)) {
         var parent = node.parent;
         if((PlacesUtils.nodeIsQuery(parent) ||
             PlacesUtils.nodeIsFolder(parent)) &&
            !node.hasChildren)
           return asQuery(parent).queryOptions.expandQueries;
       }
--- a/browser/components/places/src/nsPlacesTransactionsService.js
+++ b/browser/components/places/src/nsPlacesTransactionsService.js
@@ -892,24 +892,36 @@ placesSortFolderByNameTransactions.proto
       else
         preSep.push(item);
     }
     if (preSep.length > 0) {
       preSep.sort(sortingMethod);
       newOrder = newOrder.concat(preSep);
     }
 
-    // set the nex indexs
-    for (var i = 0; i < count; ++i)
-      PlacesUtils.bookmarks.setItemIndex(newOrder[i].itemId, i);
+    // set the nex indexes
+    var callback = {
+      runBatched: function() {
+        for (var i = 0; i < newOrder.length; ++i) {
+          PlacesUtils.bookmarks.setItemIndex(newOrder[i].itemId, i);
+        }
+      }
+    };
+    PlacesUtils.bookmarks.runInBatchMode(callback, null);
   },
 
   undoTransaction: function PSSFBN_undoTransaction() {
-    for (item in this._oldOrder)
-      PlacesUtils.bookmarks.setItemIndex(item, this._oldOrder[item]);
+    var callback = {
+      _self: this,
+      runBatched: function() {
+        for (item in this._self._oldOrder)
+          PlacesUtils.bookmarks.setItemIndex(item, this._self._oldOrder[item]);
+      }
+    };
+    PlacesUtils.bookmarks.runInBatchMode(callback, null);
   }
 };
 
 function placesTagURITransaction(aURI, aTags) {
   this._uri = aURI;
   this._tags = aTags;
   this._unfiledItemId = -1;
   this.redoTransaction = this.doTransaction;
--- a/browser/components/preferences/applications.js
+++ b/browser/components/preferences/applications.js
@@ -1597,46 +1597,17 @@ var gApplicationsPane = {
     if (this._sortColumn.getAttribute("sortDirection") == "descending")
       this._visibleTypes.reverse();
   },
 
   /**
    * Filter the list when the user enters a filter term into the filter field.
    */
   filter: function() {
-    if (this._filter.value == "") {
-      this.clearFilter();
-      return;
-    }
-
     this._rebuildView();
-
-    document.getElementById("clearFilter").disabled = false;
-  },
-
-  _filterTimeout: null,
-
-  onFilterInput: function() {
-    if (this._filterTimeout)
-      clearTimeout(this._filterTimeout);
-   
-    this._filterTimeout = setTimeout("gApplicationsPane.filter()", 500);
-  },
-
-  onFilterKeyPress: function(aEvent) {
-    if (aEvent.keyCode == KeyEvent.DOM_VK_ESCAPE)
-      this.clearFilter();
-  },
-  
-  clearFilter: function() {
-    this._filter.value = "";
-    this._rebuildView();
-
-    this._filter.focus();
-    document.getElementById("clearFilter").disabled = true;
   },
 
   focusFilterBox: function() {
     this._filter.focus();
     this._filter.select();
   },
 
 
--- a/browser/components/preferences/applications.xul
+++ b/browser/components/preferences/applications.xul
@@ -105,22 +105,21 @@
 
     <script type="application/x-javascript" src="chrome://browser/content/preferences/applications.js"/>
 
     <keyset>
       <key key="&focusSearch1.key;" modifiers="accel" oncommand="gApplicationsPane.focusFilterBox();"/>
       <key key="&focusSearch2.key;" modifiers="accel" oncommand="gApplicationsPane.focusFilterBox();"/>
     </keyset>
 
-    <hbox align="center">
-      <label accesskey="&filter.accesskey;" control="filter">&filter.label;</label>
-      <textbox id="filter" flex="1" oninput="gApplicationsPane.onFilterInput();" 
-              onkeypress="gApplicationsPane.onFilterKeyPress(event);"/>
-      <button id="clearFilter" icon="clear" label="&clear.label;" accesskey="&clear.accesskey;" 
-              oncommand="gApplicationsPane.clearFilter();" disabled="true"/>
+    <hbox>
+      <textbox id="filter" flex="1"
+               type="search"
+               emptytext="&filter.emptytext;"
+               oncommand="gApplicationsPane.filter();"/>
     </hbox>
 
     <separator class="thin"/>
 
     <richlistbox id="handlersView" orient="vertical" persist="lastSelectedType"
                  preference="pref.downloads.disable_button.edit_actions"
                  onselect="gApplicationsPane.onSelectionChanged();">
       <listheader equalsize="always" style="border: 0; padding: 0; -moz-appearance: none;">
--- a/browser/components/preferences/main.xul
+++ b/browser/components/preferences/main.xul
@@ -158,16 +158,17 @@
         <hbox id="saveToRow">
           <radio id="saveTo" value="true"
                  label="&saveTo.label;"
                  accesskey="&saveTo.accesskey;"
                  aria-labelledby="saveTo downloadFolder"/>
           <filefield id="downloadFolder" flex="1"
                      preference="browser.download.folderList"
                      preference-editable="true"
+                     aria-labelledby="saveTo"
                      onsyncfrompreference="return gMainPane.displayDownloadDirPref();"
                      onsynctopreference="return gMainPane.getFolderListPref()"/>
           <button id="chooseFolder" oncommand="gMainPane.chooseFolder();"
 #ifdef XP_MACOSX
                   accesskey="&chooseFolderMac.accesskey;"
                   label="&chooseFolderMac.label;"
 #else
                   accesskey="&chooseFolderWin.accesskey;"
--- a/browser/components/sessionstore/src/nsSessionStore.js
+++ b/browser/components/sessionstore/src/nsSessionStore.js
@@ -223,20 +223,17 @@ SessionStoreService.prototype = {
       try {
         // parse the session state into JS objects
         this._initialState = this._safeEval(iniString);
         // set bool detecting crash
         this._lastSessionCrashed =
           this._initialState.session && this._initialState.session.state &&
           this._initialState.session.state == STATE_RUNNING_STR;
         
-        // restore the features of the first window from localstore.rdf
-        WINDOW_ATTRIBUTES.forEach(function(aAttr) {
-          delete this._initialState.windows[0][aAttr];
-        }, this);
+        // make sure that at least the first window doesn't have anything hidden
         delete this._initialState.windows[0].hidden;
       }
       catch (ex) { debug("The session file is invalid: " + ex); }
     }
     
     // if last session crashed, backup the session
     if (this._lastSessionCrashed) {
       try {
--- a/browser/components/shell/src/nsWindowsShellService.cpp
+++ b/browser/components/shell/src/nsWindowsShellService.cpp
@@ -217,38 +217,32 @@ static SETTING gSettings[] = {
   // Protocol Handlers
   { MAKE_KEY_NAME1("HTTP", DI),    "", VAL_FILE_ICON, APP_PATH_SUBSTITUTION },
   { MAKE_KEY_NAME1("HTTP", SOP),   "", VAL_OPEN, APP_PATH_SUBSTITUTION },
   { MAKE_KEY_NAME1("HTTPS", DI),   "", VAL_FILE_ICON, APP_PATH_SUBSTITUTION },
   { MAKE_KEY_NAME1("HTTPS", SOP),  "", VAL_OPEN, APP_PATH_SUBSTITUTION }
 };
 
 PRBool
-nsWindowsShellService::IsDefaultBrowserVista(PRBool aStartupCheck, PRBool* aIsDefaultBrowser)
+nsWindowsShellService::IsDefaultBrowserVista(PRBool* aIsDefaultBrowser)
 {
 #if !defined(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
   IApplicationAssociationRegistration* pAAR;
   
   HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration,
                                 NULL,
                                 CLSCTX_INPROC,
                                 IID_IApplicationAssociationRegistration,
                                 (void**)&pAAR);
-  
+
   if (SUCCEEDED(hr)) {
     hr = pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE,
                                     APP_REG_NAME,
                                     aIsDefaultBrowser);
-    
-    // If this is the first browser window, maintain internal state that we've
-    // checked this session (so that subsequent window opens don't show the 
-    // default browser dialog).
-    if (aStartupCheck)
-      mCheckedThisSession = PR_TRUE;
-    
+
     pAAR->Release();
     return PR_TRUE;
   }
 #endif  
   return PR_FALSE;
 }
 
 NS_IMETHODIMP
@@ -311,36 +305,39 @@ nsWindowsShellService::IsDefaultBrowser(
     if (settings->flags & EXE_NAME_SUBSTITUTION) {
       PRInt32 offset = key.Find("%APPEXE%");
       key.Replace(offset, 8, exeName);
     }
 
     ::ZeroMemory(currValue, sizeof(currValue));
     HKEY theKey;
     rv = OpenKeyForReading(HKEY_CLASSES_ROOT, key, &theKey);
-    if (NS_SUCCEEDED(rv)) {
-      DWORD len = sizeof currValue;
-      DWORD res = ::RegQueryValueExW(theKey, PromiseFlatString(value).get(),
-                                     NULL, NULL, (LPBYTE)currValue, &len);
-      // Close the key we opened.
-      ::RegCloseKey(theKey);
-      if (REG_FAILED(res) ||
-          !dataLongPath.Equals(currValue, CaseInsensitiveCompare) &&
-          !dataShortPath.Equals(currValue, CaseInsensitiveCompare)) {
-        // Key wasn't set, or was set to something else (something else became the default browser)
-        *aIsDefaultBrowser = PR_FALSE;
-        return NS_OK;
-      }
+    if (NS_FAILED(rv)) {
+      *aIsDefaultBrowser = PR_FALSE;
+      return NS_OK;
+    }
+
+    DWORD len = sizeof currValue;
+    DWORD res = ::RegQueryValueExW(theKey, PromiseFlatString(value).get(),
+                                   NULL, NULL, (LPBYTE)currValue, &len);
+    // Close the key we opened.
+    ::RegCloseKey(theKey);
+    if (REG_FAILED(res) ||
+        !dataLongPath.Equals(currValue, CaseInsensitiveCompare) &&
+        !dataShortPath.Equals(currValue, CaseInsensitiveCompare)) {
+      // Key wasn't set, or was set to something other than our registry entry
+      *aIsDefaultBrowser = PR_FALSE;
+      return NS_OK;
     }
   }
 
   // Only check if Firefox is the default browser on Vista if the previous
   // checks show that Firefox is the default browser.
-  if (aIsDefaultBrowser)
-    IsDefaultBrowserVista(aStartupCheck, aIsDefaultBrowser);
+  if (*aIsDefaultBrowser)
+    IsDefaultBrowserVista(aIsDefaultBrowser);
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsWindowsShellService::SetDefaultBrowser(PRBool aClaimAllTypes, PRBool aForAllUsers)
 {
   nsresult rv;
@@ -353,31 +350,31 @@ nsWindowsShellService::SetDefaultBrowser
   NS_ENSURE_SUCCESS(rv, rv);
 
   rv = appHelper->AppendNative(NS_LITERAL_CSTRING("uninstall"));
   NS_ENSURE_SUCCESS(rv, rv);
 
   rv = appHelper->AppendNative(NS_LITERAL_CSTRING("helper.exe"));
   NS_ENSURE_SUCCESS(rv, rv);
 
-  nsCAutoString appHelperPath;
-  rv = appHelper->GetNativePath(appHelperPath);
+  nsAutoString appHelperPath;
+  rv = appHelper->GetPath(appHelperPath);
   NS_ENSURE_SUCCESS(rv, rv);
 
   if (aForAllUsers) {
     appHelperPath.AppendLiteral(" /SetAsDefaultAppGlobal");
   } else {
     appHelperPath.AppendLiteral(" /SetAsDefaultAppUser");
   }
 
-  STARTUPINFO si = {sizeof(si), 0};
+  STARTUPINFOW si = {sizeof(si), 0};
   PROCESS_INFORMATION pi = {0};
 
-  BOOL ok = CreateProcess(NULL, (LPSTR)appHelperPath.get(), NULL, NULL,
-                          FALSE, 0, NULL, NULL, &si, &pi);
+  BOOL ok = CreateProcessW(NULL, (LPWSTR)appHelperPath.get(), NULL, NULL,
+                           FALSE, 0, NULL, NULL, &si, &pi);
 
   if (!ok)
     return NS_ERROR_FAILURE;
 
   CloseHandle(pi.hProcess);
   CloseHandle(pi.hThread);
 
   return NS_OK;
@@ -761,18 +758,18 @@ nsWindowsShellService::GetUnreadMailCoun
   if (GetMailAccountKey(&accountKey)) {
     DWORD type, unreadCount;
     DWORD len = sizeof unreadCount;
     DWORD res = ::RegQueryValueExW(accountKey, L"MessageCount", 0,
                                    &type, (LPBYTE)&unreadCount, &len);
     if (REG_SUCCEEDED(res))
       *aCount = unreadCount;
 
-  // Close the key we opened.
-  ::RegCloseKey(accountKey);
+    // Close the key we opened.
+    ::RegCloseKey(accountKey);
   }
 
   return NS_OK;
 }
 
 PRBool
 nsWindowsShellService::GetMailAccountKey(HKEY* aResult)
 {
--- a/browser/components/shell/src/nsWindowsShellService.h
+++ b/browser/components/shell/src/nsWindowsShellService.h
@@ -52,24 +52,17 @@ public:
   nsWindowsShellService() : mCheckedThisSession(PR_FALSE) {}; 
   virtual ~nsWindowsShellService() {};
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSISHELLSERVICE
   NS_DECL_NSIWINDOWSSHELLSERVICE
 
 protected:
-  PRBool    IsDefaultBrowserVista(PRBool aStartupCheck, PRBool* aIsDefaultBrowser);
+  PRBool    IsDefaultBrowserVista(PRBool* aIsDefaultBrowser);
 
   PRBool    GetMailAccountKey(HKEY* aResult);
-  void      SetRegKey(const nsString& aKeyName,
-                      const nsString& aValueName,
-                      const nsString& aValue, PRBool aHKLMOnly);
-
-  DWORD     DeleteRegKey(HKEY baseKey, const nsString& keyName);
-  DWORD     DeleteRegKeyDefaultValue(HKEY baseKey,
-                                     const nsString& keyName);
 
 private:
   PRBool    mCheckedThisSession;
 };
 
 #endif // nswindowsshellservice_h____
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1,1 +1,1 @@
-3.1a1pre
+3.1a2pre
--- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi
@@ -43,16 +43,18 @@
 !verbose 3
 
 ; 7-Zip provides better compression than the lzma from NSIS so we add the files
 ; uncompressed and use 7-Zip to create a SFX archive of it
 SetDatablockOptimize on
 SetCompress off
 CRCCheck on
 
+RequestExecutionLevel user
+
 !addplugindir ./
 
 ; empty files - except for the comment line - for generating custom pages.
 !system 'echo ; > options.ini'
 !system 'echo ; > components.ini'
 !system 'echo ; > shortcuts.ini'
 !system 'echo ; > summary.ini'
 
@@ -65,31 +67,21 @@ Var InstallType
 Var AddStartMenuSC
 Var AddQuickLaunchSC
 Var AddDesktopSC
 
 ; Other included files may depend upon these includes!
 ; The following includes are provided by NSIS.
 !include FileFunc.nsh
 !include LogicLib.nsh
+!include MUI.nsh
 !include TextFunc.nsh
 !include WinMessages.nsh
+!include WinVer.nsh
 !include WordFunc.nsh
-!include MUI.nsh
-
-; WinVer.nsh was added in the same release that RequestExecutionLevel so check
-; if ___WINVER__NSH___ is defined to determine if RequestExecutionLevel is
-; available.
-!include /NONFATAL WinVer.nsh
-!ifdef ___WINVER__NSH___
-  RequestExecutionLevel user
-!else
-  !warning "Installer will be created without Vista compatibility.$\n            \
-            Upgrade your NSIS installation to at least version 2.22 to resolve."
-!endif
 
 !insertmacro GetOptions
 !insertmacro GetParameters
 !insertmacro GetSize
 !insertmacro StrFilter
 !insertmacro WordReplace
 
 ; NSIS provided macros that we have overridden
@@ -100,16 +92,17 @@ Var AddDesktopSC
 ; The following includes are custom.
 !include branding.nsi
 !include defines.nsi
 !include common.nsh
 !include locales.nsi
 !include version.nsh
 
 VIAddVersionKey "FileDescription" "${BrandShortName} Installer"
+VIAddVersionKey "OriginalFilename" "setup.exe"
 
 ; Must be inserted before other macros that use logging
 !insertmacro _LoggingCommon
 
 !insertmacro AddDDEHandlerValues
 !insertmacro ChangeMUIHeaderImage
 !insertmacro CheckForFilesInUse
 !insertmacro CleanUpdatesDir
@@ -351,27 +344,29 @@ Section "-Application" APP_IDX
   ${If} $AddDesktopSC == ""
     StrCpy $AddDesktopSC "1"
   ${EndIf}
 
   ${LogHeader} "Adding Registry Entries"
   SetShellVarContext current  ; Set SHCTX to HKCU
   ${RegCleanMain} "Software\Mozilla"
   ${RegCleanUninstall}
+  ${UpdateProtocolHandlers}
 
   ClearErrors
   WriteRegStr HKLM "Software\Mozilla\InstallerTest" "InstallerTest" "Test"
   ${If} ${Errors}
     StrCpy $TmpVal "HKCU" ; used primarily for logging
   ${Else}
     SetShellVarContext all  ; Set SHCTX to HKLM
     DeleteRegKey HKLM "Software\Mozilla\InstallerTest"
     StrCpy $TmpVal "HKLM" ; used primarily for logging
     ${RegCleanMain} "Software\Mozilla"
     ${RegCleanUninstall}
+    ${UpdateProtocolHandlers}
 
     ReadRegStr $0 HKLM "Software\mozilla.org\Mozilla" "CurrentVersion"
     ${If} "$0" != "${GREVersion}"
       WriteRegStr HKLM "Software\mozilla.org\Mozilla" "CurrentVersion" "${GREVersion}"
     ${EndIf}
   ${EndIf}
 
   ${RemoveDeprecatedKeys}
@@ -387,17 +382,16 @@ Section "-Application" APP_IDX
   ${SetAppKeys}
 
   ; XXXrstrong - this should be set in shared.nsh along with "Create Quick
   ; Launch Shortcut" and Create Desktop Shortcut.
   StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Uninstall"
   ${WriteRegDWORD2} $TmpVal "$0" "Create Start Menu Shortcut" $AddStartMenuSC 0
 
   ${FixClassKeys}
-  ${UpdateProtocolHandlers}
 
   ; On install always add the FirefoxHTML and FirefoxURL keys.
   ; An empty string is used for the 5th param because FirefoxHTML is not a
   ; protocol handler.
   ${AddDDEHandlerValues} "FirefoxHTML" "$2" "$8,1" "${AppRegName} Document" "" \
                          "${DDEApplication}" "$3" "WWW_OpenURL"
 
   ${AddDDEHandlerValues} "FirefoxURL" "$2" "$8,1" "${AppRegName} URL" "true" \
--- a/browser/installer/windows/nsis/shared.nsh
+++ b/browser/installer/windows/nsis/shared.nsh
@@ -36,43 +36,44 @@
 
 !macro PostUpdate
   ; Remove registry entries for non-existent apps and for apps that point to our
   ; install location in the Software\Mozilla key and uninstall registry entries
   ; that point to our install location for both HKCU and HKLM.
   SetShellVarContext current  ; Set SHCTX to the current user (e.g. HKCU)
   ${RegCleanMain} "Software\Mozilla"
   ${RegCleanUninstall}
+  ${UpdateProtocolHandlers}
 
   ClearErrors
   WriteRegStr HKLM "Software\Mozilla\InstallerTest" "InstallerTest" "Test"
   ${If} ${Errors}
     StrCpy $TmpVal "HKCU" ; used primarily for logging
   ${Else}
     SetShellVarContext all    ; Set SHCTX to all users (e.g. HKLM)
     DeleteRegKey HKLM "Software\Mozilla\InstallerTest"
     StrCpy $TmpVal "HKLM" ; used primarily for logging
     ${RegCleanMain} "Software\Mozilla"
     ${RegCleanUninstall}
     ${SetStartMenuInternet}
     ${FixShellIconHandler}
     ${SetUninstallKeys}
+    ${UpdateProtocolHandlers}
 
     ReadRegStr $0 HKLM "Software\mozilla.org\Mozilla" "CurrentVersion"
     ${If} "$0" != "${GREVersion}"
       WriteRegStr HKLM "Software\mozilla.org\Mozilla" "CurrentVersion" "${GREVersion}"
     ${EndIf}
   ${EndIf}
 
   ${RemoveDeprecatedKeys}
 
   ; Add Software\Mozilla\ registry entries
   ${SetAppKeys}
   ${FixClassKeys}
-  ${UpdateProtocolHandlers}
 
   ; Remove files that may be left behind by the application in the
   ; VirtualStore directory.
   ${CleanVirtualStore}
 
   ; Remove talkback if it is present (remove after bug 386760 is fixed)
   ${If} ${FileExists} "$INSTDIR\extensions\talkback@mozilla.org\"
     RmDir /r "$INSTDIR\extensions\talkback@mozilla.org\"
@@ -103,27 +104,25 @@
 
   ${SetStartMenuInternet}
 
   setdefaultuser:
   SetShellVarContext all  ; Set SHCTX to all users (e.g. HKLM)
   ${FixShellIconHandler}
   WriteRegStr HKCU "Software\Clients\StartMenuInternet" "" "$R9"
 
-!ifdef ___WINVER__NSH___
   ${If} ${AtLeastWinVista}
     ClearErrors
     ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegName}"
     ; Only register as the handler on Vista if the app registry name exists
     ; under the RegisteredApplications registry key.
     ${Unless} ${Errors}
       AppAssocReg::SetAppAsDefaultAll "${AppRegName}"
     ${EndUnless}
   ${EndIf}
-!endif
 
   ${RemoveDeprecatedKeys}
 
   SetShellVarContext current  ; Set SHCTX to the current user (e.g. HKCU)
   ${SetHandlers}
 !macroend
 !define SetAsDefaultAppUser "!insertmacro SetAsDefaultAppUser"
 
@@ -152,34 +151,34 @@
   SetShellVarContext all  ; Set $DESKTOP to All Users
   ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
     SetShellVarContext current  ; Set $DESKTOP to the current user's desktop
   ${EndUnless}
 
   ${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
     ShellLink::GetShortCutArgs "$DESKTOP\${BrandFullName}.lnk"
     Pop $0
-    ${If} $0 == ""
+    ${If} "$0" == ""
       ShellLink::GetShortCutTarget "$DESKTOP\${BrandFullName}.lnk"
       Pop $0
       ; Needs to handle short paths
-      ${If} $0 == "$INSTDIR\${FileMainEXE}"
+      ${If} "$0" == "$INSTDIR\${FileMainEXE}"
         Delete "$DESKTOP\${BrandFullName}.lnk"
       ${EndIf}
     ${EndIf}
   ${EndIf}
 
   ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk"
     ShellLink::GetShortCutArgs "$QUICKLAUNCH\${BrandFullName}.lnk"
     Pop $0
-    ${If} $0 == ""
+    ${If} "$0" == ""
       ShellLink::GetShortCutTarget "$QUICKLAUNCH\${BrandFullName}.lnk"
       Pop $0
       ; Needs to handle short paths
-      ${If} $0 == "$INSTDIR\${FileMainEXE}"
+      ${If} "$0" == "$INSTDIR\${FileMainEXE}"
         Delete "$QUICKLAUNCH\${BrandFullName}.lnk"
       ${EndIf}
     ${EndIf}
   ${EndIf}
 !macroend
 !define HideShortcuts "!insertmacro HideShortcuts"
 
 !macro ShowShortcuts
@@ -222,17 +221,17 @@
     WriteRegStr SHCTX "$0\.html"  "" "FirefoxHTML"
   ${EndIf}
 
   ReadRegStr $6 HKCR ".shtml" ""
   ${If} "$6" != "FirefoxHTML"
     WriteRegStr SHCTX "$0\.shtml" "" "FirefoxHTML"
   ${EndIf}
 
-  ReadRegStr $6 HKCR ".hht" ""
+  ReadRegStr $6 HKCR ".xht" ""
   ${If} "$6" != "FirefoxHTML"
     WriteRegStr SHCTX "$0\.xht"   "" "FirefoxHTML"
   ${EndIf}
 
   ReadRegStr $6 HKCR ".xhtml" ""
   ${If} "$6" != "FirefoxHTML"
     WriteRegStr SHCTX "$0\.xhtml" "" "FirefoxHTML"
   ${EndIf}
@@ -357,44 +356,44 @@
   SetShellVarContext all  ; Set $DESKTOP to All Users
   ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
     SetShellVarContext current  ; Set $DESKTOP to the current user's desktop
   ${EndUnless}
 
   ${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
     ShellLink::GetShortCutArgs "$DESKTOP\${BrandFullName}.lnk"
     Pop $1
-    ${If} $1 == ""
+    ${If} "$1" == ""
       ShellLink::GetShortCutTarget "$DESKTOP\${BrandFullName}.lnk"
       Pop $1
       ${GetLongPath} "$1" $1
       ${If} "$1" == "$8\${FileMainEXE}"
         ${WriteRegDWORD2} $TmpVal "$0" "Create Desktop Shortcut" 1 0
       ${Else}
         ${WriteRegDWORD2} $TmpVal "$0" "Create Desktop Shortcut" 0 0
       ${EndIf}
     ${EndIf}
   ${EndIf}
 
   ; XXXrstrong - need a cleaner way to prevent unsetting SHCTX from HKLM when
   ; trying to find the desktop shortcut.
-  ${If} $TmpVal == "HKCU"
+  ${If} "$TmpVal" == "HKCU"
     SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU)
   ${Else}
     SetShellVarContext all     ; Set SHCTX to all users (e.g. HKLM)
   ${EndIf}
 
   ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk"
     ShellLink::GetShortCutArgs "$QUICKLAUNCH\${BrandFullName}.lnk"
     Pop $1
-    ${If} $1 == ""
+    ${If} "$1" == ""
       ShellLink::GetShortCutTarget "$QUICKLAUNCH\${BrandFullName}.lnk"
       Pop $1
       ${GetLongPath} "$1" $1
-      ${If} $1 == "$8\${FileMainEXE}"
+      ${If} "$1" == "$8\${FileMainEXE}"
         ${WriteRegDWORD2} $TmpVal "$0" "Create Quick Launch Shortcut" 1 0
       ${Else}
         ${WriteRegDWORD2} $TmpVal "$0" "Create Quick Launch Shortcut" 0 0
       ${EndIf}
     ${EndIf}
   ${EndIf}
   ; XXXrstrong - "Create Start Menu Shortcut" and "Start Menu Folder" are only
   ; set in the installer and should also be set here for software update.
@@ -539,17 +538,17 @@
   ReadRegStr $2 HKLM "$0\Capabilities\URLAssociations" "gopher"
   ${Unless} ${Errors}
     DeleteRegValue HKLM "$0\Capabilities\URLAssociations" "gopher"
   ${EndUnless}
 
   ; Delete gopher from the user's UrlAssociations if it points to FirefoxURL.
   StrCpy $0 "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\gopher"
   ReadRegStr $2 HKCU "$0\UserChoice" "Progid"
-  ${If} $2 == "FirefoxURL"
+  ${If} "$2" == "FirefoxURL"
     DeleteRegKey HKCU "$0"
   ${EndIf}
 !macroend
 !define RemoveDeprecatedKeys "!insertmacro RemoveDeprecatedKeys"
 
 ; The files to check if they are in use during (un)install so the restart is
 ; required message is displayed. All files must be located in the $INSTDIR
 ; directory.
--- a/browser/installer/windows/nsis/uninstaller.nsi
+++ b/browser/installer/windows/nsis/uninstaller.nsi
@@ -43,16 +43,18 @@
 !verbose 3
 
 ; 7-Zip provides better compression than the lzma from NSIS so we add the files
 ; uncompressed and use 7-Zip to create a SFX archive of it
 SetDatablockOptimize on
 SetCompress off
 CRCCheck on
 
+RequestExecutionLevel user
+
 !addplugindir ./
 
 ; USE_UAC_PLUGIN is temporary until Thunderbird has been updated to use the UAC plugin
 !define USE_UAC_PLUGIN
 
 ; prevents compiling of the reg write logging.
 !define NO_LOG
 
@@ -60,46 +62,35 @@ Var TmpVal
 
 ; Other included files may depend upon these includes!
 ; The following includes are provided by NSIS.
 !include FileFunc.nsh
 !include LogicLib.nsh
 !include MUI.nsh
 !include TextFunc.nsh
 !include WinMessages.nsh
+!include WinVer.nsh
 !include WordFunc.nsh
 
-; WinVer.nsh was added in the same release that RequestExecutionLevel so check
-; if ___WINVER__NSH___ is defined to determine if RequestExecutionLevel is
-; available.
-!include /NONFATAL WinVer.nsh
-!ifdef ___WINVER__NSH___
-  RequestExecutionLevel user
-!else
-  !warning "Installer will be created without Vista compatibility.$\n            \
-            Upgrade your NSIS installation to at least version 2.22 to resolve."
-!endif
-
 !insertmacro StrFilter
 !insertmacro WordReplace
 
 !insertmacro un.GetParent
-!insertmacro un.LineFind
-!insertmacro un.TrimNewLines
 
 ; The following includes are custom.
 !include branding.nsi
 !include defines.nsi
 !include common.nsh
 !include locales.nsi
 !include version.nsh
 
 ; This is named BrandShortName helper because we use this for software update
 ; post update cleanup.
 VIAddVersionKey "FileDescription" "${BrandShortName} Helper"
+VIAddVersionKey "OriginalFilename" "helper.exe"
 
 !insertmacro AddDDEHandlerValues
 !insertmacro CleanVirtualStore
 !insertmacro GetLongPath
 !insertmacro GetPathFromString
 !insertmacro IsHandlerForInstallDir
 !insertmacro RegCleanAppHandler
 !insertmacro RegCleanMain
--- a/browser/locales/all-locales
+++ b/browser/locales/all-locales
@@ -1,29 +1,27 @@
 af
 ar
 be
-bg
 ca
 cs
 da
 de
 el
 en-GB
 es-AR
 es-ES
 eu
 fi
 fr
 fy-NL
 ga-IE
 gu-IN
 he
 hu
-hy-AM
 id
 it
 ja
 ja-JP-mac
 ka
 ko
 ku
 lt
@@ -33,18 +31,16 @@ nb-NO
 nl
 nn-NO
 pa-IN
 pl
 pt-BR
 pt-PT
 ro
 ru
-si
 sk
-sl
 sq
 sr
 sv-SE
 tr
 uk
 zh-CN
 zh-TW
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -217,16 +217,18 @@
 <!ENTITY openFrameCmdInTab.accesskey  "T">
 <!ENTITY showOnlyThisFrameCmd.label     "Show Only This Frame">
 <!ENTITY showOnlyThisFrameCmd.accesskey "S">
 <!ENTITY reloadCmd.commandkey         "r">
 <!ENTITY reloadFrameCmd.label         "Reload Frame">
 <!ENTITY reloadFrameCmd.accesskey     "R">
 <!ENTITY viewPartialSourceForSelectionCmd.label "View Selection Source">
 <!ENTITY viewPartialSourceForMathMLCmd.label    "View MathML Source">
+<!-- LOCALIZATION NOTE (viewPartialSourceCmd.accesskey): This accesskey is used for both 
+         viewPartialSourceForSelectionCmd.label and viewPartialSourceForMathMLCmd.label -->
 <!ENTITY viewPartialSourceCmd.accesskey "e">
 <!ENTITY viewPageSourceCmd.label      "View Page Source">
 <!ENTITY viewPageSourceCmd.accesskey  "V">
 <!ENTITY viewFrameSourceCmd.label     "View Frame Source">
 <!ENTITY viewFrameSourceCmd.accesskey "V">
 <!ENTITY viewPageInfoCmd.label        "View Page Info">
 <!ENTITY viewPageInfoCmd.accesskey    "I">
 <!ENTITY viewFrameInfoCmd.label       "View Frame Info">
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -9,16 +9,17 @@ droponnewtabbutton=Drop a link or file t
 droponnewwindowbutton=Drop a link or file to open it in a new window
 droponhomebutton=Drop a link or file to make it your home page
 droponhometitle=Set Home Page
 droponhomemsg=Do you want this document to be your new home page?
 
 # context menu strings
 
 contextMenuSearchText=Search %S for "%S"
+contextMenuSearchText.accesskey=S
 
 blockImages=Block Images from %S
 
 # bookmark dialog strings
 
 bookmarkAllTabsDefault=[Folder Name]
 
 xpinstallPromptWarning=%S prevented this site (%S) from asking you to install software on your computer.
--- a/browser/locales/en-US/chrome/browser/preferences/applications.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/applications.dtd
@@ -2,13 +2,9 @@
 <!ENTITY  typeColumn.accesskey    "T">
 
 <!ENTITY  actionColumn2.label     "Action">
 <!ENTITY  actionColumn2.accesskey "A">
 
 <!ENTITY  focusSearch1.key        "f">
 <!ENTITY  focusSearch2.key        "k">
 
-<!ENTITY  filter.label            "Search:">
-<!ENTITY  filter.accesskey        "S">
-
-<!ENTITY  clear.label             "Clear">
-<!ENTITY  clear.accesskey         "l">
+<!ENTITY  filter.emptytext        "Search">
--- a/browser/locales/en-US/chrome/browser/preferences/connection.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/connection.dtd
@@ -16,19 +16,19 @@
 <!ENTITY  autoTypeRadio.accesskey       "A">
 <!ENTITY  reload.label                  "Reload">
 <!ENTITY  reload.accesskey              "e">
 <!ENTITY  ftp.label                     "FTP Proxy:">
 <!ENTITY  ftp.accesskey                 "F">
 <!ENTITY  gopher.label                  "Gopher Proxy:">
 <!ENTITY  gopher.accesskey              "G">
 <!ENTITY  http.label                    "HTTP Proxy:">
-<!ENTITY  http.accesskey                "H">
+<!ENTITY  http.accesskey                "x">
 <!ENTITY  ssl.label                     "SSL Proxy:">
-<!ENTITY  ssl.accesskey                 "S">
+<!ENTITY  ssl.accesskey                 "L">
 <!ENTITY  socks.label                   "SOCKS Host:">
 <!ENTITY  socks.accesskey               "C">
 <!ENTITY  socks4.label                  "SOCKS v4">
 <!ENTITY  socks4.accesskey              "K">
 <!ENTITY  socks5.label                  "SOCKS v5">
 <!ENTITY  socks5.accesskey              "v">
 <!ENTITY  port.label                    "Port:">
 <!ENTITY  HTTPport.accesskey            "P">
@@ -36,9 +36,9 @@
 <!ENTITY  FTPport.accesskey             "r">
 <!-- No accesskey for gopher (':' doesn't go well) - mpt's going to redesign the window -->
 <!ENTITY  gopherPort.accesskey          "">
 <!ENTITY  SOCKSport.accesskey           "t">
 <!ENTITY  noproxy.label                 "No Proxy for:">
 <!ENTITY  noproxy.accesskey             "n">
 <!ENTITY  noproxyExplain.label          "Example: .mozilla.org, .net.nz, 192.168.1.0/24">
 <!ENTITY  shareproxy.label              "Use this proxy server for all protocols">
-<!ENTITY  shareproxy.accesskey          "x">
+<!ENTITY  shareproxy.accesskey          "s">
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/accessibility.xhtml
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-  <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-  %brandDTD;
-  <!ENTITY % platformDTD SYSTEM
-    "chrome://browser/locale/help/platformStrings.dtd" >
-  %platformDTD;
-]>
-<!--
-Contributors:
-  Mark Pilgrim <pilgrim@gmail.com> (original author)
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Accessibility Features of &brandFullName;</title>
-<link rel="stylesheet" type="text/css"
-  href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-  <h1>Accessibility Features of &brandFullName;</h1>
-
-  <p>&brandShortName; includes many features to make the browser and web
-    content accessible to all users, including those who have low vision, no
-    vision, or limited ability to use a keyboard or mouse.</p>
-
-  <div class="contentsBox">In this section:
-    <ul>
-    <li><a href="#using_a_keyboard">Using a Keyboard</a></li>
-    <li><a href="#using_a_mouse">Using a Mouse</a></li>
-    <li><a href="#fonts_and_colors">Fonts and Colors</a></li>
-    <li><a href="#controlling_web_content">Controlling Web Content</a></li>
-    <li><a href="#compatibility_with_assistive_technologies">Compatibility
-      with Assistive Technologies</a></li>
-    <li><a href="#finding_help_online">Finding Help Online</a></li>
-    </ul>
-  </div>
-
-  <h2 id="using_a_keyboard">Using a Keyboard</h2>
-
-  <h3 id="keyboard_shortcuts">Keyboard Shortcuts</h3>
-
-  <p>A list of common keyboard shortcuts is available in
-    <a href="shortcuts.xhtml">&brandShortName; Keyboard Shortcuts</a>.
-    Online, you can find <a target="_blank"
-    href="http://www.mozilla.org/support/firefox/keyboard">a comparison
-    chart of keyboard shortcuts</a> implemented in &brandShortName;,
-    Microsoft Internet Explorer, and Opera.</p>
-
-  <h3 id="always_use_cursor_keys">Always use the cursor keys to navigate within
-    webpages</h3>
-
-  <p><a href="prefs.xhtml#accessibility">Always use the cursor keys to navigate
-    within webpages</a> allows you to move through web content as if
-    you were inside a read-only editor.
-    You can use the keyboard to select web content and copy it to the
-    clipboard.  You can enable this feature by selecting &pref.menuPath;,
-    opening the <em>General</em> tab in the <em>Advanced</em> panel,
-    and checking the <em>Always use the cursor keys to navigate within webpages
-    </em> &pref.singular;.</p>
-
-  <p>You can press <kbd>F7</kbd> at any time to turn this feature on or
-    off.  When you press <kbd>F7</kbd>, &brandShortName; will
-    ask if you really want to turn on this feature.  You can disable
-    this prompt by selecting <em>Don't show this dialog again.</em></p>
-
-  <h3 id="find_as_you_type">Search for text when I start typing</h3>
-
-  <p><a href="prefs.xhtml#accessibility">Search for text when I start typing</a>
-    allows you to quickly navigate to text or hyperlinks in a web page.  This
-    feature has two modes. Press <abbr title="forward slash"><kbd>/</kbd></abbr>
-    and start typing to search all text on the current page, or press
-    <abbr title="apostrophe"><kbd>'</kbd></abbr> before your string to search
-    hyperlinks only.  &brandShortName; will highlight matching text or hyperlinks
-    as you type.</p>
-
-  <p>The following keyboard shortcuts control this feature:</p>
-
-  <ul>
-    <li>Type more characters to narrow your search.  &brandShortName;
-      will highlight the next matching hyperlink or text or alert you
-      that nothing matched.</li>
-    <li>Press &accelKey;+<kbd>G</kbd> or <kbd>F3</kbd> to find the next
-      occurrence of your current search string.</li>
-    <li>Press &accelKey;+&shiftKey;+<kbd>G</kbd> or &shiftKey;+<kbd>F3</kbd>
-      to find the previous occurrence of your current search string.</li>
-    <li>Press <kbd>Backspace</kbd> to undo the last character you typed.
-      &brandShortName; will back up to the previously highlighted text.</li>
-    <li>Press <kbd>Esc</kbd> to cancel a search.  You can also cancel
-      a search by changing focus, scrolling the page with the mouse or
-      keyboard, or simply waiting for the timeout.</li>
-  </ul>
-
-  <p>You can change the default behavior of this feature by selecting
-    &pref.menuPath;, opening the <em>General</em> tab of the <em>Advanced</em>
-    panel, and checking the <em>Search for text when I start typing</em>
-    &pref.singular;.  If this option is checked, you can start typing at any
-    time to auto-start an inline search. By default auto-started searches look
-    for all text on the page. You can still explicitly press
-    <abbr title="apostrophe"><kbd>'</kbd></abbr> or
-    <abbr title="forward slash"><kbd>/</kbd></abbr> to start finding
-    in one mode or the other.</p>
-
-  <p>You can use this feature to get to buttons, text boxes and other
-    form controls.  Search for the text immediately before the form control
-    you want and press <kbd>Tab</kbd>. Pressing <kbd>Tab</kbd> automatically
-    exits the search and sets focus to the next form field or button
-    after the highlighted text.</p>
-
-  <h2 id="using_a_mouse">Using a Mouse</h2>
-
-  <h3 id="common_mouse_shortcuts">Common Mouse Shortcuts</h3>
-
-  <p>A list of common mouse shortcuts is available in
-    <a href="mouse_shortcuts.xhtml">&brandShortName; Mouse
-    Shortcuts</a>.</p>
-
-  <h2 id="fonts_and_colors">Fonts and Colors</h2>
-
-  <h3 id="overriding_page_fonts">Overriding Page Fonts</h3>
-
-  <p>Some web sites may display text in fonts that are difficult to read,
-    and other sites may rely on the browser's default fonts.  You can set
-    your default fonts by going to &pref.menuPath;, selecting the
-    <em>Content</em> panel, and selecting a default font and size in the
-    <em>Fonts &amp; Colors</em> section.</p>
-
-  <p>You can specify default fonts for different styles, including serif,
-    sans-serif, and monospace by clicking the <em>Advanced</em> button.
-    However, many web pages specify their own fonts, so your choices
-    will have no effect on such pages.  To override the fonts defined by
-    such pages, uncheck the <em>Allow pages to choose their own fonts, instead
-    of my selections above</em> &pref.singular;.</p>
-
-  <p>Note that some web pages may display incorrectly depending on your
-    choice of a default font.</p>
-
-  <h3 id="setting_a_minimum_font_size">Setting a Minimum Font Size</h3>
-
-  <p>Some web sites may display text which is too small to read
-    comfortably.  To make such pages easier to read, you can set a minimum
-    font size. On web pages that try to display text smaller than this
-    size, &brandShortName; will enlarge the text to your chosen size.</p>
-
-  <p>To set a minimum font size, go to &pref.menuPath;, select the
-    <em>Content</em> panel, and click the <em>Advanced</em> button in the
-    <em>Fonts &amp; Colors</em> section.  You can specify a minimum font
-    size from the dropdown menu.</p>
-
-  <p>Note that some web pages may display incorrectly depending on your
-    choice of a minimum font size.</p>
-
-  <h3 id="resizing_page_text">Resizing Page Text</h3>
-
-  <p>You can temporarily change the size of text on any web page in the
-    <span class="menuPath">View &gt; Text Size</span> menu.  The new
-    size will remain in effect until you close your browser window or
-    tab, even if you navigate to a different web site.</p>
-
-  <p>The following keyboard shortcuts control text size:</p>
-
-  <ul>
-    <li>Press &accelKey;+<kbd><abbr title="plus">+</abbr></kbd> to
-      increase the text size.  This zooms the text to 120% of its original
-      size, then 150%, 200%, 300%, 450%, 675%, 1013%, and 1519%.</li>
-    <li>Press &accelKey;+<kbd><abbr title="minus">-</abbr></kbd> to
-      decrease the text size.  This zooms the text to 90% of its original
-      size, then 50%, 33%, 22%, 15%, 10%, 7%, 4%, 3%, 2%, and 1%.</li>
-    <li>Press &accelKey;+<kbd>0</kbd> to reset the text size to the web
-      page's default size.</li>
-  </ul>
-
-  <p>Note that some web pages may display incorrectly if you increase or
-      decrease the text size.</p>
-
-  <h3 id="overriding_page_colors">Overriding Page Colors</h3>
-
-  <p>Some web sites may display text and background colors that are
-    difficult to read, and other sites may rely on the browser's default
-    colors.  You can set your default colors by going to &pref.menuPath;,
-    selecting the <em>Content</em> panel, and clicking the <em>Colors</em>
-    button in the <em>Fonts &amp; Colors</em> section.  You can set
-    default text and background colors, as well as default colors for
-    visited and unvisited hyperlinks.  You can also specify whether
-    hyperlinks should be underlined.</p>
-
-  <p>However, many web pages set their own colors, so your choices will
-    have no effect.  To override the colors defined by web pages, uncheck
-    the <em>Allow pages to choose their own colors, instead of my
-    selections above</em> &pref.singular;.</p>
-
-  <div class="noMac">
-
-    <h3 id="using_a_high_contrast_theme">Using a High Contrast Theme</h3>
-
-    <p>&brandShortName; automatically detects if you are using a High
-      Contrast theme and displays everything in your high contrast color
-      scheme.  This overrides all other other browser or web page
-      settings, and it affects the &brandShortName; interface itself (all
-      menus, windows, and dialog boxes) and the content of any web page
-      you visit.</p>
-
-    <p class="win">To use a High Contrast theme, go to
-      <span class="menuPath">Start Menu &gt; Control Panel &gt;
-      Accessibility Options &gt; Display</span> and check the
-      <em>Use High Contrast</em> &pref.singular;.</p>
-
-  </div>
-
-  <h2 id="controlling_web_content">Controlling Web Content</h2>
-
-  <h3 id="blocking_popup_windows">Blocking Pop-up Windows</h3>
-
-  <p>See <a href="popup.xhtml">Controlling Pop-ups</a> for information on
-    blocking pop-up windows.</p>
-
-  <h3 id="turning_off_java_applets">Turning Off Java Applets</h3>
-
-  <p>Some web pages provide a rich interactive experience with Java&trade;
-    applets.  However, some users that rely on keyboard navigation may
-    experience problems with some Java applets that automatically set
-    focus and do not provide a way to <q>break out</q> of the applet and
-    navigate to the rest of the web page.  If this is a problem for you,
-    you can disable Java by going to &pref.menuPath;, selecting the
-    <em>Content</em> and unchecking the <em>Enable Java</em>
-    &pref.singular;.</p>
-
-  <h3 id="restricting_javascript_behavior">Restricting JavaScript Behavior</h3>
-
-  <p>You can turn off JavaScript entirely by going to &pref.menuPath;,
-    selecting the <em>Content</em> panel, and unchecking <em>Enable
-    JavaScript</em>.  Some web pages rely on JavaScript and may not work
-    properly if JavaScript is disabled.</p>
-
-  <p>If you do not wish to disable JavaScript entirely, there are also a
-    number of advanced JavaScript settings to restrict the behavior of
-    scripts.  Immediately after the <em>Enable JavaScript</em> checkbox,
-    click the <em>Advanced</em> button to open the <em>Advanced JavaScript
-    Settings</em> window.  You can control whether scripts are allowed
-    to move or resize existing windows, raise or lower windows, disable or
-    replace context menus, hide the status bar, or change status bar
-    text.</p>
-
-  <h2 id="compatibility_with_assistive_technologies">Compatibility With
-    Assistive Technologies</h2>
-
-  <p>The latest information about compatibility with third-party assistive
-    technologies is online at
-    <a target="_blank" href="http://www.mozilla.org/access/compatibility">Access
-    Mozilla: Compatibility with assistive technologies</a>.</p>
-
-  <h2 id="finding_help_online">Finding Help Online</h2>
-
-  <div class="win">
-
-    <p>Freedom Scientific maintains a number of
-      <a target="_blank" href="http://www.freedomscientific.com/fs_support/User_Groups.asp">mailing
-      lists for JAWS users</a>.</p>
-
-    <p>GW Micro maintains a number of
-      <a target="_blank" href="http://www.gwmicro.com/Support/Email_Lists/">mailing
-      lists for Window Eyes users</a>.</p>
-  </div>
-
-  <p>You may <span class="win">also</span> post accessibility questions to the
-    <a target="_blank" href="http://forums.mozillazine.org/viewforum.php?f=38">&brandShortName;
-    Support forum</a>.</p>
-
-  <div class="contentsBox"><em>29 Aug 2006</em></div>
-
-  <p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer
-    Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/cookies.xhtml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Managing Cookies</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Managing Cookies</h1>
-
-<p>This document explains what cookies are, how they are used, and how you can gain
-  control over the cookies stored on your computer by using the Cookie Manager in
-  &brandFullName;.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#what_is_a_cookie">What is a Cookie?</a></li>
-    <li><a href="#setting_up_cookie_rules">Setting Up Cookie Rules</a></li>
-    <li><a href="#accepting_and_blocking_cookies">Accepting and Blocking Cookies</a></li>
-    <li><a href="#cookies_exceptions">The Cookies Exceptions Window</a></li>
-    <li><a href="#view_cookies">The View Cookies Window</a></li>
-  </ul>
-</div>
-
-<h2 id="what_is_a_cookie">What is a Cookie?</h2>
-
-<p>A cookie is a file created by an Internet site to store information on your
-  computer, such as your preferences when visiting that site. When you visit a site
-  that uses cookies, the site might ask &brandShortName; to place one or more cookies
-  on your hard disk.</p>
-
-<p>Later, when you return to the site, &brandShortName; sends back the cookies that
-  belong to the site. This allows the site to present you with information customized
-  to fit your needs.</p>
-
-<p>Cookies can also store personally identifiable information. Personally identifiable
-  information is information that can be used to identify or contact you, such as
-  your name, e-mail address, home or work address, or telephone number. However, a
-  web site only has access to the personal information that you provide. For
-  example, a web site cannot determine your e-mail address unless you provide it. Also,
-  a web site cannot gain access to other information on your computer.</p>
-
-<p>When you use the default cookie settings, this activity is invisible to you,
-  and you won't know when a web site is setting a cookie or when &brandShortName;
-  is sending a web site its cookie. However, you can set your cookies
-  &pref.plural; so that you will be asked before a cookie is set. You can also
-  restrict the lifetime of cookies to your current &brandShortName; session.</p>
-
-<h2 id="setting_up_cookie_rules">Setting Up Cookie Rules</h2>
-
-<p>By default &brandShortName; accepts all cookies, including cookies which
-  would allow a site to recognize you effectively forever. If this doesn't suit
-  you, you can tell &brandShortName; to delete all cookies when you close
-  &brandShortName;:</p>
-
-<ol>
-  <li>Select &pref.menuPath; and open the <em>Privacy</em> panel.</li>
-  <li>Select the <em>I close &brandShortName;</em> &pref.singular; from the
-    <em>Keep until</em> menu.</li>
-</ol>
-
-<p>If you want to grant sites you trust the ability to store cookies permanently
-  (e.g., to allow you to log in automatically to a site), click <a
-  href="#cookies_exceptions"><em>Exceptions…</em></a>, enter the site address,
-  and click <em>Allow</em>.</p>
-
-<h3 id="all_the_settings">All the Settings</h3>
-
-<p>These are the &pref.plural; that affect how cookies are managed by
-  &brandShortName;:</p>
-
-<dl>
-  <dt>Accept cookies from sites</dt>
-  <dd><p>If you don't want any sites to store cookies on your computer, uncheck
-    this &pref.singular;. Note that some sites may not work properly when
-    cookies are disabled. If you want to grant certain sites the ability to
-    store cookies, open the <a href="#cookies_exceptions">Cookies Exceptions</a>
-    window by clicking <em>Exceptions…</em>, enter the site address, and click
-    <em>Allow</em> or <em>Allow for Session</em>.</p></dd>
-  <dt>Keep until</dt>
-  <dd>
-  <ul>
-    <li><em>they expire</em><br/>
-      If this &pref.singular; is selected, each cookie will be removed when the
-      site that set it has determined the cookie should expire.</li>
-    <li><em>I close &brandShortName;</em><br/>
-      If this &pref.singular; is selected, cookies will be removed when you
-      restart &brandShortName;.  Web sites requiring the use of cookies will
-      still work, but if you restart &brandShortName;, the web site will think
-      that you logged into the site for the first time again.</li>
-    <li><em>ask me every time</em><br/>
-      Display an alert every time a web site tries to store a cookie asking you
-      if you want that cookie stored.</li>
-  </ul>
-  </dd>
-</dl>
-
-<h2 id="accepting_and_blocking_cookies">Accepting and Blocking Cookies</h2>
-
-<p>If you've chosen <em>ask me every time</em> from the <em>Keep until</em>
-  menu, you'll see a dialog whenever a site tries to store a cookie on your
-  computer providing the following options:</p>
-
-<dl>
-  <dt>Allow</dt>
-  <dd>To allow this particular cookie, just click <em>Allow</em>. Use this if
-    you trust the site.</dd>
-  <dt>Allow for Session</dt>
-  <dd>If you want to allow this cookie for now, but have it deleted when you
-    exit &brandShortName;, click <em>Allow for Session</em>. Use this if the
-    site doesn't work without cookies, but you don't want to have a permanent
-    cookie stored for it.</dd>
-  <dt>Deny</dt>
-  <dd>If you don't want this cookie to be stored, click <em>Deny</em>. Use this
-    if you don't trust the site or suspect that it's compromising your privacy.</dd>
-  <dt>Use my choice for all cookies from this site</dt>
-  <dd>Select this checkbox before clicking any of the buttons if you want
-    &brandShortName; to remember your decision and not ask again. The site will
-    be added to the <a href="#cookies_exceptions">Cookie Exceptions</a> window,
-    where you can revert your choice should you wish to do so later.</dd>
-</dl>
-
-<h2 id="cookies_exceptions">The Cookies Exceptions Window</h2>
-
-<p>Access this window by clicking the <em>Exceptions…</em> button in cookies
-  &pref.plural;. Here you can make exceptions from your general cookies
-  &pref.plural; for specific sites. Using exceptions, you can allow all cookies,
-  reject all cookies, or allow all cookies but have them deleted when you exit
-  &brandShortName;, regardless of your other cookie settings.</p>
-
-<p>To add a site to this list, simply type the site's domain name in the field
-  labeled <em>Address of web site</em>. Then click <em>Block</em> to reject
-  cookies from the site, click <em>Allow</em> to allow cookies from the site,
-  or click <em>Allow for Session</em> to allow cookies from the site but have
-  them deleted when you exit &brandShortName;.</p>
-
-<p>To remove a site from this list, select it and click <em>Remove Site</em>. To
-  clear the list completely, click <em>Remove All Sites</em>. This will clear
-  the exceptions list so your general cookies &pref.plural; apply.</p>
-
-<h2 id="view_cookies">The View Cookies Window</h2>
-
-<p>Use the <em>View Cookies</em> window to view and remove cookies. To access it,
-  click the <em>View Cookies</em> button in cookies &pref.plural;.</p>
-
-<p>This window lists all cookies currently stored on your
-  computer, grouped by site. You can expand the sites and select a cookie to
-  display more information about it. You can also search for a site or a cookie
-  name by typing in the search bar.</p>
-
-<p>To remove a cookie from the list, select it and click <em>Remove Cookie</em>.
-  To remove a site's cookies, select the site and click <em>Remove
-  Cookie(s)</em>. To wipe all cookies, click <em>Remove All Cookies</em>.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/customization.xhtml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  Nilson Cain <nilson@gmail.com> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-   <title>Customizing &brandFullName;</title>
-   <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Customizing &brandFullName;</h1>
-
-<div class="contentsBox">In this section:
- <ul>
-   <li><a href="#toolbars">Toolbars</a></li>
-   <li><a href="#add_ons">Add-ons (extensions and themes)</a></li>
- </ul>
-</div>
-<h2 id="toolbars">Toolbars</h2>
-
-<p>This will tell you how to rearrange, hide, add, and remove toolbars in
-  &brandShortName;. For those who are unfamiliar with the terminology, a toolbar
-  is the (usually gray) box above the area that the web site is displayed.</p>
-
-<ul>
-  <li class="noMac"><strong>Menu Bar</strong>: This is the toolbar that contains
-    the browser menus (File, Edit, Help, etc.).</li>
-  <li><strong>Navigation Bar</strong>: This is the toolbar that contains the
-    Location Bar and the buttons used to navigate web sites.</li>
-  <li><strong>Bookmarks Toolbar</strong>: This is the toolbar that contains
-    your Bookmarks Toolbar Folder bookmarks.</li>
-
-</ul>
-
-<p>There are two basic methods of customizing the toolbars in
-  &brandShortName;:</p>
-
-<ul>
-  <li><a href="#rearranging_toolbar_items">Rearranging Toolbar Items</a></li>
-  <li><a href="#adding_removing_toolbars">Hiding, Adding, and Removing
-    Toolbars</a></li>
-</ul>
-
-<h3 id="rearranging_toolbar_items">Rearranging Toolbar Items</h3>
-
-<p>To rearrange the items (icons, buttons, text boxes, etc.) on your toolbar,
-  <span class="noMac">right-click</span><span class="mac">press &ctrlKey; and
-  click</span> on any part of the toolbar that is not a text box and select
-  <span class="menuPath">Customize…</span>. This will bring up the toolbar
-  customization dialog.</p>
-
-<p>Drag and drop any items you want to and from the toolbars <span class=
-  "noMac">(excluding the menu items)</span>. You can also rearrange icons
-  already on the toolbars by dragging and dropping them wherever you wish. When
-  the toolbars and items are arranged the way you want them, click
-  <em>Done</em>.</p>
-
-<h4 id="special_toolbar_items">Special Toolbar Items</h4>
-
-<p>There are a few special items that are available to you when customizing the
-  toolbar. They are as follows:</p>
-
-<ul>
-  <li><strong>Separators:</strong> These allow you to separate items on the
-    toolbars with a small vertical line.</li>
-  <li><strong>Spacers:</strong> These allow you to separate items on the
-    toolbars with a fixed-size space, usually around 20 pixels on most
-    themes.</li>
-  <li><strong>Flexible spacers:</strong> Spacers allow you to separate items
-    on the toolbars with a space.  These spacers automatically resize to fill
-    all of the empty space on the toolbar.  These are good for positioning
-    items on the right of a toolbar.</li>
-</ul>
-
-<h3 id="adding_removing_toolbars">Hiding, Adding, and Removing Toolbars</h3>
-
-<p>You can hide the Navigation Toolbar and the Bookmarks Toolbar if you do not
-  wish to keep them on your screen. <span class="noMac">You cannot hide the Menu
-  Bar because you cannot move the menu items (File, Edit, Help, etc.) to a
-  different toolbar, and they must stay on the screen at all times.</span></p>
-
-<p>To show or hide a toolbar, select <span class="menuPath">View &gt; Toolbars</span>
-  and click the name of the toolbar you want to show or hide.</p>
-
-<p>To add a custom toolbar, select <span class="menuPath">View &gt; Toolbars
-  &gt; Customize</span>. Click on <em>Add New Toolbar</em> (in the bottom of the
-  dialog). This will give you a dialog to enter a name. If you enter a name and
-  click <em>OK</em>, your new toolbar appears. Now you can drag and drop items
-  to it. To remove a custom toolbar, drag and drop all the items from it, and
-  click Done. You can also hide a custom toolbar as described in the previous
-  paragraph.</p>
-
-<h2 id="add_ons">Add-ons (extensions and themes)</h2>
-
-<p>Add-ons are small pieces of software which change or add to the appearance or
-  functionality of &brandShortName;. There are two kinds of add-ons: extensions
-  and themes.</p>
-
-<dl>
-  <dt>Extensions</dt>
-  <dd>Extensions add new functionality to &brandShortName;. They can add
-    anything from a toolbar button to a completely new feature. They allow the
-    application to be customized to fit the personal needs of each user while
-    minimizing the size and appearance of the application itself.</dd>
-
-  <dt>Themes</dt>
-  <dd>Themes modify &brandShortName;'s appearance. They allow you to change the
-    look and feel of &brandShortName; and personalize it to your tastes. A
-    theme can simply change button images, or it can change every piece of
-    &brandShortName; appearance.</dd>
-</dl>
-
-<h3 id="add_ons_installing">Getting and Installing Add-ons</h3>
-
-<p>You can download and install many add-ons from <a
-  href="https://addons.mozilla.org/firefox/" target="_blank">&brandShortName;
-  Add-ons</a>. Internet searches will find many other add-ons as well.</p>
-
-<p>When you click on a link to install an add-on, &brandShortName; displays a
-  dialog asking you for permission to install the add-on. You can choose to
-  allow the download and installation or to cancel the process.</p>
-
-<h2 id="add_ons_manager">Using the Add-ons manager</h2>
-<p>Add-ons are managed in the Add-ons manager. Select <span
-  class="menuPath">Tools &gt; Add-ons</span> to open it.</p>
-
-<h3 id="add_ons_updating">Updating Add-ons</h3>
-
-<p>By default, &brandShortName; will periodically check when a new version for
-  one of your installed add-ons is available. If any are available, it will
-  prompt you at the next start to install any updates. You can change this
-  behavior in the <a href="prefs.xhtml#advanced_update"><em>Update</em> tab</a>
-  of the <em>Advanced</em> panel of &pref.pluralCaps;.</p>
-
-<p>You can check for updates manually by selecting the <em>Extensions</em> or
-  <em>Themes</em> panel and clicking the <em>Find Updates</em> button. If
-  updates are available, the Add-ons manager displays an <em>Updates</em>
-  panel, where you can choose the updates you want to install. Click the
-  <em>Install Updates</em> button to update those add-ons.
-  You need to restart &brandShortName; for changes to take effect.</p>
-
-<h3 id="add_ons_uninstalling">Disabling, Enabling, and Uninstalling Add-ons</h3>
-
-<p>If you want to get rid of an extension, you can either disable it temporarily,
-  so it is easily available should you want to enable it again in the future,
-  or uninstall it. Themes can only be uninstalled since all themes except the
-  current one are disabled automatically.</p>
-  
-<p>To disable or enable an extension, select the extension of your choice and
-  click its <em>Disable</em> or <em>Enable</em> button. To remove an add-on from
-  &brandShortName;, select the add-on you wish to remove and click its
-  <em>Uninstall</em> button. You need to restart &brandShortName; for changes to
-  take effect.</p>
-
-<h3 id="add_ons_further">Further functionality</h3>
-
-<p>Further functionality such as <em>Visit Home Page</em> and <em>About</em> is
-  available by selecting the add-on of your choice, <span class="mac">pressing
-  &ctrlKey; and clicking on</span><span class="noMac">right-clicking</span> the
-  add-on and selecting the respective item from the context menu.</p>
-
-<h3 id="add_ons_specific">Tasks specific to extensions or themes</h3>
-<h4 id="add_ons_configuring_extensions">Configuring Extensions</h4>
-
-<p>Extensions often provide a dialog to configure their functionality. To open
-  the &pref.plural; dialog of an extension, select the Extensions panel, select
-  the extension of your choice, and click its <em>&pref.pluralCaps;</em> button,
-  or simply double-click the extension.</p>
-
-<h4 id="add_ons_switching_themes">Switching Themes</h4>
-
-<p>To switch between your installed themes, select the Themes panel, select the
-  theme of your choice, and click its <em>Use Theme</em> button. You need to
-  restart &brandShortName; for changes to take effect.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/download_manager.xhtml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  Nilson Cain <mybugs@bellsouth.net> (original author)
-  Jeff Walden <jwalden+code@mit.edu>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-   <title>Using &brandFullName;'s Download Manager</title>
-   <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Using &brandFullName;'s Download Manager</h1>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#what_is_download_manager">What is the Download Manager?</a></li>
-    <li><a href="#do_with_download_manager">What can I do with the Download Manager?</a></li>
-    <li><a href="#download_manager_options">Download Manager &pref.pluralCaps;</a></li>
-  </ul>
-</div>
-<h2 id="what_is_download_manager">What is the Download Manager?</h2>
-
-<p>The Download Manager is a feature of &brandShortName; that allows you to
-  track and manage your past and current file downloads.  It is a convenient way
-  to escape the clutter of multiple downloading windows while still preserving
-  access to download statistics.</p>
-
-<p>The Download Manager will appear when you download files, when you select
-  <span class="menuPath">Tools &gt; Downloads</span>, and when you press
-  <span class="noUnix">&accelKey;+<kbd>J</kbd></span><span class="unix">&accelKey;+<kbd>Y</kbd></span>.</p>
-
-
-<h2 id="do_with_download_manager">What can I do with the Download Manager?</h2>
-
-<p>In addition to keeping information on all your downloads in one place, the
-  Download Manager keeps convenient download actions easily accessible for each
-  of your downloads.</p>
-
-<dl>
-  <dt>Pause</dt>
-  <dd>You can pause any downloads currently in progress by clicking the
-    <em>Pause</em> link beside the file entry.  This may be useful, for
-    example, if you need to open a small download started after a large 
-    download. Pausing downloads gives you the choice to decide which of your 
-    downloads are most important.  When you want to continue downloading those
-    files, simply use the <em>Resume</em> link to finish those downloads.</dd>
-
-  <dt>Cancel</dt>
-  <dd>If after starting a download you decide you no longer need that file, 
-    canceling the download is simple: just use the <em>Cancel</em> link beside
-    that file entry to cancel it and free up your connection for your browsing
-    and other downloads.</dd>
-
-  <dt>Open the File</dt>
-  <dd>When a download has finished, the <em>Open</em> link will appear
-    by the file entry. Use it to open the file.</dd>
-
-  <dt>Remove the File's Entry</dt>
-  <dd>If you do not wish to store information on a particular download, removing
-    the entry is as simple as the click of a mouse.  Simply use the
-    <em>Remove</em> link beside the file entry to delete it.</dd>
-
-  <dt>Retry a Download</dt>
-  <dd>If for any reason a download does not complete, it is easy to attempt the
-    download again.  To recover from a failed download and retry it, just use 
-    the <em>Retry</em> link next to the file entry and &brandShortName; will
-    restart the download for you.</dd>
-
-  <dt>Show Download Folder</dt>
-  <dd>If you have set &brandShortName; to save all downloads to a folder in
-    <a href="#download_manager_options">Download Manager &pref.pluralCaps;</a>,
-    you can open this folder by clicking the <em>Folder Name</em> at the
-    bottom of the Download Manager window.</dd>
-</dl>
-
-<h2 id="download_manager_options">Download Manager &pref.pluralCaps;</h2>
-
-<p>The &pref.plural; for the Download Manager are accessible by opening the
-  Downloads section of the <em>Main</em> panel in the &pref.pluralCaps; window.
-  They allow you to change several downloading &pref.plural;.  More information
-  regarding the various &pref.plural; is available in the <a
-  href="prefs.xhtml#downloads">&pref.pluralCaps; page</a>.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/firebird-toc.rdf
+++ /dev/null
@@ -1,491 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-    %brandDTD;
-]>
-
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         xmlns:nc="http://home.netscape.com/NC-rdf#">
-
-  <rdf:Description about="urn:root">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="firefox-help" nc:name="Welcome to &brandFullName; Help" nc:link="firefox_welcome.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird" nc:name="Using &brandFullName;" nc:link="using_firebird.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager" nc:name="Using the Download Manager" nc:link="download_manager.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="customize-firebird" nc:name="Customization" nc:link="customization.xhtml"/> </rdf:li>
-        <rdf:li>
-          <rdf:Description ID="prefs-win" nc:name="Options" nc:link="prefs.xhtml" nc:platform="win os2">
-            <nc:subheadings rdf:resource="#prefs-tree"/>
-          </rdf:Description>
-        </rdf:li>
-        <rdf:li>
-          <rdf:Description ID="prefs-unix" nc:name="Preferences" nc:link="prefs.xhtml" nc:platform="unix mac">
-            <nc:subheadings rdf:resource="#prefs-tree"/>
-          </rdf:Description>
-        </rdf:li>
-        <rdf:li> <rdf:Description ID="popup-blocker" nc:name="Controlling Pop-ups" nc:link="popup.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="cookies" nc:name="Managing Cookies" nc:link="cookies.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing" nc:name="Tabbed Browsing" nc:link="tabbed_browsing.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="firebird-keyboard-shortcuts" nc:name="Keyboard Shortcuts" nc:link="shortcuts.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="firebird-mouse-shortcuts" nc:name="Mouse Shortcuts" nc:link="mouse_shortcuts.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y" nc:name="Accessibility Features" nc:link="accessibility.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu" nc:name="Menu Reference" nc:link="menu_reference.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers" nc:name="Help for Internet Explorer Users" nc:link="forieusers.xhtml"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="using-firebird-navigating-web-pages" nc:name="Navigating Web Pages" nc:link="using_firebird.xhtml#navigating_web_pages"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird-searching" nc:name="Searching" nc:link="using_firebird.xhtml#searching"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird-copying-saving-and-printing-pages" nc:name="Copying, Saving, and Printing Pages" nc:link="using_firebird.xhtml#copying_saving_and_printing_pages"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird-improving-speed-and-efficiency" nc:name="Improving Speed and Efficiency" nc:link="using_firebird.xhtml#improving_speed_and_efficiency"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-download-manager">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="using-download-manager-whatis" nc:name="What is the Download Manager?" nc:link="download_manager.xhtml#what_is_download_manager"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager-can-i-do" nc:name="What can I do with the Download Manager?" nc:link="download_manager.xhtml#do_with_download_manager"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager-prefs-win" nc:name="Download Manager Options" nc:link="download_manager.xhtml#download_manager_options" nc:platform="win os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager-prefs-unix" nc:name="Download Manager Preferences" nc:link="download_manager.xhtml#download_manager_options" nc:platform="unix mac"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-navigating-web-pages">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="using-firebird-viewing-your-home-page" nc:name="Viewing your Home Page" nc:link="using_firebird.xhtml#viewing_your_home_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-moving-to-another-page" nc:name="Moving to Another Page" nc:link="using_firebird.xhtml#moving_to_another_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-clicking-a-link" nc:name="Clicking a Link" nc:link="using_firebird.xhtml#clicking_a_link"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-retracing-your-steps" nc:name="Retracing Your Steps" nc:link="using_firebird.xhtml#retracing_your_steps"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-stopping-and-reloading" nc:name="Stopping and Reloading" nc:link="using_firebird.xhtml#stopping_and_reloading"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-tabbed-browsing" nc:name="Tabbed Browsing" nc:link="tabbed_browsing.xhtml"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-sidebar" nc:name="Using the Sidebar" nc:link="using_firebird.xhtml#using_the_sidebar"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-searching">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="use-firebird-searching-the-web" nc:name="Searching the Web" nc:link="using_firebird.xhtml#searching_the_web"/> </rdf:li>
-        <rdf:li><rdf:Description ID="use-firebird-searching-on-selected-words-in-a-web-page" nc:name="Searching the Web for Words Selected in a Web Page" nc:link="using_firebird.xhtml#searching_on_selected_words_in_a_web_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="use-firebird-searching-within-a-page" nc:name="Searching Within a Page" nc:link="using_firebird.xhtml#searching_within_a_page"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-copying-saving-and-printing-pages">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="using-firebird-copying-part-of-a-page" nc:name="Copying Part of a Page" nc:link="using_firebird.xhtml#copying_part_of_a_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-saving-all-or-part-of-a-page" nc:name="Saving a Page" nc:link="using_firebird.xhtml#saving_all_or_part_of_a_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-printing-a-page" nc:name="Printing a Page" nc:link="using_firebird.xhtml#printing_a_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-using-print-preview" nc:name="Using Print Preview" nc:link="using_firebird.xhtml#using_print_preview" nc:platform="win unix os2"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-using-page-setup" nc:name="Using Page Setup" nc:link="using_firebird.xhtml#using_page_setup"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-improving-speed-and-efficiency">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="using-firebird-managing-different-file-types" nc:name="Managing Different File Types" nc:link="using_firebird.xhtml#managing_different_file_types"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="using-firebird-making-firebird-default-browser" nc:name="Make Default Browser" nc:link="using_firebird.xhtml#making_firebird_your_default_browser"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="using-firebird-cache-prefs-win" nc:name="Cache Options" nc:link="using_firebird.xhtml#changing_cache_settings" nc:platform="win os2"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="using-firebird-cache-prefs-unix" nc:name="Cache Preferences" nc:link="using_firebird.xhtml#changing_cache_settings" nc:platform="mac unix"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#customize-firebird">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="customize-toolbars" nc:name="Toolbars" nc:link="customization.xhtml#toolbars"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="add-ons" nc:name="Add-ons (extensions and themes)" nc:link="customization.xhtml#add_ons"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#customize-toolbars">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="customize-toolbar-rearrange" nc:name="Rearranging Toolbar Items" nc:link="customization.xhtml#rearranging_toolbar_items"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="customize-toolbars-adding" nc:name="Hiding, Adding, and Removing Toolbars" nc:link="customization.xhtml#adding_removing_toolbars"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#add-ons">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="add-ons-installing" nc:name="Getting and Installing Add-ons" nc:link="customization.xhtml#add_ons_installing"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="add-ons-manager" nc:name="Using the Add-ons manager" nc:link="customization.xhtml#add_ons_manager"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#popup-blocker">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="popup-blocker-what-are-popups" nc:name="What are Pop-ups?" nc:link="popup.xhtml#what_are_popups"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="popup-blocker-prefs-win" nc:name="Pop-up Blocker Options" nc:link="popup.xhtml#popup_blocker_preferences" nc:platform="win os2"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="popup-blocker-prefs-unix" nc:name="Pop-up Blocker Preferences" nc:link="popup.xhtml#popup_blocker_preferences" nc:platform="unix mac"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#cookies">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="cookies-what-is-a-cookie" nc:name="What is a Cookie?" nc:link="cookies.xhtml#what_is_a_cookie"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-setting-up-cookie-rules" nc:name="Setting Up Cookie Rules" nc:link="cookies.xhtml#setting_up_cookie_rules"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-all-the-settings" nc:name="Cookie Settings" nc:link="cookies.xhtml#all_the_settings"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-accepting-and-blocking-cookies" nc:name="Accepting and Blocking Cookies" nc:link="cookies.xhtml#accepting_and_blocking_cookies"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-exceptions" nc:name="The Cookies Exceptions Window" nc:link="cookies.xhtml#cookies_exceptions"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-view" nc:name="The View Cookies Window" nc:link="cookies.xhtml#view_cookies"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#tabbed-browsing">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-creating-loading-tabs" nc:name="Creating and Loading Tabs" nc:link="tabbed_browsing.xhtml#creating_loading_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-moving-tabs" nc:name="Moving Tabs Within a Window" nc:link="tabbed_browsing.xhtml#moving_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-closing-tabs" nc:name="Closing and Restoring Tabs" nc:link="tabbed_browsing.xhtml#closing_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-customizing" nc:name="Customizing Tabbed Browsing" nc:link="tabbed_browsing.xhtml#customizing"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-tips-tricks" nc:name="Tips and Tricks" nc:link="tabbed_browsing.xhtml#tips_tricks"/> </rdf:li>
-       </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-keyboard-navigation" nc:name="Using a Keyboard" nc:link="accessibility.xhtml#using_a_keyboard"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-mouse-navigation" nc:name="Using a Mouse" nc:link="accessibility.xhtml#using_a_mouse"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-fonts-and-colors" nc:name="Fonts and Colors" nc:link="accessibility.xhtml#fonts_and_colors"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-web-content" nc:name="Controlling Web Content" nc:link="accessibility.xhtml#controlling_web_content"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-compatibility" nc:name="Compatibility with Assistive Technologies" nc:link="accessibility.xhtml#compatibility_with_assistive_technologies"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-online" nc:name="Finding Help Online" nc:link="accessibility.xhtml#finding_help_online"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-keyboard-navigation">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-keyboard-shortcuts" nc:name="Keyboard Shortcuts" nc:link="accessibility.xhtml#keyboard_shortcuts"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-caret-browsing" nc:name="Always Use the Cursor Keys to Navigate Within Webpages" nc:link="accessibility.xhtml#always_use_cursor_keys"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-typeahead-find" nc:name="Search for Text When I Start Typing" nc:link="accessibility.xhtml#find_as_you_type"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-mouse-navigation">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-mouse-shortcuts" nc:name="Common Mouse Shortcuts" nc:link="accessibility.xhtml#common_mouse_shortcuts"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-fonts-and-colors">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-override-fonts" nc:name="Overriding Page Fonts" nc:link="accessibility.xhtml#overriding_page_fonts"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-minimum-font-size" nc:name="Setting a Minimum Font Size" nc:link="accessibility.xhtml#setting_a_minimum_font_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-text-zoom" nc:name="Resizing Page Text" nc:link="accessibility.xhtml#resizing_page_text"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-override-colors" nc:name="Overriding Page Colors" nc:link="accessibility.xhtml#overriding_page_colors"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-high-contrast" nc:name="Using a High Contrast Theme" nc:link="accessibility.xhtml#using_a_high_contrast_theme" nc:platform="win unix"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-web-content">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-popup-windows" nc:name="Blocking Pop-up Windows" nc:link="accessibility.xhtml#blocking_popup_windows"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-java" nc:name="Turning Off Java Applets" nc:link="accessibility.xhtml#turning_off_java_applets"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-javascript" nc:name="Restricting JavaScript Behavior" nc:link="accessibility.xhtml#restricting_javascript_behavior"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-firefox" nc:name="&brandShortName;" nc:link="menu_reference.xhtml#firefox" nc:platform="mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file" nc:name="File" nc:link="menu_reference.xhtml#file"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-edit" nc:name="Edit" nc:link="menu_reference.xhtml#edit"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view" nc:name="View" nc:link="menu_reference.xhtml#view"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go" nc:name="History" nc:link="menu_reference.xhtml#go"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks" nc:name="Bookmarks" nc:link="menu_reference.xhtml#bookmarks"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools" nc:name="Tools" nc:link="menu_reference.xhtml#tools"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-window" nc:name="Window" nc:link="menu_reference.xhtml#window" nc:platform="mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help" nc:name="Help" nc:link="menu_reference.xhtml#help"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-firefox">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-firefox-about" nc:name="About &brandFullName;" nc:link="menu_reference.xhtml#about_mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-firefox-preferences" nc:name="Preferences…" nc:link="menu_reference.xhtml#prefs_mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-firefox-quit" nc:name="Quit &brandShortName;" nc:link="menu_reference.xhtml#quit_mac"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-file">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-file-new-window" nc:name="New Window" nc:link="menu_reference.xhtml#new_window"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-new-tab" nc:name="New Tab" nc:link="menu_reference.xhtml#new_tab"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-open-location" nc:name="Open Location…" nc:link="menu_reference.xhtml#open_location"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-open-file" nc:name="Open File…" nc:link="menu_reference.xhtml#open_file"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-close" nc:name="Close (Window)" nc:link="menu_reference.xhtml#close"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-close-tab" nc:name="Close Tab" nc:link="menu_reference.xhtml#close_tab"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-save-page-as" nc:name="Save Page As…" nc:link="menu_reference.xhtml#save_page_as"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-send-page" nc:name="Send Link…" nc:link="menu_reference.xhtml#send_page"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-page-setup" nc:name="Page Setup…" nc:link="menu_reference.xhtml#page_setup"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-print-preview" nc:name="Print Preview" nc:link="menu_reference.xhtml#print_preview" nc:platform="win unix os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-print" nc:name="Print…" nc:link="menu_reference.xhtml#print"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-import" nc:name="Import…" nc:link="menu_reference.xhtml#import"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-work-offline" nc:name="Work Offline" nc:link="menu_reference.xhtml#work_offline"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-exit-win" nc:name="Exit" nc:link="menu_reference.xhtml#exit" nc:platform="win os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-exit-unix" nc:name="Quit" nc:link="menu_reference.xhtml#exit" nc:platform="unix"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-edit">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-undo" nc:name="Undo" nc:link="menu_reference.xhtml#undo"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-redo" nc:name="Redo" nc:link="menu_reference.xhtml#redo"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-cut" nc:name="Cut" nc:link="menu_reference.xhtml#cut"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-copy" nc:name="Copy" nc:link="menu_reference.xhtml#copy"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-paste" nc:name="Paste" nc:link="menu_reference.xhtml#paste"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-delete" nc:name="Delete" nc:link="menu_reference.xhtml#delete"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-select-all" nc:name="Select All" nc:link="menu_reference.xhtml#select_all"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-find-in-this-page" nc:name="Find in This Page…" nc:link="menu_reference.xhtml#find_in_this_page"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-find-again" nc:name="Find Again" nc:link="menu_reference.xhtml#find_again"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-preferences" nc:name="Preferences" nc:link="menu_reference.xhtml#prefs" nc:platform="unix"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars" nc:name="Toolbars" nc:link="menu_reference.xhtml#toolbars"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-status-bar" nc:name="Status Bar" nc:link="menu_reference.xhtml#status_bar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-sidebar" nc:name="Sidebar" nc:link="menu_reference.xhtml#sidebar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-stop" nc:name="Stop" nc:link="menu_reference.xhtml#stop"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-reload" nc:name="Reload" nc:link="menu_reference.xhtml#reload"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-text-size" nc:name="Text Size" nc:link="menu_reference.xhtml#text_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-page-style" nc:name="Page Style" nc:link="menu_reference.xhtml#page_style"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-character-encoding" nc:name="Character Encoding" nc:link="menu_reference.xhtml#character_encoding"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-page-source" nc:name="Page Source" nc:link="menu_reference.xhtml#page_source"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-full-screen" nc:name="Full Screen" nc:link="menu_reference.xhtml#full_screen" nc:platform="win unix os2"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-toolbars">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars-navigation" nc:name="Navigation Toolbar" nc:link="menu_reference.xhtml#navigation_toolbar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars-bookmarks" nc:name="Bookmarks Toolbar" nc:link="menu_reference.xhtml#bookmarks_toolbar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars-customize" nc:name="Customize" nc:link="menu_reference.xhtml#customize"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-sidebar">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-sidebar-bookmarks" nc:name="Bookmarks" nc:link="menu_reference.xhtml#view_sidebar_bookmarks"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-sidebar-history" nc:name="History" nc:link="menu_reference.xhtml#view_sidebar_history"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-text-size">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-text-size-increase" nc:name="Increase" nc:link="menu_reference.xhtml#increase_text_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-text-size-decrease" nc:name="Decrease" nc:link="menu_reference.xhtml#decrease_text_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-text-size-reset" nc:name="Normal" nc:link="menu_reference.xhtml#reset_text_size"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-page-style">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-page-style-no-style" nc:name="No Style" nc:link="menu_reference.xhtml#no_style"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-page-style-basic-page-style" nc:name="Basic Page Style" nc:link="menu_reference.xhtml#basic_page_style"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-go">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-go-back" nc:name="Back" nc:link="menu_reference.xhtml#back"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-forward" nc:name="Forward" nc:link="menu_reference.xhtml#forward"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-home" nc:name="Home" nc:link="menu_reference.xhtml#home"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-closed-tabs" nc:name="Recently Closed Tabs" nc:link="menu_reference.xhtml#closed_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-history" nc:name="Show in Sidebar" nc:link="menu_reference.xhtml#go_history"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-bookmarks">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-add-to-bookmarks" nc:name="Bookmark This Page" nc:link="menu_reference.xhtml#add_to_bookmarks"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-subscribe" nc:name="Subscribe to This Page…" nc:link="menu_reference.xhtml#subscribe"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-bookmark-all-tabs" nc:name="Bookmark All Tabs…" nc:link="menu_reference.xhtml#bookmark_all_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-organize-bookmarks" nc:name="Organize Bookmarks…" nc:link="menu_reference.xhtml#organize_bookmarks"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-tools">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-tools-web-search" nc:name="Web Search" nc:link="menu_reference.xhtml#web_search"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-downloads" nc:name="Downloads" nc:link="menu_reference.xhtml#downloads"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-add-ons" nc:name="Add-ons" nc:link="menu_reference.xhtml#add_ons"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-javascript-console" nc:name="Error Console" nc:link="menu_reference.xhtml#javascript_console"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-page-info" nc:name="Page Info" nc:link="menu_reference.xhtml#page_info"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-clear-private-data" nc:name="Clear Private Data…" nc:link="menu_reference.xhtml#clear_private_data"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-options" nc:name="Options" nc:link="menu_reference.xhtml#options" nc:platform="win os2"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-window">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-window-minimize" nc:name="Minimize" nc:link="menu_reference.xhtml#minimize"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-window-zoom" nc:name="Zoom" nc:link="menu_reference.xhtml#zoom"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-window-open-windows" nc:name="(Open Windows)" nc:link="menu_reference.xhtml#open-windows"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-help">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-help-help-contents" nc:name="Help Contents" nc:link="menu_reference.xhtml#help_contents" nc:platform="win unix os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-help-contents-mac" nc:name="&brandShortName; Help" nc:link="menu_reference.xhtml#help_contents" nc:platform="mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-for-ie-users" nc:name="For Internet Explorer Users" nc:link="menu_reference.xhtml#for_ie_users" nc:platform="win"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-relnotes" nc:name="Release Notes" nc:link="menu_reference.xhtml#relnotes"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-report-broken-web-site" nc:name="Report Broken Web Site…" nc:link="menu_reference.xhtml#reporter"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-report-web-forgery" nc:name="Report Web Forgery…" nc:link="menu_reference.xhtml#web_forgery"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-check-for-updates" nc:name="Check for Updates…" nc:link="menu_reference.xhtml#check_for_updates"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-about-mozilla-firebird" nc:name="About &brandFullName;" nc:link="menu_reference.xhtml#about_mozilla_firebird" nc:platform="win unix os2"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#ieusers">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="ieusers-firebird-ie-terminology-differences" nc:name="Terminology Differences" nc:link="forieusers.xhtml#firebird_and_internet_explorer_terminology_differences"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers-about-your-ie-settings" nc:name="About Your IE Favorites and Settings" nc:link="forieusers.xhtml#about_your_ie_settings"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers-firebirds-features" nc:name="&brandFullName;'s Features" nc:link="forieusers.xhtml#firebirds_features"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers-keyboard-shortcuts" nc:name="Keyboard Shortcuts" nc:link="forieusers.xhtml#keyboard_shortcuts"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <!-- The following nodes are intentionally linkable but not displayable -->
-  <Description rdf:ID="prefs-languages" nc:name="Languages" nc:link="prefs.xhtml#languages"/>
-  <Description rdf:ID="prefs-fonts-and-colors" nc:name="Fonts &amp; Colors" nc:link="prefs.xhtml#fonts_and_colors"/>
-  <Description rdf:ID="prefs-connection-settings" nc:name="Connection Settings" nc:link="prefs.xhtml#connection_settings"/>
-
-  <!-- The following nodes are trees used multiple times in the hierarchy
-       (for platform-specific reasons).  To display one of these trees,
-       include an nc:subheadings element with an rdf:ID attribute set to
-       "#" plus the value of the rdf:ID for the appropriate tree within
-       the appropriate rdf:Description element. -->
-
-  <Seq rdf:ID="prefs-tree">
-    <li><Description ID="prefs-main" nc:name="Main" nc:link="prefs.xhtml#main_options"/></li>
-    <li><Description ID="prefs-tabs" nc:name="Tabs" nc:link="prefs.xhtml#tabs_options"/></li>
-    <li><Description ID="prefs-content" nc:name="Content" nc:link="prefs.xhtml#content_options"/></li>
-    <li><Description ID="prefs-applications" nc:name="Applications" nc:link="prefs.xhtml#applications_options"/></li>
-    <li><Description ID="prefs-privacy" nc:name="Privacy" nc:link="prefs.xhtml#privacy_options"/></li>
-    <li><Description ID="prefs-security" nc:name="Security" nc:link="prefs.xhtml#security_options"/></li>
-    <li><Description ID="prefs-advanced" nc:name="Advanced" nc:link="prefs.xhtml#advanced_options"/></li>
-  </Seq>
-
-  <!-- The following are subnodes of trees used multiple times in the hierarchy. -->
-
-  <Description rdf:about="#prefs-main">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-startup" nc:name="Startup" nc:link="prefs.xhtml#startup"/></li>
-        <li><Description rdf:ID="prefs-downloads" nc:name="Downloads" nc:link="prefs.xhtml#downloads"/></li>
-        <li><Description rdf:ID="prefs-system-defaults" nc:name="System Defaults" nc:link="prefs.xhtml#system_defaults"/></li>
-        <li><Description rdf:ID="prefs-addons" nc:name="Add-ons" nc:link="prefs.xhtml#addons"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-content">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-advanced-javascript" nc:name="Advanced Javascript Settings" nc:link="prefs.xhtml#advanced_javascript"/></li>
-        <li><Description rdf:ID="prefs-fonts-and-colors" nc:name="Fonts and Colors" nc:link="prefs.xhtml#fonts_and_colors"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-privacy">
-    <nc:subheadings>
-      <rdf:Seq>
-        <li><Description rdf:ID="prefs-privacy-history" nc:name="History" nc:link="prefs.xhtml#privacy_history"/></li>
-        <li><Description rdf:ID="prefs-privacy-cookies" nc:name="Cookies" nc:link="prefs.xhtml#privacy_cookies"/></li>
-        <li><Description rdf:ID="prefs-clear-private-data" nc:name="Private Data" nc:link="prefs.xhtml#private_data"/></li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-security">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-passwords" nc:name="Passwords" nc:link="prefs.xhtml#security_passwords"/></li>
-        <li><Description rdf:ID="prefs-warning-messages" nc:name="Warning Messages" nc:link="prefs.xhtml#warning_messages"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-advanced">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-advanced-general" nc:name="General" nc:link="prefs.xhtml#advanced_general"/></li>
-        <li><Description rdf:ID="prefs-advanced-network" nc:name="Network" nc:link="prefs.xhtml#advanced_network"/></li>
-        <li><Description rdf:ID="prefs-advanced-update" nc:name="Update" nc:link="prefs.xhtml#advanced_update"/></li>
-        <li><Description rdf:ID="prefs-advanced-encryption" nc:name="Encryption" nc:link="prefs.xhtml#advanced_encryption"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-
-</rdf:RDF>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/firebirdhelp.rdf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE window [
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-    %brandDTD;
-]>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:nc="http://home.netscape.com/NC-rdf#">
-
-    <!-- MOZILLA MASTER HELP DOCUMENT -->
-    <Description rdf:about="urn:root"
-            nc:title="&brandFullName; Help"
-            nc:defaulttopic="firefox-help"
-            nc:base="chrome://browser/locale/help/">
-        <nc:panellist>
-            <Seq>
-                <li>
-                    <Description nc:panelid="toc"
-                        nc:datasources="chrome://help/locale/help-toc.rdf firebird-toc.rdf"/>
-                </li>
-                <li>
-                    <Description nc:panelid="search"
-                        nc:datasources="search-db.rdf"
-                        nc:emptysearchtext="[No matching items found.]"
-                        nc:emptysearchlink="chrome://help/locale/welcome.xhtml#search_tips"/>
-                </li>
-            </Seq>
-        </nc:panellist>
-    </Description>
-</RDF>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/firefox_welcome.xhtml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    <!ENTITY % regionDTD SYSTEM "chrome://global-region/locale/region.dtd" >
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %brandDTD;
-    %regionDTD;
-    %platformDTD;
-]>
-<!--
-Contributors:
-  R.J. Keller <rlk@trfenv.com> (original author)
-  Jeff Walden <jwalden+code@mit.edu>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>&brandFullName; Help</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-<body>
-
-<h1>Welcome to &brandFullName; Help</h1>
-<p>To display information about &brandFullName; in this window, click topics in
-  the <em>Contents</em> sidebar. Click the <span class="noMac">plus icon</span>
-  <span class="mac">triangle</span> next to a topic to see its subtopics.</p>
-
-<p>You can also use the <em>Search</em> bar to find specific
-  information within &brandShortName; Help.  For more information on using
-  &brandFullName; Help, see <a href="chrome://help/locale/welcome.xhtml">Using
-  the Help Window</a>.</p>
-
-<p>If you can't find what you need in built-in &brandShortName; Help, you can
-  find more help and support options online at <a
-  href="http://www.mozilla.org/support/firefox/" target="_blank">&brandShortName; Help</a>.</p>
-
-<div class="contentsBox"><em>09 July 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/forieusers.xhtml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>For Internet Explorer Users</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>For Internet Explorer Users</h1>
-
-<p>If you've been using Microsoft&reg; Internet Explorer, you'll find that
-  it's easy to begin using &brandFullName;.</p>
-<p><strong>Note:</strong> This information applies to &brandFullName; for Windows and
-  Mac OS.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#firebird_and_internet_explorer_terminology_differences">
-      Terminology Differences</a></li>
-    <li><a href="#about_your_ie_settings">About Your IE Favorites and Settings</a></li>
-    <li><a href="#firebirds_features">&brandShortName;'s Features</a></li>
-    <li><a href="#keyboard_shortcuts">Keyboard Shortcuts</a></li>
-  </ul>
-</div>
-
-<h2 id="firebird_and_internet_explorer_terminology_differences">Terminology
-  Differences</h2>
-
-<table width="95%" border="1">
- <thead>
-  <tr>
-    <th>Internet Explorer</th>
-    <th>&brandShortName;</th>
-  </tr>
- </thead>
- <tbody>
-  <tr class="noMac">
-    <td>Internet Options</td>
-    <td>&pref.pluralCaps;</td>
-  </tr>
-  <tr class="noMac">
-    <td>Temporary Internet Files</td>
-    <td>Cache</td>
-  </tr>
-  <tr>
-    <td>Favorites</td>
-    <td>Bookmarks</td>
-  </tr>
-  <tr>
-    <td>Address Bar</td>
-    <td>Location Bar</td>
-  </tr>
-  <tr>
-    <td>Refresh</td>
-    <td>Reload</td>
-  </tr>
-  <tr>
-    <td><span class="noMac">Links Bar</span><span class="mac">Favorites Bar</span></td>
-    <td>Bookmarks Toolbar</td>
-  </tr>
-  <tr>
-    <td><span class="noMac">Copy Shortcut</span><span class="mac">Copy Link to Clipboard</span></td>
-    <td>Copy Link Location</td>
-  </tr>
-  <tr>
-    <td><span class="noMac">Save Target As</span><span class="mac">Download Link to Disk</span></td>
-    <td>Save Link As</td>
-  </tr>
- </tbody>
-</table>
-
-<h2 id="about_your_ie_settings">About Your IE Favorites and Settings</h2>
-
-<p>When you first install &brandShortName;, it will import your existing
-  Internet Explorer settings, including your Favorites, cookies, stored
-  passwords, and a variety of other data.  This saves you time customizing
-  &brandShortName; to fit your needs.</p>
-
-<h2 id="firebirds_features">&brandShortName;'s Features</h2>
-<ul>
-  <li><strong>Tabbed Browsing</strong>: Instead of opening a separate browser
-    window for each site you want to visit, you can open multiple sites within
-    the same window and tab between them. You can also set a group of tabs as
-    your home page.  For more information see <a
-    href="tabbed_browsing.xhtml">Tabbed Browsing</a>.</li>
-  <li><strong>Pop-up Window Controls</strong>: Lets you allow or suppress both
-    pop-up and pop-under windows.</li>
-  <li><strong>Cookie Manager</strong>: Lets you change what &brandShortName; will
-    do when accepting cookies.</li>
-  <li><strong>Download Manager</strong>: Organizes your downloads by storing
-    them in a single window to minimize clutter.  You have full access to
-    download statistics without using unnecessary multiple windows for each
-    download.</li>
-  <li><strong>Image Manager</strong>: Enables you to disable images from certain
-    web sites or disable them altogether. This is useful if you wish to decrease
-    the amount of time it takes for web sites to load.</li>
-</ul>
-
-<h2 id="keyboard_shortcuts">Keyboard Shortcuts</h2>
-<p>You will notice that Microsoft Internet Explorer and &brandShortName; share many of
-  the same shortcut keys. For a full list of shortcut keys, see the
-  <a href="shortcuts.xhtml">List of &brandShortName; Keyboard Shortcuts</a>.</p>
-
-<div class="contentsBox"><em>10 December 2004</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/glossary.xhtml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]
->
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Glossary</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<p>This glossary is provided for your information only; it is not meant to be relied
-  upon as a complete or authoritative description of the terms defined below or of
-  the privacy and/or security ramifications of the technologies described.</p>
-<hr/>
-
-<h1 id="glossary">Glossary</h1>
-
-<dl>
-
-<dt id="authentication">authentication</dt>
-<dd>The use of a password, certificate, personal identification number
-  (PIN), or other information to validate an identity over a computer
-  network.</dd>
-
-<dt id="bookmark">bookmark</dt>
-<dd>A stored web page address (<a href="#Uniform_Resource_Locator">URL</a>)
-  that you can go to easily by clicking a bookmark icon in the Bookmarks Toolbar
-  or choosing the bookmark's name from the Bookmarks menu.</dd>
-
-<dt id="Bookmarks_Toolbar">Bookmarks Toolbar</dt>
-<dd>The customizable toolbar that appears just below the Location Bar by
-  default in &brandShortName;. It contains buttons for your favorite bookmarks
-  (or folders containing groups of bookmarks) that you can add or remove.</dd>
-
-<dt id="cache">cache</dt>
-<dd>A collection of web page copies stored on your computer's hard disk or in
-  its random-access memory (RAM). &brandShortName; accumulates these copies as you
-  browse the Web. When you click a link or type a
-  <a href="#Uniform_Resource_Locator">URL</a> to fetch a particular web page for
-  which the cache already contains a copy, &brandShortName; compares the cached copy
-  to the original. If there have been no changes, &brandShortName; uses the cached
-  copy rather than refetching the original, saving processing and download time.</dd>
-
-<dt id="certificate">certificate</dt>
-<dd>The digital equivalent of an ID card. A certificate specifies the name of an
-  individual, company, or other entity and certifies that a public key, which
-  is included in the certificate, belongs to that entity. When you digitally
-  sign a message or other data, the digital signature for that message is
-  created with the aid of the private key that corresponds to the public key
-  in your certificate.</dd>
-
-<dt id="client">client</dt>
-<dd>Software (such as an Internet browser) that sends requests to and receives
-  information from a <a href="#server">server</a>, which is usually running
-  on a different computer. A computer on which client software runs is also
-  described as a client.</dd>
-
-<dt id="cookie">cookie</dt>
-<dd>A small bit of information stored on your computer by some web sites. When
-  you visit such a site, the site asks &brandShortName; to place one or more cookies
-  on your hard disk. Later, when you return to the site, &brandShortName; sends the
-  site the cookies that belong to it. Cookies help web sites keep track of
-  information about you, such as the contents of your shopping cart. You can set
-  your cookies options to control how cookies are used and how much information
-  you are willing to let web sites store on them.</dd>
-
-<dt id="cryptography">cryptography</dt>
-<dd>The art and practice of scrambling (encrypting) and unscrambling (decrypting)
-  information. For example, cryptographic techniques are used to scramble and unscramble
-  information flowing between commercial web sites and &brandShortName;.</dd>
-
-<dt id="decryption">decryption</dt>
-<dd>The process of unscrambling data that has been encrypted. See also
-  <a href="#encryption">encryption</a>.</dd>
-
-<dt id="digital_ID">digital ID</dt>
-<dd>See <a href="#certificate">certificate</a>.</dd>
-
-<dt id="encryption">encryption</dt>
-<dd>The process of scrambling information in a way that disguises its meaning.
-  For example, encrypted connections between computers make it very difficult
-  for third-parties to unscramble, or <em>decrypt,</em> information flowing
-  over the connection. Encrypted information can be decrypted only by someone
-  who possesses the appropriate key.</dd>
-
-<dt id="XML">Extensible Markup Language (XML)</dt>
-<dd>An open standard for describing data. Unlike HTML, XML allows the
-  developer of a web page to define special tags. For more information,
-  see the online W3C document <a href="http://www.w3.org/XML/">Extensible
-  Markup Language (XML)</a>.</dd>
-
-<dt id="feed">feed</dt>
-<dd>An <a href="#XML">XML</a> web page that contains a list of links to
-  other web pages.  Special programs can read feeds to create a list
-  of headlines from the links, automatically updating the list as it changes.
-  News web sites use feeds to quickly publish the latest headlines, and
-  personal online journals often use feeds to quickly notify visitors about
-  new entries.  See also <a href="#live_bookmark">Live Bookmark</a>.</dd>
-
-<dt id="File_Transfer_Protocol">File Transfer Protocol (FTP)</dt>
-<dd>A standard that allows users to transfer files from one computer to
-  another over a network. You can use &brandShortName; to fetch files
-  using FTP.</dd>
-
-<dt id="FIPS_PUBS_140-1">FIPS PUBS 140-1</dt>
-<dd>Federal Information Processing Standards Publications (FIPS PUBS) 140-1 is
-  a US government standard for implementations of cryptographic modules &mdash;
-  hardware or software that encrypts and decrypts data or performs other
-  cryptographic operations (such as creating or verifying digital signatures).
-  Many products sold to the US government must comply with one or more of the
-  FIPS standards.</dd>
-
-<dt id="home_page">home page</dt>
-<dd>The page &brandShortName; is set to display every time you launch it or when you
-  click the <em>Home</em> button. Also used to refer to the main page for a
-  web site from which you can explore the rest of the site.</dd>
-
-<dt id="Hypertext_Markup_Language">Hypertext Markup Language (HTML)</dt>
-<dd>The document format used for web pages. The HTML standard defines tags, or
-  codes, used to define the text layout, fonts, style, images, and other
-  elements that make up a web page.</dd>
-
-<dt id="Internet">Internet</dt>
-<dd>A worldwide network of millions of computers that communicate with each
-  other using standard protocols such as
-  <a href="#TCP_IP">TCP/IP</a>.
-  Originally developed for the US military in 1969, the Internet grew to include
-  educational and research institutions and, in the late 1990s, millions of
-  businesses, organizations, and individuals. Today the Internet is used for email,
-  browsing the <a href="#World_Wide_Web">World Wide Web</a>, instant messaging,
-  mailing lists and usegroups, and many other purposes.</dd>
-
-<dt id="Internet_protocol_address">Internet protocol address (IP address)</dt>
-<dd>The address of a computer on a
-  <a href="#TCP_IP">TCP/IP</a> network.
-  Every computer on the Internet has an IP address. <a href="#client">Clients</a>
-  have either a permanent IP address or one that is dynamically assigned to them
-  each time they connect with the network.</dd>
-
-<dt id="Java">Java</dt>
-<dd>A programming language developed by Sun Microsystems. A single Java program
-  can run on many different kinds of computers, thus avoiding the need for
-  programmers to create a separate version of each program for each kind of
-  computer. After Java is installed, &brandShortName; can automatically download
-  and run Java programs (also called applets).</dd>
-
-<dt id="JavaScript">JavaScript</dt>
-<dd>A scripting language commonly used to construct web pages. Programmers use
-  JavaScript to make web pages more interactive; JavaScript is often used to
-  dynamically validate forms and select buttons. JavaScript can be used with
-  Java, but it is technically a separate language. Java is not required for
-  JavaScript to work correctly.</dd>
-
-<dt id="live_bookmark">Live Bookmark</dt>
-<dd>A special type of bookmark that acts as a folder to contain the links in a
-  <a href="#feed">feed</a>.  You can create a Live Bookmark by visiting a site
-  with a feed, clicking on the Live Bookmark icon in the Location Bar, and
-  selecting the feed you wish to use.</dd>
-
-<dt id="location_bar">Location Bar</dt>
-<dd>The field (and associated buttons) near the top of a &brandShortName; window
-  where you can type a <a href="#Uniform_Resource_Locator">URL</a> or search terms.</dd>
-
-<dt id="master_password">master password</dt>
-<dd>A password used to protect saved passwords and other private data.
-  &brandShortName; will prompt you for your master password when you wish to
-  access this data. If you have multiple security devices, each security device
-  will require a separate master password.</dd>
-
-<dt id="navigation_toolbar">Navigation Toolbar</dt>
-<dd>The toolbar near the top of the &brandShortName; window that includes
-  the <em>Back</em> and <em>Forward</em> buttons.</dd>
-
-<dt id="Password_Manager">Password Manager</dt>
-<dd>The part of &brandShortName; that can help you remember some or all of
-  your names and passwords by storing them on your computer's hard disk and
-  entering them for you automatically when you visit such sites.</dd>
-
-<dt id="PKCS_11">PKCS #11</dt>
-<dd>The public-key cryptography standard that governs security devices such
-  as smart cards.</dd>
-
-<dt id="Plugin">Plugin</dt>
-<dd>Plugins add new capabilities to &brandShortName;, such as the ability to
-  play audio or video clips. Unlike other kinds of helper applications, a Plugin
-  installs itself into the Plugins directory within the main
-  &brandShortName; installation directory and typically can be opened within
-  &brandShortName; itself (internally). For example, an audio Plugin lets you
-  listen to audio files on a web page or in an e-mail message. Macromedia
-  Flash Player and Java are both examples of Plugin applications.</dd>
-
-<dt id="private_key">private key</dt>
-<dd>One of a pair of keys used in public-key cryptography. The private key is 
-kept secret and is used to decrypt data that has been encrypted with the 
-corresponding public key.</dd>
-
-<dt id="proxy">proxy</dt>
-<dd>An intermediary or &quot;go-between&quot; program that acts as both a
-  <a href="#server">server</a> and a <a href="#client">client</a> for
-  the purpose of making requests on behalf of other clients.</dd>
-
-<dt id="search_engine">search engine</dt>
-<dd>A web-based program that allows users to search for and retrieve
-  specific information from the World Wide Web. The search engine may
-  search the full text of web documents or a list of keywords; it may
-  also use librarians who review web documents and index them manually
-  for retrieval. Typically, the user types a word or phrase into a
-  search box, and the search engine displays links to relevant web
-  pages.</dd>
-
-<dt id="secure_site">secure site</dt>
-<dd>A site that uses <a href="#encryption">encryption</a> in connections
-  with &brandShortName; to prevent other malicious Internet users from
-  viewing transmitted data.  When you visit secure sites, &brandShortName;
-  displays a lock icon in the <a href="#Status_Bar">Status Bar</a> and the
-  <a href="#location_bar">Location Bar</a>.  &brandShortName; also
-  displays the site's domain name in the Status Bar (to prevent malicious
-  sites from stealing your data) and turns the background of the Location
-  Bar to yellow.</dd>
-<dd>Some sites may consist of both secure and insecure data; the insecure data
-  usually is non-private, although it isn't guaranteed to be so.  For such
-  sites &brandShortName; will display a lock icon with a slash through it in
-  the Status Bar and Location Bar and will <em>not</em> display the site's
-  domain name in the Status Bar so that you know that the current web page
-  isn't completely secure.</dd>
-
-<dt id="SSL">Secure Sockets Layer (SSL)</dt>
-<dd>A protocol that allows mutual authentication between a
-  <a href="#client">client</a> and a <a href="#server">server</a>
-  for the purpose of establishing an authenticated and encrypted
-  connection. SSL runs above TCP/IP and below HTTP, LDAP, IMAP, NNTP,
-  and other high-level network protocols. The new Internet Engineering
-  Task Force (IETF) standard called Transport Layer Security (TLS) is
-  based on SSL. See also <a href="#authentication">authentication</a>,
-  <a href="#encryption">encryption</a>.</dd>
-
-<dt id="server">server</dt>
-<dd>Software (such as software that serves up web pages) that receives
-  requests from and sends information to a <a href="#client">client</a>,
-  which is usually running on a different computer. A computer on which
-  server software runs is also described as a server.</dd>
-
-<dt id="Status_Bar">Status Bar</dt>
-<dd>The toolbar that appears at the bottom of any &brandShortName; window. It
-  shows status icons on the right.</dd>
-
-<dt id="TLS">TLS</dt>
-<dd>See <a href="#SSL">Secure Sockets Layer (SSL)</a>.</dd>
-
-<dt id="TCP_IP">Transmission Control Protocol/Internet Protocol (TCP/IP)</dt>
-<dd>A Unix protocol used to connect computers running a variety of operating systems.
-  TCP/IP is an essential Internet protocol and has become a global standard.</dd>
-
-<dt id="Uniform_Resource_Locator">Uniform Resource Locator (URL)</dt>
-<dd>The standardized address that tells &brandShortName; how to locate a file or
-  other resource on the Web (for example, <tt>http://www.mozilla.org</tt>).
-  Type URLs into &brandShortName;'s Location Bar to access web pages. URLs
-  are also used in the links on web pages go to other web pages. Also known
-  as an Internet or Web address.</dd>
-
-<dt id="web_page">web page</dt>
-<dd>A single document on the World Wide Web that is specified by a unique
-  address or URL.  A web page may contain text, hyperlinks, and graphics.</dd>
-
-<dt id="web_site">web site</dt>
-<dd>A group of related web pages linked by hyperlinks and managed by a single
-  company, organization, or individual. A web site may include text, graphics,
-  audio and video files, and links to other web sites.</dd>
-
-<dt id="World_Wide_Web">World Wide Web</dt>
-<dd>Also known as the Web. A portion of the Internet that is made up of web
-  pages stored by web <a href="#server">servers</a> and displayed by
-  <a href="#client">clients</a> called web browsers (such as
-  &brandShortName;).</dd>
-
-</dl>
-
-<p>
-[&nbsp;<a href="#glossary">Return to beginning of Glossary</a>&nbsp;]
-</p>
-
-<div class="contentsBox"><em>07 April 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/menu_reference.xhtml
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  R.J. Keller <rlk@trfenv.com>
-  Jeff Walden <jwalden+code@mit.edu>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Menu Reference</title>
-  <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; Menu Reference</h1>
-  <p>This menu reference describes each menu item in the main
-    &brandFullName; window.</p>
-
-  <div class="contentsBox">In this section:
-    <ul>
-      <li class="mac"><a href="#firefox">&brandShortName;</a></li>
-      <li><a href="#file">File</a></li>
-      <li><a href="#edit">Edit</a></li>
-      <li><a href="#view">View</a></li>
-      <li><a href="#go">History</a></li>
-      <li><a href="#bookmarks">Bookmarks</a></li>
-      <li><a href="#tools">Tools</a></li>
-      <li class="mac"><a href="#window">Window</a></li>
-      <li><a href="#help">Help</a></li>
-    </ul>
-  </div>
-
-<div class="mac">
-  <h2 id="firefox">&brandShortName;</h2>
-    <h3 id="about_mac">About &brandFullName;</h3>
-    <p>Displays a dialog box with information about &brandShortName;, including
-      the current version and a brief list of credits.</p>
-
-    <h3 id="prefs_mac">Preferences…</h3>
-    <p>Displays the <a href="prefs.xhtml">&pref.pluralCaps; window</a>,
-      where you can change many &pref.plural; in &brandShortName;.</p>
-
-    <h3 id="quit_mac">Quit &brandShortName;</h3>
-    <p>Closes all &brandShortName; windows, cancels any active downloads, and exits
-      &brandShortName; completely. If you happen to select this menu item with
-      more than one tab or window open, &brandShortName; will ask you to confirm
-      your choice to prevent accidental exits. You can switch off this warning
-      by deselecting the <em>Warn me when closing multiple tabs</em> checkbox in
-      the <em>Tabs</em> panel of &pref.menuPath;. &brandShortName; will also
-      warn you if you are currently downloading any files.</p>
-</div>
-
-<h2 id="file">File</h2>
-
-  <h3 id="new_window">New Window</h3>
-  <p>Opens a new &brandShortName; window.</p>
-
-  <h3 id="new_tab">New Tab</h3>
-  <p>Opens a new browser tab in the current &brandShortName; window.</p>
-
-  <h3 id="open_location">Open Location…</h3>
-  <p>Focuses on the &brandShortName; URL bar so you can type in a new location to
-    visit.</p>
-
-  <h3 id="open_file">Open File…</h3>
-  <p>Displays an Open File dialog where you can select a file from your
-    local disks or network. You can view many file types in &brandShortName;,
-    including HTML/XML files, image files, text files and more.</p>
-
-  <h3 id="close">Close (Window)</h3>
-  <p>Closes the current window.</p>
-
-  <h3 id="close_tab">Close Tab</h3>
-  <p>Closes the current tab and selects the rightmost tab. This menu item is
-    visible only if more than one browser tab is currently open.</p>
-
-  <h3 id="save_page_as">Save Page As…</h3>
-  <p>Saves the page you are currently browsing. You can choose to save the
-    whole page (complete with graphics), just the current HTML page, or the
-    page text only.</p>
-
-  <h3 id="send_page">Send Link…</h3>
-  <p>Opens an email composition window using your computer's default email program
-    so you can send a message with a link to the current page.</p>
-
-  <h3 id="page_setup">Page Setup…</h3>
-  <p>Displays a Page Setup dialog where you can specify printing settings such as
-    margins, headers and footers, and page orientation.</p>
-
-  <div class="noMac">
-    <h3 id="print_preview">Print Preview</h3>
-    <p>Displays a preview of how the current document will appear when printed. It
-      reflects the settings in the Page Setup dialog and the page author's
-      intentions.</p>
-  </div>
-
-  <h3 id="print">Print…</h3>
-  <p>Displays the Print dialog, where you can specify the number of printed copies,
-    etc. Click <em>OK</em> to print the page.</p>
-
-  <h3 id="import">Import…</h3>
-  <p>Opens the Import Wizard dialog, which allows you to import &pref.plural;, bookmarks,
-    history, passwords and other data from browsers like Microsoft Internet
-    Explorer, Netscape, Mozilla or Opera.</p>
-
-  <h3 id="work_offline">Work Offline</h3>
-  <p>Toggles between online and offline mode. Offline mode allows you to view
-    web pages you've previously visited without being connected to the
-    Internet.</p>
-
-<div class="noMac">
-  <h3 id="exit">
-    <span class="win">Exit</span>
-    <span class="noWin">Quit</span>
-  </h3>
-  <p>Closes all &brandShortName; windows, cancels any active downloads, and exits
-    &brandShortName; completely. If you happen to select this menu item with
-    more than one tab or window open, &brandShortName; will ask you to confirm
-    your choice to prevent accidental exits. You can switch off this warning
-    by deselecting the <em>Warn me when closing multiple tabs</em> checkbox in
-    the <em>Tabs</em> panel of &pref.menuPath;. &brandShortName; will also
-    warn you if you are currently downloading any files.</p>
-</div>
-
-<h2 id="edit">Edit</h2>
-
-  <h3 id="undo">Undo</h3>
-  <p>Undoes the last action in a text field. If you later decide you don't want to
-    undo an action, use the Redo command.</p>
-
-  <h3 id="redo">Redo</h3>
-  <p>Redoes the last Undo command.</p>
-
-  <h3 id="cut">Cut</h3>
-  <p>Cuts the selected text from a text field and stores it in the clipboard. Paste
-    the text elsewhere by using the Paste command.</p>
-
-  <h3 id="copy">Copy</h3>
-  <p>Copies the selected text to the clipboard. Paste the text in a text field by
-    using the Paste command.</p>
-
-  <h3 id="paste">Paste</h3>
-  <p>Pastes text stored in the clipboard into a text field.</p>
-
-  <h3 id="delete">Delete</h3>
-  <p>Deletes the selected text from a text field.</p>
-
-  <h3 id="select_all">Select All</h3>
-  <p>Selects all text and other items on the page.</p>
-
-  <h3 id="find_in_this_page">Find in This Page…</h3>
-  <p>Displays the Find Toolbar at the bottom of the browser window.  Enter the
-    text you wish to find in the toolbar, and as you type &brandShortName; will
-    automatically find and select the first occurrence of the entered text on
-    the page.  Click <em>Find Next</em> or <em>Find Previous</em> to find the
-    text at other locations in the page, and click <em>Highlight</em> to
-    highlight all occurrences of the text on the page.</p>
-
-  <h3 id="find_again">Find Again</h3>
-  <p>Searches for the next occurrence of the text specified when using the
-  <em>Find in This Page…</em> command.</p>
-
-  <h3 class="unix" id="prefs">&pref.pluralCaps;</h3>
-  <p class="unix">Displays the <a href="prefs.xhtml">&pref.pluralCaps; window</a>,
-    where you can change many &pref.plural; in &brandShortName;.</p>
-
-<h2 id="view">View</h2>
-
-  <h3 id="toolbars">Toolbars</h3>
-
-    <h4 id="navigation_toolbar">Navigation Toolbar</h4>
-    <p>Toggles the visibility of the navigation toolbar, which usually contains
-      standard navigation buttons (Back, Forward, Stop, etc.).</p>
-
-    <h4 id="bookmarks_toolbar">Bookmarks Toolbar</h4>
-    <p>Toggles the visibility of the bookmarks toolbar, which contains bookmarks
-      to various sites.</p>
-
-    <h4 id="customize">Customize…</h4>
-    <p>Displays the toolbar customization dialog.  You can drag and drop toolbar
-      buttons to or from the toolbars here. You can also <span
-      class="noMac">right-click</span><span class="mac">press &ctrlKey;,
-      click</span> on the navigation toolbar and select <em>Customize…</em>
-      to show this dialog.</p>
-
-  <h3 id="status_bar">Status Bar</h3>
-  <p>Toggles the visibility of the status bar, located at the bottom of the window.
-    The status bar displays useful information about the page but may not be
-    needed by everyone.</p>
-
-  <h3 id="sidebar">Sidebar</h3>
-  <p>The Sidebar can display your bookmarks or the browsing history.  You can
-    always close the Sidebar by clicking on the X in the upper-right
-    corner.</p>
-
-    <h4 id="view_sidebar_bookmarks">Bookmarks</h4>
-    <p>Displays the Bookmarks Sidebar, which keeps your bookmarks visible all
-      the time. This can be very useful if you use bookmarks often.</p>
-
-    <h4 id="view_sidebar_history">History</h4>
-    <p>Displays the History Sidebar, which keeps track of the sites you have
-      visited. To change how many days a site should be remembered, select
-      &pref.menuPath; and select the <em>Privacy</em> panel.</p>
-
-  <h3 id="stop">Stop</h3>
-  <p>Stops loading of the current page you're browsing. This is the same as
-    clicking on the <em>Stop</em> button on the toolbar.</p>
-
-  <h3 id="reload">Reload</h3>
-  <p>Gets the most up-to-date version of the current page.  This is the same
-    as clicking the <em>Reload</em> button on the toolbar.</p>
-
-  <h3 id="text_size">Text Size</h3>
-  <p>If the text on a web page is too small or too large, you can change it to
-    a more comfortable size.</p>
-
-    <h4 id="increase_text_size">Increase</h4>
-    <p>Displays the text on the web page one size larger. You can also do this
-      with the mouse (see <a href="mouse_shortcuts.xhtml">Mouse Shortcuts</a>
-      for instructions).</p>
-
-    <h4 id="decrease_text_size">Decrease</h4>
-    <p>Displays the text on the web page one size smaller. You can also do this
-      with the mouse (see <a href="mouse_shortcuts.xhtml">Mouse Shortcuts</a>
-      for instructions).</p>
-
-    <h4 id="reset_text_size">Normal</h4>
-    <p>Displays the text on the web page at its normal size.</p>
-
-  <h3 id="page_style">Page Style</h3>
-  <p>Allows you to select a style for the current web page. By default,
-    &quot;Basic Page Style&quot; is selected unless the author specifies a
-    different default.</p>
-
-    <h4 id="no_style">No Style</h4>
-    <p>Removes style formatting from the page.</p>
-
-    <h4 id="basic_page_style">Basic Page Style</h4>
-    <p>Displays the page with a general style specified by the author.</p>
-
-    <h4 id="alternate_style"></h4>
-    <p>If the author has specified additional page styles, &brandShortName;
-     will list them here for you to select.</p>
-
-  <h3 id="character_encoding">Character Encoding</h3>
-  <p>Allows you to manually change the character encoding on a web page.
-    &brandShortName; usually does this automatically.</p>
-
-  <h3 id="page_source">Page Source</h3>
-  <p>Displays the source code for the current document. <!--A future version of
-    &brandShortName; will be capable of launching an external program for
-    viewing the source.--></p>
-
-  <div class="noMac">
-    <h3 id="full_screen">Full Screen</h3>
-    <p>Displays the window in full screen. If you have the navigation toolbar
-      hidden, you can always restore the window anyway by pressing
-      <kbd>F11</kbd>.</p>
-  </div>
-<h2 id="go">History</h2>
-
-  <p>The History menu contains a list of the most recently visited web sites and
-    closed tabs.</p>
-
-  <h3 id="back">Back</h3>
-  <p>Navigates back one page in history. This is the same as clicking on the
-    <em>Back</em> button on the toolbar.</p>
-
-  <h3 id="forward">Forward</h3>
-  <p>Navigates forward one page in history. This is the same as clicking on
-    the <em>Forward</em> button on the toolbar.</p>
-
-  <h3 id="home">Home</h3>
-  <p>Displays your home page. This is the same as clicking on the
-    <em>Home</em> button on the navigation toolbar. To change the home page,
-    select &pref.menuPath; and open the <em>Main</em> panel.  You
-    can specify to use a blank page, the current page (or tab group), a
-    bookmark, or a manually entered address.</p>
-
-  <h3 id="closed_tabs">Recently Closed Tabs</h3>
-  <p>Allows you to restore a tab you closed recently in the current window by
-    selecting it from the list. See the <a href=
-    "tabbed_browsing.xhtml#closing_tabs">Closing and Restoring Tabs</a> topic
-    for more information.</p>
-
-  <h3 id="go_history">Show in Sidebar</h3>
-  <p>Displays the History Sidebar, which keeps track of the sites you have
-    visited. To change how many days a site should be remembered, select
-    &pref.menuPath; and select the <em>Privacy</em> panel.</p>
-
-<h2 id="bookmarks">Bookmarks</h2>
-
-  <p>This menu contains all your stored bookmarks.</p>
-
-  <h3 id="add_to_bookmarks">Bookmark This Page</h3>
-  <p>Adds the current page to your bookmarks. A dialog will be displayed,
-    allowing you to choose a title for the bookmark and specify where you
-    want it to be stored.</p>
-
-  <h3 id="subscribe">Subscribe to This Page…</h3>
-  <p>Shows a preview of the <a href="glossary.xhtml#feed">feed</a> offered by
-    the current site. From the preview page, you can subscribe to the feed using
-    a <a href="glossary.xhtml#live_bookmark">Live Bookmark</a>, a feed reader
-    on your computer, or a web service. If you have chosen to always subscribe
-    using a Live Bookmark or a feed reader in the
-    <a href="prefs.xhtml#applications_options">Applications panel</a> of
-    &pref.menuPath;, the preview page will be skipped.</p>
-
-  <h3 id="bookmark_all_tabs">Bookmark All Tabs…</h3>
-  <p>Adds all the tabs in the current window to a new bookmark folder. A dialog
-    will be displayed, allowing you to choose the name of the folder and specify
-    where you want it to be stored.</p>
-
-  <h3 id="organize_bookmarks">Organize Bookmarks…</h3>
-  <p>Displays the Bookmarks Manager, a window where you can modify your
-    bookmarks. You can sort, rename and change the properties for your
-    bookmarks as well as add, remove, and move them.</p>
-
-<h2 id="tools">Tools</h2>
-
-  <h3 id="web_search">Web Search</h3>
-  <p>Highlights the Web Search box. You can then type in the terms you
-    wish to find on the Web.</p>
-
-  <h3 id="downloads">Downloads</h3>
-  <p>Opens the Download Manager, where you can see the current, as well as
-    finished downloads.</p>
-
-  <h3 id="add_ons">Add-ons</h3>
-  <p>Opens the Add-ons manager, where you can view, install, configure, update,
-    and uninstall your extensions and themes. For more information, see the
-    <a href="customization.xhtml#add_ons">Add-ons</a> help topic.</p>
-
-  <h3 id="javascript_console">Error Console</h3>
-  <p>Opens the Error Console, which tracks problems with JavaScript code.
-    JavaScript is a scripting language commonly used to construct web pages.
-    Programmers use JavaScript to make web pages more interactive; JavaScript
-    is often used to dynamically validate forms and select buttons.</p>
-
-  <h3 id="page_info">Page Info</h3>
-  <p>Displays extensive information about the current web page, such as the
-    document type, encoding, size, and security information.  The dialog also
-    displays lists of the media and links used on the page.</p>
-
-  <h3 id="clear_private_data">Clear Private Data…</h3>
-  <p>Clears the items which are selected in the Clear Private Data dialog in
-    the <em>Privacy</em> panel of &pref.menuPath;.
-    Displays a confirmation dialog by default.</p>
-
-  <h3 class="win" id="options">&pref.pluralCaps;</h3>
-  <p class="win">Displays the <a href="prefs.xhtml">&pref.pluralCaps; window</a>,
-    where you can change many &pref.plural; in &brandShortName;.</p>
-
-<div class="mac">
-  <h2 id="window">Window</h2>
-
-    <h3 id="minimize">Minimize</h3>
-    <p>Minimizes the current window.</p>
-
-    <h3 id="zoom">Zoom</h3>
-    <p>Enlarges or restores the current window.</p>
-
-    <h3 id="open-windows">(Open Windows)</h3>
-    <p>Displays all the open windows by their title.</p>
-</div>
-
-<h2 id="help">Help</h2>
-
-  <h3 id="help_contents">
-    <span class="noMac">Help Contents</span>
-    <span class="mac">&brandShortName; Help</span>
-  </h3>
-  <p>Opens the &brandShortName; Help window, which contains useful information
-    that can help you browse the web.</p>
-
-  <div class="win">
-    <h3 id="for_ie_users">For Internet Explorer Users</h3>
-    <p>Opens this Help window displaying information that can
-      help Internet Explorer users transition to &brandShortName;.</p>
-  </div>
-
-  <h3 id="relnotes">Release Notes</h3>
-  <p>Provides information about installing, uninstalling and configuring
-    &brandShortName;, as well as other important information and late-breaking
-    notices. Requires an active Internet connection.</p>
-
-  <h3 id="reporter">Report Broken Web Site…</h3>
-  <p>Allows you to report web sites that do not work correctly in
-    &brandShortName; to the &brandShortName; developers.</p>
-
-  <h3 id="web_forgery">Report Web Forgery… / This isn't a web forgery…</h3>
-  <p><em>Report Web Forgery…</em> allows you to report what you believe are
-    forged or "phishing" sites. Phishing sites pretend to be sites you trust,
-    like your bank or online shopping or auction sites, to trick you into
-    submitting sensitive information (username/password, credit card information,
-    etc.) to them.</p>
-
-  <p>When displaying sites suspected for "phishing", the menu item is replaced
-    by <em>"This isn't a web forgery…"</em>, letting you report legitimate
-    sites which have been incorrectly marked as "phishing" sites.</p>
-
-  <p>Phishing Protection in &brandShortName; is powered by Google, and the
-    information you submit will be sent to Google and used to improve this
-    feature. Your report will be anonymous in accordance with Google's privacy
-    policy. Requires an active Internet connection.</p>
-
-  <h3 id="check_for_updates">Check for Updates…</h3>
-  <p>Displays a dialog which checks for updates to &brandShortName; and asks
-    you whether you want to download updates if any are available. After an
-    update has been downloaded, the dialog asks you to restart &brandShortName;
-    so that the update can be installed. Note that the name of this menu item
-    will change when an update is being downloaded or is ready to be installed.</p>
-
-  <div class="noMac">
-    <h3 id="about_mozilla_firebird">About &brandFullName;</h3>
-    <p>Displays a dialog box with information about &brandShortName;, including
-      the current version and a brief list of credits.</p>
-  </div>
-
-<div class="contentsBox"><em>29 September 2007</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/mouse_shortcuts.xhtml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Mouse Shortcuts</title>
-  <link rel="stylesheet" type="text/css"
-    href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; Mouse Shortcuts</h1>
-
-<p class="noMargin">This is a list of the most common mouse shortcuts in
-  &brandFullName;.</p>
-
-<table border="1">
-  <thead>
-    <tr>
-      <th>Command</th>
-      <th>Shortcut</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <td>Back</td>
-      <td>
-        <span class="mac">&altKey;+Scroll Down</span>
-        <span class="noMac">&shiftKey;+Scroll Down</span>
-      </td>
-    </tr>
-    <tr>
-      <td>Close Tab</td>
-      <td>Middle-click on Tab</td>
-    </tr>
-    <tr>
-      <td>Decrease Text Size</td>
-      <td>&ctrlKey;+Scroll up</td>
-    </tr>
-    <tr>
-      <td>Forward</td>
-      <td>
-        <span class="mac">&altKey;+Scroll up</span>
-        <span class="noMac">&shiftKey;+Scroll up</span>
-      </td>
-    </tr>
-    <tr>
-      <td>Increase Text Size</td>
-      <td>&ctrlKey;+Scroll down</td>
-    </tr>
-    <tr>
-      <td>New Tab</td>
-      <td>Double-Click on Tab Bar</td>
-    </tr>
-    <tr>
-      <td>Open in Background Tab</td>
-      <td>&accelKey;+Left-click<br/>Middle-click</td>
-    </tr>
-    <tr>
-      <td>Open in Foreground Tab</td>
-      <td>&accelKey;+&shiftKey;+Left-click<br/>&shiftKey;+
-        Middle-click</td>
-    </tr>
-    <tr>
-      <td>Open in New Window</td>
-      <td>&shiftKey;+Left-click</td>
-    </tr>
-    <tr class="unix">
-      <td>Paste URL and Go</td>
-      <td>Middle-click on Tab</td>
-    </tr>
-    <tr>
-      <td>Reload (override cache)</td>
-      <td>&shiftKey;+Reload button</td>
-    </tr>
-    <tr>
-      <td>Save Page As</td>
-      <td>&altKey;+Left-click</td>
-    </tr>
-    <tr>
-      <td>Scroll line by line</td>
-      <td>
-        <span class="mac">&accelKey;+Scroll</span>
-        <span class="noMac">&altKey;+Scroll</span>
-      </td>
-    </tr>
-  </tbody>
-</table>
-
-<div class="contentsBox"><em>14 October 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/platformStrings.dtd
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- LOCALIZATION NOTE : This file contains platform-specific strings which
-                         occur in large numbers throughout Help docs.
-                         Generally, for these strings it's less code to store
-                         them here than to hard-code the value of the entity
-                         in every place it's used, or using an entity is less
-                         confusing than typing a string like the jumbled messes
-                         used below for "preference" and derivatives.  Feel free
-                         to add more strings here as long as you run them by the
-                         Help module owner first (to prevent excessive use of
-                         such strings when other methods are preferable). -->
-
-<!-- Options -->
-
-<!ENTITY pref.menuPath     '<span class="win menuPath">Tools &gt; Options</span><span
-                              class="unix menuPath">Edit &gt; Preferences</span><span
-                              class="mac menuPath">&brandShortName; &gt; Preferences</span>' >
-<!ENTITY pref.singular     '<span class="win">option</span><span
-                             class="noWin">preference</span>' >
-<!ENTITY pref.plural       '<span class="win">options</span><span
-                             class="noWin">preferences</span>' >
-<!ENTITY pref.singularCaps '<span class="win">Option</span><span
-                             class="noWin">Preference</span>' >
-<!ENTITY pref.pluralCaps   '<span class="win">Options</span><span
-                             class="noWin">Preferences</span>' >
-
-<!-- Keys -->
-
-<!ENTITY ctrlKey            '<kbd>Ctrl</kbd>' >
-<!ENTITY accelKey           '<kbd class="noMac">Ctrl</kbd><kbd
-                             class="mac">Cmd</kbd>' >
-<!ENTITY altKey             '<kbd class="noMac">Alt</kbd><kbd
-                             class="mac">Opt</kbd>' >
-<!ENTITY shiftKey           '<kbd>Shift</kbd>' >
-<!ENTITY enterKey           '<kbd class="noMac">Enter</kbd><kbd
-                             class="mac">Return</kbd>' >
-
-<!-- Image Location Base URL -->
-
-<!ENTITY images.baseURL     'http://www.mozilla.org/projects/firefox/help/2.0'>
-
-<!-- Copyright years -->
-
-<!ENTITY copyright.years    '2003-2008'>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/popup.xhtml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Controlling Pop-ups</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>Controlling Pop-ups</h1>
-<p>This document explains all of the &pref.plural; available in &brandFullName;
-  for controlling pop-ups.</p>
-
-<div class="contentsBox">
-  In this section:
-  <ul>
-    <li><a href="#what_are_popups">What are Pop-ups?</a></li>
-    <li><a href="#popup_blocker_preferences">Pop-up Blocker &pref.pluralCaps;</a></li>
-  </ul>
-</div>
-
-<h2 id="what_are_popups">What are Pop-ups?</h2>
-<p>Pop-up windows, or pop-ups, are windows that appear automatically without your
-permission. They vary in size but usually don't cover the whole screen. Some pop-ups
-open on top of the current &brandShortName; window, while others appear
-underneath &brandShortName; (pop-unders).</p>
-
-<p>&brandShortName; allows you to control both pop-ups and popunders through the
-<a href="prefs.xhtml#content_options">Content panel</a> in &pref.pluralCaps;.
-Pop-up blocking is turned on by default, so you don't have to worry about enabling it
-to prevent pop-ups from appearing in &brandShortName;.</p>
-
-<p>When blocking a pop-up, &brandShortName; displays an information bar, as well
-as an icon <img src="chrome://browser/skin/Info.png" width="16" height="16"
-alt=""/> in the status bar. When you click either the <em>&pref.pluralCaps;</em>
-button in the information bar or the icon in the status bar, a menu is displayed
-with the following choices:</p>
-
-<ul>
-  <li>Allow/Block pop-ups for this site</li>
-  <li>Edit <a href="#popup_blocker_preferences">Pop-up Blocker
-    &pref.pluralCaps;…</a></li>
-  <li>Don't show this message (info message) when pop-ups are blocked</li>
-  <li>(show a blocked pop-up)</li>
-</ul>
-
-<p><strong>Blocking pop-ups may interfere with some web sites</strong>: Some web sites,
-including some banking sites, use pop-ups for important features. Blocking all pop-ups
-disables such features. To allow specific web sites to use pop-ups, while blocking
-all others, you can add specific web sites to the list of allowed sites.</p>
-
-<p><strong>Blocking pop-ups doesn't always work</strong>: Although &brandShortName; blocks most
-pop-ups, some web sites may show pop-ups using uncovered methods, even when blocked.</p>
-
-<h2 id="popup_blocker_preferences">Pop-up Blocker &pref.pluralCaps;</h2>
-
-<p>The Pop-up Blocker &pref.pluralCaps; are located in the <a
-  href="prefs.xhtml#content_options">Content panel</a> of &pref.menuPath;.</p>
-
-<p>From there, you can do the following things:</p>
-
-<ul>
-  <li><strong>Block pop-up windows</strong>: Deselect this &pref.singular; to
-    disable the pop-up blocker altogether.</li>
-  <li><strong>Exceptions dialog</strong>: This is a list of sites that you want to allow
-    to display pop-ups. The dialog has the following choices:
-  <ul>
-    <li><strong>Allow</strong>: Click this to add a web site to the exceptions list.</li>
-    <li><strong>Remove Site</strong>: Click this to remove a web site from the exceptions list.</li>
-    <li><strong>Remove All Sites</strong>: Click this to remove all of the web sites in
-      the exceptions list.</li>
-  </ul>
-  </li>
-</ul>
-
-<p><strong>Note</strong>: Blocking pop-ups may not always work and may interfere with
-some web sites. For more information about blocking pop-ups, see
-<a href="#what_are_popups">What are Pop-ups</a>.</p>
-
-<div class="contentsBox"><em>12 September 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/prefs.xhtml
+++ /dev/null
@@ -1,697 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <tenser@comhem.se> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
-  Ryan Flint <rflint@dslr.net>
-  Jeff Walden <jwalden+code@mit.edu>
-  Myk Melez <myk@mozilla.org>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Options</title>
-  <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; &pref.pluralCaps;</h1>
-<p>This document explains all of the &pref.plural; available in the
-  &pref.pluralCaps; window of &brandFullName;.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#main_options">Main &pref.pluralCaps;</a></li>
-    <li><a href="#tabs_options">Tabs &pref.pluralCaps;</a></li>
-    <li><a href="#content_options">Content &pref.pluralCaps;</a></li>
-    <li><a href="#applications_options">Applications &pref.pluralCaps;</a></li>
-    <li><a href="#privacy_options">Privacy &pref.pluralCaps;</a></li>
-    <li><a href="#security_options">Security &pref.pluralCaps;</a></li>
-    <li><a href="#advanced_options">Advanced &pref.pluralCaps;</a></li>
-  </ul>
-</div>
-
-<h2 id="main_options">Main &pref.pluralCaps;</h2>
-
-  <h3 id="startup">Startup</h3>
-  <p>When you open &brandShortName;, by default your <a
-    href="glossary.xhtml#home_page">home page</a> is displayed.  Your home page
-    might be a commonly-visited web site, a search engine, or perhaps your email
-    account, but the choice is up to you.  You can change your home page or
-    choose to display a different page or set of pages on startup in this
-    section.</p>
-    
-  <p><em>When &brandShortName; starts</em><br/>
-    By default, when &brandShortName; starts it opens your home page (listed in
-    the textbox immediately below), which corresponds to the <em>Show my home
-    page</em> option.  Alternately, you can choose to display a blank page on
-    startup (perhaps to eliminate the time required to load that page from the
-    Internet) by selecting the <em>Show a blank page</em> option.</p>
-
-  <p>As a final alternative, you can have &brandShortName; reopen the windows and
-    tabs you had open the last time you ran &brandShortName;, effectively
-    restoring you to where you were when you last stopped browsing the Internet.
-    This can be a handy way of saving what you were doing when you close
-    &brandShortName;, perhaps to install an operating system update.  You can
-    choose this option by selecting <em>Show my windows and tabs from last
-    time</em>.</p>
-
-  <p><em>Home Page</em><br/>
-    If you've set &brandShortName; to show your home page when you start
-    &brandShortName;, you specify your home page by typing it here.  You can
-    also click any of the buttons below the textbox to choose a special home
-    page:</p>
-
-  <ul>
-    <li><em>Use Current Page</em> sets the currently-displayed page (or pages,
-      if you have multiple tabs open) as your home page</li>
-    <li><em>Use Bookmark</em> sets the selected bookmark (or if you select a
-      folder, the set of bookmarks in that folder) as your home page</li>
-    <li><em>Restore to Default</em> resets your home page to the default home
-      page</li>
-  </ul>
-
-  <h3 id="downloads">Downloads</h3>
-  <p>This section contains &pref.plural; determining how &brandShortName;
-    downloads files.</p>
-    
-  <p><em>Show the Downloads window when downloading a file</em><br/>
-    With this &pref.singular; selected, &brandShortName; will open the <a
-    href="download_manager.xhtml">Downloads window</a> when you start
-    downloading a file.</p>
-    
-  <p><em>Close it when all downloads are finished</em><br/>
-    Select this &pref.singular; to have &brandShortName; close the Downloads
-    window when all downloads currently in progress finish.</p>
-      
-  <p><em id="download_folder">Save files to</em><br/>
-    By default downloaded files are automatically saved to the Desktop,
-    eliminating the hassle of specifying a download location for every file you
-    download.  You can choose a different folder by clicking the <em><span
-    class="noMac">Browse…</span><span class="mac">Choose…</span></em>
-    button.</p>
-      
-  <p><em>Always ask me where to save files</em><br/>
-    With this &pref.singular; selected, &brandShortName; will ask you where
-    you would like to save every downloaded file (instead of using the default
-    location specified above).</p>
-  
-  <h3 id="system_defaults">System Defaults</h3>
-  <p><em>Always check to see if &brandShortName; is the default browser on
-    startup</em><br/>
-    Select this option if you want &brandShortName; to check whether it is the
-    default browser at startup.  This will ensure &brandShortName; is used
-    whenever an application tries to display a web page.  You can also click the
-    <em>Check Now</em> button to do a check right now.</p>
-
-  <h3 id="addons">Add-ons</h3>
-  <p><em>Manage Add-ons</em><br/>
-    To install or uninstall, update or configure add-ons, click the <em>Manage
-    Add-ons</em> button to open the Add-ons manager. This is also accessible
-    from <span class="menuPath">Tools &gt; Add-ons</span>. A detailed
-    description of add-ons and the Add-on manager is available <a href=
-    "customization.xhtml#add_ons">here</a>.</p>
-
-<h2 id="tabs_options">Tabs &pref.pluralCaps;</h2>
-<p><em>New pages should be opened in:</em><br/>
-  This &pref.singular; controls whether links from other applications or from
-  web pages which request to open them in new windows are opened in <em>a new
-  window</em> or <em>a new tab</em> in the most recent window.</p>
-
-<p><strong>Note:</strong> If you have chosen to open pages in new tabs,
-  &brandShortName; will ignore this &pref.singular; and will open a new window
-  from a link if the page author specified that the new window should have a
-  specific size, because some pages can only be displayed correctly at a
-  specific size.</p>
-  
-<p><em>Warn me when closing multiple tabs</em><br/>
-  When you close a window with multiple tabs, &brandShortName; will ask you
-  to confirm your choice. This prevents you from accidentally closing the
-  whole window when you intended to only close the current tab. Uncheck this
-  &pref.singular; to disable this warning and have &brandShortName;
-  automatically close the window.</p>
-
-<p><em>Warn me when opening multiple tabs might slow down
-  &brandShortName;</em><br/>
-  When you open a large number of tabs at once, &brandShortName; will ask you
-  to confirm your choice. This prevents you from accidentally slowing down
-  your system while the pages are loading.  Uncheck this &pref.singular; to
-  disable this warning.</p>
-  
-<p><em>Always show the tab bar</em><br/>
-  If you're only viewing one web page in a &brandShortName; window, the tab
-  bar is not normally shown. Check this &pref.singular; to always show the tab
-  bar, including when only the &brandShortName; window contains only one
-  page.</p>
-
-<p><em>When I open a link in a new tab, switch to it immediately</em><br/>
-  When you middle-click on a Web link (or hold down &accelKey; while clicking
-  with the left mouse button), the page will be opened in a new tab. That page
-  will not be displayed and will load in a background tab. Check this
-  &pref.singular; to load and display the page in a new foreground tab
-  instead.</p>
-
-
-<h2 id="content_options">Content &pref.pluralCaps;</h2>
-<p><em>Block Pop-up Windows</em><br/>
-  By default, &brandShortName; blocks annoying pop-up windows on web sites.
-  Unchecking this &pref.singular; will disable pop-up blocking.</p>
-
-<p>Some web sites make legitimate use of pop-up windows. Therefore, you can
-  allow these sites to open pop-ups anyway. To do so, click
-  <em>Exceptions…</em>, enter the site name, and click <em>Allow</em>.  To
-  remove a web site from the list, select it and then click <em>Remove
-  Site</em>. To clear the list completely, click <em>Remove All Sites</em>.</p>
-
-<p><em>Load images automatically</em><br/>
-  &brandShortName; displays images in web pages by default.  Uncheck this
-  &pref.singular; to disable images in web pages.</p>
-
-<p>If you enable loading images automatically, the <em>Exceptions…</em>
-  button lets you select sites from which images will not automatically load.
-  The <em>Exceptions…</em> button lets you specify web sites that you wish
-  to load (or not load) regardless of the setting of this preference. In the
-  exceptions list, enter the site from which you want to allow or block images
-  and click <em>Allow</em> to allow images, or click <em>Block</em> to block
-  the images.</p>
-  
-<p><em>Enable JavaScript</em><br/>
-  JavaScript is a scripting language commonly used to make web pages
-  interactive.  However, it also makes certain annoying behaviors much easier to
-  perform.  To disable JavaScript, uncheck this &pref.singular;.  However, note
-  that disabling JavaScript may cause some sites to not work properly.  For more
-  fine-grained control over what JavaScript can and cannot do, click
-  <em>Advanced…</em>.</p>
-    
-  <h4 id="advanced_javascript">Advanced JavaScript Settings</h4>
-  <dl>
-    <dt>Move or resize existing windows</dt>
-    <dd>Uncheck this &pref.singular; to disable moving and resizing windows
-      using scripts.</dd>
-
-    <dt>Raise or lower windows</dt>
-    <dd>Uncheck this &pref.singular; to make sure scripts cannot raise (bring
-      to the front) or lower (send to the back) windows.</dd>
-
-    <dt>Disable or replace context menus</dt>
-    <dd>Uncheck this &pref.singular; to prevent web pages from disabling or
-      changing the &brandShortName; context menu.</dd>
-
-    <dt>Hide the status bar</dt>
-    <dd>Uncheck this &pref.singular; to force the status bar to be displayed in
-      pop-up windows.</dd>
-
-    <dt>Change status bar text</dt>
-    <dd>Uncheck this &pref.singular; to disable changes to status bar text (such
-      as displaying scrolling text messages or preventing the link address from
-      being displayed while the mouse is over a link).</dd>
-  </dl>
-    
-  <p><em>Enable Java</em><br/>
-    Java is a popular programming language for the Web.  A single Java program
-    can run on many different kinds of computers, thus avoiding the need for
-    programmers to create a separate version of a program for each kind of
-    computer.  Uncheck this &pref.singular; to disable Java applets in
-    &brandShortName;.  Note that in order for Java applets to work, you must
-    install the Java plugin.</p>
-
-  <h3 id="fonts_and_colors">Fonts &amp; Colors</h3>
-  <p><em>Default font</em> and <em>Size</em><br/>
-    Web pages are usually displayed in the font and size specified here.
-    However, web pages can override these choices unless you specify otherwise
-    in the Fonts dialog.  Click the <em>Advanced…</em> button to access the
-    Fonts dialog and to change this and other fonts &pref.plural;.</p>
-
-    <h4 id="fonts_dialog">Fonts Dialog</h4>
-    <ol>
-      <li>From the <em>Fonts for</em> drop-down list, choose a language
-        group/script.  For instance, to set default fonts for the West
-        European languages/scripts (Latin), choose <em>Western</em>. For a
-        language/script not in the list, choose <em>Other Languages</em>.</li>
-      <li>Select whether proportional text should be serif (like &quot;Times
-        New Roman&quot;) or sans-serif (like &quot;Arial&quot;). Then specify
-        the font size you want for proportional text.</li>
-      <li>Specify the font to use for Serif, Sans-serif and Monospace fonts.
-        You can also change the size for <code>Monospace fonts</code>.</li>
-    </ol>
-
-    <p>You can also set the minimum web page font size.  This is useful to
-      prevent sites from use overly small fonts that are barely readable.</p>
-
-    <p><em>Allow pages to choose their own fonts, instead of my selections
-      above</em><br/>
-      By default &brandShortName; uses the fonts specified by the web page
-      author. Disabling this &pref.singular; will force all sites to use your
-      default fonts instead.</p>
-
-    <p><em>Character Encoding</em><br/>
-      The character encoding selected here will be used to display pages that
-      do not specify which encoding to use.</p>
-
-    <h4 id="colors_dialog">Colors Dialog</h4>
-    <p><strong>Text and Background</strong><br/>
-      Here you can change the default text and background color to be used on
-      web pages that haven't specified that information. Click on the color
-      samples to select colors.</p>
-
-    <p><em>Use system colors</em><br/>
-      Check this &pref.singular; to use the colors defined in your operating
-      system settings instead of the colors specified above.</p>
-
-    <p><strong>Link Colors</strong><br/>
-      Here you can change the default colors for Web links. Click on the color
-      samples to select colors.</p>
-
-    <p><em>Underline links</em><br/>
-      By default, links are underlined on web pages. Uncheck this &pref.singular;
-      to disable this. Note that many sites specify their own styling rules
-      and this &pref.singular; has no effect on those sites.</p>
-
-    <p><em>Allow pages to choose their own colors, instead of my selections
-      above</em><br/>
-      By default, &brandShortName; uses the colors specified by the web page
-      author. Disabling this &pref.singular; will force all sites to use your
-      default colors instead.</p>
-
-  <h3 id="languages">Languages</h3>
-  <p>Some web pages are offered in more than one language. Click the
-    <em>Choose…</em> button to specify your preferred language or
-    languages.</p>
-
-  <p><strong>Languages Dialog</strong><br/>
-    To add a language, click <em>Select a language to add…</em>, choose the
-    language, and click the <em>Add</em> button.  Remove a language by
-    selecting it in the list of active languages and clicking the
-    <em>Remove</em> button. You can also reorder languages using the <em>Move
-    Up</em> and <em>Move Down</em> buttons to determine the most preferred one
-    in case a page is provided in multiple languages .</p>
-
-<h2 id="applications_options">Applications &pref.pluralCaps;</h2>
-
-<p>The <em>Applications</em> panel lets you choose applications and other
-  handlers to handle different types of content (e.g. PDF documents).  It shows
-  you a list of content types and lets you select a handler for each type.</p>
-
-<p>You can choose a local application to handle any type.  For some types,
-  you can also choose a web application to handle the type, choose a feature
-  (like <a href="glossary.xhtml#live_bookmark">Live Bookmarks</a> for feeds)
-  or a <a href="glossary.xhtml#Plugin">plugin</a> in &brandShortName; to handle
-  the type, or save the type on your computer.</p>
-
-<p>To choose a handler for a type, select the type from the list. The current
-  handler for the type will turn into a menu. Open the menu and select the
-  handler you want to handle the type.</p>
-
-<ul>
-  <li><em>Choose an application</em><br/>
-    To choose a local or web application to handle a type, select the application
-    from the menu.  If you want a local application that is not in the menu
-    to handle the type, select <em>Choose Application…</em> from the menu
-    and point &brandShortName; to its location.</li>
-
-  <li><em>Choose a feature or plugin</em><br/>
-    If you want a feature or a plugin in &brandShortName; to handle the type,
-    and one is available, select it from the menu.</li>
-
-  <li><em>Save on your computer</em><br/>
-    If you want to save the type on your computer, and it is possible to do so,
-    select <em>Save File</em> from the menu.  If you have selected the <em>Save
-    files to</em> &pref.singular; in the <em>Main</em> panel, &brandShortName;
-    will save content of the type on your computer automatically.  Otherwise,
-    when you encounter the type, &brandShortName; will prompt you for a location
-    on your computer to save it to.</li>
-</ul>
-
-<p><strong>Note:</strong> When a plugin is available to handle a type, and you
-  choose another handler to handle that type, &brandShortName; will only use
-  your chosen handler when you access the type directly.  When the type is
-  embedded inside a web page, &brandShortName; will continue to use the plugin
-  to handle the type.</p>
-
-
-<h2 id="privacy_options">Privacy &pref.pluralCaps;</h2>
-
-  <h3 id="privacy_history">History</h3>
-  <p><em>Remember visited pages for the last … days</em><br/>
-    Here you can specify how long you want &brandShortName; to remember what
-    pages you have visited. The default is 9 days.</p>
-      
-  <p><em>Remember what I enter in forms and the search bar</em><br/>
-    When you enter information in web forms or the search bar in
-    &brandShortName;, that information is saved so that &brandShortName; can
-    give suggestions when you enter information in forms in the future. To stop
-    this behavior, uncheck this &pref.singular;.</p>
-      
-  <p><em>Remember what I've downloaded</em><br/>
-    This &pref.singular; controls whether or not past downloads show up in the
-    Downloads window.  The Downloads window (accessible from <span
-    class="menuPath">Tools</span> or by pressing <span
-    class="noUnix">&accelKey;+<kbd>J</kbd></span><span
-    class="unix">&accelKey;+<kbd>Y</kbd></span>) displays a list of your recent
-    downloads.  Downloads &pref.plural; are available in the <a
-    href="#main_options"><em>Main</em></a> panel.</p>
-
-  <h3 id="privacy_cookies">Cookies</h3>
-  <p>A cookie is a file created by a web site that stores information on your
-    computer, such as site-specific preferences when visiting that site.</p>
-
-  <p><em>Accept cookies from sites</em><br/>
-    By default cookies are enabled. Uncheck this &pref.singular; to disable the
-    use of cookies. Note that some sites may not work properly when cookies are
-    disabled.</p>
-      
-  <p><em>Keep until:</em></p>
-
-  <ul>
-    <li><em>they expire</em><br/>
-      This is the default &pref.singular;. When set, this allows websites to
-      specify how long a cookie will be stored by &brandShortName;. This makes
-      it possible for a site to remember your preferences and login information
-      across browser sessions.</li>
-    <li><em>I close &brandShortName;</em><br/>
-      With this &pref.singular; selected, &brandShortName; will remove all
-      stored cookies when closed.</li>
-    <li><em>ask me every time</em><br/>
-      With this &pref.singular; enabled, &brandShortName; will ask you how long
-      you would like to keep a cookie (or refuse it entirely) every time a web
-      site attempts to set one.</li>
-  </ul>
-
-  <p>To control which sites may or may not set cookies, click the
-    <em>Exceptions…</em> button.</p>
-      
-  <p>To display the Cookie Manager click <em>Show Cookies…</em>.</p>
-
-  <p>Learn more about cookies, the individual &pref.plural;, and how you can
-    gain control over what sites are allowed to store cookies on your computer
-    by reading about <a href="cookies.xhtml">Managing Cookies</a>.</p>
-      
-  <h3 id="private_data">Private Data</h3>
-  <p><em>Always clear my private data when I close &brandShortName;</em><br/>
-    You can choose to have &brandShortName; clear your private data when you
-    close it. To configure what data is cleared, click the <em>Settings…</em>
-    button.</p>
-    
-  <p><em>Ask me before clearing private data</em><br/>
-    With this &pref.singular; selected, &brandShortName; will ask you before
-    before automatically clearing the data specified by clicking
-    <em>Settings…</em>.</p>
-  
-  <p>If you wish to clear your private data right now, you can click the
-    <em>Clear Now…</em> button to do so.  To clear your private data from
-    outside the preferences dialog, either press &accelKey;+&shiftKey;+<kbd>Del</kbd>
-    or select <span class="menuPath">Tools &gt; Clear Private Data…</span>.</p>
-
-
-<h2 id="security_options">Security &pref.pluralCaps;</h2>
-<p><em>Warn me when sites try to install add-ons</em><br/>
-  &brandShortName; will always ask you to confirm installations of add-ons.
-  To prevent unrequested installation prompts which may lead to accidental
-  installations, &brandShortName; warns you when a web site tries to install
-  an add-on and blocks the installation prompt.  To allow installations from
-  a specific site, click <em>Exceptions…</em>, enter the site name, and click
-  <em>Allow</em>.  Uncheck this &pref.singular; to disable the warning for all
-  sites.</p>
-
-<p id="phishing"><em>Tell me if the site I'm visiting is a suspected forgery</em><br/>
-  Check this &pref.singular; if you want &brandShortName; to actively check
-  whether the site you are visiting may be an attempt to mislead you into
-  providing personal information (this is often referred to as <em>phishing</em>).<br/>
-  Note that the absence of a warning does not guarantee that a site is trustworthy.
-  If you come across a "phishing" site which is not marked as such, please report
-  it using <span class="menuPath">Help &gt; Report Web Forgery…</span>, as
-  explained in the <a href="menu_reference.xhtml#web_forgery">menu reference</a>.</p>
-
-<p><em>Check using a downloaded list of suspected sites</em><br/>
-  With this &pref.singular; selected, &brandShortName; will check the current
-  site against a frequently updated list stored on your computer.  No data about
-  the sites you visit is transferred to third-party anti-phishing providers
-  during normal browsing.  Since phishing techniques and sites evolve quickly,
-  this mode of protection may not be as effective as having an anti-phishing
-  provider check every site you visit.</p>
-
-<p><em>Check by asking … about each site I visit</em><br/>
-  With this &pref.singular; selected, &brandShortName; will send the address of
-  the current page over an encrypted connection to the selected third-party
-  anti-phishing provider in order to verify its identity. This method offers the
-  greatest protection, but information such as your IP address and browser
-  version may be transfered and stored by the selected provider. You will be
-  prompted to review and agree to the selected data provider's privacy policy
-  after selecting this &pref.singular;.</p>
-      
-  <h3 id="security_passwords">Passwords</h3>
-  <p><em>Remember passwords for sites</em><br/>
-    &brandShortName; can securely save passwords you enter in web forms to
-    make it easier to log on to web sites.  Clear this checkbox to prevent
-    &brandShortName; from remembering your passwords.</p>
-    
-    <p>Even with this &pref.singular; checked, however, you'll still be asked
-    whether to save passwords for a site when you first visit it.  If you select
-    <em>Never for This Site</em>, that site will be added to an exceptions list.
-    To access that list or to remove sites from it, click the
-    <em>Exceptions…</em> button.</p>
-
-  <p id="set_change_master_password"><em>Use a master password</em><br/>
-    &brandShortName; can protect sensitive information such as saved passwords
-    and certificates by encrypting them using a <a
-    href="glossary.xhtml#master_password">master password</a>.  If you create a
-    master password, each time you start &brandShortName;, it will ask you to enter
-    the password the first time it needs to access a certificate or stored
-    password. You can set, change, or remove the master password by
-    by checking or unchecking this &pref.singular; or by clicking the
-    <em>Change Master Password…</em> button.  If a master password is already
-    set, you will need to enter it in order to change or remove the master password.</p>
-
-  <p><em>Saved Passwords…</em><br/>
-    You can manage saved passwords and delete individual passwords by clicking
-    the <em>Saved Passwords</em> button.</p>
-  
-  <h3 id="warning_messages">Warning Messages</h3>
-  <p>Click the <em>Settings…</em> button to configure the security warnings
-    &brandShortName; displays while you browse the web.</p>
-    
-    <h4>Security Warnings Dialog</h4>
-    <!--XXX massive suck!  do these provide *any* value whatsoever? -->
-    <dl>
-      <dt>I am about to view an encrypted page</dt>
-      <dd>When this &pref.singular; is enabled, &brandShortName; will notify you
-        every time you are about to view an encrypted page.</dd>
-
-      <dt>I am about to view a page that uses low-grade encryption</dt>
-      <dd>With this &pref.singular; enabled, &brandShortName; will warn you when
-        you visit a page which uses low-grade encryption.</dd>
-
-      <dt>I leave an encrypted page for one that isn't encrypted</dt>
-      <dd>With this &pref.singular; enabled, &brandShortName; will warn you
-        every time you move from an encrypted page to an unencrypted page either
-        by selecting a link on the page, selecting a bookmark or typing a new
-        address into the location bar.</dd>
-
-      <dt>I submit information that's not encrypted</dt>
-      <dd>When this &pref.singular; is enabled, &brandShortName; will warn you
-        when you submit data via a form that's not encrypted.</dd>
-  
-      <dt>I'm about to view an encrypted page that contains some unencrypted
-        information</dt>
-      <dd>With this &pref.singular; enabled, &brandShortName; will warn you when
-        the page you're viewing contains a mixture of encrypted and
-        unencrypted content. If an encrypted page contains unencrypted data,
-        you should verify the identity of the page you're viewing prior to
-        entering sensitive data.</dd>
-    </dl>
-
-
-<h2 id="advanced_options">Advanced &pref.pluralCaps;</h2>
-<p>The advanced panel contains many &pref.plural; that are less likely to be
-  used by most people but are useful and sometimes critical &pref.plural; for
-  some people.</p>
-
-  <h3 id="advanced_general">General tab</h3>
-    <h4 id="accessibility">Accessibility</h4>
-    <p><em>Always use the cursor keys to navigate within pages</em><br/>
-      When this &pref.singular; is enabled, &brandShortName; will display a
-      movable cursor in web pages, allowing you to select text with the
-      keyboard.  You can toggle this mode by pressing <kbd>F7</kbd>.</p>
-
-    <p><em>Search for text when I start typing</em><br/>
-      When this &pref.singular; is enabled, &brandShortName; will find within
-      the current web page what you type as you type it. While you are finding
-      typed text in the page, the Find Toolbar will automatically display at the
-      bottom of the window to show information about what you've found.</p>
-
-    <h4 id="browsing">Browsing</h4>
-    <p><em>Use autoscrolling</em><br/>
-      Autoscrolling is a useful feature which allows you to scroll the page by
-      clicking the middle mouse button (usually the scroll wheel) and moving the
-      mouse up or down. Some people find this annoying, so autoscrolling can be
-      disabled with this &pref.singular;.</p>
-
-    <p><em>Use smooth scrolling</em><br/>
-      Smooth scrolling can be very useful if you read a lot of long pages.
-      Normally, when you press <kbd>Page Down</kbd>, the view jumps directly
-      down one page. With smooth scrolling, it slides down smoothly, so you can
-      see how much it scrolls. This makes it easier to resume reading from where
-      you were before.</p>
-        
-    <p><em>Check my spelling as I type</em><br/>
-      When this preference is enabled, &brandShortName; will check your spelling
-      and offer possible corrections as you type in web forms.  Note that you
-      may need to download a dictionary; to do so, <span
-      class="noMac">right-click</span><span class="mac">press &ctrlKey; and
-      click</span> on any text field, enable spellchecking if necessary, and
-      then use the provided <span class="menuPath">Languages</span> menu to
-      download a dictionary.</p>
-
-  <h3 id="advanced_network">Network tab</h3>
-
-    <h4 id="connection_settings">Connection</h4>
-    <p>Your organization or Internet service provider may offer or require you
-      to use a proxy.  A proxy acts as an intermediary between your computer and
-      the Internet.  It intercepts all requests to the Internet to see if it can
-      fulfill the request using its cache.  Proxies are used to improve
-      performance, filter requests, and hide your computer from the Internet to
-      improve security.  Proxies are often part of corporate firewalls.</p>
-
-    <h4>Connection Settings Dialog</h4>
-    <dl>
-      <dt>Direct connection to the Internet</dt>
-      <dd>This is the default &pref.singular;. Choose this if you don't want
-        to use a proxy.</dd>
-
-      <dt>Auto-detect proxy settings for this network</dt>
-      <dd>Choose this if you want &brandShortName; to automatically detect the
-        proxy settings for your network.</dd>
-
-      <dt>Manual proxy configuration</dt>
-      <dd>Choose this if you don't have a proxy location (URL). Ask your
-        system administrator for the names and port numbers of the servers
-        running proxy software for each network service and enter the
-        information in the appropriate fields.</dd>
-
-      <dt>Automatic proxy configuration URL</dt>
-      <dd>If your workplace has a proxy configuration file, ask the system
-        administrator for its URL and enter it here. Click <em>Reload</em> to
-        load the settings.</dd>
-    </dl>
-    
-    <h4 id="advanced_cache">Cache</h4>
-    <p>Pages you view are normally stored in a special cache folder for quicker
-      viewing the next time you visit the same page.  You can specify the amount
-      of disk space the cache can use here.  You can also immediately clear
-      the contents of the cache.</p>
-    
-    <p><em>Use up to … MB of space for the cache</em><br/>
-      Allows you to specify the maximum size, in megabytes, of the cache on
-      your computer.</p>
-    
-    <p><em>Clear Now</em><br/>
-      Immediately clears the current contents of the cache, freeing the disk
-      space used by the cache.</p>
-  
-  <h3 id="advanced_update">Update tab</h3>
-    <p>&brandShortName; can check whether updates to installed add-ons or to
-      &brandShortName; itself are available.</p>
-
-    <p><em>Automatically check for updates to:</em><br/>
-      By default &brandShortName; automatically checks for updates to itself, to
-      add-ons, and to search engines so you'll always know you have the most
-      up-to-date version. You can change this behavior by changing the
-      appropriate checkboxes here.</p>
-
-    <p><em>When updates to &brandShortName; are found,</em></p>
-
-    <dl>
-      <dt>Ask me what I want to do</dt>
-      <dd>Updates to &brandShortName; are installed automatically by default.
-        Select this &pref.singular; to manually control how and when updates are
-        installed.</dd>
-      <dt>Automatically download and install the update</dt>
-      <dd>When this &pref.singular; is selected, &brandShortName; updates will
-        be automatically downloaded and will be installed the next time
-        &brandShortName; is restarted.  The <em>Warn me if this will disable any
-        of my add-ons</em> &pref.singular; determines whether you will be warned
-        before the installation of an update which would require an incompatible
-        add-on to be disabled because no newer, compatible version exists.  The
-        warning will allow you to postpone installation of the update, though at
-        the expense of improvements included in it.<br/><br/>
-        If all extensions and themes are compatible or can be updated to be
-        compatible, the &brandShortName; update will be installed.  Upon restart
-        you will be asked to install any needed add-on updates so that you can
-        continue to use them.</dd>
-    </dl>
-
-    <p><em>Show Update History</em><br/>
-      &brandShortName; automatically records the updates you have installed.
-      You can view information about these updates by clicking this button.</p>
-
-    <p><strong>Note:</strong>  You must be running &brandShortName; as
-      <span class="win">an administrator</span><span class="noWin">root</span>
-      or as the user who originally installed &brandShortName;
-      to install &brandShortName; updates.</p>
-
-  <h3 id="advanced_encryption">Encryption tab</h3>
-
-    <h4 id="protocols">Protocols</h4>
-    <p><em>Use SSL 3.0</em><br/>
-      Specifies whether you want to send and receive secured information through
-      SSL3 (Secure Sockets Layer, Level 3), a standard protocol for
-      communicating securely with web sites.  Disabling it will prevent you from
-      visiting some sites.</p>
-
-    <p><em>Use TLS 1.0</em><br/>
-      Specifies whether you want to send and receive secured information through
-      TLS (Transport Layer Security), a security standard similar to SSL3
-      (Secure Sockets Layer).  Disabling it will prevent you from visiting some
-      sites.</p>
-
-    <h4 id="certificates">Certificates</h4>
-    <p><a href="glossary.xhtml#certificate">Certificates</a> help perform
-      encryption and decryption of connections to <a
-      href="glossary.xhtml#secure_site">secure sites</a>.</p>
-
-    <p><em>When a web site requires a certificate:</em><br/>
-      Some servers ask you to identify yourself with a personal certificate. In
-      order to do so, they ask &brandShortName; to generate one for you. When
-      you visit the site in the future, &brandShortName; selects the certificate
-      without asking you by default. If you wish to manually choose a
-      certificate (for example, if you have multiple certificates stored for
-      multiple web sites), select the <em>Ask me every time</em> &pref.singular;
-      and you'll be in complete control of what certificates are being sent to
-      web sites while browsing.</p>
-
-    <p><em>View Certificates</em><br/>
-      Click this button to view stored certificates, import new certificates,
-      and back up or delete old certificates in &brandShortName;.</p>
-
-    <p><em>Revocation Lists</em><br/>
-      &brandShortName; can use Certificate Revocation Lists (also known as
-      CRLs) to ensure that your certificates are always valid.  Click the
-      <em>Revocation Lists</em> button to manage the CRLs installed on your
-      computer.</p>
-
-    <p><em>Validation</em><br/>
-      &brandShortName; may ask an OCSP (Online Certificate Status Protocol)
-      server to confirm that a certificate is still valid. By default,
-      &brandShortName; validates a certificate if the certificate provides an
-      OCSP server. Alternately, you can choose an OCSP server against which to
-      validate all certificates. Click the <em>Validation</em> button to manage
-      these &pref.plural;. You will most likely only need to change this if your
-      Internet environment requires it.</p>
-
-    <p><em>Security Devices</em><br/>
-      Security devices can encrypt and decrypt connections and store
-      certificates and passwords.  If you need to use a security device other
-      than the one in &brandShortName;, click the <em>Security Devices</em>
-      button.</p>
-
-<div class="contentsBox"><em>09 October 2007</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/search-db.rdf
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:nc="http://home.netscape.com/NC-rdf#">
-
-  <Description rdf:about="urn:root">
-    <nc:subheadings>
-      <Seq>
-        <!--
-          These nodes are used for searching purposes; they display in search results but do not
-          show up in the default listing displayed when the help viewer loads.
-          DO NOT CREATE NAME COLLISIONS BETWEEN THE ITEMS HERE AND THE ITEMS IN THE TOC!
-        -->
-        <li><Description nc:name="Accessibility Options" nc:link="prefs.xhtml#accessibility" nc:platform="win os2"/></li>
-        <li><Description nc:name="Accessibility Preferences" nc:link="prefs.xhtml#accessibility" nc:platform="unix mac"/></li>
-        <li><Description nc:name="Anti-Phishing Options" nc:link="prefs.xhtml#phishing" nc:platform="win os2"/></li>
-        <li><Description nc:name="Anti-Phishing Preferences" nc:link="prefs.xhtml#phishing" nc:platform="unix mac"/></li>
-        <li><Description nc:name="authentication (definition)" nc:link="glossary.xhtml#authentication"/></li>
-        <li><Description nc:name="Back Button" nc:link="using_firebird.xhtml#retracing_your_steps"/></li>
-        <li><Description nc:name="Block Pop-ups" nc:link="popup.xhtml"/></li>
-        <li><Description nc:name="bookmark (definition)" nc:link="glossary.xhtml#bookmark"/></li>
-        <li><Description nc:name="Bookmarks Toolbar (definition)" nc:link="glossary.xhtml#Bookmarks_Toolbar"/></li>
-        <li><Description nc:name="Browsing" nc:link="using_firebird.xhtml#navigating_web_pages"/></li>
-        <li><Description nc:name="cache (definition)" nc:link="glossary.xhtml#cache"/></li>
-        <li><Description nc:name="certificate (definition)" nc:link="glossary.xhtml#certificate"/></li>
-        <li><Description nc:name="Certificates" nc:link="prefs.xhtml#certificates"/></li>
-        <li><Description nc:name="Certificate Revocation Lists" nc:link="prefs.xhtml#certificates"/></li>
-        <li><Description nc:name="client (definition)" nc:link="glossary.xhtml#client"/></li>
-        <li><Description nc:name="Configuring Extensions" nc:link="customization.xhtml#add_ons_configuring_extensions"/></li>
-        <li><Description nc:name="cookie (definition)" nc:link="glossary.xhtml#cookie"/></li>
-        <li><Description nc:name="cryptography (definition)" nc:link="glossary.xhtml#cryptography"/></li>
-        <li><Description nc:name="decryption (definition)" nc:link="glossary.xhtml#decryption"/></li>
-        <li><Description nc:name="digital ID (definition)" nc:link="glossary.xhtml#digital_ID"/></li>
-        <li><Description nc:name="Disabling, Enabling, Uninstalling Add-ons" nc:link="customization.xhtml#add_ons_uninstalling"/></li>
-        <li><Description nc:name="encryption (definition)" nc:link="glossary.xhtml#encryption"/></li>
-        <li><Description nc:name="Extensible Markup Language (XML) (definition)" nc:link="glossary.xhtml#XML"/></li>
-        <li><Description nc:name="feed (definition)" nc:link="glossary.xhtml#feed"/></li>
-        <li><Description nc:name="File Transfer Protocol (FTP) (definition)" nc:link="glossary.xhtml#File_Transfer_Protocol"/></li>
-        <li><Description nc:name="FIPS PUBS 140-1 (definition)" nc:link="glossary.xhtml#FIPS_PUBS_140-1"/></li>
-        <li><Description nc:name="Forward Button" nc:link="using_firebird.xhtml#retracing_your_steps"/></li>
-        <li><Description nc:name="going back or forward" nc:link="using_firebird.xhtml#retracing_your_steps"/></li>
-        <li><Description nc:name="Home Button" nc:link="using_firebird.xhtml#viewing_your_home_page"/></li>
-        <li><Description nc:name="Home Page (definition)" nc:link="glossary.xhtml#home_page"/></li>
-        <li><Description nc:name="Hypertext Markup Language (HTML) (definition)" nc:link="glossary.xhtml#Hypertext_Markup_Language"/></li>
-        <li><Description nc:name="importing Internet Explorer Favorites" nc:link="forieusers.xhtml#about_your_ie_settings"/></li>
-        <li><Description nc:name="Internet (definition)" nc:link="glossary.xhtml#Internet"/></li>
-        <li><Description nc:name="Internet protocol (IP) address (definition)" nc:link="glossary.xhtml#Internet_protocol_address"/></li>
-        <li><Description nc:name="Java (definition)" nc:link="glossary.xhtml#Java"/></li>
-        <li><Description nc:name="JavaScript (definition)" nc:link="glossary.xhtml#JavaScript"/></li>
-        <li><Description nc:name="Languages" nc:link="prefs.xhtml#languages"/></li>
-        <li><Description nc:name="Live Bookmark (definition)" nc:link="glossary.xhtml#live_bookmark"/></li>
-        <li><Description nc:name="Location Bar (definition)" nc:link="glossary.xhtml#location_bar"/></li>
-        <li><Description nc:name="master password (definition)" nc:link="glossary.xhtml#master_password"/></li>
-        <li><Description nc:name="Navigation Toolbar (definition)" nc:link="glossary.xhtml#navigation_toolbar"/></li>
-        <li><Description nc:name="Password Manager (definition)" nc:link="glossary.xhtml#Password_Manager"/></li>
-        <li><Description nc:name="PKCS #11 (definition)" nc:link="glossary.xhtml#PKCS_11"/></li>
-        <li><Description nc:name="Plugin (definition)" nc:link="glossary.xhtml#Plugin"/></li>
-        <li><Description nc:name="Plugins" nc:link="using_firebird.xhtml#managing_different_file_types"/></li>
-        <li><Description nc:name="private key (definition)" nc:link="glossary.xhtml#private_key"/></li>
-        <li><Description nc:name="proxy (definition)" nc:link="glossary.xhtml#proxy"/></li>
-        <li><Description nc:name="recently visited web pages" nc:link="using_firebird.xhtml#moving_to_another_page"/></li>
-        <li><Description nc:name="Reload Button" nc:link="using_firebird.xhtml#stopping_and_reloading"/></li>
-        <li><Description nc:name="search engine (definition)" nc:link="glossary.xhtml#search_engine"/></li>
-        <li><Description nc:name="searching using the Location Bar" nc:link="using_firebird.xhtml#moving_to_another_page"/></li>
-        <li><Description nc:name="searching using the Search Bar" nc:link="using_firebird.xhtml#searching_the_web"/></li>
-        <li><Description nc:name="searching using text from the page" nc:link="using_firebird.xhtml#searching_on_selected_words_in_a_web_page"/></li>
-        <li><Description nc:name="secure site (definition)" nc:link="glossary.xhtml#secure_site"/></li>
-        <li><Description nc:name="Secure Sockets Layer (SSL) (definition)" nc:link="glossary.xhtml#SSL"/></li>
-        <li><Description nc:name="server (definition)" nc:link="glossary.xhtml#server"/></li>
-        <li><Description nc:name="Setting or Changing the Master Password" nc:link="prefs.xhtml#set_change_master_password"/></li>
-        <li><Description nc:name="Software Updates" nc:link="menu_reference.xhtml#check_for_updates"/></li>
-        <li><Description nc:name="Status Bar (definition)" nc:link="glossary.xhtml#Status_Bar"/></li>
-        <li><Description nc:name="Stop Button" nc:link="using_firebird.xhtml#stopping_and_reloading"/></li>
-        <li><Description nc:name="Switching Themes" nc:link="customization.xhtml#add_ons_switching_themes"/></li>
-        <li><Description nc:name="TLS (definition)" nc:link="glossary.xhtml#TLS"/></li>
-        <li><Description nc:name="TCP/IP (Transmission Control Protocol/Internet Protocol) (definition)" nc:link="glossary.xhtml#TCP_IP"/></li>
-        <li><Description nc:name="Uniform Resource Locator (URL) (definition)" nc:link="glossary.xhtml#Uniform_Resource_Locator"/></li>
-        <li><Description nc:name="Updating Add-ons" nc:link="customization.xhtml#add_ons_updating"/></li>
-        <li><Description nc:name="Verification" nc:link="prefs.xhtml#certificates"/></li>
-        <li><Description nc:name="Viewing HTML Source" nc:link="menu_reference.xhtml#page_source"/></li>
-        <li><Description nc:name="web page (definition)" nc:link="glossary.xhtml#web_page"/></li>
-        <li><Description nc:name="web site (definition)" nc:link="glossary.xhtml#web_site"/></li>
-        <li><Description nc:name="World Wide Web (definition)" nc:link="glossary.xhtml#World_Wide_Web"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-</RDF>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/shortcuts.xhtml
+++ /dev/null
@@ -1,383 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  R.J. Keller <rlk@trfenv.com>
-  Sean Umphlet <nosebleed@umphlet.com> (minor bugfixes)
-  Jeff Walden <jwalden+code@mit.edu>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Keyboard Shortcuts</title>
-  <link rel="stylesheet" type="text/css"
-    href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; Keyboard Shortcuts</h1>
-
-<p>This is a list of the most common keyboard shortcuts in &brandFullName;.
-  <span class="unix">If you have enabled Emacs-style text editing shortcuts
-  in GNOME, they will also work in &brandShortName;.  When an Emacs text
-  editing shortcut conflicts with the default shortcuts (as occurs with
-  &accelKey;+<kbd>K</kbd>), the Emacs shortcut will take preference if
-  focus is inside a textbox (which would include the location bar and search
-  bar).  In such cases you should use the alternate keyboard shortcut
-  if one is listed below.</span></p>
-
-<table border="1">
-  <thead>
-    <tr>
-      <th>Command</th>
-      <th>Shortcut</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <th colspan="2">Navigation</th>
-    </tr>
-    <tr>
-      <td>Back</td>
-      <td>
-        <span class="win">
-          &altKey;+<kbd>Left Arrow</kbd><br/>
-          <kbd>Backspace</kbd>
-        </span>
-        <span class="unix">
-          &altKey;+<kbd>Left Arrow</kbd><br/>
-          &accelKey;+<kbd>[</kbd>
-        </span>
-        <span class="mac">
-          &accelKey;+<kbd>[</kbd><br/>
-          &accelKey;+<kbd>Left Arrow</kbd><br/>
-          <kbd>Delete</kbd>
-        </span>
-      </td>
-    </tr>
-    <tr>
-      <td>Forward</td>
-      <td>
-        <span class="win">
-          &altKey;+<kbd>Right Arrow</kbd><br/>
-          &shiftKey;+<kbd>Backspace</kbd>
-        </span>
-        <span class="unix">
-          &altKey;+<kbd>Right Arrow</kbd><br/>
-          &accelKey;+<kbd>]</kbd>
-        </span>
-        <span class="mac">
-          &accelKey;+<kbd>]</kbd><br/>
-          &accelKey;+<kbd>Right Arrow</kbd><br/>
-          &shiftKey;+<kbd>Delete</kbd>
-        </span>
-      </td>
-    </tr>
-    <tr>
-      <td>Home</td>
-      <td>&altKey;+<kbd>Home</kbd></td>
-    </tr>
-    <tr>
-      <td>Open File</td>
-      <td>&accelKey;+<kbd>O</kbd></td>
-    </tr>
-    <tr>
-      <td>Reload</td>
-      <td><kbd>F5<br/></kbd>
-        &accelKey;+<kbd>R</kbd></td>
-    </tr>
-    <tr>
-      <td>Reload (override cache)</td>
-      <td><span class="noMac">&accelKey;+<kbd>F5</kbd><br/></span>
-        &accelKey;+&shiftKey;+<kbd>R</kbd></td>
-    </tr>
-    <tr>
-      <td>Stop</td>
-      <td><span class="mac">&accelKey;+<kbd>.</kbd><br/></span>
-        <kbd>Esc</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Current Page</th>
-    </tr>
-    <tr>
-      <td>Go to Bottom of Page</td>
-      <td><kbd>End</kbd></td>
-    </tr>
-    <tr>
-      <td>Go to Top of Page</td>
-      <td><kbd>Home</kbd></td>
-    </tr>
-    <tr>
-      <td>Move to Next Frame</td>
-      <td><kbd>F6</kbd></td>
-    </tr>
-    <tr>
-      <td>Move to Previous Frame</td>
-      <td>&shiftKey;+<kbd>F6</kbd></td>
-    </tr>
-    <tr class="noWin">
-      <td>Page Info</td>
-      <td>&accelKey;+<kbd>I</kbd></td>
-    </tr>
-    <tr>
-      <td>Page Source</td>
-      <td>&accelKey;+<kbd>U</kbd></td>
-    </tr>
-    <tr>
-      <td>Print</td>
-      <td>&accelKey;+<kbd>P</kbd></td>
-    </tr>
-    <tr>
-      <td>Save Page As</td>
-      <td>&accelKey;+<kbd>S</kbd></td>
-    </tr>
-    <tr>
-      <td>Text Size: Decrease</td>
-      <td>&accelKey;+<kbd>-</kbd></td>
-    </tr>
-    <tr>
-      <td>Text Size: Increase</td>
-      <td>&accelKey;+<kbd>+</kbd></td>
-    </tr>
-    <tr>
-      <td>Text Size: Restore</td>
-      <td>&accelKey;+<kbd>0</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Editing</th>
-    </tr>
-    <tr>
-      <td>Copy</td>
-      <td>&accelKey;+<kbd>C</kbd></td>
-    </tr>
-    <tr>
-      <td>Cut</td>
-      <td>&accelKey;+<kbd>X</kbd></td>
-    </tr>
-    <tr>
-      <td>Delete</td>
-      <td><kbd>Delete</kbd></td>
-    </tr>
-    <tr>
-      <td>Paste</td>
-      <td>&accelKey;+<kbd>V</kbd></td>
-    </tr>
-    <tr>
-      <td>Redo</td>
-      <td><span class="win">&accelKey;+<kbd>Y</kbd></span>
-        <span class="noWin">&accelKey;+&shiftKey;+<kbd>Z</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Select All</td>
-      <td>&accelKey;+<kbd>A</kbd></td>
-    </tr>
-    <tr>
-      <td>Undo</td>
-      <td>&accelKey;+<kbd>Z</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Search</th>
-    </tr>
-    <tr>
-      <td>Find</td>
-      <td>&accelKey;+<kbd>F</kbd></td>
-    </tr>
-    <tr>
-      <td>Find Again</td>
-      <td><kbd>F3</kbd><br/>
-        &accelKey;+<kbd>G</kbd></td>
-    </tr>
-    <tr>
-      <td>Find As You Type Link</td>
-      <td><kbd>'</kbd></td>
-    </tr>
-    <tr>
-      <td>Find As You Type Text</td>
-      <td><kbd>/</kbd></td>
-    </tr>
-    <tr>
-      <td>Find Previous</td>
-      <td>&shiftKey;+<kbd>F3</kbd></td>
-    </tr>
-    <tr>
-      <td>Web Search</td>
-      <td>&accelKey;+<kbd>K</kbd>
-        <span class="win"><br/>&accelKey;+<kbd>E</kbd></span>
-        <span class="unix"><br/>&accelKey;+<kbd>J</kbd></span></td>
-    </tr>
-  </tbody>
-  <tbody id="windows_tabs">
-    <tr>
-      <th colspan="2">Windows &amp; Tabs</th>
-    </tr>
-    <tr>
-      <td>Close Tab</td>
-      <td>&accelKey;+<kbd>W</kbd>
-        <span class="noMac"><br/>&ctrlKey;+<kbd>F4</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Close Window</td>
-      <td>&accelKey;+&shiftKey;+<kbd>W</kbd>
-        <span class="noMac"><br/>&altKey;+<kbd>F4</kbd></span></td>
-    </tr>
-    <!-- LOCALIZATION NOTE:
-         "Left"/"Up" and "Right"/"Down" might need special treatment
-         for bidi locales, as used in the following two entries.
-    -->
-    <tr>
-      <td>Move Tab Left<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>Left Arrow</kbd><br/>
-          &accelKey;+<kbd>Up Arrow</kbd></td>
-    </tr>
-    <tr>
-      <td>Move Tab Right<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>Right Arrow</kbd><br/>
-          &accelKey;+<kbd>Down Arrow</kbd></td>
-    </tr>
-    <tr>
-      <td>Move Tab to Beginning<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>Home</kbd></td>
-    </tr>
-    <tr>
-      <td>Move Tab to End<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>End</kbd></td>
-    </tr>
-    <tr>
-      <td>New Tab</td>
-      <td>&accelKey;+<kbd>T</kbd></td>
-    </tr>
-    <tr>
-      <td>New Window</td>
-      <td>&accelKey;+<kbd>N</kbd></td>
-    </tr>
-    <tr>
-      <td>Next Tab</td>
-      <td>&ctrlKey;+<kbd>Tab</kbd><br/>
-        <span class="mac">&accelKey;+&altKey;+Right Arrow<br/></span>
-        &ctrlKey;+<kbd>Page Down</kbd></td>
-    </tr>
-    <tr>
-      <td>Open Address in New Tab<br/>
-        (from Location Bar or Search Bar)</td>
-      <td>&altKey;+&enterKey;</td>
-    </tr>
-    <tr>
-      <td>Previous Tab</td>
-      <td>&ctrlKey;+&shiftKey;+<kbd>Tab</kbd><br/>
-        <span class="mac">&accelKey;+&altKey;+Left Arrow<br/></span>
-        &ctrlKey;+<kbd>Page Up</kbd></td>
-    </tr>
-    <tr>
-      <td>Restore Recently Closed Tab</td>
-      <td>&accelKey;+&shiftKey;+<kbd>T</kbd></td>
-    </tr>
-    <tr>
-      <td>Select Tab (1 to 8)</td>
-      <td><span class="noUnix">&accelKey;</span><span
-        class="unix">&altKey;</span>+(<kbd>1</kbd> to <kbd>8</kbd>)</td>
-    </tr>
-    <tr>
-      <td>Select Last Tab</td>
-      <td><span class="noUnix">&accelKey;</span><span
-        class="unix">&altKey;</span>+<kbd>9</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Tools</th>
-    </tr>
-    <tr class="noUnix">
-      <td>Bookmark All Tabs</td>
-      <td>&accelKey;+&shiftKey;+<kbd>D</kbd></td>
-    </tr>
-    <tr>
-      <td>Bookmark This Page</td>
-      <td>&accelKey;+<kbd>D</kbd></td>
-    </tr>
-    <tr>
-      <td>Bookmarks</td>
-      <td>&accelKey;+<kbd>B</kbd>
-        <span class="win"><br/>&accelKey;+<kbd>I</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Caret Browsing</td>
-      <td><kbd>F7</kbd></td>
-    </tr>
-    <tr>
-      <td>Downloads</td>
-      <td><span class="noUnix">&accelKey;+<kbd>J</kbd></span>
-        <span class="unix">&accelKey;+<kbd>Y</kbd></span></td>
-    </tr>
-    <tr>
-      <td>History</td>
-      <td><span class="noMac">&accelKey;+<kbd>H</kbd></span>
-        <span class="mac">&accelKey;+&shiftKey;+<kbd>H</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Clear Private Data</td>
-      <td>&accelKey;