diff -u8pdNr orig-031/chrome/content/contents.rdf exten-031/chrome/content/contents.rdf
--- orig-031/chrome/content/contents.rdf	2008-10-08 11:12:34.000000000 +0200
+++ exten-031/chrome/content/contents.rdf	2009-02-28 12:02:18.000000000 +0100
@@ -38,24 +38,33 @@
 <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
             xmlns:chrome="http://www.mozilla.org/rdf/chrome#"> 
 
   <RDF:Seq about="urn:mozilla:package:root"> 
     <RDF:li resource="urn:mozilla:package:tinderstatus"/> 
   </RDF:Seq> 
 
   <RDF:Description about="urn:mozilla:package:tinderstatus" 
-        chrome:displayName="Mozilla Tinderstatus Extension" 
+        chrome:displayName="Tinderstatus Extended" 
         chrome:author="Myk Melez" 
         chrome:name="tinderstatus"
         chrome:extension="true"
         chrome:description="icon displaying the status of Mozilla tinderboxen"> 
   </RDF:Description>
 
   <RDF:Seq about="urn:mozilla:overlays">
     <RDF:li resource="chrome://navigator/content/navigator.xul"/>
+    <RDF:li resource="chrome://calendar/content/calendar.xul"/>
+    <RDF:li resource="chrome://sunbird/content/calendar.xul"/>
   </RDF:Seq>
 
   <RDF:Seq about="chrome://navigator/content/navigator.xul">
     <RDF:li>chrome://tinderstatus/content/overlay.xul</RDF:li>
   </RDF:Seq>
 
+  <RDF:Seq about="chrome://calendar/content/calendar.xul">
+    <RDF:li>chrome://tinderstatus/content/overlay.xul</RDF:li>
+  </RDF:Seq>
+  <RDF:Seq about="chrome://sunbird/content/calendar.xul">
+    <RDF:li>chrome://tinderstatus/content/overlay.xul</RDF:li>
+  </RDF:Seq>
+
 </RDF:RDF>
diff -u8pdNr orig-031/chrome/content/overlay.xul exten-031/chrome/content/overlay.xul
--- orig-031/chrome/content/overlay.xul	2008-12-29 12:56:38.000000000 +0100
+++ exten-031/chrome/content/overlay.xul	2009-04-09 01:06:44.000000000 +0200
@@ -30,20 +30,24 @@
    - 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
    - decision by deleting the provisions above and replace them with the notice
    - and other provisions required by the LGPL or the GPL. 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 ***** -->
-<?xml-stylesheet href="chrome://tinderstatus/content/tinderstatus.css" type="text/css"?> 
+<?xml-stylesheet href="chrome://tinderstatus/content/tinderstatus.css" type="text/css"?>
+
+<!DOCTYPE overlay SYSTEM "chrome://tinderstatus/locale/overlay.dtd">
+
 <overlay id="tinderstatusOverlay" 
          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
+  <script type="application/x-javascript" src="chrome://global/content/strres.js"/>
   <script type="application/x-javascript" src="chrome://tinderstatus/content/tinderstatus.js" />
 
   <statusbar id="status-bar">
     <!-- We use a box within the statusbarpanel instead of just treating 
        - the panel like a button so we can obtain native appearance on the panel
        - with "-moz-appearance: statusbarpanel" while still being able to style 
        - the background color of the box to reflect build status. -->
 
@@ -52,27 +56,29 @@
       <box id="tinderstatus-box" class="tinderstatus-box"
            onclick="loadTinderboxURI(event);" buildstatus="none"
            context="tinderstatus-context" tooltip="tinderstatus-tooltip">
          <image class="tinderstatus-icon" treestatus="none"/>
       </box>
 
       <popupset>
         <menupopup id="tinderstatus-context">
-          <menuitem id="tinderstatus-open-tree" label="Open Tree:"
+          <menuitem id="tinderstatus-open-tree" label="&tinderstatus.context.opentree;"
                     disabled="true"/>
           <menuseparator id="tinderstatus-separator"/>
-          <menuitem id="tinderstatus-prefs" label="Options" accesskey="p"
+          <menuitem id="tinderstatus-prefs" label="&tinderstatus.context.preferences;"
+                    accesskey="&tinderstatus.context.preferences.accesskey;"
                     oncommand="openTinderstatusPreferences();"/>
-          <menuitem id="tinderstatus-refresh" label="Refresh Now" accesskey="R"
+          <menuitem id="tinderstatus-refresh" label="&tinderstatus.context.refresh.now;"
+                    accesskey="&tinderstatus.context.refresh.now.accesskey;"
                     oncommand="refreshTinderboxenStatus();"/>
         </menupopup>
 
         <tooltip id="tinderstatus-tooltip">
-          <description value="No status retrieved yet."/>
+          <description value="&tinderstatus.tooltip;"/>
           <description/>
         </tooltip>
       </popupset>
 
     </statusbarpanel>
 
   </statusbar>
 
diff -u8pdNr orig-031/chrome/content/prefs.js exten-031/chrome/content/prefs.js
--- orig-031/chrome/content/prefs.js	2009-03-17 14:49:40.000000000 +0100
+++ exten-031/chrome/content/prefs.js	2009-04-08 22:16:40.000000000 +0200
@@ -37,16 +37,21 @@
 if (!Cc)
   var Cc = Components.classes;
 if (!Ci)
   var Ci = Components.interfaces;
 
 var gPrefService = Cc["@mozilla.org/preferences-service;1"]
                    .getService(Ci.nsIPrefService);
 var gPrefBranch = gPrefService.getBranch("extensions.tinderstatus.");
+var gPrefDefaultBranch = gPrefService.getDefaultBranch("extensions.tinderstatus.");
+var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+              .getService(Components.interfaces.nsIPromptService);
+
+var bundle = srGetStrBundle("chrome://tinderstatus/locale/tinderstatus.properties");
 
 const kNumWatchLists = 10;
 
 function onLoadTinderstatusPrefsPane()
 {
   var gotoTreePopup = document.getElementById("gotoTreePopup");
   var fullList = gPrefBranch.getComplexValue("fullList",
                                              Ci.nsISupportsString).data;
@@ -104,8 +109,95 @@ function syncToWatchList(aElement)
   var wlArray = [];
   for (var i = 0; i < aElement.getRowCount(); ++i) {
     var wlNode = aElement.getItemAtIndex(i);
     if (wlNode.checked)
       wlArray.push(wlNode.id);
   }
   return wlArray.join(",");
 }
