diff -urN firefox/chrome/contents/submittotab/contents.rdf seamonkey/chrome/content/submittotab/contents.rdf
--- firefox/chrome/contents/submittotab/contents.rdf	2006-10-28 19:03:16.000000000 -0400
+++ seamonkey/chrome/content/submittotab/contents.rdf	2007-03-01 11:00:37.000000000 -0500
@@ -16,10 +16,14 @@
 
     <RDF:Seq about="urn:mozilla:overlays">
       <RDF:li resource="chrome://browser/content/browser.xul"/>
+      <RDF:li resource="chrome://navigator/content/navigator.xul"/>
     </RDF:Seq>
 
     <RDF:Seq about="chrome://browser/content/browser.xul">
       <RDF:li>chrome://submittotab/content/submittotaboverlay.xul</RDF:li>
     </RDF:Seq>
+    <RDF:Seq about="chrome://navigator/content/navigator.xul">
+	  <RDF:li>chrome://submittotab/content/submittotaboverlay.xul</RDF:li>
+    </RDF:Seq>
 
-  </RDF:RDF>
\ No newline at end of file
+  </RDF:RDF>
diff -urN firefox/chrome/contents/submittotab/submittotab.js seamonkey/chrome/content/submittotab/submittotab.js
--- firefox/chrome/contents/submittotab.js	2006-10-28 18:59:30.000000000 -0400
+++ seamonkey/chrome/content/submittotab/submittotab.js	2007-03-01 12:39:32.000000000 -0500
@@ -2,13 +2,18 @@
   startup : function() {
     document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", SubmitToTab.onPopupShowing, false);
 
+	// The function is different in Seamonkey 1.1; adjusted to work - JJF 03/01/2007
+	eval("contentAreaClick =" + contentAreaClick.toString().replace(/(if \(pref &&\s*!isKeyCommand &&\s*event\.button == 1 && pref\.getBoolPref\("middlemouse\.contentLoadURL"\)\) \{)\s*(if \(middleMousePaste\(event\)\) \{\s*event\.stopPropagation\(\);\s*\})/, "$1 if(!SubmitToTab.contentAreaClick(event)){return false;} $2"));
+	/*
     eval("contentAreaClick =" + contentAreaClick.toString().replace("if (event.button == 1 &&"
       ,'if(!SubmitToTab.contentAreaClick(event)){return false;} else if (event.button == 1 &&')
     );
+	*/
 
     //insert into each browser
     var tb = document.getElementById("content");
-    eval("tb.addTab =" + tb.addTab.toString().replace(/(this\.onTitleChanged, (?:true|false)\);)/, "$1 SubmitToTab.fixAutoScroll(b);"));
+	// This next line breaks tabs totally in Seamonkey - JJF 03/01/2007
+    //eval("tb.addTab =" + tb.addTab.toString().replace(/(this\.onTitleChanged, (?:true|false)\);)/, "$1 SubmitToTab.fixAutoScroll(b);"));
     SubmitToTab.fixAutoScroll(tb.mCurrentBrowser);
   },
 
@@ -156,4 +161,4 @@
   }
 };
 
-window.addEventListener("load", SubmitToTab.startup, false);
\ No newline at end of file
+window.addEventListener("load", SubmitToTab.startup, false);
diff -urN firefox/chrome/content/submittotab/submittotaboverlay.xul seamonkey/chrome/content/submittotab/submittotaboverlay.xul
--- firefox/chrome/content/submittotaboverlay.xul	2005-03-11 18:39:56.000000000 -0500
+++ seamonkey/chrome/content/submittotab/submittotaboverlay.xul	2007-03-01 12:59:14.703315488 -0500
@@ -15,4 +15,4 @@
     insertbefore="context-sep-open"/>
   <menuseparator id="context-sep-submit" insertbefore="context-sep-open"/>
 </popup>
