diff -u8pdNr 006/chrome/content/calendar-alarm-dialog-overlay.js 007/chrome/content/calendar-alarm-dialog-overlay.js
--- 006/chrome/content/calendar-alarm-dialog-overlay.js	2011-04-28 16:10:09 +0000
+++ 007/chrome/content/calendar-alarm-dialog-overlay.js	2011-07-14 15:04:19 +0000
@@ -1,35 +1,37 @@
+var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+                       .getService(Components.interfaces.nsIWindowMediator);
+
 var gCheckInterval = 12000;
+var gSliderTimeout;
 
 function checkSliderNeed() {
-    let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                       .getService(Components.interfaces.nsIWindowMediator);
     let calAlarmWindow = wm.getMostRecentWindow("Calendar:AlarmWindow");
     let alarmRichlist = calAlarmWindow.document.getElementById("alarm-richlist");
     if (calAlarmWindow && alarmRichlist.hasChildNodes) {
         setupSlider();
     }
 }
 
 function setSliderTimeout() {
     var prefService = Components.classes["@mozilla.org/preferences-service;1"]
                                 .getService(Components.interfaces.nsIPrefBranch);
     try {
         gCheckInterval = prefService.getIntPref("calAlarmSlider.checkInterval");
     }
     catch (ex) {
     }
-    sliderTimeout = setInterval(checkSliderNeed, gCheckInterval);
+    gSliderTimeout = setInterval(checkSliderNeed, gCheckInterval);
     prefService.setBoolPref("calAlarmSlider.timeoutSet", true);
 }
 
 function clearSliderTimeout() {
-    if (sliderTimeout) {
-        window.clearInterval(sliderTimeout);
+    if (gSliderTimeout) {
+        window.clearInterval(gSliderTimeout);
     }
 }
 
 function setupSlider() {
     let windowWatcher = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                                   .getService(Components.interfaces.nsIWindowWatcher);
     this.openSlider = windowWatcher.openWindow(
         this,
@@ -38,13 +40,26 @@ function setupSlider() {
         "chrome,dialog=yes,titlebar=no,popup=yes",
         null);
 }
 
 function initSlider() {
     setTimeout(setupSlider, 500);
     var prefService = Components.classes["@mozilla.org/preferences-service;1"]
                                 .getService(Components.interfaces.nsIPrefBranch);
-    showPermanentSlider = prefService.getBoolPref("calAlarmSlider.showPermanentSlider");
+    let showPermanentSlider = prefService.getBoolPref("calAlarmSlider.showPermanentSlider");
     if (showPermanentSlider == false) {
         setSliderTimeout();
     }
 }
+
+function removeSlider() {
+    let calAlarmSliderWindow = wm.getMostRecentWindow("Calendar:AlarmSliderWindow");
+    var prefService = Components.classes["@mozilla.org/preferences-service;1"]
+                                .getService(Components.interfaces.nsIPrefBranch);
+    let diehardSlider = prefService.getBoolPref("calAlarmSlider.diehardSlider");
+    if (!diehardSlider) {
+        clearSliderTimeout();
+        if (calAlarmSliderWindow) {
+            calAlarmSliderWindow.animateCloseAlert();
+        }
+    }
+}
diff -u8pdNr 006/chrome/content/calendar-alarm-dialog-overlay.xul 007/chrome/content/calendar-alarm-dialog-overlay.xul
--- 006/chrome/content/calendar-alarm-dialog-overlay.xul	2011-04-27 11:54:25 +0000
+++ 007/chrome/content/calendar-alarm-dialog-overlay.xul	2011-07-14 15:23:35 +0000
@@ -35,14 +35,21 @@
    - 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 ***** -->
 <overlay id="calAlarmSliderOverlay" 
          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://calalarmslider/content/calendar-alarm-dialog-overlay.js"/>
-  <script type="application/x-javascript" src="chrome://calalarmslider/content/calendar-alarm-slider.js" />
+  <script type="application/x-javascript" src="chrome://calalarmslider/content/calendar-alarm-slider.js"/>
   <script language="JavaScript">
     initSlider();
   </script>
+  
+  <script language="JavaScript">
+    window.addEventListener("click", removeSlider, false);
+    window.addEventListener("keypress", removeSlider, false);
+    window.addEventListener("DOMAttrModified", updateSliderTexts, false);
+    window.addEventListener("unload", removeSlider, false);
+  </script>
 
 </overlay>
diff -u8pdNr 006/chrome/content/calendar-alarm-slider.js 007/chrome/content/calendar-alarm-slider.js
--- 006/chrome/content/calendar-alarm-slider.js	2011-04-29 11:48:51 +0000
+++ 007/chrome/content/calendar-alarm-slider.js	2011-07-14 15:17:42 +0000
@@ -1,42 +1,43 @@
 Components.utils.import("resource://gre/modules/PluralForm.jsm");
 
+var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+                       .getService(Components.interfaces.nsIWindowMediator);
+
 var gFinalSize;
 var gCurrentSize = 1;
 
 var gSlideIncrement = 1;
 var gSlideTime = 10;
 var gOpenTime = 6000; // total time the alert should stay up once we are done animating.
 var gOrigin = 0; // Default value: alert from bottom right, sliding in vertically.
 
 var gAlertTextClickable = false;
 
 var bundle = srGetStrBundle("chrome://calalarmslider/locale/overlay.properties");
 var gAlarmSliderTitleLabel = bundle.GetStringFromName( "alarmSliderTitle.label" );
 var gAlarmSliderTextLabel = bundle.GetStringFromName( "alarmSliderText.label" );
 
 function prefillAlertInfo() {
-    let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                       .getService(Components.interfaces.nsIWindowMediator);
     let calAlarmWindow = wm.getMostRecentWindow("Calendar:AlarmWindow");
     let alarmRichlist = calAlarmWindow.document.getElementById("alarm-richlist");
     let reminders = alarmRichlist.childNodes.length;
 
     let title = document.getElementById("alertTitleLabel");
     let titleString = PluralForm.get(reminders, gAlarmSliderTitleLabel);
     let finishedTitleString = titleString.replace("#1", reminders);
-    title.setAttribute("value", finishedTitleString);
+    title.setAttribute("value", finishedTitleString + "  ");
 
     document.getElementById("alertImage").src = "chrome://calendar/skin/cal-icon32.png";
 
     let alertTextLabel = document.getElementById("alertTextLabel");
     let textString = PluralForm.get(reminders, gAlarmSliderTextLabel);
-    let finishedtextString = textString.replace("#1", reminders);
-    alertTextLabel.setAttribute("value", finishedtextString);
+    let finishedTextString = textString.replace("#1", reminders);
+    alertTextLabel.setAttribute("value", finishedTextString + "  ");
 }
 
 function onAlertLoad() {
     // Read out our initial settings from prefs.
     try {
         var prefService = Components.classes["@mozilla.org/preferences-service;1"]
                                     .getService(Components.interfaces.nsIPrefBranch);
         gSlideIncrement = prefService.getIntPref("calAlarmSlider.slideIncrement");
@@ -57,17 +58,17 @@ function onAlertLoad() {
 function animateAlert() {
     if (window.outerHeight < gFinalSize) {
         window.screenY -= gSlideIncrement - screen.availTop;
         window.outerHeight += gSlideIncrement;
         setTimeout(animateAlert, gSlideTime);
     } else {
         var prefService = Components.classes["@mozilla.org/preferences-service;1"]
                                     .getService(Components.interfaces.nsIPrefBranch);
-        showPermanentSlider = prefService.getBoolPref("calAlarmSlider.showPermanentSlider");
+        let showPermanentSlider = prefService.getBoolPref("calAlarmSlider.showPermanentSlider");
         if (showPermanentSlider == true) {
             return;
         } else {
             setTimeout(animateCloseAlert, gOpenTime);
         }
     }
 }
 
@@ -77,25 +78,42 @@ function animateCloseAlert() {
         window.outerHeight -= gSlideIncrement;
         setTimeout(animateCloseAlert, gSlideTime);
     } else {
         window.close();
     }
 }
 
 function onSliderClick() {
-    let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
-                       .getService(Components.interfaces.nsIWindowMediator);
     let calAlarmWindow = wm.getMostRecentWindow("Calendar:AlarmWindow");
     var prefService = Components.classes["@mozilla.org/preferences-service;1"]
                                 .getService(Components.interfaces.nsIPrefBranch);
-    timeoutSet = prefService.getBoolPref("calAlarmSlider.timeoutSet");
+    let timeoutSet = prefService.getBoolPref("calAlarmSlider.timeoutSet");
     if (timeoutSet == true) {
         prefService.setBoolPref("calAlarmSlider.timeoutSet", false);
         if (calAlarmWindow) {
             opener.clearSliderTimeout();
         }
     }
     if (calAlarmWindow) {
         calAlarmWindow.focus();
     }
     window.close();
 }
+
+function updateSliderTexts() {
+    let calAlarmWindow = wm.getMostRecentWindow("Calendar:AlarmWindow");
+    let sliderWindow = wm.getMostRecentWindow("Calendar:AlarmSliderWindow");
+    if (calAlarmWindow && sliderWindow) {
+        let alarmRichlist = calAlarmWindow.document.getElementById("alarm-richlist");
+        let reminders = alarmRichlist.childNodes.length;
+
+        let title = sliderWindow.document.getElementById("alertTitleLabel");
+        let titleString = PluralForm.get(reminders, gAlarmSliderTitleLabel);
+        let finishedTitleString = titleString.replace("#1", reminders);
+        title.setAttribute("value", finishedTitleString);
+
+        let alertTextLabel = sliderWindow.document.getElementById("alertTextLabel");
+        let textString = PluralForm.get(reminders, gAlarmSliderTextLabel);
+        let finishedTextString = textString.replace("#1", reminders);
+        alertTextLabel.setAttribute("value", finishedTextString);
+    }
+}
diff -u8pdNr 006/defaults/preferences/calalarmslider.js 007/defaults/preferences/calalarmslider.js
--- 006/defaults/preferences/calalarmslider.js	2011-04-28 15:26:32 +0000
+++ 007/defaults/preferences/calalarmslider.js	2011-07-13 23:47:47 +0000
@@ -1,6 +1,7 @@
 pref("calAlarmSlider.showPermanentSlider",true);
 pref("calAlarmSlider.timeoutSet",false);
 pref("calAlarmSlider.slideIncrement",1);
 pref("calAlarmSlider.slideIncrementTime",10);
 pref("calAlarmSlider.totalOpenTime",6000);
 pref("calAlarmSlider.checkInterval",12000);
+pref("calAlarmSlider.diehardSlider",false);
diff -u8pdNr 006/install.rdf 007/install.rdf
--- 006/install.rdf	2011-06-13 14:54:05 +0000
+++ 007/install.rdf	2011-07-14 19:52:20 +0000
@@ -1,17 +1,17 @@
 <?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>Calendar Alarm Slider</em:name>
     <em:id>calalarmslider@nadelundhirn.de</em:id>
-    <em:version>0.0.6</em:version>
+    <em:version>0.0.7</em:version>
 
     <em:description>Alarm Slider for Sunbird and Lightning</em:description>
     <em:creator>Robert Brand</em:creator>
     <em:homepageURL></em:homepageURL>
     <em:optionsURL>chrome://calalarmslider/content/prefs.xul</em:optionsURL>
 	<em:updateURL>http://www.nadelundhirn.de/krams/exten/calalarmslider/update.rdf</em:updateURL>
 	<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9Y2KoRlX8z726uLdVIkMFcDnDru8dR9fj6x63Tlk1PX+lhFtNXa83FZMDz/NdC84x5N9g18fAJinunQTQyfOlZpHdaNIvw1j3GSOKmAqhSndh0ZqnExHgOyEKqRxbx4dJYDPlhf7ZxixCyq5fHhLVmeyRdcIPsoVWneJ0gbSsRwIDAQAB</em:updateKey>
 
@@ -28,16 +28,25 @@
     <em:targetApplication>
       <Description>
         <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
         <em:minVersion>3</em:minVersion>
         <em:maxVersion>7.0a1</em:maxVersion>
       </Description>
     </em:targetApplication>
 
+    <!-- SeaMonkey -->
+    <em:targetApplication>
+      <Description>
+        <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
+        <em:minVersion>2.1</em:minVersion>
+        <em:maxVersion>2.5a1</em:maxVersion>
+      </Description>
+    </em:targetApplication>
+
     <em:requires>
       <Description>
         <!-- Lightning (also Sunbird via extension stub) -->
         <em:id>{e2fda1a4-762b-4020-b5ad-a41df1933103}</em:id>
         <em:minVersion>1.0b1</em:minVersion>
         <em:maxVersion>1.1a1pre</em:maxVersion>
       </Description>
     </em:requires>