+
+function tinderstatus_showhideTinderboxesDialog() {
+    document.documentElement.openSubDialog("chrome://tinderstatus/content/showhideTinderboxes.xul", "chrome", "add");
+}
+
+function tinderstatus_clearWatchList() {
+  var oldList = document.getElementById("watchList");
+  var oldList1 = document.getElementById("watchList1");
+  var oldList2 = document.getElementById("watchList2");
+  var oldList3 = document.getElementById("watchList3");
+  var oldList4 = document.getElementById("watchList4");
+  var oldList5 = document.getElementById("watchList5");
+  var oldList6 = document.getElementById("watchList6");
+  var oldList7 = document.getElementById("watchList7");
+  var oldList8 = document.getElementById("watchList8");
+  var oldList9 = document.getElementById("watchList9");
+  while(oldList.hasChildNodes()){
+    oldList.removeChild(oldList.firstChild);
+  }
+  while(oldList1.hasChildNodes()){
+    oldList1.removeChild(oldList1.firstChild);
+  }
+  while(oldList2.hasChildNodes()){
+    oldList2.removeChild(oldList2.firstChild);
+  }
+  while(oldList3.hasChildNodes()){
+    oldList3.removeChild(oldList3.firstChild);
+  }
+  while(oldList4.hasChildNodes()){
+    oldList4.removeChild(oldList4.firstChild);
+  }
+  while(oldList5.hasChildNodes()){
+    oldList5.removeChild(oldList5.firstChild);
+  }
+  while(oldList6.hasChildNodes()){
+    oldList6.removeChild(oldList6.firstChild);
+  }
+  while(oldList7.hasChildNodes()){
+    oldList7.removeChild(oldList7.firstChild);
+  }
+  while(oldList8.hasChildNodes()){
+    oldList8.removeChild(oldList8.firstChild);
+  }
+  while(oldList9.hasChildNodes()){
+    oldList9.removeChild(oldList9.firstChild);
+  }
+}
+
+function tinderstatus_resetFullList() {
+  var defaultList = gPrefDefaultBranch.getComplexValue("fullList",
+                                           Ci.nsISupportsString).data;
+  void gPrefBranch.setCharPref("fullList",defaultList);
+}
+
+function tinderstatus_clearGotoTreePopup() {
+  var oldList = document.getElementById("gotoTreePopup");
+  while(oldList.hasChildNodes()){
+    oldList.removeChild(oldList.firstChild);
+  }
+ }
+
+function tinderstatus_resetWatchList() {
+  var defaultList = gPrefDefaultBranch.getComplexValue("watchList",
+                                           Ci.nsISupportsString).data;
+  void gPrefBranch.setCharPref("watchList",defaultList);
+}
+
+function tinderstatus_resetGoToTreePopup() {
+  var defaultList = gPrefDefaultBranch.getComplexValue("gotoTree",
+                                           Ci.nsISupportsString).data;
+  void gPrefBranch.setCharPref("gotoTree",defaultList);
+}
+
+function tinderstatus_resetRefreshTime() {
+  var defaultTime = gPrefDefaultBranch.getIntPref("refreshTime");
+  void gPrefBranch.setIntPref("refreshTime",defaultTime);
+}
+
+function tinderstatus_reset() {
+  tinderstatus_resetRefreshTime()
+  tinderstatus_resetFullList();
+  tinderstatus_clearWatchList();
+  tinderstatus_clearGotoTreePopup();
+  tinderstatus_resetWatchList();
+  tinderstatus_resetGoToTreePopup();
+  onLoadTinderstatusPrefsPane();
+}
diff -u8pdNr orig-031/chrome/content/prefs.xul exten-031/chrome/content/prefs.xul
--- orig-031/chrome/content/prefs.xul	2008-12-29 12:56:38.000000000 +0100
+++ exten-031/chrome/content/prefs.xul	2009-02-28 14:52:10.000000000 +0100
@@ -30,25 +30,29 @@
    - use your version of this file under the terms of the MPL, indicate your
    - decision by deleting the provisions above and replace them with the notice
    - and other provisions required by the LGPL or the GPL. 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 ***** -->
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://tinderstatus/locale/prefs.dtd">
  
 <prefwindow id="tinderstatus-prefs"
-     title="Tinderstatus Preferences"
+     title="&tinderstatus.preferences.title;"
      xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  
-<prefpane id="tinderstatus-prefspane" label="Tinderstatus Settings"
+<prefpane id="tinderstatus-prefspane" label="&tinderstatus.preferences.prefspane.label;"
           onpaneload="onLoadTinderstatusPrefsPane();">
 
   <script type="application/x-javascript"
+          src="chrome://global/content/strres.js"/>
+  <script type="application/x-javascript"
           src="chrome://tinderstatus/content/prefs.js" />
 
   <preferences>
     <preference id="extensions.tinderstatus.watchList"
                 name="extensions.tinderstatus.watchList" type="string"/>
     <preference id="extensions.tinderstatus.watchList1"
                 name="extensions.tinderstatus.watchList1" type="string"/>
     <preference id="extensions.tinderstatus.watchList2"
@@ -72,34 +76,36 @@
     <preference id="extensions.tinderstatus.refreshTime"
                 name="extensions.tinderstatus.refreshTime" type="int"/>
     <preference id="extensions.tinderstatus.numTrees"
                 name="extensions.tinderstatus.numTrees" type="int"/>
   </preferences>
 
   <vbox>
     <hbox>
-      <label control="refreshTime" accesskey="i"
-             value="Time between status updates (minutes):"/>
+      <label control="refreshTime" accesskey="&tinderstatus.preferences.refreshtime.accesskey;"
+             value="&tinderstatus.preferences.refreshtime;"/>
       <textbox id="refreshTime" type="number" size="2" min="1" max="60"
                preference="extensions.tinderstatus.refreshTime"/>
     </hbox>
 
-    <label control="gotoTree" accesskey="C"
-           value="Clicking tinderstatus icon loads the tree:"/>
+    <hbox>
+      <label control="gotoTree" accesskey="&tinderstatus.preferences.gototree.accesskey;"
+             value="&tinderstatus.preferences.gototree;"/>
+    </hbox>
     <hbox align="right">
       <menulist id="gotoTree" preference="extensions.tinderstatus.gotoTree"
                 flex="0">
         <menupopup id="gotoTreePopup"/>
       </menulist>
     </hbox>
 
     <hbox>
-      <label control="numTrees" accesskey="N"
-             value="Number of Status Icons"/>
+      <label control="numTrees" accesskey="&tinderstatus.preferences.numberstatusicons.accesskey;"
+             value="&tinderstatus.preferences.numberstatusicons;"/>
       <textbox id="numTrees" type="number" size="2" min="1" max="10"
                preference="extensions.tinderstatus.numTrees"/>
     </hbox>
 
     <spacer flex="1"/>
 
     <!-- The preferences system doesn't seem to want to be dynamic in swapping
          which elements preferences belong to. Therefore we have to do this
@@ -115,86 +121,104 @@
         <tab label="7" id="tab6"/>
         <tab label="8" id="tab7"/>
         <tab label="9" id="tab8"/>
         <tab label="10" id="tab9"/>
       </tabs>
 
       <tabpanels>
         <vbox>