-</overlay>
\ No newline at end of file
+</overlay>
diff -urN firefox/install.js seamonkey/install.js
--- firefox/install.js	1969-12-31 19:00:00.000000000 -0500
+++ seamonkey/install.js	2007-03-01 11:33:14.655761952 -0500
@@ -0,0 +1,152 @@
+// This code is heavily inspired by Chris Pederick (useragentswitcher) install.js
+// Contributors: Philip Chee, deathburger
+//
+// Philip Chee: Added installation of prefs, components, and locales.
+// deathburger: Refactored to move all changable items to the top of the file.
+
+// Editable Items Begin
+var displayName         = "SubmitToTab"; // The name displayed to the user (don't include the version)
+var version             = "0.3.5";
+var name                = "submittotab"; // The leafname of the JAR file (without the .jar part)
+
+// The following three sets of variables tell this installer script how your
+// extension directory structure looks.
+// If your jar file contains content/packagename use the second packageDir
+// variable. Same rule applies for skinDir and localeDir. I set them up
+// independent of each other just in case an extension layout is wacky.
+//var packageDir           = "/"
+var packageDir           = "/" + name + "/"
+var skinDir           = "/"
+//var skinDir           = "/" + name + "/"
+var localeDir           = "/"
+//var localeDir           = "/" + name + "/"
+
+var locales             = new Array( "en-US", "fr-FR", "de-DE", "it-IT", "ja-JP" );
+var skins               = new Array( "classic" ); // "modern"
+var prefs               = new Array(  );
+var components          = new Array(  );
+var searchPlugins       = new Array(  );
+
+// Mozilla Suite/Seamonkey stores all pref files in a single directory
+// under the application directory.  If the name of the preference file(s)
+// is/are not unique enough, you may override other extension preferences.
+// set this to true if you need to prevent this.
+var disambiguatePrefs   = true;
+
+// Editable Items End
+
+var jarName             = name + ".jar";
+var jarFolder           = "content" + packageDir
+var error               = null;
+
+var folder              = getFolder("Profile", "chrome");
+var prefFolder          = getFolder(getFolder("Program", "defaults"), "pref");
+var compFolder          = getFolder("Components");
+var searchFolder        = getFolder("Plugins");
+
+var existsInApplication = File.exists(getFolder(getFolder("chrome"), jarName));
+var existsInProfile     = File.exists(getFolder(folder, jarName));
+
+var contentFlag         = CONTENT | PROFILE_CHROME;
+var localeFlag          = LOCALE | PROFILE_CHROME;
+var skinFlag            = SKIN | PROFILE_CHROME;
+
+// If the extension exists in the application folder or it doesn't exist
+// in the profile folder and the user doesn't want it installed to the
+// profile folder
+if(existsInApplication ||
+    (!existsInProfile &&
+      !confirm( "Do you want to install the " + displayName +
+                " extension into your profile folder?\n" +
+                "(Cancel will install into the application folder)")))
+{
+    contentFlag = CONTENT | DELAYED_CHROME;
+    folder      = getFolder("chrome");
+    localeFlag  = LOCALE | DELAYED_CHROME;
+    skinFlag    = SKIN | DELAYED_CHROME;
+}
+
+initInstall(displayName, name, version);
+setPackageFolder(folder);
+error = addFile(name, version, "chrome/" + jarName, folder, null);
+
+// If adding the JAR file succeeded
+if(error == SUCCESS)
+{
+    folder = getFolder(folder, jarName);
+
+    registerChrome(contentFlag, folder, jarFolder);
+    for (var i = 0; i < locales.length; i++) {
+        registerChrome(localeFlag, folder, "locale/" + locales[i] + localeDir);
+    }
+
+    for (var i = 0; i < skins.length; i++) {
+        registerChrome(skinFlag, folder, "skin/" + skins[i] + skinDir);
+    }
+
+    for (var i = 0; i < prefs.length; i++) {
+        if (!disambiguatePrefs) {
+            addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
+                prefFolder, prefs[i], true);
+        } else {
+            addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
+                prefFolder, name + "-" + prefs[i], true);
+        }
+    }
+
+    for (var i = 0; i < components.length; i++) {
+        addFile(name + " Components", version, "components/" + components[i],
+            compFolder, components[i], true);
+    }
+
+    for (var i = 0; i < searchPlugins.length; i++) {
+        addFile(name + " searchPlugins", version, "searchplugins/" + searchPlugins[i],
+            searchFolder, searchPlugins[i], true);
+    }
+
+    error = performInstall();
+
+    // If the install failed
+    if(error != SUCCESS && error != REBOOT_NEEDED)
+    {
+        displayError(error);
+    	cancelInstall(error);
+    }
+    else
+    {
+        alert("The installation of the " + displayName + " extension succeeded.");
+    }
+}
+else
+{
+    displayError(error);
+	cancelInstall(error);
+}
+
+// Displays the error message to the user
+function displayError(error)
+{
+    // If the error code was -215
+    if(error == READ_ONLY)
+    {
+        alert("The installation of " + displayName +
+            " failed.\nOne of the files being overwritten is read-only.");
+    }
+    // If the error code was -235
+    else if(error == INSUFFICIENT_DISK_SPACE)
+    {
+        alert("The installation of " + displayName +
+            " failed.\nThere is insufficient disk space.");
+    }
+    // If the error code was -239
+    else if(error == CHROME_REGISTRY_ERROR)
+    {
+        alert("The installation of " + displayName +
+            " failed.\nChrome registration failed.");
+    }
+    else
+    {
+        alert("The installation of " + displayName +
+            " failed.\nThe error code is: " + error);
+    }
+}