-          <label control="watchList" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
 
           <!-- onclick/onkeyup used due to the listitems not reporting up that
                they have been changed -->
           <listbox preference="extensions.tinderstatus.watchList" id="watchList"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList1" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList1" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList1" id="watchList1"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList2" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList2" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList2" id="watchList2"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList3" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList3" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList3" id="watchList3"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList4" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList4" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList4" id="watchList4"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList5" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList5" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList5" id="watchList5"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList6" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList6" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList6" id="watchList6"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList7" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList7" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList7" id="watchList7"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList8" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList8" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList8" id="watchList8"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
         <vbox>
-          <label control="watchList9" value="Trees to Watch:" accesskey="T"/>
+          <label control="watchList9" value="&tinderstatus.preferences.watchlist;"
+                 accesskey="&tinderstatus.preferences.watchlist.accesskey;"/>
           <listbox preference="extensions.tinderstatus.watchList9" id="watchList9"
                    onsynctopreference="return syncToWatchList(this);"
                    onclick="userChangedValue(event.target);"
                    onkeyup="userChangedValue(event.target);"/>
 	</vbox>
       </tabpanels>
     </tabbox>
+    <hbox>
+      <button id="ts-addTinderbox-button" label="&tinderstatus.preferences.showhide.tinderboxes.button;"
+              accesskey="&tinderstatus.preferences.showhide.tinderboxes.accesskey;"
+              oncommand="tinderstatus_showhideTinderboxesDialog();"/>
+      <button id="ts-resetWatchList-button" label="&tinderstatus.preferences.resettodefault;"
+              accesskey="&tinderstatus.preferences.resettodefault.accesskey;"
+              oncommand="tinderstatus_reset();"/>
+    </hbox>
   </vbox>
 </prefpane>
 
 </prefwindow>
diff -u8pdNr orig-031/chrome/content/showhideTinderboxes.js exten-031/chrome/content/showhideTinderboxes.js
--- orig-031/chrome/content/showhideTinderboxes.js	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/content/showhideTinderboxes.js	2009-02-28 14:35:16.000000000 +0100
@@ -0,0 +1,111 @@
+if (!Cc)
+  var Cc = Components.classes;
+if (!Ci)
+  var Ci = Components.interfaces;
+
+var gPrefService = Cc["@mozilla.org/preferences-service;1"]
+                   .getService(Ci.nsIPrefService);
+var gPrefBranch = gPrefService.getBranch("extensions.tinderstatus.");
+var gPrefDefaultBranch = gPrefService.getDefaultBranch("extensions.tinderstatus.");
+var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+              .getService(Components.interfaces.nsIPromptService);
+
+var bundle = srGetStrBundle("chrome://tinderstatus/locale/tinderstatus.properties");
+
+function initializeCustomizeWindow()
+{
+  initializeApplicationsList();
+  initializeL10nList();
+}
+
+function initializeApplicationsList()
+{
+  var listApplications = document.getElementById("listApplications");
+  var fullList = gPrefBranch.getComplexValue("fullList",
+                                             Ci.nsISupportsString).data;
+  var fullListApplications = gPrefBranch.getComplexValue("fullList.applications",
+                                             Ci.nsISupportsString).data;
+  fullList = fullList.split(",");
+  var applicationsList = fullListApplications.split(",");
+
+  var item;
+
+  for (var i = 0; i < applicationsList.length; ++i) {
+    // Add the item to the watch list
+    item = document.createElement("listitem");
+    item.setAttribute("id", applicationsList[i]);
+    item.setAttribute("label", applicationsList[i]);
+    item.setAttribute("type", "checkbox");
+    item.setAttribute("checked", fullList.indexOf(applicationsList[i]) != -1);
+    listApplications.appendChild(item);
+  }
+}
+
+function initializeL10nList()
+{
+  var listL10n = document.getElementById("listL10n");
+  var fullList = gPrefBranch.getComplexValue("fullList",
+                                             Ci.nsISupportsString).data;
+  var fullListMozillaL10n = gPrefBranch.getComplexValue("fullList.localizations",
+                                             Ci.nsISupportsString).data;
+  fullList = fullList.split(",");
+  var mozillaL10nList = fullListMozillaL10n.split(",");
+
+  var item;
+
+  for (var i = 0; i < mozillaL10nList.length; ++i) {
+    // Add the item to the watch list
+    item = document.createElement("listitem");
+    item.setAttribute("id", mozillaL10nList[i]);
+    item.setAttribute("label", mozillaL10nList[i]);
+    item.setAttribute("type", "checkbox");
+    item.setAttribute("checked", fullList.indexOf(mozillaL10nList[i]) != -1);
+    listL10n.appendChild(item);
+  }
+}
+
+function syncToFullListApplications()
+{
+  var syncItems = document.getElementById("listApplications");
+  var syncItemsChecked = new Array();
+  syncItemsChecked = syncItems.getElementsByAttribute( "checked", true );
+  var syncApplications = new Array();
+  for (var i = 0; i < syncItemsChecked.length; ++i) {
+    var syncNode = syncItemsChecked[i];
+  	syncApplications.push(syncNode.id);
+  }
+  return syncApplications;
+}
+
+function syncToFullListL10n()
+{
+  var syncItems = document.getElementById("listL10n");
+  var syncItemsChecked = new Array();
+  syncItemsChecked = syncItems.getElementsByAttribute( "checked", true );
+  var syncL10n = new Array();
+  for (var i = 0; i < syncItemsChecked.length; ++i) {
+    var syncNode = syncItemsChecked[i];
+      syncL10n.push(syncNode.id);
+  }
+  return syncL10n;
+}
+
+function mergeAndSync()
+{
+  var syncArray = [];
+  var syncApplications = syncToFullListApplications();
+  var syncL10n = syncToFullListL10n();
+  syncArray = syncApplications.concat(syncL10n);
+  syncArray.sort();
+  syncArray.join(",");
+  // Workaround for Win: Write changes immediately
+  void gPrefBranch.setCharPref("fullList",syncArray);
+  return syncArray;
+}
+
+function refreshParent()
+{
+  opener.tinderstatus_clearWatchList();
+  opener.tinderstatus_clearGotoTreePopup();
+  opener.onLoadTinderstatusPrefsPane();
+}
diff -u8pdNr orig-031/chrome/content/showhideTinderboxes.xul exten-031/chrome/content/showhideTinderboxes.xul
--- orig-031/chrome/content/showhideTinderboxes.xul	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/content/showhideTinderboxes.xul	2008-04-03 00:09:42.000000000 +0200
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://tinderstatus/locale/showhideTinderboxes.dtd">
+
+<prefwindow
+        id="tinderstatus-showhide-tinderboxes-dialog"
+        title="&tinderstatus.showhide.tinderboxes.title;"
+        buttons="accept"
+        type="child"
+        ondialogaccept="refreshParent();"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<prefpane id="tinderstatus-showhide-tinderboxes-prefspane" label="&tinderstatus.showhide.tinderboxes.caption;"
+          onpaneload="initializeCustomizeWindow();">
+
+  <script type="application/x-javascript"
+          src="chrome://global/content/strres.js"/>
+  <script type="application/x-javascript"
+          src="chrome://tinderstatus/content/prefs.js" />
+  <script type="application/x-javascript"
+          src="chrome://tinderstatus/content/showhideTinderboxes.js" />
+
+  <preferences>
+    <preference id="extensions.tinderstatus.fullList"
+                name="extensions.tinderstatus.fullList" type="string"/>
+  </preferences>
+
+  <vbox flex="1">
+  <hbox>
+
+    <groupbox orient="vertical">
+      <caption label="&tinderstatus.showhide.tinderboxes.applications;"/>
+        <listbox preference="extensions.tinderstatus.fullList" id="listApplications" rows="10"
+               onsynctopreference="return mergeAndSync();"
+               onclick="userChangedValue(event.target);"
+               onkeyup="userChangedValue(event.target);"/>
+    </groupbox>
+
+    <groupbox orient="vertical">
+      <caption label="&tinderstatus.showhide.tinderboxes.localizations;"/>
+        <listbox preference="extensions.tinderstatus.fullList" id="listL10n" rows="10"
+               onsynctopreference="return mergeAndSync();"
+               onclick="userChangedValue(event.target);"
+               onkeyup="userChangedValue(event.target);"/>
+    </groupbox>
+  </hbox>
+
+  <hbox>
+    <vbox>
+      <description>&tinderstatus.showhide.tinderboxes.info1;</description>
+    </vbox>
+  </hbox>
+  <hbox>
+    <vbox>
+      <description>&tinderstatus.showhide.tinderboxes.info2;</description>
+    </vbox>
+  </hbox>
+</vbox>
+
+</prefpane>
+
+</prefwindow>
diff -u8pdNr orig-031/chrome/content/tinderstatus.css exten-031/chrome/content/tinderstatus.css
--- orig-031/chrome/content/tinderstatus.css	2008-12-29 12:56:38.000000000 +0100
+++ exten-031/chrome/content/tinderstatus.css	2009-02-28 12:27:14.000000000 +0100
@@ -41,16 +41,17 @@ statusbarpanel#tinderstatus-panel {
   -moz-box-align: stretch;
 }
 
 .tinderstatus-box {
   background-color: grey;
   
   /* Center-align the enclosed icon so it doesn't stretch to fill the box. */
   -moz-box-align: center;
+  min-width: 14px;
 
   padding: 0px 2px 0px 2px;
 /*
   max-width: 7px;*/
 }
 
 /* Style the background color of the box to reflect build status. */
 .tinderstatus-box[buildstatus="success"] {
diff -u8pdNr orig-031/chrome/content/tinderstatus.js exten-031/chrome/content/tinderstatus.js
--- orig-031/chrome/content/tinderstatus.js	2009-03-17 15:06:46.000000000 +0100
+++ exten-031/chrome/content/tinderstatus.js	2009-04-09 01:11:36.000000000 +0200
@@ -43,16 +43,31 @@ if (!Cc)
   var Cc = Components.classes;
 if (!Ci)
   var Ci = Components.interfaces;
 
 // FIXME: don't set a bunch of non-namespaced global variables.
 
 var gXMLHttpRequest;
 
+var ioservice = Cc["@mozilla.org/network/io-service;1"]
+  .getService(Ci.nsIIOService);
+var extps = Cc["@mozilla.org/uriloader/external-protocol-service;1"]
+  .getService(Components.interfaces.nsIExternalProtocolService);
+var appInfo = Cc['@mozilla.org/xre/app-info;1']
+  .getService(Components.interfaces.nsIXULAppInfo);
+
+var bundle = srGetStrBundle("chrome://tinderstatus/locale/tinderstatus.properties");
+var preferencesLabel = bundle.GetStringFromName( "preferencesLabel" );
+var noTinderboxSelected = bundle.GetStringFromName( "noTinderboxSelected" );
+var lastUpdate = bundle.GetStringFromName( "lastUpdate" );
+var tinderboxesAllGreen = bundle.GetStringFromName( "tinderboxesAllGreen" );
+var tinderboxesUnknownStatus = bundle.GetStringFromName( "tinderboxesUnknownStatus" );
+var tooltipWatching = bundle.GetStringFromName( "tooltipWatching" );
+
 // The order in this list somewhat matters, as the first item is the one
 // that gets loaded when you click on the statusbar icon.
 var gTinderboxIndex = -1;
 var gTinderboxText  = "";
 var gTinderboxURIIndex = 0;
 var gTinderboxIntervalID = 0;
 var gTinderboxLastUpdate = null;
 
@@ -89,16 +104,56 @@ var Tinderstatus = {
                          map(function(v) v == "Firefox3.1" ? "Firefox3.5" : v).   // Firefox3.1 -> Firefox3.5
                          sort().                                                  // sort to enable duplicate filtration
                          filter(function(v, i, a) i == 0 || v != a[i-1]).         // remove duplicates (i.e. Firefox3.5 twice)
                          join(",");                                               // join into string of trees
           this._prefs.setComplexValue(watchList, Ci.nsISupportsString, newWatchList);
         }
         watchList = "watchList" + ++i;
       }
+	  
+	  var i = 0, fullList = "fullList";
+	  var oldFullList = this._prefs.getComplexValue("fullList",
+                                                Ci.nsISupportsString).data;
+	  var newFullList = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
+      newFullList.data =
+        oldFullList.split(",").
+                         map(function(v) v == "Firefox3.1" ? "Firefox3.5" : v).
+                         sort().
+                         filter(function(v, i, a) i == 0 || v != a[i-1]).
+                         join(",");
+      this._prefs.setComplexValue(fullList, Ci.nsISupportsString, newFullList);
+      fullList = "fullList" + ++i;
+	  
+	  var i = 0, fullListApplications = "fullList.applications";
+	  var oldFullListApplications = this._prefs.getComplexValue("fullList.applications",
+                                                Ci.nsISupportsString).data;
+	  var newFullListApplications = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
+      newFullListApplications.data =
+        oldFullListApplications.split(",").
+                         map(function(v) v == "Firefox3.1" ? "Firefox3.5" : v).
+                         sort().
+                         filter(function(v, i, a) i == 0 || v != a[i-1]).
+                         join(",");
+      this._prefs.setComplexValue(fullListApplications, Ci.nsISupportsString, newFullListApplications);
+      fullListApplications = "fullList.applications" + ++i;
+	  
+  	  var i = 0, gotoTree = "gotoTree";
+	  var oldGotoTree = this._prefs.getComplexValue("gotoTree",
+                                                Ci.nsISupportsString).data;
+	  var newGotoTree = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
+      newGotoTree.data =
+        oldGotoTree.split(",").
+                         map(function(v) v == "Firefox3.1" ? "Firefox3.5" : v).
+                         sort().
+                         filter(function(v, i, a) i == 0 || v != a[i-1]).
+                         join(",");
+      this._prefs.setComplexValue(gotoTree, Ci.nsISupportsString, newGotoTree);
+      gotoTree = "gotoTree" + ++i;
+	  
       this._prefs.setBoolPref("renamed_Firefox3.1_to_Firefox3.5", true);
     }
 
     this._numTrees = this._prefs.getIntPref("numTrees");
     // Must have at least one tree.
     if (this._numTrees <= 0)
       this._numTrees = 1;
 
@@ -172,17 +227,17 @@ var Tinderstatus = {
 	prefValue =
           this._prefs.getComplexValue(i > 0 ? "watchList" + i : "watchList",
                                       Ci.nsISupportsString).data;
       }
       catch (e) { }
 
       this._treeBoxes[i].trees = prefValue;
       this._treeBoxes[i].tooltip
-          .childNodes[1].setAttribute("value", "Watching: " + prefValue);
+          .childNodes[1].setAttribute("value", tooltipWatching + prefValue);
       newList = newList.concat(prefValue.split(","));
     }
 
     // Now strip out any duplicates
     this._internalTinderboxQueryList = [];
     for (i = 0; i < newList.length; ++i) {
       if (this._internalTinderboxQueryList.indexOf(newList[i], 0) < 0)
 	this._internalTinderboxQueryList.push(newList[i]);
@@ -245,31 +300,29 @@ var tinderstatusPrefObserver = 
         break;
     }
   }
 };
 
 function initializeTinderstatus() {
   Tinderstatus.init();
 
-  var appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
-
   // If we're running in SeaMonkey and the version is less than 2.*, then the
   // options dialog won't work, so disable the menu option.
   if (appInfo.ID == "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}") {
     var versionChecker = Cc["@mozilla.org/xpcom/version-comparator;1"]
       .getService(Ci.nsIVersionComparator);
 
     if (versionChecker.compare(appInfo.version, "2.0a1pre") < 0)
       document.getElementById("tinderstatus-prefs").hidden = true;
   }
 
   // If we're not on windows, use preferences for the menu instead of Options.
   if (navigator.platform.toLowerCase().indexOf('win') == -1)
-    document.getElementById("tinderstatus-prefs").label = "Preferences";
+    document.getElementById("tinderstatus-prefs").label = preferencesLabel;
 
   // Set up the tree icons and prefs
   Tinderstatus.updateTreeIconsAndPrefs();
 
   // Kick off the first update.
   refreshTinderboxenStatus();
 
   // Setup the menu
@@ -290,17 +343,17 @@ function setUpTinderboxMenuPopup() {
 
   // Get the full list of tinderboxes that we know about.
   var fullList;
 
   try {
     fullList = Tinderstatus._prefs.getComplexValue("fullList", Ci.nsISupportsString).data;
   }
   catch (ex) {
-    fullList = "Bugzilla,Camino,Firefox,Firefox3.0,Firefox3.5,Firefox-Ports,Mobile,SeaMonkey,SeaMonkey-Ports,Sunbird,Thunderbird,Thunderbird3.0,XULRunner";
+    fullList = "Bugzilla,Camino,Firefox,Firefox-Ports,Firefox3.0,Firefox3.5,Mobile,SeaMonkey,SeaMonkey-Ports,Sunbird,Thunderbird,Thunderbird3.0,XULRunner";
   }
 
   fullList = fullList.split(",");
 
   // Now add the tinderboxes onto the menu
   var item;
   for (var i = 0; i < fullList.length; ++i) {
     item = document.createElement("menuitem");
@@ -369,23 +422,37 @@ function loadTinderboxURI(evt) {
   }
   catch (ex) {
     // If we can't get the pref, set to the default
     tinderboxToLoad = "Firefox";
   }
 
   if (tinderboxToLoad != "") {
     var url = "http://tinderbox.mozilla.org/" + tinderboxToLoad + "/";
-    if (!handleLinkClick(evt, url, null))
-      loadURI(url);
+      if(appInfo.name == 'Sunbird') {
+        var uriTinderbox = ioservice.newURI(url, null, null);
+        extps.loadURI(uriTinderbox, null);
+        }
+      else {
+        if (!handleLinkClick(evt, url, null)) {
+          loadURI(url);
+        }
+    }
   }
 }
 
 function loadTinderboxPage(pageName) {
-  loadURI("http://tinderbox.mozilla.org/" + pageName + "/");
+  var url = "http://tinderbox.mozilla.org/" + pageName + "/";
+  if(appInfo.name == 'Sunbird') {
+    var uriTinderbox = ioservice.newURI(url, null, null);
+    extps.loadURI(uriTinderbox, null);
+  }
+  else {
+    loadURI(url);
+  }
 }
 
 function refreshTinderboxenStatus() {
   // Check we aren't currently doing an update
   if (gTinderboxIndex != -1)
     return;
 
   Tinderstatus.updateCurrentTinderboxList();
@@ -398,17 +465,17 @@ function refreshTinderboxenStatus() {
  * Request a tinderbox summary from one tree.
  */
 function getTinderboxStatus() {
   // If no items selected, just show nothing.
   if (Tinderstatus.tinderboxQueryList.length == 0) {
     document.getElementById('tinderstatus-box')
             .setAttribute("buildstatus", "none");
 
-    //    setTinderboxStatus("No tinderboxes selected.");
+    //    setTinderboxStatus(noTinderboxSelected);
     gTinderboxURIIndex = 0;
     return;
   }
 
   gTinderboxIndex++;
   if (gTinderboxIndex == Tinderstatus.tinderboxQueryList.length) {
     return;
   }
@@ -429,17 +496,17 @@ function handleRequestError() {
   gTinderboxIndex = -1;
   gTinderboxText = "";
   Tinderstatus._tinderboxResults = {};
 }
 
 function getSetLastUpdated() {
   gTinderboxLastUpdate = new Date();
 
-  var result = "Last Updated: ";
+  var result = lastUpdate;
 
   if (gTinderboxLastUpdate.getHours() < 10)
     result += "0";
   
   result += gTinderboxLastUpdate.getHours();
 
   result += gTinderboxLastUpdate.getMinutes() < 10 ? ":0" : ":";
 
@@ -529,22 +596,22 @@ function displayTinderboxStatus()
       box.setAttribute("buildstatus", "busted");
     }
     else if (reducedText.indexOf("testfailed") != -1) {
       re = /.*testfailed/g;
       fillTinderboxStatus(tooltip, reducedText, re);
       box.setAttribute("buildstatus", "testfailed");
     }
     else if (reducedText.indexOf("success") != -1) {
-      setTinderboxStatus(tooltip, "All tinderboxes are green.");
+      setTinderboxStatus(tooltip, tinderboxesAllGreen);
       box.setAttribute("buildstatus", "success");
       gTinderboxURIIndex = 0;
     }
     else {
-      setTinderboxStatus(tooltip, "Unknown tinderbox status.");
+      setTinderboxStatus(tooltip, tinderboxesUnknownStatus);
       box.setAttribute("buildstatus", "none");
       gTinderboxURIIndex = 0;
     }
 
     // Change the icon superimposed on the box to reflect tree status.
     var icon = box.firstChild;
     if (reducedText.indexOf("closed") != -1)
       icon.setAttribute("treestatus", "closed");
diff -u8pdNr orig-031/chrome/locale/de/overlay.dtd exten-031/chrome/locale/de/overlay.dtd
--- orig-031/chrome/locale/de/overlay.dtd	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/de/overlay.dtd	2008-01-13 01:56:00.000000000 +0100
@@ -0,0 +1,6 @@
+<!ENTITY tinderstatus.context.opentree "Offener Verzeichnisbaum:">
+<!ENTITY tinderstatus.context.preferences "Einstellungen…">
+<!ENTITY tinderstatus.context.preferences.accesskey "E">
+<!ENTITY tinderstatus.context.refresh.now "Jetzt aktualisieren">
+<!ENTITY tinderstatus.context.refresh.now.accesskey "a">
+<!ENTITY tinderstatus.tooltip "Bislang keine Statusinformationen erhalten.">
diff -u8pdNr orig-031/chrome/locale/de/prefs.dtd exten-031/chrome/locale/de/prefs.dtd
--- orig-031/chrome/locale/de/prefs.dtd	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/de/prefs.dtd	2009-02-28 14:48:50.000000000 +0100
@@ -0,0 +1,14 @@
+<!ENTITY tinderstatus.preferences.title "Tinderstatus Extended - Einstellungen">
+<!ENTITY tinderstatus.preferences.prefspane.label "Tinderstatus Extended - Einstellungen">
+<!ENTITY tinderstatus.preferences.refreshtime "Intervall für Status-Aktualisierungen in Minuten:">
+<!ENTITY tinderstatus.preferences.refreshtime.accesskey "i">
+<!ENTITY tinderstatus.preferences.gototree "Mit Klick auf das Tinderstatus-Symbol diesen Quellen-Verzeichnisbaum laden:">
+<!ENTITY tinderstatus.preferences.gototree.accesskey "K">
+<!ENTITY tinderstatus.preferences.watchlist "Zu beobachtende Quellen-Verzeichnisbäume auswählen: ">
+<!ENTITY tinderstatus.preferences.watchlist.accesskey "T">
+<!ENTITY tinderstatus.preferences.showhide.tinderboxes.button "Liste anpassen…">
+<!ENTITY tinderstatus.preferences.showhide.tinderboxes.accesskey "L">
+<!ENTITY tinderstatus.preferences.resettodefault "Einstellungen zurücksetzen">
+<!ENTITY tinderstatus.preferences.resettodefault.accesskey "z">
+<!ENTITY tinderstatus.preferences.numberstatusicons "Anzahl Statusleisten-Symbole:">
+<!ENTITY tinderstatus.preferences.numberstatusicons.accesskey "N">
diff -u8pdNr orig-031/chrome/locale/de/showhideTinderboxes.dtd exten-031/chrome/locale/de/showhideTinderboxes.dtd
--- orig-031/chrome/locale/de/showhideTinderboxes.dtd	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/de/showhideTinderboxes.dtd	2008-07-04 14:26:22.000000000 +0200
@@ -0,0 +1,6 @@
+<!ENTITY tinderstatus.showhide.tinderboxes.title "Tinderbox-Liste bearbeiten">
+<!ENTITY tinderstatus.showhide.tinderboxes.caption "Tinderbox-Liste bearbeiten">
+<!ENTITY tinderstatus.showhide.tinderboxes.applications "Anwendungen, Diverse">
+<!ENTITY tinderstatus.showhide.tinderboxes.localizations "Lokalisierungen">
+<!ENTITY tinderstatus.showhide.tinderboxes.info1 "Hier kann festgelegt werden, welche Quellen-Verzeichnisbäume im">
+<!ENTITY tinderstatus.showhide.tinderboxes.info2 " Einstellungsdialog für die Beobachtung zur Auswahl stehen sollen.">
diff -u8pdNr orig-031/chrome/locale/de/tinderstatus.properties exten-031/chrome/locale/de/tinderstatus.properties
--- orig-031/chrome/locale/de/tinderstatus.properties	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/de/tinderstatus.properties	2009-02-28 14:44:48.000000000 +0100
@@ -0,0 +1,7 @@
+extensions.{CE49928A-7804-4688-8C9E-ABCBC7FB9BCF}.description=Statusleisten-Symbol, das über den Status von Mozilla-Tinderboxen informiert.
+preferencesLabel=Einstellungen…
+noTinderboxSelected=Keine Tinderbox ausgewählt.
+lastUpdate=Letzte Aktualisierung:
+tinderboxesAllGreen=Alle Tinderboxen sind grün.
+tinderboxesUnknownStatus=Unbekannter Tinderbox-Status.
+tooltipWatching=Beobachte: 
diff -u8pdNr orig-031/chrome/locale/en-US/overlay.dtd exten-031/chrome/locale/en-US/overlay.dtd
--- orig-031/chrome/locale/en-US/overlay.dtd	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/en-US/overlay.dtd	2008-01-13 01:59:00.000000000 +0100
@@ -0,0 +1,6 @@
+<!ENTITY tinderstatus.context.opentree "Open Tree:">
+<!ENTITY tinderstatus.context.preferences "Options">
+<!ENTITY tinderstatus.context.preferences.accesskey "O">
+<!ENTITY tinderstatus.context.refresh.now "Refresh now">
+<!ENTITY tinderstatus.context.refresh.now.accesskey "R">
+<!ENTITY tinderstatus.tooltip "No status retrieved yet.">
diff -u8pdNr orig-031/chrome/locale/en-US/prefs.dtd exten-031/chrome/locale/en-US/prefs.dtd
--- orig-031/chrome/locale/en-US/prefs.dtd	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/en-US/prefs.dtd	2009-02-28 14:47:00.000000000 +0100
@@ -0,0 +1,14 @@
+<!ENTITY tinderstatus.preferences.title "Tinderstatus Extended - Preferences">
+<!ENTITY tinderstatus.preferences.prefspane.label "Tinderstatus Extended - Preferences">
+<!ENTITY tinderstatus.preferences.refreshtime "Time between status updates (minutes):">
+<!ENTITY tinderstatus.preferences.refreshtime.accesskey "i">
+<!ENTITY tinderstatus.preferences.gototree "Clicking tinderstatus icon loads the tree:">
+<!ENTITY tinderstatus.preferences.gototree.accesskey "C">
+<!ENTITY tinderstatus.preferences.watchlist "Choose trees to watch: ">
+<!ENTITY tinderstatus.preferences.watchlist.accesskey "T">
+<!ENTITY tinderstatus.preferences.showhide.tinderboxes.button "Customize list…">
+<!ENTITY tinderstatus.preferences.showhide.tinderboxes.accesskey "L">
+<!ENTITY tinderstatus.preferences.resettodefault "Reset settings to default">
+<!ENTITY tinderstatus.preferences.resettodefault.accesskey "d">
+<!ENTITY tinderstatus.preferences.numberstatusicons "Number of Status Icons">
+<!ENTITY tinderstatus.preferences.numberstatusicons.accesskey "N">
diff -u8pdNr orig-031/chrome/locale/en-US/showhideTinderboxes.dtd exten-031/chrome/locale/en-US/showhideTinderboxes.dtd
--- orig-031/chrome/locale/en-US/showhideTinderboxes.dtd	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/en-US/showhideTinderboxes.dtd	2008-07-04 15:14:58.000000000 +0200
@@ -0,0 +1,6 @@
+<!ENTITY tinderstatus.showhide.tinderboxes.title "Edit list of tinderboxes">
+<!ENTITY tinderstatus.showhide.tinderboxes.caption "Edit list of tinderboxes">
+<!ENTITY tinderstatus.showhide.tinderboxes.applications "Applications, Misc">
+<!ENTITY tinderstatus.showhide.tinderboxes.localizations "Localizations">
+<!ENTITY tinderstatus.showhide.tinderboxes.info1 "Choose which trees the options dialog offers to watch.">
+<!ENTITY tinderstatus.showhide.tinderboxes.info2 "">
diff -u8pdNr orig-031/chrome/locale/en-US/tinderstatus.properties exten-031/chrome/locale/en-US/tinderstatus.properties
--- orig-031/chrome/locale/en-US/tinderstatus.properties	1970-01-01 01:00:00.000000000 +0100
+++ exten-031/chrome/locale/en-US/tinderstatus.properties	2009-02-28 14:43:14.000000000 +0100
@@ -0,0 +1,7 @@
+extensions.{CE49928A-7804-4688-8C9E-ABCBC7FB9BCF}.description=Satusbar icon showing the status of Mozilla tinderboxes.
+preferencesLabel=Options…
+noTinderboxSelected=No tinderbox selected.
+lastUpdate=Last Updated: 
+tooltipWatching=Watching: 
+tinderboxesAllGreen=All tinderboxes are green.
+tinderboxesUnknownStatus=Unknown tinderbox status.
diff -u8pdNr orig-031/chrome.manifest exten-031/chrome.manifest
--- orig-031/chrome.manifest	2008-10-08 11:12:34.000000000 +0200
+++ exten-031/chrome.manifest	2009-02-28 12:29:48.000000000 +0100
@@ -1,7 +1,13 @@
-content tinderstatus content/
+content tinderstatus chrome/content/
+locale tinderstatus en-US chrome/locale/en-US/
+locale tinderstatus de chrome/locale/de/
 
 # For Firefox
 overlay chrome://browser/content/browser.xul chrome://tinderstatus/content/overlay.xul
 
 # For SeaMonkey
 overlay chrome://navigator/content/navigator.xul chrome://tinderstatus/content/overlay.xul
+
+# For Sunbird
+overlay chrome://calendar/content/calendar.xul chrome://tinderstatus/content/overlay.xul
+overlay chrome://sunbird/content/calendar.xul chrome://tinderstatus/content/overlay.xul
diff -u8pdNr orig-031/defaults/preferences/tinderstatus.js exten-031/defaults/preferences/tinderstatus.js
--- orig-031/defaults/preferences/tinderstatus.js	2009-03-17 15:00:46.000000000 +0100
+++ exten-031/defaults/preferences/tinderstatus.js	2009-04-08 22:34:12.000000000 +0200
@@ -1,6 +1,8 @@
-pref("extensions.tinderstatus.fullList", "Bugzilla,Camino,Firefox,Firefox3.0,Firefox3.5,Firefox-Ports,Mobile,SeaMonkey,SeaMonkey-Ports,Sunbird,Thunderbird,Thunderbird3.0,XULRunner");
-pref("extensions.tinderstatus.watchList", "Camino,Firefox,Firefox3.0,Firefox3.5,Mobile,SeaMonkey,Thunderbird3.0,XULRunner");
+pref("extensions.{CE49928A-7804-4688-8C9E-ABCBC7FB9BCF}.description", "chrome://tinderstatus/locale/tinderstatus.properties");
+pref("extensions.tinderstatus.fullList", "Bugzilla,Camino,Firefox,Firefox-Ports,Firefox3.0,Firefox3.5,Mobile,SeaMonkey,SeaMonkey-Ports,Sunbird,Thunderbird,Thunderbird3.0,XULRunner");
+pref("extensions.tinderstatus.fullList.applications", "Bugzilla,Bugzilla2.20,Bugzilla2.22,Bugzilla3.0,Bugzilla3.2,Camino,Firefox,Firefox-Ports,Firefox-Staging,Firefox3.0,Firefox3.5,LeakTest,Mobile,Mozilla1.8,Mozilla1.8-SeaMonkey,Mozilla1.8-Staging,Mozilla2,MozillaExperimental,MozillaRelease,MozillaStaging,MozillaTest,MozillaTest-BACKUP,MozillaTestBroken,MozillaTestBroken2,MozillaTry,NSS,NSS-Stable-Branch,SeaMonkey,SeaMonkey-Ports,Sunbird,Sunbird-Mozilla1.8,Testing,Thunderbird,Thunderbird3.0,TraceMonkeyUnitTest,XULRunner");
+pref("extensions.tinderstatus.fullList.localizations", "Mozilla-l10n,Mozilla-l10n-af,Mozilla-l10n-ar,Mozilla-l10n-be,Mozilla-l10n-bg,Mozilla-l10n-bn-IN,Mozilla-l10n-ca,Mozilla-l10n-cs,Mozilla-l10n-da,Mozilla-l10n-de,Mozilla-l10n-el,Mozilla-l10n-en-GB,Mozilla-l10n-en-ZA,Mozilla-l10n-eo,Mozilla-l10n-es-AR,Mozilla-l10n-es-ES,Mozilla-l10n-eu,Mozilla-l10n-fa,Mozilla-l10n-fi,Mozilla-l10n-fr,Mozilla-l10n-fy-NL,Mozilla-l10n-ga-IE,Mozilla-l10n-gu-IN,Mozilla-l10n-he,Mozilla-l10n-hi-IN,Mozilla-l10n-hu,Mozilla-l10n-hy-AM,Mozilla-l10n-id,Mozilla-l10n-it,Mozilla-l10n-ja,Mozilla-l10n-ja-JP-mac,Mozilla-l10n-ka,Mozilla-l10n-kn,Mozilla-l10n-ko,Mozilla-l10n-ku,Mozilla-l10n-lt,Mozilla-l10n-lv,Mozilla-l10n-mk,Mozilla-l10n-ml,Mozilla-l10n-mn,Mozilla-l10n-mr,Mozilla-l10n-ms,Mozilla-l10n-nb-NO,Mozilla-l10n-ne-NP,Mozilla-l10n-nl,Mozilla-l10n-nn-NO,Mozilla-l10n-pa-IN,Mozilla-l10n-pl,Mozilla-l10n-pt-BR,Mozilla-l10n-pt-PT,Mozilla-l10n-ro,Mozilla-l10n-ru,Mozilla-l10n-rw,Mozilla-l10n-si,Mozilla-l10n-sk,Mozilla-l10n-sl,Mozilla-l10n-sq,Mozilla-l10n-sr,Mozilla-l10n-sv-SE,Mozilla-l10n-ta,Mozilla-l10n-ta-LK,Mozilla-l10n-te,Mozilla-l10n-tr,Mozilla-l10n-uk,Mozilla-l10n-vi,Mozilla-l10n-zh-CN,Mozilla-l10n-zh-TW,Mozilla1.8-l10n,Mozilla1.8-l10n-af,Mozilla1.8-l10n-ar,Mozilla1.8-l10n-be,Mozilla1.8-l10n-bg,Mozilla1.8-l10n-ca,Mozilla1.8-l10n-cs,Mozilla1.8-l10n-da,Mozilla1.8-l10n-de,Mozilla1.8-l10n-el,Mozilla1.8-l10n-en-GB,Mozilla1.8-l10n-en-ZA,Mozilla1.8-l10n-es-AR,Mozilla1.8-l10n-es-ES,Mozilla1.8-l10n-eu,Mozilla1.8-l10n-fi,Mozilla1.8-l10n-fr,Mozilla1.8-l10n-fy-NL,Mozilla1.8-l10n-ga-IE,Mozilla1.8-l10n-gu-IN,Mozilla1.8-l10n-he,Mozilla1.8-l10n-hu,Mozilla1.8-l10n-hy-AM,Mozilla1.8-l10n-it,Mozilla1.8-l10n-ja,Mozilla1.8-l10n-ja-JP-mac,Mozilla1.8-l10n-ka,Mozilla1.8-l10n-ko,Mozilla1.8-l10n-ku,Mozilla1.8-l10n-lt,Mozilla1.8-l10n-mk,Mozilla1.8-l10n-mn,Mozilla1.8-l10n-nb-NO,Mozilla1.8-l10n-nl,Mozilla1.8-l10n-nn-NO,Mozilla1.8-l10n-nr,Mozilla1.8-l10n-nso,Mozilla1.8-l10n-pa-IN,Mozilla1.8-l10n-pl,Mozilla1.8-l10n-pt-BR,Mozilla1.8-l10n-pt-PT,Mozilla1.8-l10n-ro,Mozilla1.8-l10n-ru,Mozilla1.8-l10n-sk,Mozilla1.8-l10n-sl,Mozilla1.8-l10n-sq,Mozilla1.8-l10n-ss,Mozilla1.8-l10n-st,Mozilla1.8-l10n-sv-SE,Mozilla1.8-l10n-tn,Mozilla1.8-l10n-tr,Mozilla1.8-l10n-ts,Mozilla1.8-l10n-uk,Mozilla1.8-l10n-ve,Mozilla1.8-l10n-xh,Mozilla1.8-l10n-zh-CN,Mozilla1.8-l10n-zh-TW,Mozilla1.8-l10n-zu");
+pref("extensions.tinderstatus.watchList", "Camino,Firefox,Firefox3.0,Firefox3.5,Mobile,SeaMonkey,Thunderbird,Thunderbird3.0,XULRunner");
 pref("extensions.tinderstatus.gotoTree", "Firefox");
 pref("extensions.tinderstatus.refreshTime", 1);
-pref("extensions.tinderstatus.numTrees", 1);
 pref("extensions.tinderstatus.renamed_Firefox3.1_to_Firefox3.5", false);
diff -u8pdNr orig-031/install.js exten-031/install.js
--- orig-031/install.js	2009-03-17 13:34:14.000000000 +0100
+++ exten-031/install.js	2009-04-08 22:23:24.000000000 +0200
@@ -1,9 +1,9 @@
-initInstall("Mozilla Tinderstatus Extension", "/mozdev/tinderstatus", "0.3.1");
+initInstall("Tinderstatus Extended", "/mozdev/tinderstatus", "0.3.1");
 
 var chromeDir = getFolder("Profile", "chrome");
 
 // Specify the directory into which we're going to install the extension.
 var installDir = getFolder(chromeDir, "tinderstatus");
 setPackageFolder(installDir);
 
 // Specify the directory into which we're going to install the content files,
diff -u8pdNr orig-031/install.rdf exten-031/install.rdf
--- orig-031/install.rdf	2009-03-17 13:35:22.000000000 +0100
+++ exten-031/install.rdf	2009-04-08 22:24:22.000000000 +0200
@@ -1,39 +1,50 @@
 <?xml version="1.0"?>
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 
   <Description about="urn:mozilla:install-manifest">
-    <em:name>Tinderstatus</em:name>
-    <em:id>{a4ebc7e4-5ffe-4811-b9c6-a782bba8c1c2}</em:id>
+    <em:name>Tinderstatus Extended</em:name>
+    <em:id>{CE49928A-7804-4688-8C9E-ABCBC7FB9BCF}</em:id>
     <em:version>0.3.1</em:version>
 
     <em:description>icon showing the status of Mozilla tinderboxen</em:description>
     <em:creator>Myk Melez</em:creator>
     <em:contributor>Alex Vincent</em:contributor>
     <em:contributor>Mark Banner</em:contributor>
     <em:contributor>Frédéric Buclin</em:contributor>
     <em:homepageURL>http://tinderstatus.mozdev.org/</em:homepageURL>
     <em:optionsURL>chrome://tinderstatus/content/prefs.xul</em:optionsURL>
+    <em:updateURL>http://www.nadelundhirn.de/krams/exten/tinderstatus/update.rdf</em:updateURL>
+    <em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ9vts188WYuHxbA5Dmj8H1F7b4JoGolHIQKWVixZfnyQg9Qq2FDjXGwEFAtowO6bXHnB+PuLBD/LpbqcJEcTSjQkziYsjmduiQVQcLcmv6Jc1dN6H0XuOTRDIAmfxVQewjJm8yYQIf6F93MZdPeSZ5gWBl7s29h8WcjMHglLfmwIDAQAB</em:updateKey>
 
     <!-- Firefox -->
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-        <em:minVersion>1.5</em:minVersion>
+        <em:minVersion>3.0pre</em:minVersion>
         <em:maxVersion>3.6a1pre</em:maxVersion>
       </Description>
     </em:targetApplication>
 
     <!-- SeaMonkey -->
     <em:targetApplication>
       <Description>
         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
-        <em:minVersion>1.0</em:minVersion>
+        <em:minVersion>2.0a1</em:minVersion>
         <em:maxVersion>2.0b1</em:maxVersion>
       </Description>
     </em:targetApplication>
 
+    <!-- Sunbird -->
+    <em:targetApplication>
+      <Description>
+        <em:id>{718e30fb-e89b-41dd-9da7-e25a45638b28}</em:id>
+        <em:minVersion>1.0pre</em:minVersion>
+        <em:maxVersion>1.0pre</em:maxVersion>
+      </Description>
+    </em:targetApplication>
+
   </Description>
 
 </RDF>
