Bug 1209777 - part1: lexical-components-to-var.sh and global-let-to-var.sh. r=philip.chee, mkmelin
authorPatrick Cloke <clokep>
Thu, 08 Oct 2015 06:53:00 +0300
changeset 23490 d09fd3bc81697fe1b498f8ae01bec3a89a03ecb5
parent 23489 7a2c243821cc79b3a11bc8fae12bc0c6135f35d5
child 23491 78ab64eb195b9ab21ee75f3d64adc9e58a72f434
push idunknown
push userunknown
push dateunknown
reviewersphilip.chee, mkmelin
bugs1209777
Bug 1209777 - part1: lexical-components-to-var.sh and global-let-to-var.sh. r=philip.chee, mkmelin CLOSED TREE seamonkey
calendar/base/content/calendar-extract.js
calendar/base/content/calendar-views.js
calendar/base/content/dialogs/calendar-event-dialog-reminder.js
calendar/base/content/dialogs/calendar-properties-dialog.js
calendar/base/modules/calAuthUtils.jsm
calendar/base/modules/calUtils.jsm
calendar/base/src/calCachedCalendar.js
calendar/base/src/calSleepMonitor.js
calendar/base/src/calUtils.js
calendar/lightning/modules/ltnUtils.jsm
calendar/providers/gdata/modules/OAuth2.jsm
calendar/providers/gdata/modules/gdataSession.jsm
calendar/providers/gdata/modules/shim/PromiseExtras.jsm
calendar/providers/gdata/modules/shim/Task.jsm
calendar/test/mozmill/timezoneTests/test1.js
calendar/test/unit/test_alarm.js
calendar/test/unit/test_alarmservice.js
calendar/test/unit/test_extract.js
calendar/test/unit/test_freebusy_service.js
calendar/test/unit/test_search_service.js
chat/components/src/logger.js
chat/components/src/test/test_commands.js
chat/components/src/test/test_conversations.js
chat/components/src/test/test_logger.js
chat/modules/imStatusUtils.jsm
chat/modules/imTextboxUtils.jsm
chat/protocols/irc/test/test_ctcpDequote.js
chat/protocols/irc/test/test_ctcpQuote.js
chat/protocols/irc/test/test_ircMessage.js
chat/protocols/irc/test/test_ircNonStandard.js
chat/protocols/irc/test/test_sendBufferedCommand.js
chat/protocols/irc/test/test_setMode.js
chat/protocols/irc/test/test_splitLongMessages.js
chat/protocols/irc/test/test_tryNewNick.js
chat/protocols/skype/test/test_MagicSha256.js
chat/protocols/skype/test/test_contactUrlToName.js
chat/protocols/xmpp/test/test_parseJidAndNormalization.js
chat/protocols/yahoo/test/test_yahooAccount.js
chat/protocols/yahoo/test/test_yahooLoginHelper.js
chat/protocols/yahoo/test/test_yahoopacket.js
im/components/ibConvStatsService.js
im/content/accounts.js
im/content/extensions-discover.js
im/content/macgestures.js
im/content/preferences/messagestyle.js
mail/base/content/FilterListDialog.js
mail/base/content/folderDisplay.js
mail/base/content/folderPane.js
mail/base/content/mailTabs.js
mail/base/content/msgHdrViewOverlay.js
mail/base/content/msgMail3PaneWindow.js
mail/base/content/quickFilterBar.js
mail/base/content/sanitizeDialog.js
mail/base/content/systemIntegrationDialog.js
mail/base/content/toolbarIconColor.js
mail/base/modules/Windows8WindowFrameColor.jsm
mail/base/modules/quickFilterManager.js
mail/components/activity/modules/alertHook.js
mail/components/activity/modules/autosync.js
mail/components/activity/modules/glodaIndexer.js
mail/components/activity/modules/moveCopy.js
mail/components/activity/modules/pop3Download.js
mail/components/activity/modules/sendLater.js
mail/components/activity/nsActivity.js
mail/components/activity/nsActivityManager.js
mail/components/activity/nsActivityManagerUI.js
mail/components/addrbook/content/abCommon.js
mail/components/addrbook/content/addressbook.js
mail/components/cloudfile/content/addAccountDialog.js
mail/components/devtools/modules/RemoteDebuggerServer.jsm
mail/components/devtools/modules/XULRootActor.js
mail/components/im/content/imAccounts.js
mail/components/im/modules/chatHandler.jsm
mail/components/newmailaccount/content/accountProvisioner.js
mail/components/newmailaccount/content/accountProvisionerTab.js
mail/components/newmailaccount/content/uriListener.js
mail/components/preferences/preferencesTab.js
mail/components/preferences/privacy.js
mail/components/preferences/subdialogs.js
mail/components/search/SpotlightIntegration.js
mail/components/search/WinSearchIntegration.js
mail/components/search/content/searchCommon.js
mail/components/test/unit/test_about_support.js
mail/components/wintaskbar/windowsJumpLists.js
mail/test/mozmill/account/test-ab-whitelist.js
mail/test/mozmill/account/test-account-actions.js
mail/test/mozmill/account/test-account-settings-infrastructure.js
mail/test/mozmill/account/test-account-tree.js
mail/test/mozmill/account/test-account-values.js
mail/test/mozmill/addrbook/test-address-book.js
mail/test/mozmill/attachment/test-attachment-events.js
mail/test/mozmill/cloudfile/test-cloudfile-add-account-dialog.js
mail/test/mozmill/cloudfile/test-cloudfile-attachment-item.js
mail/test/mozmill/cloudfile/test-cloudfile-attachment-urls.js
mail/test/mozmill/cloudfile/test-cloudfile-backend-hightail.js
mail/test/mozmill/cloudfile/test-cloudfile-manager.js
mail/test/mozmill/cloudfile/test-cloudfile-notifications.js
mail/test/mozmill/composition/test-send-button.js
mail/test/mozmill/content-policy/test-js-content-policy.js
mail/test/mozmill/content-tabs/test-install-xpi.js
mail/test/mozmill/content-tabs/test-plugin-crashing.js
mail/test/mozmill/folder-display/test-displaying-messages-in-folder-tabs.js
mail/test/mozmill/folder-display/test-pane-focus.js
mail/test/mozmill/message-reader/test-bug594646.js
mail/test/mozmill/migration-to-rdf-ui-2/test-migrate-to-rdf-ui-2.js
mail/test/mozmill/migration-to-rdf-ui-3/test-migrate-to-rdf-ui-3.js
mail/test/mozmill/migration-to-rdf-ui-5/test-migrate-to-rdf-ui-5.js
mail/test/mozmill/multiple-identities/test-display-names.js
mail/test/mozmill/override-main-menu-collapse/test-override-mainmenu-collapse.js
mail/test/mozmill/pref-window/test-attachments-pane.js
mail/test/mozmill/shared-modules/test-attachment-helpers.js
mail/test/mozmill/shared-modules/test-cloudfile-helpers.js
mail/test/mozmill/shared-modules/test-content-tab-helpers.js
mail/test/mozmill/shared-modules/test-folder-display-helpers.js
mail/test/mozmill/shared-modules/test-mock-object-helpers.js
mail/test/mozmill/shared-modules/test-prompt-helpers.js
mail/test/mozmill/shared-modules/test-window-helpers.js
mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
mail/test/mozmill/tabmail/test-tabmail-dragndrop.js
mail/test/mozmill/utils/test-iteratorUtils.js
mail/test/resources/mozmill/docs/_build/html/_static/jquery.js
mail/test/resources/mozmill/docs/_build/html/searchindex.js
mail/test/resources/mozmill/mozmill/extension/content/dxwindow.xul
mail/test/resources/mozmill/mozmill/extension/content/jquery/jquery-1.3.2.min.js
mail/test/resources/mozmill/mozmill/extension/content/jquery/jquery-ui-1.7.1.custom.min.js
mail/test/resources/mozmill/mozmill/extension/content/prefs.xul
mail/test/resources/mozmill/mozmill/extension/content/test/test.js
mail/test/resources/mozmill/mozmill/extension/content/test/test.xul
mail/test/resources/mozmill/mozmill/extension/resource/stdlib/arrays.js
mail/test/resources/mozmill/mozmill/extension/resource/stdlib/strings.js
mail/test/resources/mozmill/test/commonjs/modules1/moda.js
mail/test/resources/mozmill/test/commonjs/modules1/modb.js
mail/test/resources/mozmill/test/commonjs/modules2/modc.js
mail/test/resources/mozmill/test/commonjs/tests/test_require.js
mail/test/resources/mozmill/test/dnd/testhtml.js
mail/test/resources/mozmill/test/dnd/testxul.js
mail/test/resources/mozmill/test/elementLib-UnitTest.js
mail/test/resources/mozmill/test/restart/test_browser/testPost.js
mail/test/resources/mozmill/test/restart/test_fails/testPost.js
mail/test/resources/mozmill/test/restart/test_fails/testPre.js
mail/test/resources/mozmill/test/test_assert.js
mail/test/resources/mozmill/test/test_diggIterator.js
mail/test/resources/mozmill/test/test_focus.js
mail/test/resources/mozmill/test/test_googleIterator.js
mail/test/resources/mozmill/test/test_jum.js
mail/test/resources/mozmill/test/test_something/test_parents.js
mail/test/resources/mozmill/test/test_something/test_sub/test_deps.js
mail/test/resources/mozmill/test/test_unit.js
mailnews/addrbook/test/unit/test_nsAbManager3.js
mailnews/base/prefs/content/SmtpServerEdit.js
mailnews/base/prefs/content/am-junk.js
mailnews/base/search/content/FilterEditor.js
mailnews/base/test/unit/test_compactFailure.js
mailnews/base/test/unit/test_detachToFile.js
mailnews/base/test/unit/test_junkWhitelisting.js
mailnews/base/test/unit/test_mimemaltdetach.js
mailnews/base/test/unit/test_nsMsgDBView_headerValues.js
mailnews/base/test/unit/test_searchBoolean.js
mailnews/base/test/unit/test_searchChaining.js
mailnews/base/util/mailServices.js
mailnews/base/util/templateUtils.js
mailnews/compose/test/unit/test_messageHeaders.js
mailnews/compose/test/unit/test_nsIMsgCompFields.js
mailnews/db/gloda/modules/databind.js
mailnews/db/gloda/modules/datamodel.js
mailnews/db/gloda/modules/datastore.js
mailnews/db/gloda/modules/facet.js
mailnews/db/gloda/modules/log4moz.js
mailnews/db/gloda/modules/mimeTypeCategories.js
mailnews/db/gloda/modules/mimemsg.js
mailnews/db/gloda/modules/noun_mimetype.js
mailnews/db/gloda/test/unit/resources/asyncCallbackHandler.js
mailnews/db/gloda/test/unit/resources/genericIndexer.js
mailnews/db/gloda/test/unit/resources/glodaTestHelper.js
mailnews/db/gloda/test/unit/test_corrupt_database.js
mailnews/db/gloda/test/unit/test_index_addressbook.js
mailnews/db/gloda/test/unit/test_index_bad_messages.js
mailnews/db/gloda/test/unit/test_index_sweep_folder.js
mailnews/db/gloda/test/unit/test_mime_emitter.js
mailnews/db/gloda/test/unit/test_startup_offline.js
mailnews/extensions/mdn/test/unit/test_askuser.js
mailnews/extensions/mdn/test/unit/test_mdnFlags.js
mailnews/extensions/newsblog/content/feedAccountWizard.js
mailnews/extensions/newsblog/content/newsblogOverlay.js
mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js
mailnews/imap/test/unit/test_dod.js
mailnews/imap/test/unit/test_filterNeedsBody.js
mailnews/imap/test/unit/test_gmailOfflineMsgStore.js
mailnews/imap/test/unit/test_imapAttachmentSaves.js
mailnews/imap/test/unit/test_imapAutoSync.js
mailnews/imap/test/unit/test_imapCopyTimeout.js
mailnews/imap/test/unit/test_imapStoreMsgOffline.js
mailnews/imap/test/unit/test_listSubscribed.js
mailnews/imap/test/unit/test_localToImapFilterQuarantine.js
mailnews/imap/test/unit/test_offlineDraftDataloss.js
mailnews/imap/test/unit/test_preserveDataOnMove.js
mailnews/imap/test/unit/test_saveImapDraft.js
mailnews/imap/test/unit/test_saveTemplate.js
mailnews/imap/test/unit/test_subfolderLocation.js
mailnews/imap/test/unit/test_trustSpamAssassin.js
mailnews/import/test/unit/resources/mock_windows_reg_factory.js
mailnews/import/test/unit/test_oe_settings.js
mailnews/import/test/unit/test_outlook_settings.js
mailnews/import/test/unit/test_winmail.js
mailnews/local/test/unit/test_movemailDownload.js
mailnews/local/test/unit/test_pop3Download.js
mailnews/local/test/unit/test_pop3MultiCopy2.js
mailnews/local/test/unit/test_saveMessage.js
mailnews/local/test/unit/test_streamHeaders.js
mailnews/mime/jsmime/jsmime.js
mailnews/mime/src/jsmime.jsm
mailnews/mime/test/unit/test_alternate_p7m_handling.js
mailnews/mime/test/unit/test_attachment_size.js
mailnews/mime/test/unit/test_badContentType.js
mailnews/mime/test/unit/test_bug493544.js
mailnews/mime/test/unit/test_hidden_attachments.js
mailnews/mime/test/unit/test_jsmime_charset.js
mailnews/mime/test/unit/test_message_attachment.js
mailnews/mime/test/unit/test_mimeStreaming.js
mailnews/mime/test/unit/test_parser.js
mailnews/mime/test/unit/test_rfc822_body.js
mailnews/mime/test/unit/test_text_attachment.js
mailnews/news/test/unit/head_server_setup.js
mailnews/news/test/unit/test_internalUris.js
mailnews/news/test/unit/test_uriParser.js
mailnews/test/resources/MockFactory.js
mailnews/test/resources/folderEventLogHelper.js
mailnews/test/resources/logHelper.js
mailnews/test/resources/messageInjection.js
suite/browser/test/browser/browser_bug427559.js
suite/browser/test/browser/browser_bug561636.js
suite/browser/test/browser/browser_pluginCrashCommentAndURL.js
suite/common/bookmarks/browser-places.js
suite/common/places/controller.js
suite/common/places/tests/browser/browser_drag_bookmarks_on_toolbar.js
suite/common/places/tests/browser/browser_sort_in_library.js
suite/common/places/tests/browser/head.js
suite/common/places/tests/unit/head_bookmarks.js
suite/common/places/tests/unit/test_browserGlue_corrupt.js
suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup.js
suite/common/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
suite/common/places/tests/unit/test_browserGlue_migrate.js
suite/common/places/tests/unit/test_browserGlue_prefs.js
suite/common/places/tests/unit/test_browserGlue_restore.js
suite/common/places/tests/unit/test_browserGlue_shutdown.js
suite/common/places/tests/unit/test_browserGlue_smartBookmarks.js
suite/common/places/tests/unit/test_clearHistory_shutdown.js
suite/common/places/tests/unit/test_leftpane_corruption_handling.js
suite/common/pref/pref-sync.js
suite/common/src/nsSessionStore.js
suite/common/sync/aboutSyncTabs.js
suite/common/sync/syncAddDevice.js
suite/common/sync/syncGenericChange.js
suite/common/sync/syncQuota.js
suite/common/sync/syncUI.js
suite/common/sync/syncUtils.js
suite/common/tests/browser/browser_581937.js
suite/common/tests/browser/browser_586068-cascaded_restore.js
suite/common/tests/browser/browser_597315.js
suite/common/tests/browser/browser_607016.js
suite/common/tests/browser/browser_615394-SSWindowState_events.js
suite/common/tests/browser/browser_625257.js
suite/common/tests/browser/browser_636279.js
suite/common/tests/browser/browser_687710.js
suite/common/tests/browser/browser_687710_2.js
suite/common/tests/browser/browser_markPageAsFollowedLink.js
suite/common/tests/browser/head.js
suite/modules/WindowsJumpLists.jsm
suite/profile/migration/src/SuiteProfileMigrator.js
--- a/calendar/base/content/calendar-extract.js
+++ b/calendar/base/content/calendar-extract.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://calendar/modules/calExtract.jsm");
 Components.utils.import("resource://calendar/modules/calUtils.jsm");
 Components.utils.import("resource://gre/modules/Preferences.jsm");
 
-let calendarExtract = {
+var calendarExtract = {
     onShowLocaleMenu: function onShowLocaleMenu(target) {
         let localeList = document.getElementById(target.id);
         let langs = new Array();
         let chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
                                .getService(Components.interfaces.nsIXULChromeRegistry);
         chrome.QueryInterface(Components.interfaces.nsIToolkitChromeRegistry);
         let locales = chrome.getLocalesForPackage("calendar");
         let langRegex = /^(([^-]+)-*(.*))$/;
--- a/calendar/base/content/calendar-views.js
+++ b/calendar/base/content/calendar-views.js
@@ -662,17 +662,17 @@ function selectAllEvents() {
 
     // Need to move one day out to get all events
     var end = currentView().endDay.clone();
     end.day += 1;
 
     composite.getItems(filter, 0, currentView().startDay, end, listener);
 }
 
-let cal = cal || {};
+var cal = cal || {};
 cal.navigationBar = {
     setDateRange: function setDateRange(aStartDate, aEndDate) {
         let docTitle = "";
         if (aStartDate) {
             let intervalLabel = document.getElementById("intervalDescription");
             let firstWeekNo = getWeekInfoService().getWeekTitle(aStartDate);
             let secondWeekNo = firstWeekNo;
             let weekLabel = document.getElementById("calendarWeek");
--- a/calendar/base/content/dialogs/calendar-event-dialog-reminder.js
+++ b/calendar/base/content/dialogs/calendar-event-dialog-reminder.js
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://calendar/modules/calUtils.jsm");
 Components.utils.import("resource://calendar/modules/calIteratorUtils.jsm");
 Components.utils.import("resource://gre/modules/PluralForm.jsm");
 Components.utils.import("resource://gre/modules/Preferences.jsm");
 
-let allowedActionsMap = {}; 
+var allowedActionsMap = {}; 
 
 /**
  * Sets up the reminder dialog.
  */
 function onLoad() {
     let calendar = window.arguments[0].calendar;
 
     // Make sure the origin menulist uses the right labels, depending on if the
--- a/calendar/base/content/dialogs/calendar-properties-dialog.js
+++ b/calendar/base/content/dialogs/calendar-properties-dialog.js
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://calendar/modules/calUtils.jsm");
 Components.utils.import("resource://gre/modules/PluralForm.jsm");
 
 /**
  * The calendar to modify, is retrieved from window.arguments[0].calendar
  */
-let gCalendar;
+var gCalendar;
 
 /**
  * This function gets called when the calendar properties dialog gets opened. To
  * open the window, use an object as argument. The object needs a 'calendar'
  * attribute that passes the calendar in question.
  */
 function onLoad() {
     gCalendar = window.arguments[0].calendar;
--- a/calendar/base/modules/calAuthUtils.jsm
+++ b/calendar/base/modules/calAuthUtils.jsm
@@ -330,17 +330,17 @@ cal.auth.Prompt.prototype = {
         }
     }
 };
 
 // Cache for authentication information since onAuthInformation in the prompt
 // listener is called without further information. If the password is not
 // saved, there is no way to retrieve it. We use ref counting to avoid keeping
 // the password in memory longer than needed.
-let gAuthCache = {
+var gAuthCache = {
     _authInfoCache: new Map(),
     planForAuthInfo: function(hostKey) {
         let authInfo = this._authInfoCache.get(hostKey);
         if (authInfo) {
             authInfo.refCnt++;
         } else {
             this._authInfoCache.set(hostKey, { refCnt: 1 });
         }
--- a/calendar/base/modules/calUtils.jsm
+++ b/calendar/base/modules/calUtils.jsm
@@ -11,17 +11,17 @@ Components.utils.import("resource://gre/
 Components.utils.import("resource://gre/modules/Preferences.jsm");
 
 // Usually the backend loader gets loaded via profile-after-change, but in case
 // a calendar component hooks in earlier, its very likely it will use calUtils.
 // Getting the service here will load if its not already loaded
 Components.classes["@mozilla.org/calendar/backend-loader;1"].getService();
 
 this.EXPORTED_SYMBOLS = ["cal"];
-let cal = {
+var cal = {
     // new code should land here,
     // and more code should be moved from calUtils.js into this object to avoid
     // clashes with other extensions
 
     getDragService: generateServiceAccessor("@mozilla.org/widget/dragservice;1",
                                                 Components.interfaces.nsIDragService),
 
     /**
--- a/calendar/base/src/calCachedCalendar.js
+++ b/calendar/base/src/calCachedCalendar.js
@@ -6,17 +6,17 @@ Components.utils.import("resource://cale
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Preferences.jsm");
 
 const calICalendar = Components.interfaces.calICalendar;
 const cICL = Components.interfaces.calIChangeLog;
 const cIOL = Components.interfaces.calIOperationListener;
 
-let gNoOpListener = {
+var gNoOpListener = {
     QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]),
     onGetResult: function(calendar, status, itemType, detail, count, items) {
     },
 
     onOperationComplete: function(calendar, status, opType, id, detail) {
     }
 };
 
--- a/calendar/base/src/calSleepMonitor.js
+++ b/calendar/base/src/calSleepMonitor.js
@@ -63,9 +63,9 @@ calSleepMonitor.prototype = {
             Services.obs.addObserver(this, "quit-application", false);
         } else if (aTopic == "quit-application") {
             cal.LOG("[calSleepMonitor] Stopping sleep monitor.");
             this.stop();
         }
     }
 };
 
-let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]);
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]);
--- a/calendar/base/src/calUtils.js
+++ b/calendar/base/src/calUtils.js
@@ -17,35 +17,35 @@ function _calIcalCreator(cid, iid) {
         let thing = Components.classes[cid].createInstance(iid);
         if (icalString) {
             thing.icalString = icalString;
         }
         return thing;
     };
 }
 
-let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1",
+var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1",
                                   Components.interfaces.calIEvent);
-let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1",
+var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1",
                                  Components.interfaces.calITodo);
-let createDateTime  = _calIcalCreator("@mozilla.org/calendar/datetime;1",
+var createDateTime  = _calIcalCreator("@mozilla.org/calendar/datetime;1",
                                       Components.interfaces.calIDateTime);
-let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1",
+var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1",
                                      Components.interfaces.calIDuration);
-let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1",
+var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1",
                                      Components.interfaces.calIAttendee);
-let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1",
+var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1",
                                        Components.interfaces.calIAttachment);
-let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1",
+var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1",
                                   Components.interfaces.calIAlarm);
-let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1",
+var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1",
                                      Components.interfaces.calIRelation);
-let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1",
+var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1",
                                            Components.interfaces.calIRecurrenceDate);
-let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1",
+var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1",
                                            Components.interfaces.calIRecurrenceRule);
 
 /* Returns a clean new calIRecurrenceInfo */
 function createRecurrenceInfo(aItem) {
     var recInfo = Components.classes["@mozilla.org/calendar/recurrence-info;1"].
            createInstance(Components.interfaces.calIRecurrenceInfo);
     recInfo.item = aItem;
     return recInfo;
--- a/calendar/lightning/modules/ltnUtils.jsm
+++ b/calendar/lightning/modules/ltnUtils.jsm
@@ -1,20 +1,20 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://calendar/modules/calUtils.jsm");
 
 this.EXPORTED_SYMBOLS = ["ltn"];
-let ltn = {
+var ltn = {
     /**
      * Gets the value of a string in a .properties file from the lightning bundle
      *
      * @param {String} aBundleName  the name of the properties file. It is assumed that the
      *                              file lives in chrome://lightning/locale/
      * @param {String} aStringName  the name of the string within the properties file
      * @param {Array}  aParams      [optional] array of parameters to format the string
      */
     getString: function(aBundleName, aStringName, aParams) {
         return cal.calGetString(aBundleName, aStringName, aParams, "lightning");
     }
-};
\ No newline at end of file
+};
--- a/calendar/providers/gdata/modules/OAuth2.jsm
+++ b/calendar/providers/gdata/modules/OAuth2.jsm
@@ -8,17 +8,17 @@
 var EXPORTED_SYMBOLS = ["OAuth2"];
 
 const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components;
 
 Cu.import("resource:///modules/Services.jsm");
 Cu.import("resource:///modules/XPCOMUtils.jsm");
 Cu.import("resource:///modules/gloda/log4moz.js");
 
-let httpRequest = (function() {
+var httpRequest = (function() {
   let scope = {};
   try {
     // Thunderbird 25+
     Cu.import("resource://gre/modules/Http.jsm", scope);
   } catch (e) {
     try {
       // Thunderbird 24
       Cu.import("resource:///modules/http.jsm", scope);
--- a/calendar/providers/gdata/modules/gdataSession.jsm
+++ b/calendar/providers/gdata/modules/gdataSession.jsm
@@ -23,17 +23,17 @@ CuImport("resource://calendar/modules/ca
 
 const cIFBI = Components.interfaces.calIFreeBusyInterval;
 const nIPM = Components.interfaces.nsIPermissionManager;
 
 const NOTIFY_TIMEOUT = 60 * 1000;
 
 var EXPORTED_SYMBOLS = ["getGoogleSessionManager"];
 
-let gdataSessionMap = new Map();
+var gdataSessionMap = new Map();
 var calGoogleSessionManager = {
     /**
      * Get a Session object for the specified calendar. If aCreate is false,
      * null will be returned if the session doesn't exist. Otherwise, the
      * session will be created.
      *
      * @param aCalendar  The calendar to get the session for.
      * @param aCreate    If true, the session will be created prior to returning.
--- a/calendar/providers/gdata/modules/shim/PromiseExtras.jsm
+++ b/calendar/providers/gdata/modules/shim/PromiseExtras.jsm
@@ -7,17 +7,17 @@ var EXPORTED_SYMBOLS = ["PromiseAll"];
 Components.utils.import("resource://gdata-provider/modules/shim/Loader.jsm");
 CuImport("resource://gre/modules/Promise.jsm", this);
 CuImport("resource://gre/modules/PromiseUtils.jsm", this);
 
 /**
  * Shim for Promise.all needed for Gecko 24. Unfortunately the Promise object
  * is frozen, so we need to export this directly.
  */
-let PromiseAll;
+var PromiseAll;
 if (typeof Promise.all == "function") {
   PromiseAll = Promise.all.bind(Promise);
 } else {
   PromiseAll = function (aValues) {
     if (typeof Promise.all == "function") {
       return Promise.all(aValues);
     }
     function checkForCompletion(aValue, aIndex) {
--- a/calendar/providers/gdata/modules/shim/Task.jsm
+++ b/calendar/providers/gdata/modules/shim/Task.jsm
@@ -14,17 +14,17 @@ const Cu = Components.utils;
 const Cr = Components.results;
 
 Cu.import("resource://gdata-provider/modules/shim/Promise.jsm");
 
 // The following error types are considered programmer errors, which should be
 // reported (possibly redundantly) so as to let programmers fix their code.
 const ERRORS_TO_REPORT = ["EvalError", "RangeError", "ReferenceError", "TypeError"];
 
-let gCurrentTask = null;
+var gCurrentTask = null;
 
 function linesOf(string) {
   let reLine = /([^\r\n])+/g;
   let match;
   while ((match = reLine.exec(string))) {
     yield [match[0], match.index];
   }
 };
--- a/calendar/test/mozmill/timezoneTests/test1.js
+++ b/calendar/test/mozmill/timezoneTests/test1.js
@@ -9,9 +9,9 @@ var calendar = "Mozmill";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
 }
 
 var testTimezones1_SetGMT = function () {
   timezoneUtils.switchAppTimezone("Europe/London");
-}
\ No newline at end of file
+}
--- a/calendar/test/unit/test_alarm.js
+++ b/calendar/test/unit/test_alarm.js
@@ -355,25 +355,25 @@ function test_dates() {
     }
     if (!passed) {
         do_throw("Setting offset when alarm is absolute should not succeed");
     }
 
     dump("Done\n");
 }
 
-let propMap = { "related": Ci.calIAlarm.ALARM_RELATED_START,
+var propMap = { "related": Ci.calIAlarm.ALARM_RELATED_START,
                 "repeat": 1,
                 "action": "X-TEST",
                 "description": "description",
                 "summary": "summary",
                 "offset": createDuration("PT4M"),
                 "repeatOffset": createDuration("PT1M")
 };
-let clonePropMap = { "related": Ci.calIAlarm.ALARM_RELATED_END,
+var clonePropMap = { "related": Ci.calIAlarm.ALARM_RELATED_END,
                      "repeat": 2,
                      "action": "X-CHANGED",
                      "description": "description-changed",
                      "summary": "summary-changed",
                      "offset": createDuration("PT5M"),
                      "repeatOffset": createDuration("PT2M")
 };
 function test_immutable() {
--- a/calendar/test/unit/test_alarmservice.js
+++ b/calendar/test/unit/test_alarmservice.js
@@ -6,17 +6,17 @@ Components.utils.import("resource://cale
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 const EXPECT_NONE = 0;
 const EXPECT_FIRED = 1;
 const EXPECT_TIMER = 2;
 
 function do_check_xor(a, b) { return ok((a && !b) || (!a && b)); }
 
-let alarmObserver = {
+var alarmObserver = {
     service: null,
     firedMap: {},
     expectedMap: {},
     pendingOps: {},
 
     onAlarm: function obs_onAlarm(aItem, aAlarm) {
         this.firedMap[aItem.hashId] = this.firedMap[aItem.hashId] || {};
         this.firedMap[aItem.hashId][aAlarm.icalString] = true;
--- a/calendar/test/unit/test_extract.js
+++ b/calendar/test/unit/test_extract.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://calendar/modules/calExtract.jsm");
 Components.utils.import("resource://gre/modules/Preferences.jsm");
 
-let extractor = new Extractor("en-US", 8);
+var extractor = new Extractor("en-US", 8);
 
 function run_test() {
     // Sanity check to make sure the base url is still right. If this fails,
     // don't forget to also fix the url in base/content/calendar-extract.js.
     ok(extractor.checkBundle("en-US"));
 
     test_event_start_end();
     test_event_start_duration();
--- a/calendar/test/unit/test_freebusy_service.js
+++ b/calendar/test/unit/test_freebusy_service.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://calendar/modules/calProviderUtils.jsm");
 
 const cIFI = Components.interfaces.calIFreeBusyInterval;
-let freebusy = Components.classes["@mozilla.org/calendar/freebusy-service;1"]
+var freebusy = Components.classes["@mozilla.org/calendar/freebusy-service;1"]
                          .getService(Components.interfaces.calIFreeBusyService);
 
 function run_test() {
     test_found();
     test_failure();
     test_cancel();
 }
 
--- a/calendar/test/unit/test_search_service.js
+++ b/calendar/test/unit/test_search_service.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const HINT_EXACT_MATCH = Components.interfaces.calICalendarSearchProvider.HINT_EXACT_MATCH;
-let search = Components.classes["@mozilla.org/calendar/calendarsearch-service;1"]
+var search = Components.classes["@mozilla.org/calendar/calendarsearch-service;1"]
                        .getService(Components.interfaces.calICalendarSearchService);
 
 function run_test() {
     test_found();
     test_failure();
     test_cancel();
 }
 
--- a/chat/components/src/logger.js
+++ b/chat/components/src/logger.js
@@ -18,17 +18,17 @@ XPCOMUtils.defineLazyGetter(this, "_", (
 
 const kLineBreak = "@mozilla.org/windows-registry-key;1" in Cc ? "\r\n" : "\n";
 
 /*
  * Maps file paths to promises returned by ongoing OS.File operations on them.
  * This is so that a file can be read after a pending write operation completes
  * and vice versa (opening a file multiple times concurrently may fail on Windows).
  */
-let gFilePromises = new Map();
+var gFilePromises = new Map();
 
 // Uses above map to queue operations on a file.
 function queueFileOperation(aPath, aOperation) {
   // Ensure the operation is queued regardless of whether the last one succeeded.
   // This is safe since the promise is returned and consumers are expected to
   // handle any errors. If there's no promise existing for the given path already,
   // queue the operation on a dummy pre-resolved promise.
   let promise =
@@ -303,17 +303,17 @@ LogWriter.prototype = {
 
 const dummyLogWriter = {
   paths: null,
   currentPath: null,
   logMessage: function() {}
 };
 
 
-let gLogWritersById = new Map();
+var gLogWritersById = new Map();
 function getLogWriter(aConversation) {
   let id = aConversation.id;
   if (!gLogWritersById.has(id)) {
     let prefName =
       "purple.logging.log_" + (aConversation.isChat ? "chats" : "ims");
     if (Services.prefs.getBoolPref(prefName))
       gLogWritersById.set(id, new LogWriter(aConversation));
     else
@@ -359,17 +359,17 @@ SystemLogWriter.prototype = {
 };
 
 const dummySystemLogWriter = {
   path: null,
   logEvent: function() {}
 };
 
 
-let gSystemLogWritersById = new Map();
+var gSystemLogWritersById = new Map();
 function getSystemLogWriter(aAccount, aCreate) {
   let id = aAccount.id;
   if (aCreate) {
     if (!Services.prefs.getBoolPref("purple.logging.log_system"))
       return dummySystemLogWriter;
     let writer = new SystemLogWriter(aAccount);
     gSystemLogWritersById.set(id, writer);
     return writer;
--- a/chat/components/src/test/test_commands.js
+++ b/chat/components/src/test/test_commands.js
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource:///modules/imServices.jsm");
 // We don't load the command service via Services as we want to access
 // _findCommands in order to avoid having to intercept command execution.
-let imCommands = {};
+var imCommands = {};
 Services.scriptloader.loadSubScript("resource:///components/imCommands.js", imCommands);
 
 const kPrplId = "green";
 const kPrplId2 = "red";
 
 const fakeAccount = {
   connected: true,
   protocol: {id: kPrplId}
--- a/chat/components/src/test/test_conversations.js
+++ b/chat/components/src/test/test_conversations.js
@@ -1,22 +1,22 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 const {interfaces: Ci, utils: Cu} = Components;
 Cu.import("resource:///modules/imServices.jsm");
 Cu.import("resource:///modules/jsProtoHelper.jsm");
 
-let imConversations = {};
+var imConversations = {};
 Services.scriptloader.loadSubScript(
   "resource:///components/imConversations.js", imConversations
 );
 
 // Fake prplConversation
-let _id = 0;
+var _id = 0;
 function Conversation(aName) {
   this._name = aName;
   this._observers = [];
   this._date = Date.now() * 1000;
   this.id = ++_id;
 }
 Conversation.prototype = {
   __proto__: GenericConvIMPrototype,
@@ -34,17 +34,17 @@ Conversation.prototype = {
       aObserver = {observe: aObserver};
     GenericConvIMPrototype.addObserver.call(this, aObserver);
   }
 };
 
 // Ensure that when iMsg.message is set to a message (including the empty
 // string), it returns that message. If not, it should return the original
 // message. This prevents regressions due to JS coercions.
-let test_null_message = function() {
+var test_null_message = function() {
   let originalMessage = "Hi!";
   let pMsg = new Message("buddy", originalMessage, {
     outgoing: true, _alias: "buddy", time: Date.now()
   });
   let iMsg = new imConversations.imMessage(pMsg);
   equal(iMsg.message, originalMessage, "Expected the original message.");
   // Setting the message should prevent a fallback to the original.
   iMsg.message = "";
@@ -76,17 +76,17 @@ function rot13(aString) {
 // From the receiving users perspective, they get:
 //   -> protocol writeMessage
 //   -> protocol notifyObservers `new-text`
 //   -> UIConv notifyObservers `received-message`
 //   -> protocol prepareForDisplaying
 //   -> UIConv notifyObservers `new-text`
 //
 // The test walks the sending path, which covers both.
-let test_message_transformation = function() {
+var test_message_transformation = function() {
   let conv = new Conversation();
   conv.sendMsg = function(aMsg) {
     this.writeMessage("user", aMsg, {outgoing: true});
   };
 
   let uiConv = new imConversations.UIConversation(conv);
   let message = "Hello!";
   let receivedMsg = false, newTxt = false;
@@ -121,17 +121,17 @@ let test_message_transformation = functi
     }
   });
 
   uiConv.sendMsg(message);
   ok(newTxt, "Expected new-text to have fired.");
 };
 
 // A test that cancels a message before it can be sent.
-let test_cancel_send_message = function() {
+var test_cancel_send_message = function() {
   let conv = new Conversation();
   conv.sendMsg = function(aMsg) {
     ok(false, "The message should have been halted in the conversation service.");
   };
 
   let sending = false;
   let uiConv = new imConversations.UIConversation(conv);
   uiConv.addObserver({
@@ -149,17 +149,17 @@ let test_cancel_send_message = function(
       }
     }
   });
   uiConv.sendMsg("Hi!");
   ok(sending, "The sending-message notification was never fired.");
 };
 
 // A test that cancels a message before it gets displayed.
-let test_cancel_display_message = function() {
+var test_cancel_display_message = function() {
   let conv = new Conversation();
   conv.sendMsg = function(aMsg) {
     this.writeMessage("user", aMsg, {outgoing: true});
   };
 
   let received = false;
   let uiConv = new imConversations.UIConversation(conv);
   uiConv.addObserver({
@@ -178,17 +178,17 @@ let test_cancel_display_message = functi
   });
 
   uiConv.sendMsg("Hi!");
   ok(received, "The received-message notification was never fired.")
 };
 
 // A test that ensures protocols get a chance to prepare a message before
 // sending and displaying.
-let test_prpl_message_prep = function() {
+var test_prpl_message_prep = function() {
   let conv = new Conversation();
   conv.sendMsg = function(aMsg) {
     this.writeMessage("user", aMsg, {outgoing: true});
   };
 
   let msg = "Hi!";
   let prefix = "test> ";
 
@@ -218,17 +218,17 @@ let test_prpl_message_prep = function() 
     }
   });
 
   uiConv.sendMsg(msg);
   ok(receivedMsg, "The received-message notification was never fired.");
 };
 
 // A test that ensures protocols can split messages before they are sent.
-let test_split_message_before_sending = function() {
+var test_split_message_before_sending = function() {
   let msgCount = 0;
   let prepared = false;
 
   let msg = "This is a looo\nooong message.\nThis one is short.";
   let msgs = msg.split("\n");
 
   let conv = new Conversation();
   conv.sendMsg = function(aMsg) {
--- a/chat/components/src/test/test_logger.js
+++ b/chat/components/src/test/test_logger.js
@@ -6,85 +6,85 @@ const {interfaces: Ci, utils: Cu} = Comp
 
 do_get_profile();
 
 Cu.import("resource:///modules/imServices.jsm");
 Cu.import("resource:///modules/imXPCOMUtils.jsm");
 Cu.import("resource://gre/modules/osfile.jsm");
 Cu.import("resource://gre/modules/Task.jsm");
 
-let gLogger = {};
+var gLogger = {};
 Services.scriptloader.loadSubScript("resource:///components/logger.js", gLogger);
 
-let logDirPath = OS.Path.join(OS.Constants.Path.profileDir, "logs");
+var logDirPath = OS.Path.join(OS.Constants.Path.profileDir, "logs");
 
-let dummyAccount = {
+var dummyAccount = {
   name: "dummy-account",
   normalizedName: "dummyaccount",
   protocol: {
     normalizedName: "dummy",
     id: "prpl-dummy"
   }
 };
 
-let dummyTwitterAccount = {
+var dummyTwitterAccount = {
   name: "dummy-twitter",
   normalizedName: "dummytwitter",
   protocol: {
     normalizedName: "twitter",
     id: "prpl-twitter"
   }
 };
 
-let test_accounts = [dummyAccount, dummyTwitterAccount];
+var test_accounts = [dummyAccount, dummyTwitterAccount];
 
-let dummyConv = {
+var dummyConv = {
   account: dummyAccount,
   id: 0,
   title: "dummy conv",
   normalizedName: "dummyconv",
   get name() { return this.normalizedName; },
   get startDate() { return new Date(2011, 5, 28).valueOf() * 1000; },
   isChat: false
 };
 
 // A day after the first one.
-let dummyConv2 = {
+var dummyConv2 = {
   account: dummyAccount,
   id: 0,
   title: "dummy conv",
   normalizedName: "dummyconv",
   get name() { return this.normalizedName; },
   get startDate() { return new Date(2011, 5, 29).valueOf() * 1000; },
   isChat: false
 };
 
-let dummyMUC = {
+var dummyMUC = {
   account: dummyAccount,
   id: 1,
   title: "Dummy MUC",
   normalizedName: "dummymuc",
   get name() { return this.normalizedName; },
   startDate: new Date(2011, 5, 28).valueOf() * 1000,
   isChat: true
 };
 
-let dummyTwitterConv = {
+var dummyTwitterConv = {
   account: dummyTwitterAccount,
   id: 2,
   title: "Dummy Twitter Conv",
   normalizedName: "dummytwitterconv",
   get name() { return this.normalizedName; },
   startDate: new Date(2011, 5, 28).valueOf() * 1000,
   isChat: true
 };
 
-let test_convs = [dummyConv, dummyMUC, dummyTwitterConv];
+var test_convs = [dummyConv, dummyMUC, dummyTwitterConv];
 
-let encodeName_input = [
+var encodeName_input = [
   "CON",
   "PRN",
   "AUX",
   "NUL",
   "COM3",
   "LPT5",
   "file",
   "file.",
@@ -121,17 +121,17 @@ let encodeName_input = [
   "|file",
   "?file",
   "*file",
   "&file",
   "%file",
   "\\fi?*&%le<>"
 ];
 
-let encodeName_output = [
+var encodeName_output = [
   "%CON",
   "%PRN",
   "%AUX",
   "%NUL",
   "%COM3",
   "%LPT5",
   "file",
   "file._",
@@ -168,17 +168,17 @@ let encodeName_output = [
   "%7cfile",
   "%3ffile",
   "%2afile",
   "%26file",
   "%25file",
   "%5c" + "fi" + "%3f%2a%26%25" + "le" + "%3c%3e"
 ];
 
-let test_queueFileOperation = function* () {
+var test_queueFileOperation = function* () {
   let dummyOperation = function() {};
 
   let dummyRejectedOperation = () => Promise.reject("Rejected!");
   let dummyResolvedOperation = () => Promise.resolve("Resolved!");
 
   let gFP = gLogger.gFilePromises;
   let qFO = gLogger.queueFileOperation;
 
@@ -207,90 +207,90 @@ let test_queueFileOperation = function* 
       ok(firstOperationComplete);
     });
   }
   // Test the queue order for rejected and resolved promises.
   yield test_queueOrder(dummyResolvedOperation);
   yield test_queueOrder(dummyRejectedOperation);
 }
 
-let test_getLogFolderPathForAccount = function* () {
+var test_getLogFolderPathForAccount = function* () {
   let path = gLogger.getLogFolderPathForAccount(dummyAccount);
   equal(OS.Path.join(logDirPath, dummyAccount.protocol.normalizedName,
                      gLogger.encodeName(dummyAccount.normalizedName)), path);
 }
 
 // Tests the global function getLogFilePathForConversation in logger.js.
-let test_getLogFilePathForConversation = function* () {
+var test_getLogFilePathForConversation = function* () {
   let path = gLogger.getLogFilePathForConversation(dummyConv, "format");
   let expectedPath = OS.Path.join(logDirPath, dummyAccount.protocol.normalizedName,
                                   gLogger.encodeName(dummyAccount.normalizedName));
   expectedPath = OS.Path.join(
     expectedPath, gLogger.encodeName(dummyConv.normalizedName));
   expectedPath = OS.Path.join(
     expectedPath, gLogger.getNewLogFileName("format", dummyConv.startDate / 1000));
   equal(path, expectedPath);
 }
 
-let test_getLogFilePathForMUC = function* () {
+var test_getLogFilePathForMUC = function* () {
   let path = gLogger.getLogFilePathForConversation(dummyMUC, "format");
   let expectedPath = OS.Path.join(logDirPath, dummyAccount.protocol.normalizedName,
                                   gLogger.encodeName(dummyAccount.normalizedName));
   expectedPath = OS.Path.join(
     expectedPath, gLogger.encodeName(dummyMUC.normalizedName + ".chat"));
   expectedPath = OS.Path.join(
     expectedPath, gLogger.getNewLogFileName("format", dummyMUC.startDate / 1000));
   equal(path, expectedPath);
 }
 
-let test_getLogFilePathForTwitterConv = function* () {
+var test_getLogFilePathForTwitterConv = function* () {
   let path = gLogger.getLogFilePathForConversation(dummyTwitterConv, "format");
   let expectedPath =
     OS.Path.join(logDirPath, dummyTwitterAccount.protocol.normalizedName,
                  gLogger.encodeName(dummyTwitterAccount.normalizedName));
   expectedPath = OS.Path.join(
     expectedPath, gLogger.encodeName(dummyTwitterConv.normalizedName));
   expectedPath = OS.Path.join(
     expectedPath, gLogger.getNewLogFileName("format",
                                             dummyTwitterConv.startDate / 1000));
   equal(path, expectedPath);
 }
 
-let test_appendToFile = function* () {
+var test_appendToFile = function* () {
   const kStringToWrite = "Hello, world!";
   let path = OS.Path.join(OS.Constants.Path.profileDir, "testFile.txt");
   let encoder = new TextEncoder();
   let encodedString = encoder.encode(kStringToWrite);
   gLogger.appendToFile(path, encodedString);
   encodedString = encoder.encode(kStringToWrite);
   gLogger.appendToFile(path, encodedString);
   let text = (new TextDecoder()).decode(
     yield gLogger.queueFileOperation(path, () => OS.File.read(path)));
   // The read text should be equal to kStringToWrite repeated twice.
   equal(text, kStringToWrite + kStringToWrite);
   yield OS.File.remove(path);
 }
 
 // Tests the getLogPathsForConversation API defined in the imILogger interface.
-let test_getLogPathsForConversation = function* () {
+var test_getLogPathsForConversation = function* () {
   let logger = new gLogger.Logger();
   let paths = yield logger.getLogPathsForConversation(dummyConv);
   // The path should be null since a LogWriter hasn't been created yet.
   equal(paths, null);
   let logWriter = gLogger.getLogWriter(dummyConv);
   paths = yield logger.getLogPathsForConversation(dummyConv);
   equal(paths.length, 1);
   equal(paths[0], logWriter.currentPath);
   ok(yield OS.File.exists(paths[0]));
   // Ensure this doesn't interfere with future tests.
   yield OS.File.remove(paths[0]);
   gLogger.closeLogWriter(dummyConv);
 }
 
-let test_logging = function* () {
+var test_logging = function* () {
   let logger = new gLogger.Logger();
   let oneSec = 1000000; // Microseconds.
 
   // Creates a set of dummy messages for a conv (sets appropriate times).
   let getMsgsForConv = function(aConv) {
     // Convert to seconds because that's what logMessage expects.
     let startTime = Math.round(aConv.startDate / oneSec);
     return [
@@ -418,17 +418,17 @@ let test_logging = function* () {
       yield OS.File.remove(aLog);
     })
   });
   let logFolder = OS.Path.dirname(gLogger.getLogFilePathForConversation(dummyConv));
   // The folder should now be empty - this will throw if it isn't.
   yield OS.File.removeEmptyDir(logFolder, {ignoreAbsent: false});
 }
 
-let test_logFileSplitting = function* () {
+var test_logFileSplitting = function* () {
   // Start clean, remove the log directory.
   let logFolderPath = OS.Path.join(OS.Constants.Path.profileDir, "logs");
   yield OS.File.removeDir(logFolderPath, {ignoreAbsent: true});
   let logWriter = gLogger.getLogWriter(dummyConv);
   let startTime = logWriter._startTime / 1000; // Message times are in seconds.
   let oldPath = logWriter.currentPath;
   let message = {
     time: startTime,
--- a/chat/modules/imStatusUtils.jsm
+++ b/chat/modules/imStatusUtils.jsm
@@ -9,17 +9,17 @@ const {interfaces: Ci, utils: Cu} = Comp
 Cu.import("resource:///modules/imXPCOMUtils.jsm");
 Cu.import("resource:///modules/imServices.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "_", () =>
   l10nHelper("chrome://chat/locale/status.properties")
 );
 
 const imIStatusInfo = Ci.imIStatusInfo;
-let statusAttributes = {};
+var statusAttributes = {};
 statusAttributes[imIStatusInfo.STATUS_UNKNOWN] = "unknown";
 statusAttributes[imIStatusInfo.STATUS_OFFLINE] = "offline";
 statusAttributes[imIStatusInfo.STATUS_INVISIBLE] = "invisible";
 statusAttributes[imIStatusInfo.STATUS_MOBILE] = "mobile";
 statusAttributes[imIStatusInfo.STATUS_IDLE] = "idle";
 statusAttributes[imIStatusInfo.STATUS_AWAY] = "away";
 statusAttributes[imIStatusInfo.STATUS_UNAVAILABLE] = "unavailable";
 statusAttributes[imIStatusInfo.STATUS_AVAILABLE] = "available";
--- a/chat/modules/imTextboxUtils.jsm
+++ b/chat/modules/imTextboxUtils.jsm
@@ -6,17 +6,17 @@ this.EXPORTED_SYMBOLS = [
   "MessageFormat",
   "TextboxSize",
   "TextboxSpellChecker"
 ];
 
 Components.utils.import("resource:///modules/imServices.jsm");
 const Ci = Components.interfaces;
 
-let MessageFormat = {
+var MessageFormat = {
   _observedPrefs: [],
 
   getValues: function mf_getValues() {
     this.unregisterObservers();
     let langGroup =
       Services.prefs.getComplexValue("font.language.group",
                                      Ci.nsIPrefLocalizedString).data;
     let fontGroup = Services.prefs.getCharPref("font.default." + langGroup);
@@ -102,31 +102,31 @@ let MessageFormat = {
     if (index != -1)
       this._textboxes.splice(index, 1);
 
     if (!this._textboxes.length)
       this.unregisterObservers();
   }
 };
 
-let TextboxSize = {
+var TextboxSize = {
   _textboxAutoResizePrefName: "messenger.conversations.textbox.autoResize",
   get autoResize() {
     delete this.autoResize;
     Services.prefs.addObserver(this._textboxAutoResizePrefName, this, false);
     return this.autoResize =
       Services.prefs.getBoolPref(this._textboxAutoResizePrefName);
   },
   observe: function(aSubject, aTopic, aMsg) {
     if (aTopic == "nsPref:changed" && aMsg == this._textboxAutoResizePrefName)
       this.autoResize = Services.prefs.getBoolPref(aMsg);
   }
 };
 
-let TextboxSpellChecker = {
+var TextboxSpellChecker = {
 #ifndef MOZ_THUNDERBIRD
   _spellCheckPrefName: "layout.spellcheckDefault",
 #else
   _spellCheckPrefName: "mail.spellcheck.inline",
 #endif
   _enabled: false,
  getValue: function tsc_getValue() {
 #ifndef MOZ_THUNDERBIRD
--- a/chat/protocols/irc/test/test_ctcpDequote.js
+++ b/chat/protocols/irc/test/test_ctcpDequote.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let ircCTCP = {};
+var ircCTCP = {};
 Services.scriptloader.loadSubScript("resource:///modules/ircCTCP.jsm", ircCTCP);
 
 const input = [
   "ACTION",
   "ACTION test",
   "ACTION \x5Ctest",
   "ACTION te\x5Cst",
   "ACTION test\x5C",
--- a/chat/protocols/irc/test/test_ctcpQuote.js
+++ b/chat/protocols/irc/test/test_ctcpQuote.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 
 const input = [
   undefined,
   "test",
   "\\test",
   "te\\st",
   "test\\",
@@ -40,17 +40,17 @@ const expectedOutputParams = [
   "ACTION test\\\\\\\\\\\\",
   "ACTION \\atest",
   "ACTION te\\ast",
   "ACTION test\\a",
   "ACTION \\\\\\\\\\atest",
   "ACTION \\\\\\\\atest"
 ];
 
-let outputParams = [];
+var outputParams = [];
 
 irc.ircAccount.prototype.sendMessage = function(aCommand, aParams) {
   do_check_eq(expectedOutputCommand, aCommand);
   outputParams.push(aParams[1]);
 }
 
 function run_test() {
   let output = input.map(aStr =>
--- a/chat/protocols/irc/test/test_ircMessage.js
+++ b/chat/protocols/irc/test/test_ircMessage.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 
 const testData = [
   // First off, let's test the messages from RFC 2812.
   "PASS secretpasswordhere",
   "NICK Wiz",
   ":WiZ!jto@tolsun.oulu.fi NICK Kilroy",
   "USER guest 0 * :Ronnie Reagan",
--- a/chat/protocols/irc/test/test_ircNonStandard.js
+++ b/chat/protocols/irc/test/test_ircNonStandard.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 Components.utils.import("resource:///modules/ircNonStandard.jsm");
 
 // The function that is under test here.
 var NOTICE = ircNonStandard.commands["NOTICE"]
 
 function FakeConversation() {}
 FakeConversation.prototype = {
--- a/chat/protocols/irc/test/test_sendBufferedCommand.js
+++ b/chat/protocols/irc/test/test_sendBufferedCommand.js
@@ -1,30 +1,30 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource:///modules/imServices.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 
 function FakeAccount() {
   this._commandBuffers = new Map();
   this.callbacks = [];
 }
 FakeAccount.prototype = {
   __proto__: irc.ircAccount.prototype,
   maxMessageLength: 60,
   callbacks: [],
   sendMessage: function(aCommand, aParams) {
     (this.callbacks.shift())(aCommand, aParams);
   }
 }
 
-let account = new FakeAccount();
+var account = new FakeAccount();
 
 function run_test() {
   test_parameterCollect();
   test_maxLength();
   run_next_test();
 }
 
 function test_parameterCollect() {
--- a/chat/protocols/irc/test/test_setMode.js
+++ b/chat/protocols/irc/test/test_setMode.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource:///modules/imServices.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 Services.conversations.initConversations();
 
 
 function FakeAccount() {
   this.normalizeNick = irc.ircAccount.prototype.normalizeNick.bind(this);
 }
 FakeAccount.prototype = {
--- a/chat/protocols/irc/test/test_splitLongMessages.js
+++ b/chat/protocols/irc/test/test_splitLongMessages.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 
 const messages = {
   // Exactly 51 characters.
   "This is a test.": ["This is a test."],
   // Too long.
   "This is a message that is too long.":
     ["This is a", "message that is", "too long."],
--- a/chat/protocols/irc/test/test_tryNewNick.js
+++ b/chat/protocols/irc/test/test_tryNewNick.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let irc = {};
+var irc = {};
 Services.scriptloader.loadSubScript("resource:///components/irc.js", irc);
 
 const fakeProto = {
   id: "fake-proto",
   options: {alternateNicks: ""},
   _getOptionDefault: function(aOption) { return this.options[aOption]; }
 }
 
--- a/chat/protocols/skype/test/test_MagicSha256.js
+++ b/chat/protocols/skype/test/test_MagicSha256.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let skype = {};
+var skype = {};
 Services.scriptloader.loadSubScript("resource:///components/skype.js", skype);
 
 const data = {
   "1416264993": "3a33ac47fe2ec1a33d569f4be5c69ddc",
   "1416387358": "eca9716e1eedcbe93320ba794cea3388",
   "1416392361": "2ed6fc80c3303caa137ae3fd4fcc7d80"
 };
 
--- a/chat/protocols/skype/test/test_contactUrlToName.js
+++ b/chat/protocols/skype/test/test_contactUrlToName.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let skype = {};
+var skype = {};
 Services.scriptloader.loadSubScript("resource:///components/skype.js", skype);
 
 const data = {
   "https://bay-client-s.gateway.messenger.live.com/v1/users/ME/contacts/8:clokep":
     "clokep",
   "https://bay-client-s.gateway.messenger.live.com/v1/users/8:clokep/presenceDocs/messagingService":
     "clokep"
 };
--- a/chat/protocols/xmpp/test/test_parseJidAndNormalization.js
+++ b/chat/protocols/xmpp/test/test_parseJidAndNormalization.js
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 
-let xmpp = {};
+var xmpp = {};
 Services.scriptloader.loadSubScript("resource:///components/xmpp.js", xmpp);
 
 const TEST_DATA = {
   "abdelrhman@instantbird": {
     node: "abdelrhman",
     domain: "instantbird",
     jid: "abdelrhman@instantbird",
     normalized: "abdelrhman@instantbird"
--- a/chat/protocols/yahoo/test/test_yahooAccount.js
+++ b/chat/protocols/yahoo/test/test_yahooAccount.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
-let yahoo = {};
+var yahoo = {};
 Services.scriptloader.loadSubScript("resource:///components/yahoo.js", yahoo);
 
 function run_test()
 {
   add_test(test_cleanUsername);
   add_test(test_fixFontSize);
   run_next_test();
 }
--- a/chat/protocols/yahoo/test/test_yahooLoginHelper.js
+++ b/chat/protocols/yahoo/test/test_yahooLoginHelper.js
@@ -1,15 +1,15 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource:///modules/ArrayBufferUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/yahoo-session.jsm");
-let yahoo = {};
+var yahoo = {};
 Services.scriptloader.loadSubScript("resource:///modules/yahoo-session.jsm", yahoo);
 
 // Preset test values.
 const kUsername = "testUser";
 const kPassword = "instantbird";
 const kPagerIp = "123.456.78.9";
 const kCrumb = "MG-Z/jNG+Q==";
 const kChallengeString = "AEF08DBAC33F9EEDABCFEA==";
--- a/chat/protocols/yahoo/test/test_yahoopacket.js
+++ b/chat/protocols/yahoo/test/test_yahoopacket.js
@@ -1,15 +1,15 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 Components.utils.import("resource:///modules/ArrayBufferUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/yahoo-session.jsm");
-let yahoo = {};
+var yahoo = {};
 Services.scriptloader.loadSubScript("resource:///modules/yahoo-session.jsm", yahoo);
 
 const kPacketIdBytes = StringToBytes(yahoo.kPacketIdentfier);
 const kHelloKey = 1;
 const kHelloValue = "Hello";
 const kWorldKey = 20;
 const kWorldValue = "World";
 const kNumberKey = 4;
--- a/im/components/ibConvStatsService.js
+++ b/im/components/ibConvStatsService.js
@@ -570,17 +570,17 @@ ConversationStats.prototype = {
     let stats = new ConversationStats();
     stats.lastDate = Math.max(this.lastDate, aOtherStats.lastDate);
     stats.incomingCount = this.incomingCount + aOtherStats.incomingCount;
     stats.outgoingCount = this.outgoingCount + aOtherStats.outgoingCount;
     return stats;
   }
 }
 
-let PossibleConversation = {
+var PossibleConversation = {
   get displayName() { return this._displayName; },
   get lowerCaseName() {
     return this._lowerCaseName || (this._lowerCaseName = this._displayName.toLowerCase());
   },
   _isChat: false, // False by default. Extensions should override this.
   get isChat() { return this._isChat; },
   get statusType() { return this._statusType; },
   get statusText() { return this._statusText; },
--- a/im/content/accounts.js
+++ b/im/content/accounts.js
@@ -573,17 +573,17 @@ var gAccountManager = {
       this.accountList.setAttribute("offline", "true");
     else
       this.accountList.removeAttribute("offline");
     this.disableCommandItems();
   }
 };
 
 
-let gAMDragAndDrop = {
+var gAMDragAndDrop = {
   ACCOUNT_MIME_TYPE: "application/x-moz-richlistitem",
   // Size of the scroll zone on the top and on the bottom of the account list
   MAGIC_SCROLL_HEIGHT: 20,
 
   // A preference already exists to define scroll speed, let's use it.
   get SCROLL_SPEED() {
     delete this.SCROLL_SPEED;
     try {
--- a/im/content/extensions-discover.js
+++ b/im/content/extensions-discover.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 
-let defaultOpen = window.open;
+var defaultOpen = window.open;
 window.open = function(aUrl) {
   let uri = Services.io.newURI(aUrl, null, null);
 
   // http and https are the only schemes that are exposed even
   // though we don't handle them internally.
   if (!uri.schemeIs("http") && !uri.schemeIs("https"))
     defaultOpen.apply(this, arguments);
   else {
--- a/im/content/macgestures.js
+++ b/im/content/macgestures.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
 // Shamelessly taken from the implementation in browser/base/content/browser.js
 
-let gGestureSupport = {
+var gGestureSupport = {
   _tabs: null,
   _lastSelectedTab: null,
 
   load: function GS_load() {
     gGestureSupport.init(true);
 
     let conversations = document.getElementById("conversations");
     if (conversations) {
--- a/im/content/preferences/messagestyle.js
+++ b/im/content/preferences/messagestyle.js
@@ -1,13 +1,13 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let jsProtoHelper = {};
+var jsProtoHelper = {};
 Components.utils.import("resource:///modules/jsProtoHelper.jsm", jsProtoHelper);
 
 function Conversation(aName) {
   this._name = aName;
   this._observers = [];
   let now = new Date();
   this._date = new Date(now.getFullYear(), now.getMonth(), now.getDate(),
                         10, 42, 22) * 1000;
--- a/mail/base/content/FilterListDialog.js
+++ b/mail/base/content/FilterListDialog.js
@@ -3,33 +3,33 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://gre/modules/PluralForm.jsm");
 Components.utils.import("resource:///modules/iteratorUtils.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
-let gFilterListMsgWindow = null;
-let gCurrentFilterList;
-let gCurrentFolder;
-let gSelectedFolder = null;
+var gFilterListMsgWindow = null;
+var gCurrentFilterList;
+var gCurrentFolder;
+var gSelectedFolder = null;
 
-let gFilterListbox = null;
-let gEditButton = null;
-let gDeleteButton = null;
-let gTopButton = null;
-let gUpButton = null;
-let gDownButton = null;
-let gBottomButton = null;
-let gSearchBox = null;
-let gRunFiltersFolder = null;
-let gRunFiltersButton = null;
+var gFilterListbox = null;
+var gEditButton = null;
+var gDeleteButton = null;
+var gTopButton = null;
+var gUpButton = null;
+var gDownButton = null;
+var gBottomButton = null;
+var gSearchBox = null;
+var gRunFiltersFolder = null;
+var gRunFiltersButton = null;
 
-let gFilterBundle = null;
+var gFilterBundle = null;
 
 const msgMoveMotion = {
   Up     : 0,
   Down   : 1,
   Top    : 2,
   Bottom : 3
 }
 
--- a/mail/base/content/folderDisplay.js
+++ b/mail/base/content/folderDisplay.js
@@ -17,17 +17,17 @@ var nsMsgMessageFlags = Components.inter
  * Maintains a list of listeners for all FolderDisplayWidget instances in this
  *  window.  The assumption is that because of our multiplexed tab
  *  implementation all consumers are effectively going to care about all such
  *  tabs.
  *
  * We are not just a global list so that we can add brains about efficiently
  *  building lists, provide try-wrapper convenience, etc.
  */
-let FolderDisplayListenerManager = {
+var FolderDisplayListenerManager = {
   _listeners: [],
 
   /**
    * Register a listener that implements one or more of the methods defined on
    *  |IDBViewWrapperListener|.  Note that a change from those interface
    *  signatures is that the first argument is always a reference to the
    *  FolderDisplayWidget generating the notification.
    *
--- a/mail/base/content/folderPane.js
+++ b/mail/base/content/folderPane.js
@@ -26,17 +26,17 @@ var nsMsgFolderFlags = Components.interf
  * An interface that needs to be implemented in order to add a new view to the
  * folder tree. For default behavior, it is recommended that implementers
  * subclass this interface instead of relying on duck typing.
  *
  * For implementation examples, see |gFolderTreeView._modes|. For how to
  * register this mode with |gFolderTreeView|, see
  * |gFolderTreeView.registerFolderTreeMode|.
  */
-let IFolderTreeMode = {
+var IFolderTreeMode = {
   /**
    * Generates the folder map for this mode.
    *
    * @param aFolderTreeView The gFolderTreeView for which this mode is being
    *     activated.
    *
    * @returns An array containing ftvItem instances representing the top-level
    *     folders in this view.
@@ -112,17 +112,17 @@ let IFolderTreeMode = {
     return false;
   }
 };
 
 /**
  * This is our controller for the folder-tree. It includes our nsITreeView
  * implementation, as well as other control functions.
  */
-let gFolderTreeView = {
+var gFolderTreeView = {
   messengerBundle: null,
 
   /**
    * Called when the window is initially loaded.  This function initializes the
    * folder-pane to the view last shown before the application was closed.
    */
   load: function ftv_load(aTree, aJSONFile) {
     const Cc = Components.classes;
@@ -2330,17 +2330,17 @@ ftvItem.prototype = {
     return this._children;
   }
 };
 
 /**
  * This handles the invocation of most commmands dealing with folders, based off
  * of the current selection, or a passed in folder.
  */
-let gFolderTreeController = {
+var gFolderTreeController = {
   /**
    * Opens the dialog to create a new sub-folder, and creates it if the user
    * accepts
    *
    * @param aParent (optional)  the parent for the new subfolder
    */
   newFolder: function ftc_newFolder(aParent) {
     let folder = aParent || gFolderTreeView.getSelectedFolders()[0];
--- a/mail/base/content/mailTabs.js
+++ b/mail/base/content/mailTabs.js
@@ -28,17 +28,17 @@ Components.utils.import("resource://gre/
  *     history, which is why we do this.
  *
  * @property {nsIMsgDBHdr} hdr In "message" mode, the header of the message
  *     being displayed.
  * @property {nsIMsgSearchSession} searchSession Used to preserve gSearchSession
  *     global value.
  *
  */
-let mailTabType = {
+var mailTabType = {
   name: "mail",
   panelId: "mailContent",
   modes: {
     /**
      * The folder view displays the contents of an nsIMsgDBFolder, with the
      *  folder pane (potentially), thread pane (always), and message pane
      *  (potentially) displayed.
      *
--- a/mail/base/content/msgHdrViewOverlay.js
+++ b/mail/base/content/msgHdrViewOverlay.js
@@ -7,17 +7,17 @@
  * message pane.
  */
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/displayNameUtils.js");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource:///modules/gloda/utils.js");
-let {Status: statusUtils} =
+var {Status: statusUtils} =
   Components.utils.import("resource:///modules/imStatusUtils.jsm");
 
 ////////////////////////////////////////////////////////////////////////////////////
 // Warning: It's critical that the code in here for displaying the message
 // headers for a selected message remain as fast as possible. In particular,
 // right now, we only introduce one reflow per message. i.e. if you click on
 // a message in the thread pane, we batch up all the changes for displaying
 // the header pane (to, cc, attachements button, etc.) and we make a single
@@ -2113,17 +2113,17 @@ var AttachmentListController =
         return;
     }
   },
 
   onEvent: function(event)
   {}
 };
 
-let AttachmentMenuController = {
+var AttachmentMenuController = {
   commands: {
     cmd_openAllAttachments: {
       isEnabled: function() {
         return AttachmentMenuController._someFilesAvailable();
       },
 
       doCommand: function() {
         HandleAllAttachments("open");
--- a/mail/base/content/msgMail3PaneWindow.js
+++ b/mail/base/content/msgMail3PaneWindow.js
@@ -105,17 +105,17 @@ var folderListener = {
         HandleJunkStatusChanged(folder);
       }
     }
 }
 
 /*
  * Listen for Lightweight Theme styling changes and update the theme accordingly.
  */
-let LightweightThemeListener = {
+var LightweightThemeListener = {
   _modifiedStyles: [],
 
   init: function () {
     XPCOMUtils.defineLazyGetter(this, "styleSheet", function() {
       for (let i = document.styleSheets.length - 1; i >= 0; i--) {
         let sheet = document.styleSheets[i];
         if (sheet.href == "chrome://messenger/skin/messengerLWTheme.css")
           return sheet;
@@ -1704,17 +1704,17 @@ function InitPageMenu(menuPopup, event) 
     return;
 
   PageMenuParent.buildAndAddToPopup(menuPopup.triggerNode, menuPopup);
 
   if (menuPopup.children.length == 0)
     event.preventDefault();
 }
 
-let TabsInTitlebar = {
+var TabsInTitlebar = {
   init: function () {
 #ifdef CAN_DRAW_IN_TITLEBAR
     // Don't trust the initial value of the sizemode attribute; wait for the
     // resize event.
     this._readPref();
     Services.prefs.addObserver(this._drawInTitlePref, this, false);
     Services.prefs.addObserver(this._autoHidePref, this, false);
 
--- a/mail/base/content/quickFilterBar.js
+++ b/mail/base/content/quickFilterBar.js
@@ -10,17 +10,17 @@ Components.utils.import("resource:///mod
 ////////////////////////////////////////////////////////////////////////////////
 //// Proper Code
 
 /**
  * There is only one message filter bar widget; the muxer deals with tab
  *  changes and directing modifications to and reflecting the state of the
  *  actual filterer objects.
  */
-let QuickFilterBarMuxer = {
+var QuickFilterBarMuxer = {
   /**
    * This gets called by OnLoadMessenger in order to ensure that the monitor
    *  gets registered prior to the first tab being opened.  This avoids
    *  complications about generating synthetic tab notifications.
    */
   _init: function QFBM__init() {
     // -- folder display hookup
     FolderDisplayListenerManager.registerListener(this);
--- a/mail/base/content/sanitizeDialog.js
+++ b/mail/base/content/sanitizeDialog.js
@@ -243,9 +243,9 @@ var gSanitizePromptDialog = {
   {
     var itemList = document.getElementById("itemList");
 
     if (itemList.collapsed)
       this.showItemList();
     else
       this.hideItemList();
   }
-};
\ No newline at end of file
+};
--- a/mail/base/content/systemIntegrationDialog.js
+++ b/mail/base/content/systemIntegrationDialog.js
@@ -1,16 +1,16 @@
 /* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // This dialog can only be opened if we have a shell service.
 
-let gSystemIntegrationDialog = {
+var gSystemIntegrationDialog = {
   _shellSvc: Components.classes["@mozilla.org/mail/shell-service;1"]
                        .getService(Components.interfaces.nsIShellService),
 
   _mailCheckbox: null,
 
   _newsCheckbox: null,
 
   _rssCheckbox: null,
--- a/mail/base/content/toolbarIconColor.js
+++ b/mail/base/content/toolbarIconColor.js
@@ -1,14 +1,14 @@
 /** ***** BEGIN LICENSE BLOCK *****
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let ToolbarIconColor = {
+var ToolbarIconColor = {
   init: function () {
     this._initialized = true;
 
     window.addEventListener("activate", this);
     window.addEventListener("deactivate", this);
     Services.obs.addObserver(this, "lightweight-theme-styling-update", false);
 
     // If the window isn't active now, we assume that it has never been active
--- a/mail/base/modules/Windows8WindowFrameColor.jsm
+++ b/mail/base/modules/Windows8WindowFrameColor.jsm
@@ -4,17 +4,17 @@
 
 "use strict";
 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
 
 this.EXPORTED_SYMBOLS = ["Windows8WindowFrameColor"];
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-let Registry = Cu.import("resource://gre/modules/WindowsRegistry.jsm").WindowsRegistry;
+var Registry = Cu.import("resource://gre/modules/WindowsRegistry.jsm").WindowsRegistry;
 
 const Windows8WindowFrameColor = {
   _windowFrameColor: null,
 
   get: function() {
     if (this._windowFrameColor)
       return this._windowFrameColor;
 
--- a/mail/base/modules/quickFilterManager.js
+++ b/mail/base/modules/quickFilterManager.js
@@ -293,17 +293,17 @@ QuickFilterSearchListener.prototype = {
  * - Text filters via defineTextFilter.  These always take the filter text as
  *   a parameter.
  *
  * If you are an adventurous extension developer and want to add a magic
  * text filter that does the whole "from:bob to:jim subject:shoes" what you
  * will want to do is register a normal filter and collapse the normal text
  * filter text-box.  You add your own text box, etc.
  */
-let QuickFilterManager = {
+var QuickFilterManager = {
   /**
    * List of filter definitions, potentially prioritized.
    */
   filterDefs: [],
   /**
    * Keys are filter definition names, values are the filter defs.
    */
   filterDefsByName: {},
@@ -622,17 +622,17 @@ QuickFilterManager.defineFilter({
  *
  * Filter on message tags?  Meanings:
  * - true: Yes, must have at least one tag on it.
  * - false: No, no tags on it!
  * - dictionary where keys are tag keys and values are tri-state with null
  *    meaning don't constraint, true meaning yes should be present, false
  *    meaning no, don't be present
  */
-let TagFacetingFilter = {
+var TagFacetingFilter = {
   name: "tags",
   domId: "qfb-tags",
 
   /**
    * @return true if the constaint is only on has tags/does not have tags,
    *     false if there are specific tag constraints in play.
    */
   isSimple: function(aFilterValue) {
@@ -934,17 +934,17 @@ QuickFilterManager.defineFilter({
  * The traditional quick-search text filter now with added gloda upsell!  We
  * are mildly extensible in case someone wants to add more specific text filter
  * criteria to toggle, but otherwise are intended to be taken out of the
  * picture entirely by extensions implementing more featureful text searches.
  *
  * Our state looks like {text: "", states: {a: true, b: false}} where a and b
  * are text filters.
  */
-let MessageTextFilter = {
+var MessageTextFilter = {
   name: "text",
   domId: "qfb-qs-textbox",
   /**
    * Parse the string into terms/phrases by finding matching double-quotes.  If
    * we find a quote that doesn't have a friend, we assume the user was going
    * to put a quote at the end of the string.  (This is important because we
    * update using a timer and this results in stable behavior.)
    *
--- a/mail/components/activity/modules/alertHook.js
+++ b/mail/components/activity/modules/alertHook.js
@@ -13,17 +13,17 @@ const nsActWarning = Components.Construc
                                             "nsIActivityWarning", "init");
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // This module provides a link between the send later service and the activity
 // manager.
-let alertHook =
+var alertHook =
 {
   get activityMgr() {
     delete this.activityMgr;
     return this.activityMgr = Cc["@mozilla.org/activity-manager;1"]
                                 .getService(Ci.nsIActivityManager);
   },
 
   get alertService() {
--- a/mail/components/activity/modules/autosync.js
+++ b/mail/components/activity/modules/autosync.js
@@ -27,17 +27,17 @@ const nsIAutoSyncMgrListener = Component
  * This code aims to mediate between the auto-sync code and the activity mgr.
  *
  * Not every auto-sync activity is directly  mapped to a process or event.
  * To prevent a possible event overflow, Auto-Sync monitor generates one
  * sync'd event per account when after all its _pending_ folders are sync'd,
  * rather than generating one event per folder sync.
  */
 
-let autosyncModule =
+var autosyncModule =
 {
 
   _inQFolderList : [],
   _running : false,
   _syncInfoPerFolder: {},
   _syncInfoPerServer: {},
   _lastMessage: {},
 
--- a/mail/components/activity/modules/glodaIndexer.js
+++ b/mail/components/activity/modules/glodaIndexer.js
@@ -22,17 +22,17 @@ Cu.import("resource://gre/modules/XPCOMU
 Cu.import("resource://gre/modules/PluralForm.jsm");
 Cu.import("resource:///modules/gloda/log4moz.js");
 Cu.import("resource:///modules/gloda/public.js");
 Cu.import("resource:///modules/gloda/indexer.js");
 
 /**
  * Gloda message indexer feedback.
  */
-let glodaIndexerActivity =
+var glodaIndexerActivity =
 {
   get log() {
     delete this.log;
     return this.log = Log4Moz.getConfiguredLogger("glodaIndexerActivity");
   },
 
   get activityMgr() {
     delete this.activityMgr;
--- a/mail/components/activity/modules/moveCopy.js
+++ b/mail/components/activity/modules/moveCopy.js
@@ -20,17 +20,17 @@ const nsMsgFolderFlags = Ci.nsMsgFolderF
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/PluralForm.jsm");
 Components.utils.import("resource:///modules/gloda/log4moz.js");
 
 // This module provides a link between the move/copy code and the activity
 // manager.
-let moveCopyModule =
+var moveCopyModule =
 {
   lastMessage: {},
   lastFolder: {},
 
   get log() {
     delete this.log;
     return this.log = Log4Moz.getConfiguredLogger("moveCopyModule");
   },
--- a/mail/components/activity/modules/pop3Download.js
+++ b/mail/components/activity/modules/pop3Download.js
@@ -19,17 +19,17 @@ const nsActWarning = Components.Construc
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/PluralForm.jsm");
 Components.utils.import("resource:///modules/gloda/log4moz.js");
 
 // This module provides a link between the pop3 service code and the activity
 // manager.
-let pop3DownloadModule =
+var pop3DownloadModule =
 {
   // hash table of most recent download items per folder
   _mostRecentActivityForFolder: {},
   // hash table of prev download items per folder, so we can
   // coalesce consecutive no new message events.
   _prevActivityForFolder: {},
 
   get log() {
--- a/mail/components/activity/modules/sendLater.js
+++ b/mail/components/activity/modules/sendLater.js
@@ -23,17 +23,17 @@ Components.utils.import("resource:///mod
 
 /**
  * This really, really, sucks. Due to mailnews widespread use of
  * nsIMsgStatusFeedback we're bound to the UI to get any sensible feedback of
  * mail sending operations. The current send later code can't hook into the
  * progress listener easily to get the state of messages being sent, so we'll
  * just have to do it here.
  */
-let sendMsgProgressListener = {
+var sendMsgProgressListener = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIMsgStatusFeedback,
                                          Ci.nsISupportsWeakReference]),
 
   showStatusString: function(aStatusText) {
     sendLaterModule.onMsgStatus(aStatusText);
   },
 
   startMeteors: function() {
@@ -44,17 +44,17 @@ let sendMsgProgressListener = {
 
   showProgress: function (aPercentage) {
     sendLaterModule.onMessageSendProgress(0, 0, aPercentage, 0);
   }
 };
 
 // This module provides a link between the send later service and the activity
 // manager.
-let sendLaterModule =
+var sendLaterModule =
 {
   _sendProcess: null,
   _copyProcess: null,
   _identity: null,
   _subject: null,
 
   get log() {
     delete this.log;
--- a/mail/components/activity/nsActivity.js
+++ b/mail/components/activity/nsActivity.js
@@ -342,10 +342,10 @@ nsActivityWarning.prototype = {
   //// nsISupports
 
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIActivityWarning, Ci.nsIActivity])
 };
 
 ///////////////////////////////////////////////////////////////////////////////
 //// Module
 
-let components = [nsActivityProcess, nsActivityEvent, nsActivityWarning];
+var components = [nsActivityProcess, nsActivityEvent, nsActivityWarning];
 const NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
--- a/mail/components/activity/nsActivityManager.js
+++ b/mail/components/activity/nsActivityManager.js
@@ -172,10 +172,10 @@ nsActivityManager.prototype = {
   //// nsISupports
 
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIActivityManager])
 };
 
 ////////////////////////////////////////////////////////////////////////////////
 //// Module
 
-let components = [nsActivityManager];
+var components = [nsActivityManager];
 const NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
--- a/mail/components/activity/nsActivityManagerUI.js
+++ b/mail/components/activity/nsActivityManagerUI.js
@@ -63,10 +63,10 @@ nsActivityManagerUI.prototype = {
   //// nsISupports
 
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIActivityManagerUI])
 };
 
 ////////////////////////////////////////////////////////////////////////////////
 //// Module
 
-let components = [nsActivityManagerUI];
+var components = [nsActivityManagerUI];
 const NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
--- a/mail/components/addrbook/content/abCommon.js
+++ b/mail/components/addrbook/content/abCommon.js
@@ -24,17 +24,17 @@ const kDefaultDescending = "descending";
 // this is a leap year so that Feb 29th works.
 const kDefaultYear = 2000;
 const kAllDirectoryRoot = "moz-abdirectory://";
 const kLdapUrlPrefix = "moz-abldapdirectory://";
 const kPersonalAddressbookURI = "moz-abmdbdirectory://abook.mab";
 const kCollectedAddressbookURI = "moz-abmdbdirectory://history.mab";
 // The default, generic contact image is displayed via CSS when the photoURI is
 // blank.
-let defaultPhotoURI = "";
+var defaultPhotoURI = "";
 
 const PERMS_DIRECTORY = parseInt("0755", 8);
 
 // Controller object for Dir Pane
 var DirPaneController =
 {
   supportsCommand: function(command)
   {
--- a/mail/components/addrbook/content/addressbook.js
+++ b/mail/components/addrbook/content/addressbook.js
@@ -20,17 +20,17 @@ var gStatusText = null;
 var gQueryURIFormat = null;
 var gCardViewBox;
 var gCardViewBoxEmail1;
 var gPreviousDirTreeIndex = -1;
 
 var msgWindow = Components.classes["@mozilla.org/messenger/msgwindow;1"]
                           .createInstance(Components.interfaces.nsIMsgWindow);
 
-let chatHandler = {};
+var chatHandler = {};
 Components.utils.import("resource:///modules/chatHandler.jsm", chatHandler);
 
 // Constants that correspond to choices
 // in Address Book->View -->Show Name as
 const kDisplayName = 0;
 const kLastNameFirst = 1;
 const kFirstNameFirst = 2;
 const kLDAPDirectory = 0; // defined in nsDirPrefs.h
@@ -795,17 +795,17 @@ function AbShowHideOSXAddressBook()
     MailServices.ab.deleteAddressBook(kOSXDirectoryURI);
   else {
     MailServices.ab.newAddressBook(
       gAddressBookBundle.getString(kOSXPrefBase + ".description"),
       kOSXDirectoryURI, 3, kOSXPrefBase);
   }
 }
 
-let abResultsController = {
+var abResultsController = {
   commands: {
     cmd_chatWithCard: {
       isEnabled: function() {
         let selected = GetSelectedAbCards();
 
         if (selected.length != 1)
           return false;
 
--- a/mail/components/cloudfile/content/addAccountDialog.js
+++ b/mail/components/cloudfile/content/addAccountDialog.js
@@ -39,17 +39,17 @@ createAccountObserver.prototype = {
       }
 
       addAccountDialog._accept.disabled = false;
       addAccountDialog._messages.selectedPanel = addAccountDialog._error;
     }
   },
 }
 
-let addAccountDialog = {
+var addAccountDialog = {
   _settings: null,
   _settingsWrap: null,
   _accountType: null,
   _accept: null,
   _strings: Services.strings
                     .createBundle("chrome://messenger/locale/cloudfile/addAccountDialog.properties"),
   // This blacklist is for providers who no longer want to be offered
   // as an option for a new Filelink provider, but still wants to
--- a/mail/components/devtools/modules/RemoteDebuggerServer.jsm
+++ b/mail/components/devtools/modules/RemoteDebuggerServer.jsm
@@ -6,17 +6,17 @@ this.EXPORTED_SYMBOLS = ["RemoteDebugger
 
 /**
  * A module to wrap the devtools DebuggerServer with some extra methods.
  */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 /** Load the debugger module, if its available. */
-let debugServerSupported = (function() {
+var debugServerSupported = (function() {
   try {
     Components.utils.import("resource://gre/modules/devtools/dbg-server.jsm");
     return true;
   } catch (e) {
     return false;
   }
 })();
 
@@ -48,17 +48,17 @@ function isMainWindow(aWindow) {
   baseName = path.substr(bnpos.value, bnlen.value);
   return (aWindow.location.hostname == baseName);
 }
 
 /**
  * The Frontend for the remote debugger, starts, stops and initializes the
  * actors.
  */
-let RemoteDebuggerServer = {
+var RemoteDebuggerServer = {
   /** @return true if the debugger server is running */
   get listening() { return DebuggerServer && DebuggerServer._listener != null; },
 
   /** @return the number of connections to the debugger server */
   get connections() { return DebuggerServer ? Object.keys(DebuggerServer._connections).length : 0; },
 
   /** @return true if the debugger server could be loaded */
   get supported() { return debugServerSupported; },
--- a/mail/components/devtools/modules/XULRootActor.js
+++ b/mail/components/devtools/modules/XULRootActor.js
@@ -4,23 +4,23 @@
 
 /**
  * Actors for the remote debugger server.
  *
  * NOTE: This file is used from both Thundebird and the Debugger Server
  * extension. Please don't introduce any Thunderbird-specific code
  */
 
-let { Ci, Cu } = require("chrome");
-let Services = require("Services");
-let DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
-let { RootActor } = require("devtools/server/actors/root");
-let { DebuggerServer } = require("devtools/server/main");
-let { Promise } = Cu.import("resource://gre/modules/Promise.jsm", {});
-let { BrowserTabList, BrowserTabActor, BrowserAddonList } = require("devtools/server/actors/webbrowser");
+var { Ci, Cu } = require("chrome");
+var Services = require("Services");
+var DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+var { RootActor } = require("devtools/server/actors/root");
+var { DebuggerServer } = require("devtools/server/main");
+var { Promise } = Cu.import("resource://gre/modules/Promise.jsm", {});
+var { BrowserTabList, BrowserTabActor, BrowserAddonList } = require("devtools/server/actors/webbrowser");
 
 /**
  * Create the root actor for this XUL application.
  *
  * @param aConnection       The debugger connection to create the actor for.
  * @return                  The mail actor for the connection.
  */
 function createRootActor(aConnection) {
--- a/mail/components/im/content/imAccounts.js
+++ b/mail/components/im/content/imAccounts.js
@@ -568,17 +568,17 @@ var gAccountManager = {
       this.accountList.setAttribute("offline", "true");
     else
       this.accountList.removeAttribute("offline");
     this.disableCommandItems();
   }
 };
 
 
-let gAMDragAndDrop = {
+var gAMDragAndDrop = {
   ACCOUNT_MIME_TYPE: "application/x-moz-richlistitem",
   // Size of the scroll zone on the top and on the bottom of the account list
   MAGIC_SCROLL_HEIGHT: 20,
 
   // A preference already exists to define scroll speed, let's use it.
   get SCROLL_SPEED() {
     delete this.SCROLL_SPEED;
     try {
--- a/mail/components/im/modules/chatHandler.jsm
+++ b/mail/components/im/modules/chatHandler.jsm
@@ -3,20 +3,20 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 this.EXPORTED_SYMBOLS = ["allContacts", "onlineContacts", "ChatCore"];
 
 Components.utils.import("resource:///modules/imServices.jsm");
 Components.utils.import("resource:///modules/iteratorUtils.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 
-let allContacts = {};
-let onlineContacts = {};
+var allContacts = {};
+var onlineContacts = {};
 
-let ChatCore = {
+var ChatCore = {
   initialized: false,
   _initializing: false,
   init: function() {
     if (this._initializing)
       return;
     this._initializing = true;
 
     Components.utils.import("resource:///modules/index_im.js");
--- a/mail/components/newmailaccount/content/accountProvisioner.js
+++ b/mail/components/newmailaccount/content/accountProvisioner.js
@@ -1,30 +1,30 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let Cu = Components.utils;
-let Cc = Components.classes;
-let Ci = Components.interfaces;
+var Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/NetUtil.jsm");
 Cu.import("resource://gre/modules/PluralForm.jsm");
 Cu.import("resource:///modules/StringBundle.js");
 Cu.import("resource:///modules/mailServices.js");
 Cu.import("resource:///modules/gloda/log4moz.js");
 
 // Get a configured logger for this component.
 // To debug, set mail.provider.logging.dump (or .console)="All"
-let gLog = Log4Moz.getConfiguredLogger("mail.provider");
-let stringBundle = new StringBundle("chrome://messenger/locale/newmailaccount/accountProvisioner.properties");
+var gLog = Log4Moz.getConfiguredLogger("mail.provider");
+var stringBundle = new StringBundle("chrome://messenger/locale/newmailaccount/accountProvisioner.properties");
 
-let isOSX = (Services.appinfo.OS == 'Darwin');
+var isOSX = (Services.appinfo.OS == 'Darwin');
 
 const RETRY_TIMEOUT = 5000; // 5 seconds
 const CONNECTION_TIMEOUT = 15000; // 15 seconds
 
 function isAccel (event) { return isOSX && event.metaKey || event.ctrlKey; }
 
 /**
  * Get the localstorage for this page in a way that works in chrome.
--- a/mail/components/newmailaccount/content/accountProvisionerTab.js
+++ b/mail/components/newmailaccount/content/accountProvisionerTab.js
@@ -1,27 +1,27 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let Cc = Components.classes;
-let Ci = Components.interfaces;
-let Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource:///modules/gloda/log4moz.js");
 
 /**
  * A content tab for the account provisioner.  We use Javascript-y magic to
  * "subclass" specialTabs.contentTabType, and then override the appropriate
  * members.
  *
  * Also note that accountProvisionerTab is a singleton (hence the maxTabs: 1).
  */
-let accountProvisionerTabType = Object.create(specialTabs.contentTabType, {
+var accountProvisionerTabType = Object.create(specialTabs.contentTabType, {
   name: {value: "accountProvisionerTab"},
   modes: {value: {
     accountProvisionerTab: {
       type: "accountProvisionerTab",
       maxTabs: 1,
     }
   }},
   _log: {value: Log4Moz.getConfiguredLogger("mail.provider")},
--- a/mail/components/newmailaccount/content/uriListener.js
+++ b/mail/components/newmailaccount/content/uriListener.js
@@ -3,20 +3,20 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * This object takes care of intercepting page loads and creating the
  * corresponding account if the page load turns out to be a text/xml file from
  * one of our account providers.
  */
 
-let Cu = Components.utils;
-let Cc = Components.classes;
-let Ci = Components.interfaces;
-let Cr = Components.results;
+var Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cr = Components.results;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/NetUtil.jsm");
 Cu.import("resource:///modules/JXON.js");
 
 /**
  * This is an observer that watches all HTTP requests for one where the
--- a/mail/components/preferences/preferencesTab.js
+++ b/mail/components/preferences/preferencesTab.js
@@ -1,22 +1,22 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource:///modules/errUtils.js");
 
-let gPrefTab = null;
+var gPrefTab = null;
 
 /**
  * A tab to show Preferences.
  */
-let preferencesTabType = {
+var preferencesTabType = {
   __proto__: contentTabBaseType,
   name: "preferencesTab",
   perTabPanel: "vbox",
   lastBrowserId: 0,
   bundle: Services.strings.createBundle(
     "chrome://messenger/locale/messenger.properties"),
   protoSvc: Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
                       .getService(Components.interfaces.nsIExternalProtocolService),
--- a/mail/components/preferences/privacy.js
+++ b/mail/components/preferences/privacy.js
@@ -1,14 +1,14 @@
 /* -*- Mode: JavaScript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let gPrivacyPane = {
+var gPrivacyPane = {
 
   _loadInContent: Services.prefs.getBoolPref("mail.preferences.inContent"),
 
   init: function()
   {
     if (this._loadInContent) {
       gSubDialog.init();
     }
--- a/mail/components/preferences/subdialogs.js
+++ b/mail/components/preferences/subdialogs.js
@@ -1,15 +1,15 @@
 /* - This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this file,
    - You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
-let gSubDialog = {
+var gSubDialog = {
   _closingCallback: null,
   _closingEvent: null,
   _isClosing: false,
   _frame: null,
   _overlay: null,
   _box: null,
   _injectedStyleSheets: ["chrome://mozapps/content/preferences/preferences.css",
                          "chrome://messenger/skin/preferences/preferences.css",
--- a/mail/components/search/SpotlightIntegration.js
+++ b/mail/components/search/SpotlightIntegration.js
@@ -7,17 +7,17 @@
 
 var EXPORTED_SYMBOLS = ["SearchIntegration"];
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 const MSG_DB_LARGE_COMMIT = 1;
 const gFileHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.\ncom/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>";
 
-let SearchIntegration =
+var SearchIntegration =
 {
   __proto__: SearchSupport,
 
   /// The property of the header and (sometimes) folders that's used to check
   /// if a message is indexed
   _hdrIndexedProperty: "spotlight_reindex_time",
 
   /// The file extension that is used for support files of this component
--- a/mail/components/search/WinSearchIntegration.js
+++ b/mail/components/search/WinSearchIntegration.js
@@ -62,17 +62,17 @@ const gRegKeys =
     name: ".wdseml",
     value: "email;communication"
   }
 ];
 
 /**
  * @namespace Windows Search-specific desktop search integration functionality
  */
-let SearchIntegration =
+var SearchIntegration =
 {
   __proto__: SearchSupport,
 
   /// The property of the header and (sometimes) folders that's used to check
   /// if a message is indexed
   _hdrIndexedProperty: "winsearch_reindex_time",
 
   /// The file extension that is used for support files of this component
--- a/mail/components/search/content/searchCommon.js
+++ b/mail/components/search/content/searchCommon.js
@@ -24,17 +24,17 @@ Cu.import("resource:///modules/gloda/log
 Cu.import("resource:///modules/iteratorUtils.jsm");
 Cu.import("resource:///modules/mailServices.js");
 Cu.import("resource:///modules/MailUtils.js");
 Cu.import("resource://gre/modules/Services.jsm");
 
 const PERM_DIRECTORY = parseInt("0755", 8);
 const PERM_FILE = parseInt("0644", 8);
 
-let SearchSupport =
+var SearchSupport =
 {
   /**
    * URI of last folder indexed. Kept in sync with the pref
    */
   __lastFolderIndexedUri: null,
   set _lastFolderIndexedUri(uri)
   {
     this._prefBranch.setCharPref("lastFolderIndexedUri", uri);
--- a/mail/components/test/unit/test_about_support.js
+++ b/mail/components/test/unit/test_about_support.js
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://testing-common/mailnews/localAccountUtils.js");
 
 /*
  * Test the about:support module.
  */
 
-let gAccountList = [{
+var gAccountList = [{
   type: "pop3",
   port: 1234,
   user: "pop3user",
   password: "pop3password",
   socketType: Ci.nsMsgSocketType.plain,
   authMethod: Ci.nsMsgAuthMethod.old,
   smtpServers: [],
 }, {
@@ -51,25 +51,25 @@ let gAccountList = [{
     password: "newsoutpassword2",
     isDefault: false,
     socketType: Ci.nsMsgSocketType.SSL,
     authMethod: Ci.nsMsgAuthMethod.External,
   }],
 }];
 
 /// A map of account keys to servers. Populated by setup_accounts.
-let gAccountMap = {};
+var gAccountMap = {};
 /// A map of SMTP server names to SMTP servers. Populated by setup_accounts.
-let gSMTPMap = {};
+var gSMTPMap = {};
 
 /**
  * A list of sensitive data: it shouldn't be present in the account
  * details. Populated by setup_accounts.
  */
-let gSensitiveData = [];
+var gSensitiveData = [];
 
 /**
  * Set up accounts based on the given data.
  */
 function setup_accounts() {
   // First make sure the local folders account is set up.
   localAccountUtils.loadLocalMailAccount();
 
--- a/mail/components/wintaskbar/windowsJumpLists.js
+++ b/mail/components/wintaskbar/windowsJumpLists.js
@@ -1,14 +1,14 @@
 /* -*- Mode: JavaScript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let EXPORTED_SYMBOLS = ["WinTaskbarJumpList"];
+var EXPORTED_SYMBOLS = ["WinTaskbarJumpList"];
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/iteratorUtils.jsm");
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 
@@ -36,17 +36,17 @@ XPCOMUtils.defineLazyGetter(this, "_pref
 
 function _getString(aName) {
   return _stringBundle.GetStringFromName(aName);
 }
 
 /**
  * Task list
  */
-let gTasks = [
+var gTasks = [
   // Write new message
   {
     get title()       { return _getString("taskbar.tasks.composeMessage.label"); },
     get description() { return _getString("taskbar.tasks.composeMessage.description"); },
     args:             "-compose",
     iconIndex:        2, // Write message icon
   },
 
@@ -55,17 +55,17 @@ let gTasks = [
     get title()       { return _getString("taskbar.tasks.openAddressBook.label"); },
     get description() { return _getString("taskbar.tasks.openAddressBook.description"); },
     args:             "-addressbook",
     iconIndex:        3, // Open address book icon
   },
 ];
 
 
-let WinTaskbarJumpList = {
+var WinTaskbarJumpList = {
 
   /**
    * Startup, shutdown, and update
    */
 
   startup: function WTBJL_startup() {
     // exit if this isn't win7 or higher.
     if (!this._initTaskbar())
--- a/mail/test/mozmill/account/test-ab-whitelist.js
+++ b/mail/test/mozmill/account/test-ab-whitelist.js
@@ -13,17 +13,17 @@ Components.utils.import("resource://mozm
 var controller = {};
 Components.utils.import("resource://mozmill/modules/controller.js", controller);
 var elib = {};
 Components.utils.import("resource://mozmill/modules/elementslib.js", elib);
 
 var gOldWhiteList = null;
 var gKeyString = null;
 
-let gAccount = null;
+var gAccount = null;
 
 function setupModule(module) {
   let wh = collector.getModule("window-helpers");
   wh.installInto(module);
   let fdh = collector.getModule("folder-display-helpers");
   fdh.installInto(module);
   let amh = collector.getModule("account-manager-helpers");
   amh.installInto(module);
--- a/mail/test/mozmill/account/test-account-actions.js
+++ b/mail/test/mozmill/account/test-account-actions.js
@@ -3,17 +3,17 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const MODULE_NAME = "test-account-actions";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "window-helpers",
                          "account-manager-helpers"];
 
-let imapAccount, nntpAccount, originalAccountCount;
+var imapAccount, nntpAccount, originalAccountCount;
 
 function setupModule(module) {
   collector.getModule("window-helpers").installInto(module);
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("account-manager-helpers").installInto(module);
 
   // There may be pre-existing accounts from other tests.
   originalAccountCount = MailServices.accounts.allServers.length;
--- a/mail/test/mozmill/account/test-account-settings-infrastructure.js
+++ b/mail/test/mozmill/account/test-account-settings-infrastructure.js
@@ -11,20 +11,20 @@
  */
 
 const MODULE_NAME = "test-account-settings-infrastructure";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "window-helpers",
                          "account-manager-helpers"];
 
-let elib = {};
+var elib = {};
 Components.utils.import("resource://mozmill/modules/elementslib.js", elib);
 
-let gPopAccount, gImapAccount, gOriginalAccountCount;
+var gPopAccount, gImapAccount, gOriginalAccountCount;
 
 function setupModule(module) {
   collector.getModule("window-helpers").installInto(module);
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("account-manager-helpers").installInto(module);
 
   // There may be pre-existing accounts from other tests.
   gOriginalAccountCount = MailServices.accounts.allServers.length;
--- a/mail/test/mozmill/account/test-account-tree.js
+++ b/mail/test/mozmill/account/test-account-tree.js
@@ -7,17 +7,17 @@
  */
 
 const MODULE_NAME = "test-account-tree";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "window-helpers",
                          "account-manager-helpers"];
 
-let gPopAccount, gOriginalAccountCount;
+var gPopAccount, gOriginalAccountCount;
 
 function setupModule(module) {
   collector.getModule("window-helpers").installInto(module);
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("account-manager-helpers").installInto(module);
 
   // There may be pre-existing accounts from other tests.
   gOriginalAccountCount = MailServices.accounts.allServers.length;
--- a/mail/test/mozmill/account/test-account-values.js
+++ b/mail/test/mozmill/account/test-account-values.js
@@ -8,20 +8,20 @@
  */
 
 const MODULE_NAME = "test-account-values";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "window-helpers",
                          "account-manager-helpers"];
 
-let elib = {};
+var elib = {};
 Components.utils.import("resource://mozmill/modules/elementslib.js", elib);
 
-let gPopAccount, gOriginalAccountCount;
+var gPopAccount, gOriginalAccountCount;
 
 function setupModule(module) {
   collector.getModule("window-helpers").installInto(module);
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("account-manager-helpers").installInto(module);
 
   // There may be pre-existing accounts from other tests.
   gOriginalAccountCount = MailServices.accounts.allServers.length;
--- a/mail/test/mozmill/addrbook/test-address-book.js
+++ b/mail/test/mozmill/addrbook/test-address-book.js
@@ -12,17 +12,17 @@ var RELATIVE_ROOT = '../shared-modules';
 var MODULE_REQUIRES = ['address-book-helpers', 'folder-display-helpers',
                        'compose-helpers', 'window-helpers',
                        'prompt-helpers'];
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource:///modules/mailServices.js");
 
-let abController = null;
+var abController = null;
 var addrBook1, addrBook2, addrBook3, addrBook4;
 var mListA, mListB, mListC, mListD, mListE;
 var windowHelper;
 
 function setupModule(module)
 {
   let fdh = collector.getModule('folder-display-helpers');
   fdh.installInto(module);
--- a/mail/test/mozmill/attachment/test-attachment-events.js
+++ b/mail/test/mozmill/attachment/test-attachment-events.js
@@ -8,31 +8,31 @@
 
 const MODULE_NAME = 'test-attachment-events';
 
 const RELATIVE_ROOT = '../shared-modules';
 const MODULE_REQUIRES = ['folder-display-helpers', 'compose-helpers',
                          'window-helpers', 'attachment-helpers',
                          'prompt-helpers'];
 
-let elib = {};
+var elib = {};
 Cu.import('resource://mozmill/modules/elementslib.js', elib);
-let EventUtils = {};
+var EventUtils = {};
 Cu.import('resource://mozmill/stdlib/EventUtils.js', EventUtils);
-let os = {};
+var os = {};
 Cu.import('resource://mozmill/stdlib/os.js', os);
 
 Cu.import('resource://gre/modules/Services.jsm');
 Cu.import('resource:///modules/iteratorUtils.jsm');
 
 const kAttachmentsAdded = "attachments-added";
 const kAttachmentsRemoved = "attachments-removed";
 const kAttachmentRenamed = "attachment-renamed";
 
-let gPath;
+var gPath;
 
 function setupModule(module) {
   let fdh = collector.getModule('folder-display-helpers');
   fdh.installInto(module);
 
   let wh = collector.getModule('window-helpers');
   wh.installInto(module);
 
--- a/mail/test/mozmill/cloudfile/test-cloudfile-add-account-dialog.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-add-account-dialog.js
@@ -20,17 +20,17 @@ Cu.import('resource://gre/modules/XPCOMU
 Cu.import('resource:///modules/cloudFileAccounts.js');
 Cu.import('resource:///modules/iteratorUtils.jsm');
 
 const kCategory = 'cloud-files';
 const kDialogId = 'addCloudFileAccount';
 const kRootURL = collector.addHttpResource('../cloudfile/html', '');
 const kSettingsWithForm = kRootURL + 'settings-with-form.xhtml';
 
-let gOldProviders = {};
+var gOldProviders = {};
 XPCOMUtils.defineLazyServiceGetter(this, 'gCategoryMan',
                                    '@mozilla.org/categorymanager;1',
                                    'nsICategoryManager');
 
 function setupModule(module) {
   collector.getModule('dom-helpers').installInto(module);
   collector.getModule('folder-display-helpers').installInto(module);
   collector.getModule('keyboard-helpers').installInto(module);
--- a/mail/test/mozmill/cloudfile/test-cloudfile-attachment-item.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-attachment-item.js
@@ -1,25 +1,25 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests Filelink attachment item behaviour.
  */
 
-let MODULE_NAME = 'test-cloudfile-attachment-item';
+var MODULE_NAME = 'test-cloudfile-attachment-item';
 
-let RELATIVE_ROOT = '../shared-modules';
-let MODULE_REQUIRES = ['folder-display-helpers',
+var RELATIVE_ROOT = '../shared-modules';
+var MODULE_REQUIRES = ['folder-display-helpers',
                        'compose-helpers',
                        'cloudfile-helpers',
                        'attachment-helpers']
 
-let elib = {};
+var elib = {};
 Cu.import('resource://mozmill/modules/elementslib.js', elib);
 
 const kAttachmentItemContextID = "msgComposeAttachmentItemContext";
 
 var ah, cfh;
 
 function setupModule(module) {
   collector.getModule('folder-display-helpers').installInto(module);
--- a/mail/test/mozmill/cloudfile/test-cloudfile-attachment-urls.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-attachment-urls.js
@@ -1,20 +1,20 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests Filelink URL insertion behaviours in compose windows.
  */
 
-let MODULE_NAME = 'test-cloudfile-attachment-urls';
+var MODULE_NAME = 'test-cloudfile-attachment-urls';
 
-let RELATIVE_ROOT = '../shared-modules';
-let MODULE_REQUIRES = ['folder-display-helpers',
+var RELATIVE_ROOT = '../shared-modules';
+var MODULE_REQUIRES = ['folder-display-helpers',
                        'compose-helpers',
                        'cloudfile-helpers',
                        'attachment-helpers',
                        'dom-helpers',
                        'window-helpers'];
 
 Cu.import('resource://gre/modules/Services.jsm');
 Cu.import('resource:///modules/mailServices.js');
--- a/mail/test/mozmill/cloudfile/test-cloudfile-backend-hightail.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-backend-hightail.js
@@ -1,19 +1,19 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
   * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests the Hightail Bigfile backend.
  */
 
-let Cu = Components.utils;
-let Cc = Components.classes;
-let Ci = Components.interfaces;
+var Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
 
 const MODULE_NAME = 'test-cloudfile-backend-hightail';
 
 const RELATIVE_ROOT = '../shared-modules';
 const MODULE_REQUIRES = ['folder-display-helpers',
                          'compose-helpers',
                          'cloudfile-hightail-helpers',
                          'observer-helpers',
--- a/mail/test/mozmill/cloudfile/test-cloudfile-manager.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-manager.js
@@ -2,24 +2,24 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests the richlistbox in the manager for attachment storage
  * services
  */
 
-let Cu = Components.utils;
-let Cc = Components.classes;
-let Ci = Components.interfaces;
+var Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
 
-let MODULE_NAME = 'test-cloudfile-manager';
+var MODULE_NAME = 'test-cloudfile-manager';
 
-let RELATIVE_ROOT = '../shared-modules';
-let MODULE_REQUIRES = ['folder-display-helpers',
+var RELATIVE_ROOT = '../shared-modules';
+var MODULE_REQUIRES = ['folder-display-helpers',
                        'pref-window-helpers',
                        'window-helpers'];
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 const kTestAccountType = "mock";
 
 var cfh;
--- a/mail/test/mozmill/cloudfile/test-cloudfile-notifications.js
+++ b/mail/test/mozmill/cloudfile/test-cloudfile-notifications.js
@@ -1,35 +1,35 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests that the cloudfile notifications work as they should.
  */
 
-let MODULE_NAME = 'test-cloudfile-notifications';
+var MODULE_NAME = 'test-cloudfile-notifications';
 
-let RELATIVE_ROOT = '../shared-modules';
-let MODULE_REQUIRES = ['folder-display-helpers',
+var RELATIVE_ROOT = '../shared-modules';
+var MODULE_REQUIRES = ['folder-display-helpers',
                        'compose-helpers',
                        'cloudfile-helpers',
                        'attachment-helpers',
                        'prompt-helpers',
                        'notificationbox-helpers'];
 
-let controller = {};
-let mozmill = {};
-let elib = {};
+var controller = {};
+var mozmill = {};
+var elib = {};
 Cu.import('resource://mozmill/modules/controller.js', controller);
 Cu.import('resource://mozmill/modules/mozmill.js', mozmill);
 Cu.import('resource://mozmill/modules/elementslib.js', elib);
 Cu.import('resource://gre/modules/Services.jsm');
 
-let maxSize, cfh, ah, oldInsertNotificationPref;
+var maxSize, cfh, ah, oldInsertNotificationPref;
 
 const kOfferThreshold = "mail.compose.big_attachments.threshold_kb";
 const kInsertNotificationPref = "mail.compose.big_attachments.insert_notification";
 
 const kBoxId = "attachmentNotificationBox";
 
 function setupModule(module) {
   collector.getModule('folder-display-helpers').installInto(module);
--- a/mail/test/mozmill/composition/test-send-button.js
+++ b/mail/test/mozmill/composition/test-send-button.js
@@ -7,17 +7,17 @@
  */
 
 const MODULE_NAME = "test-send-button";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "compose-helpers",
                          "window-helpers", "address-book-helpers"];
 
-let elib = {};
+var elib = {};
 Components.utils.import("resource://mozmill/modules/elementslib.js", elib);
 
 var account = null;
 
 var setupModule = function (module) {
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("compose-helpers").installInto(module);
   collector.getModule("window-helpers").installInto(module);
--- a/mail/test/mozmill/content-policy/test-js-content-policy.js
+++ b/mail/test/mozmill/content-policy/test-js-content-policy.js
@@ -80,17 +80,17 @@ const jsMsgBody = '<!DOCTYPE HTML PUBLIC
 '</noscript>\n' +
 '<script>\n'+
 'var jsIsTurnedOn = true;\n' +
 '</script>\n' +
 '\n' +
 '</body>\n' +
 '</html>\n';
 
-let gMsgNo = 0;
+var gMsgNo = 0;
 
 function checkJsInMail() {
   let msgDbHdr = addToFolder("JS test message " + gMsgNo, jsMsgBody, folder);
 
   // select the newly created message
   let msgHdr = select_click_row(gMsgNo);
 
   if (msgDbHdr != msgHdr)
--- a/mail/test/mozmill/content-tabs/test-install-xpi.js
+++ b/mail/test/mozmill/content-tabs/test-install-xpi.js
@@ -21,17 +21,17 @@ Components.utils.import("resource://gre/
 var url = collector.addHttpResource('../content-tabs/html', 'content-tabs');
 var siteRegExp = new RegExp("^" + url);
 
 var gNewTab;
 var gNotificationBox;
 
 const ALERT_TIMEOUT = 10000;
 
-let AlertWatcher = {
+var AlertWatcher = {
   planForAlert: function(aController) {
     this.alerted = false;
     aController.window.document.addEventListener("AlertActive",
                                                  this.alertActive, false);
   },
   waitForAlert: function(aController) {
     if (!this.alerted) {
       aController.waitFor(() => this.alerted, "Timeout waiting for alert",
--- a/mail/test/mozmill/content-tabs/test-plugin-crashing.js
+++ b/mail/test/mozmill/content-tabs/test-plugin-crashing.js
@@ -112,17 +112,17 @@ function teardownTest() {
 
 /* PluginCrashObserver lets us plan for and wait for plugin crashes. After
  * a plugin has crashed, PluginCrashObserver cleans up the minidump files
  * left behind.
  *
  * IMPORTANT:  Calls to planForCrash must be followed by waitForCrash in
  * order to remove PluginCrashObserver from the nsIObserverService.
  */
-let PluginCrashObserver = {
+var PluginCrashObserver = {
   _sawCrash: false,
 
   planForCrash: function(aController) {
     this._sawCrash = false;
     Services.obs.addObserver(this, "plugin-crashed", false);
   },
 
   waitForCrash: function(aController) {
--- a/mail/test/mozmill/folder-display/test-displaying-messages-in-folder-tabs.js
+++ b/mail/test/mozmill/folder-display/test-displaying-messages-in-folder-tabs.js
@@ -16,17 +16,17 @@ var MODULE_REQUIRES = ["folder-display-h
                        "search-window-helpers"];
 
 var folderA;
 var folderB;
 var folderC;
 
 var folderTab;
 
-let msgHdrsInFolderA = [], msgHdrsInFolderB = [];
+var msgHdrsInFolderA = [], msgHdrsInFolderB = [];
 
 // The number of messages in folderA/folderB.
 const NUM_MESSAGES_IN_FOLDER = 10;
 
 // A generator for indexes to load test.
 function _generateIndexes() {
   let index = 0;
   while (true) {
--- a/mail/test/mozmill/folder-display/test-pane-focus.js
+++ b/mail/test/mozmill/folder-display/test-pane-focus.js
@@ -183,9 +183,9 @@ function test_after_delete() {
 
   assert_equals(mc.e("multimessage"), get_focused_pane());
 
   // Delete the thread (without warning) to move to a message
   Services.prefs.setBoolPref("mail.warn_on_collapsed_thread_operation", false);
   press_delete();
 
   assert_equals(mc.e("messagepane"), get_focused_pane());
-}
\ No newline at end of file
+}
--- a/mail/test/mozmill/message-reader/test-bug594646.js
+++ b/mail/test/mozmill/message-reader/test-bug594646.js
@@ -12,17 +12,17 @@
 const MODULE_NAME = "test-bug594646";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "window-helpers"];
 
 var os = {};
 Cu.import('resource://mozmill/stdlib/os.js', os);
 
-let gReferenceTextContent;
+var gReferenceTextContent;
 
 function setupModule(module) {
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("window-helpers").installInto(module);
   gReferenceTextContent = extract_eml_body_textcontent("./bug594646_reference.eml");
 }
 
 function extract_eml_body_textcontent(eml) {
--- a/mail/test/mozmill/migration-to-rdf-ui-2/test-migrate-to-rdf-ui-2.js
+++ b/mail/test/mozmill/migration-to-rdf-ui-2/test-migrate-to-rdf-ui-2.js
@@ -4,23 +4,23 @@
 
 /**
  * When moving from ui-rdf 0 to 1, we ensure that we've removed the collapsed
  * property from the folderPaneBox, but that we still persist width.
  */
 
 // make SOLO_TEST=migration-to-rdf-ui-2/test-migrate-to-rdf-ui-2.js mozmill-one
 
-let MODULE_NAME = "test-migrate-to-rdf-ui-2";
-let RELATIVE_ROOT = "../shared-modules";
-let MODULE_REQUIRES = ["folder-display-helpers"];
+var MODULE_NAME = "test-migrate-to-rdf-ui-2";
+var RELATIVE_ROOT = "../shared-modules";
+var MODULE_REQUIRES = ["folder-display-helpers"];
 
-let Cc = Components.classes;
-let Ci = Components.interfaces;
-let Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 function setupModule(module) {
   collector.getModule("folder-display-helpers").installInto(module);
 }
 
 /**
--- a/mail/test/mozmill/migration-to-rdf-ui-3/test-migrate-to-rdf-ui-3.js
+++ b/mail/test/mozmill/migration-to-rdf-ui-3/test-migrate-to-rdf-ui-3.js
@@ -2,23 +2,23 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * When moving from ui-rdf 0 to 1, we ensure that we've removed the collapsed
  * property from the folderPaneBox, but that we still persist width.
  */
 
-let MODULE_NAME = "test-migrate-to-rdf-ui-3";
-let RELATIVE_ROOT = "../shared-modules";
-let MODULE_REQUIRES = ["folder-display-helpers"];
+var MODULE_NAME = "test-migrate-to-rdf-ui-3";
+var RELATIVE_ROOT = "../shared-modules";
+var MODULE_REQUIRES = ["folder-display-helpers"];
 
-let Cc = Components.classes;
-let Ci = Components.interfaces;
-let Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 function setupModule(module) {
   collector.getModule("folder-display-helpers").installInto(module);
 }
 
 /**
--- a/mail/test/mozmill/migration-to-rdf-ui-5/test-migrate-to-rdf-ui-5.js
+++ b/mail/test/mozmill/migration-to-rdf-ui-5/test-migrate-to-rdf-ui-5.js
@@ -2,19 +2,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * When moving from ui-rdf 4 to 5, we ensure that we've added the App Menu
  * button to the mail toolbar, and that we've collapsed the main menu.
  */
 
-let MODULE_NAME = "test-migrate-to-rdf-ui-5";
-let RELATIVE_ROOT = "../shared-modules";
-let MODULE_REQUIRES = ["folder-display-helpers"];
+var MODULE_NAME = "test-migrate-to-rdf-ui-5";
+var RELATIVE_ROOT = "../shared-modules";
+var MODULE_REQUIRES = ["folder-display-helpers"];
 
 const kAppMenuButton = "button-appmenu";
 
 function setupModule(module) {
   collector.getModule("folder-display-helpers").installInto(module);
 }
 
 /**
--- a/mail/test/mozmill/multiple-identities/test-display-names.js
+++ b/mail/test/mozmill/multiple-identities/test-display-names.js
@@ -170,9 +170,9 @@ function test_header_name_in_abook() {
   ensure_single_identity();
   help_test_display_name(2, "from", "My Buddy");
 }
 
 function test_header_name_in_abook_no_pdn() {
   ensure_card_exists(friendEmail, "My Buddy");
   ensure_single_identity();
   help_test_display_name(2, "from", "Carl Sagan");
-}
\ No newline at end of file
+}
--- a/mail/test/mozmill/override-main-menu-collapse/test-override-mainmenu-collapse.js
+++ b/mail/test/mozmill/override-main-menu-collapse/test-override-mainmenu-collapse.js
@@ -3,19 +3,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests that the main menu will NOT be collapsed by default if Thunderbird
  * starts with no accounts created, and mail.main_menu.collapse_by_default set
  * to false.
  */
 
-let MODULE_NAME = "test-override-main-menu-collapse";
-let RELATIVE_ROOT = "../shared-modules";
-let MODULE_REQUIRES = ["folder-display-helpers",
+var MODULE_NAME = "test-override-main-menu-collapse";
+var RELATIVE_ROOT = "../shared-modules";
+var MODULE_REQUIRES = ["folder-display-helpers",
                        "window-helpers"];
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 function setupModule(module) {
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("window-helpers").installInto(module);
 }
--- a/mail/test/mozmill/pref-window/test-attachments-pane.js
+++ b/mail/test/mozmill/pref-window/test-attachments-pane.js
@@ -1,24 +1,24 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests the manager for attachment storage services
  */
 
-let Cu = Components.utils;
-let Cc = Components.classes;
-let Ci = Components.interfaces;
+var Cu = Components.utils;
+var Cc = Components.classes;
+var Ci = Components.interfaces;
 
-let MODULE_NAME = 'test-attachments-pane';
+var MODULE_NAME = 'test-attachments-pane';
 
-let RELATIVE_ROOT = '../shared-modules';
-let MODULE_REQUIRES = ['folder-display-helpers',
+var RELATIVE_ROOT = '../shared-modules';
+var MODULE_REQUIRES = ['folder-display-helpers',
                        'pref-window-helpers',
                        'window-helpers'];
 
 function setupModule(module) {
   let fdh = collector.getModule('folder-display-helpers');
   fdh.installInto(module);
 
   let pwh = collector.getModule('pref-window-helpers');
--- a/mail/test/mozmill/shared-modules/test-attachment-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-attachment-helpers.js
@@ -5,17 +5,17 @@
 const MODULE_NAME = "attachment-helpers";
 
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["mock-object-helpers"];
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
-let gMockFilePickReg;
+var gMockFilePickReg;
 
 function setupModule(module) {
   let moh = collector.getModule('mock-object-helpers');
 
   gMockFilePickReg = new moh.MockObjectReplacer("@mozilla.org/filepicker;1",
                                                   MockFilePickerConstructor);
 }
 
@@ -30,17 +30,17 @@ function installInto(module) {
   module.gMockFilePicker = gMockFilePicker;
   module.select_attachments = select_attachments;
 }
 
 function MockFilePickerConstructor() {
   return gMockFilePicker;
 };
 
-let gMockFilePicker = {
+var gMockFilePicker = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIFilePicker]),
   defaultExtension: "",
   filterIndex: null,
   displayDirectory: null,
   returnFiles: [],
   addToRecentDocs: false,
 
   get defaultString() {
--- a/mail/test/mozmill/shared-modules/test-cloudfile-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-cloudfile-helpers.js
@@ -7,17 +7,17 @@ const MODULE_NAME = "cloudfile-helpers";
 const RELATIVE_ROOT = "../shared-modules";
 const MODULE_REQUIRES = ["folder-display-helpers", "mock-object-helpers"];
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 var os = {};
 Cu.import('resource://mozmill/stdlib/os.js', os);
 
-let Cr = Components.results;
+var Cr = Components.results;
 
 const kMockContractIDPrefix = "@mozilla.org/mail/mockCloudFile;1?id=";
 
 const kDefaults = {
   iconClass: "chrome://messenger/skin/icons/dropbox.png",
   accountKey: null,
   settingsURL: "",
   managementURL: "",
--- a/mail/test/mozmill/shared-modules/test-content-tab-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-content-tab-helpers.js
@@ -25,17 +25,17 @@ const EXT_PROTOCOL_SVC_CID = "@mozilla.o
 var folderDisplayHelper;
 var mc;
 var wh;
 
 var _originalBlocklistURL = null;
 
 // logHelper (and therefore folderDisplayHelper) exports
 var mark_failure;
-let gMockExtProtocolSvcReg;
+var gMockExtProtocolSvcReg;
 
 function setupModule() {
   folderDisplayHelper = collector.getModule('folder-display-helpers');
   mc = folderDisplayHelper.mc;
   mark_failure = folderDisplayHelper.mark_failure;
 
   wh = collector.getModule('window-helpers');
   let moh = collector.getModule('mock-object-helpers');
@@ -71,17 +71,17 @@ function installInto(module) {
   module.gMockExtProtSvcReg = gMockExtProtSvcReg;
   module.gMockExtProtSvc = gMockExtProtSvc;
 }
 
 /**
  * gMockExtProtocolSvc allows us to capture (most if not all) attempts to
  * open links in the default browser.
  */
-let gMockExtProtSvc = {
+var gMockExtProtSvc = {
   _loadedURLs: [],
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIExternalProtocolService]),
 
   externalProtocolHandlerExists: function(aProtocolScheme) {
   },
 
   getApplicationDescription: function(aScheme) {
   },
@@ -116,17 +116,17 @@ function MockExtProtConstructor() {
 
 
 /* Allows for planning / capture of notification events within
  * content tabs, for example: plugin crash notifications, theme
  * install notifications.
  */
 const ALERT_TIMEOUT = 10000;
 
-let NotificationWatcher = {
+var NotificationWatcher = {
   planForNotification: function(aController) {
     this.alerted = false;
     aController.window.document.addEventListener("AlertActive",
                                                  this.alertActive, false);
   },
   waitForNotification: function(aController) {
     if (!this.alerted) {
       aController.waitFor(() => this.alerted, "Timeout waiting for alert",
--- a/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
@@ -2140,17 +2140,17 @@ function assert_messages_summarized(aCon
                     elaboration);
   }
 }
 
 /**
  * Assert that there is nothing selected and, assuming we are in a folder, that
  *  the folder summary is displayed.
  */
-let assert_nothing_selected = assert_selected_and_displayed;
+var assert_nothing_selected = assert_selected_and_displayed;
 
 /**
  * Assert that the given view index or message is visible in the thread pane.
  */
 function assert_visible(aViewIndexOrMessage) {
   let viewIndex;
   if (typeof(aViewIndexOrMessage) == "number")
     viewIndex = _normalize_view_index(aViewIndexOrMessage);
@@ -2464,17 +2464,17 @@ function assert_folders_selected() {
       folder => _non_strict_index_of(desiredFolders, folder) == -1))
     throw new Error("Desired selection is: " +
                     _prettify_folder_array(desiredFolders) + " but actual " +
                     "selection is: " + _prettify_folder_array(selectedFolders));
 
   return [troller, desiredFolders];
 }
 
-let assert_folder_selected = assert_folders_selected;
+var assert_folder_selected = assert_folders_selected;
 
 /**
  * Assert that the given folder is displayed, but not necessarily selected.
  * Unless you are dealing with transient selection issues, you really should
  * be using assert_folders_selected_and_displayed.
  *
  * The arguments consist of one or more of the following:
  * - A MozmillController, indicating we should use that controller instead of
@@ -2516,18 +2516,18 @@ function assert_folders_selected_and_dis
   if (desiredFolders.length > 0) {
       if (troller.folderDisplay.displayedFolder != desiredFolders[0])
         mark_failure(["The displayed folder should be", desiredFolders[0],
                       "but is actually",
                       troller.folderDisplay.displayedFolder]);
   }
 }
 
-let assert_no_folders_selected = assert_folders_selected_and_displayed;
-let assert_folder_selected_and_displayed =
+var assert_no_folders_selected = assert_folders_selected_and_displayed;
+var assert_folder_selected_and_displayed =
     assert_folders_selected_and_displayed;
 
 /**
  * Assert that there are the given number of rows (not including children of
  * collapsed parents) in the folder tree view.
  */
 function assert_folder_tree_view_row_count(aCount) {
   if (mc.folderTreeView.rowCount != aCount)
--- a/mail/test/mozmill/shared-modules/test-mock-object-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-mock-object-helpers.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
   * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const MODULE_NAME = "mock-object-helpers";
 
-let Cm = Components.manager;
+var Cm = Components.manager;
 
 function installInto(module) {
   module.MockObjectReplacer = MockObjectReplacer;
   module.MockObjectRegisterer = MockObjectRegisterer;
 }
 
 function MockObjectRegisterer(aContractID, aCID, aComponent) {
   this._contractID = aContractID;
--- a/mail/test/mozmill/shared-modules/test-prompt-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-prompt-helpers.js
@@ -10,17 +10,17 @@ const MODULE_REQUIRES = ["mock-object-he
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 
 const kMockPromptServiceName = "Mock Prompt Service";
 const kPromptServiceContractID = "@mozilla.org/embedcomp/prompt-service;1";
 const kPromptServiceName = "Prompt Service";
 
-let gMockAuthPromptReg;
+var gMockAuthPromptReg;
 
 function setupModule() {
   let moh = collector.getModule('mock-object-helpers');
   gMockAuthPromptReg = new moh.MockObjectReplacer("@mozilla.org/prompter;1",
                                                   MockAuthPromptFactoryConstructor);
 }
 
 function installInto(module) {
--- a/mail/test/mozmill/shared-modules/test-window-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-window-helpers.js
@@ -761,18 +761,18 @@ function _wait_for_generic_load(aDetails
                               .getInterface(Ci.nsIDOMWindowUtils)
                               .outerWindowID;
   controller.windowMap.update(windowId, "loaded", true);
   let cwc = new controller.MozMillController(contentWindow);
   return augment_controller(cwc);
 }
 
 
-let observationWaitFuncs = {};
-let observationSaw = {};
+var observationWaitFuncs = {};
+var observationSaw = {};
 /**
  * Plan for a notification to be sent via the observer service.
  *
  * @param aTopic The topic that will be sent via the observer service.
  */
 function plan_for_observable_event(aTopic) {
   mark_action("fdh", "plan_for_observable_event", [aTopic]);
   observationSaw[aTopic] = false;
--- a/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
+++ b/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
@@ -2,19 +2,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests that the main menu will be collapsed by default if Thunderbird starts
  * with no accounts created.
  */
 
-let MODULE_NAME = "test-main-menu-collapsed";
-let RELATIVE_ROOT = "../shared-modules";
-let MODULE_REQUIRES = ["folder-display-helpers",
+var MODULE_NAME = "test-main-menu-collapsed";
+var RELATIVE_ROOT = "../shared-modules";
+var MODULE_REQUIRES = ["folder-display-helpers",
                        "window-helpers"];
 
 function setupModule(module) {
   collector.getModule("folder-display-helpers").installInto(module);
   collector.getModule("window-helpers").installInto(module);
 }
 
 function test_main_menu_collapsed() {
--- a/mail/test/mozmill/tabmail/test-tabmail-dragndrop.js
+++ b/mail/test/mozmill/tabmail/test-tabmail-dragndrop.js
@@ -13,17 +13,17 @@ Cu.import("resource://gre/modules/Servic
 var MODULE_NAME = "test-tabmail-dragndrop";
 
 var RELATIVE_ROOT = "../shared-modules";
 var MODULE_REQUIRES = ["folder-display-helpers", "window-helpers",
                        'mouse-event-helpers'];
 
 
 var folder;
-let msgHdrsInFolder = [];
+var msgHdrsInFolder = [];
 
 // The number of messages in folder.
 const NUM_MESSAGES_IN_FOLDER = 15;
 
 function setupModule(module) {
   let fdh = collector.getModule("folder-display-helpers");
   fdh.installInto(module);
   let wh = collector.getModule("window-helpers");
--- a/mail/test/mozmill/utils/test-iteratorUtils.js
+++ b/mail/test/mozmill/utils/test-iteratorUtils.js
@@ -7,24 +7,24 @@
  */
 
 const MODULE_NAME = 'test-cloudfile-attachment-item';
 
 const RELATIVE_ROOT = '../shared-modules';
 const MODULE_REQUIRES = ['folder-display-helpers',
                          'content-tab-helpers',]
 
-let iteratorUtils = {};
+var iteratorUtils = {};
 Cu.import('resource:///modules/iteratorUtils.jsm', iteratorUtils);
 
 const kWhatsNewPref = 'mailnews.start_page.override_url';
 
-let gUrl = collector.addHttpResource('../utils/html', '');
-let gCollectionsUrl = gUrl + "collections.html";
-let gOriginalWhatsNew, gTab;
+var gUrl = collector.addHttpResource('../utils/html', '');
+var gCollectionsUrl = gUrl + "collections.html";
+var gOriginalWhatsNew, gTab;
 
 function setupModule(module) {
   collector.getModule('folder-display-helpers').installInto(module);
   collector.getModule('content-tab-helpers').installInto(module);
 
   gOriginalWhatsNew = Services.prefs.getCharPref(kWhatsNewPref);
   Services.prefs.setCharPref(kWhatsNewPref, gCollectionsUrl);
 }
--- a/mail/test/resources/mozmill/docs/_build/html/_static/jquery.js
+++ b/mail/test/resources/mozmill/docs/_build/html/_static/jquery.js
@@ -24,9 +24,9 @@ ret=jQuery.merge(ret,elem);});return ret
 while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
 while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
 for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
 jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
 xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
 jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
 for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
 s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
-e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
\ No newline at end of file
+e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
--- a/mail/test/resources/mozmill/docs/_build/html/searchindex.js
+++ b/mail/test/resources/mozmill/docs/_build/html/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({desctypes:{"0":"method","1":"class","2":"attribute"},terms:{all:0,code:0,help:0,show:0,skip:0,fall:0,tcp:[],jsbridge_port:0,mozmil:0,endrunn:0,comma:0,jsbridg:0,still:0,find:0,jsconol:0,current:0,onli:0,locat:0,cli:0,binari:0,should:0,add:0,logger:0,local:0,sure:0,applic:0,firefoxrunn:0,python:0,initi:0,autom:0,util:0,failur:0,report:0,run_test:0,requir:[],docutil:0,list:0,server:0,provid:0,either:0,debug:0,output:0,side:0,"int":[],set:0,fair:0,seper:0,back:0,defaultprofil:0,mozrun:0,result:0,mozrunn:0,pass:0,event:0,out:0,even:0,xulrunn:0,back_channel:0,subclass:0,profil:0,exit:0,print:0,"new":0,method:0,attribut:[],shut:0,full:0,run:0,usag:0,given:0,extens:0,ipython:0,path:0,post:0,"super":0,valu:0,addit:0,deflat:0,obj:0,brasstack:0,plugin:0,forc:0,manag:0,amount:0,instanc:0,chang:0,own:0,firefox:0,modul:0,number:0,down:0,done:0,instal:0,facil:0,your:0,xpi:0,span:0,log:0,zip:0,messag:0,usecod:0,avail:0,start:0,live:0,interfac:0,includ:0,handl:0,call:0,default_profil:[],type:[],listen:0,wait_and_create_network:0,from:0,shell:0,consol:0,option:0,fire:0,relat:0,specifi:0,ani:0,lift:0,line:0,must:0,heavi:0,"default":0,endtest:0,directori:0,bridg:0,can:0,error:0,pre:0,firefoxprofil:0,add_listen:0,creat:0,ctrl:0,runner:0,dure:0,argument:0,mode:0,showal:0,liter:0,versatil:0,file:0,requisit:0,keep:0,integr:0,develop:0,self:0,when:0,backchannel:0,port:0,also:0,other:0,"__init__":[],which:0,test:0,instead:0,you:0,endrunner_listen:0,singl:0,finish:0,clean:0,though:0,track:0,object:0,compress:0,endtest_listen:0,most:0,logfil:0,profile_class:0,"class":0,url:[],runner_class:0,well:0,uri:0,inherit:0,callback:0,without:0,command:0,thi:0,fresh:0,order:0,respect:0},titles:["<tt class=\"docutils literal\"><span class=\"pre\">mozmill</span></tt> &#8212; Full automation of XULRunner applications."],modules:{mozmill:0},descrefs:{"mozmill.CLI":{runner_class:[0,2],profile_class:[0,2]},"mozmill.MozMill":{profile:[0,2],bridge:[0,2],endRunner_listener:[0,0],endTest_listener:[0,0],jsbridge_port:[0,2],runner:[0,2],back_channel:[0,2],runner_class:[0,2],run_tests:[0,0],start:[0,0],profile_class:[0,2]},mozmill:{CLI:[0,1],MozMill:[0,1]}},filenames:["index"]})
\ No newline at end of file
+Search.setIndex({desctypes:{"0":"method","1":"class","2":"attribute"},terms:{all:0,code:0,help:0,show:0,skip:0,fall:0,tcp:[],jsbridge_port:0,mozmil:0,endrunn:0,comma:0,jsbridg:0,still:0,find:0,jsconol:0,current:0,onli:0,locat:0,cli:0,binari:0,should:0,add:0,logger:0,local:0,sure:0,applic:0,firefoxrunn:0,python:0,initi:0,autom:0,util:0,failur:0,report:0,run_test:0,requir:[],docutil:0,list:0,server:0,provid:0,either:0,debug:0,output:0,side:0,"int":[],set:0,fair:0,seper:0,back:0,defaultprofil:0,mozrun:0,result:0,mozrunn:0,pass:0,event:0,out:0,even:0,xulrunn:0,back_channel:0,subclass:0,profil:0,exit:0,print:0,"new":0,method:0,attribut:[],shut:0,full:0,run:0,usag:0,given:0,extens:0,ipython:0,path:0,post:0,"super":0,valu:0,addit:0,deflat:0,obj:0,brasstack:0,plugin:0,forc:0,manag:0,amount:0,instanc:0,chang:0,own:0,firefox:0,modul:0,number:0,down:0,done:0,instal:0,facil:0,your:0,xpi:0,span:0,log:0,zip:0,messag:0,usecod:0,avail:0,start:0,live:0,interfac:0,includ:0,handl:0,call:0,default_profil:[],type:[],listen:0,wait_and_create_network:0,from:0,shell:0,consol:0,option:0,fire:0,relat:0,specifi:0,ani:0,lift:0,line:0,must:0,heavi:0,"default":0,endtest:0,directori:0,bridg:0,can:0,error:0,pre:0,firefoxprofil:0,add_listen:0,creat:0,ctrl:0,runner:0,dure:0,argument:0,mode:0,showal:0,liter:0,versatil:0,file:0,requisit:0,keep:0,integr:0,develop:0,self:0,when:0,backchannel:0,port:0,also:0,other:0,"__init__":[],which:0,test:0,instead:0,you:0,endrunner_listen:0,singl:0,finish:0,clean:0,though:0,track:0,object:0,compress:0,endtest_listen:0,most:0,logfil:0,profile_class:0,"class":0,url:[],runner_class:0,well:0,uri:0,inherit:0,callback:0,without:0,command:0,thi:0,fresh:0,order:0,respect:0},titles:["<tt class=\"docutils literal\"><span class=\"pre\">mozmill</span></tt> &#8212; Full automation of XULRunner applications."],modules:{mozmill:0},descrefs:{"mozmill.CLI":{runner_class:[0,2],profile_class:[0,2]},"mozmill.MozMill":{profile:[0,2],bridge:[0,2],endRunner_listener:[0,0],endTest_listener:[0,0],jsbridge_port:[0,2],runner:[0,2],back_channel:[0,2],runner_class:[0,2],run_tests:[0,0],start:[0,0],profile_class:[0,2]},mozmill:{CLI:[0,1],MozMill:[0,1]}},filenames:["index"]})
--- a/mail/test/resources/mozmill/mozmill/extension/content/dxwindow.xul
+++ b/mail/test/resources/mozmill/mozmill/extension/content/dxwindow.xul
@@ -6,9 +6,9 @@
      xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
 <prefpane id="dxwindow" label="DOM Explorer">
 
   <hbox id="dxtarget" align="center">
   </hbox>
 </prefpane>
 
-</prefwindow>
\ No newline at end of file
+</prefwindow>
--- a/mail/test/resources/mozmill/mozmill/extension/content/jquery/jquery-1.3.2.min.js
+++ b/mail/test/resources/mozmill/mozmill/extension/content/jquery/jquery-1.3.2.min.js
@@ -11,9 +11,9 @@
  */
 (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
 /*
  * Sizzle CSS Selector Engine - v0.9.3
  *  Copyright 2009, The Dojo Foundation
  *  Released under the MIT, BSD, and GPL Licenses.
  *  More information: http://sizzlejs.com/
  */
-(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
--- a/mail/test/resources/mozmill/mozmill/extension/content/jquery/jquery-ui-1.7.1.custom.min.js
+++ b/mail/test/resources/mozmill/mozmill/extension/content/jquery/jquery-ui-1.7.1.custom.min.js
@@ -265,9 +265,9 @@
  * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT (MIT-LICENSE.txt)
  * and GPL (GPL-LICENSE.txt) licenses.
  *
  * http://docs.jquery.com/UI/Effects/Transfer
  *
  * Depends:
  *	effects.core.js
- */
(function(a){a.effects.transfer=function(b){return this.queue(function(){var f=a(this),h=a(b.options.to),e=h.offset(),g={top:e.top,left:e.left,height:h.innerHeight(),width:h.innerWidth()},d=f.offset(),c=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:d.top,left:d.left,height:f.innerHeight(),width:f.innerWidth(),position:"absolute"}).animate(g,b.duration,b.options.easing,function(){c.remove();(b.callback&&b.callback.apply(f[0],arguments));f.dequeue()})})}})(jQuery);;
\ No newline at end of file
+ */
(function(a){a.effects.transfer=function(b){return this.queue(function(){var f=a(this),h=a(b.options.to),e=h.offset(),g={top:e.top,left:e.left,height:h.innerHeight(),width:h.innerWidth()},d=f.offset(),c=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:d.top,left:d.left,height:f.innerHeight(),width:f.innerWidth(),position:"absolute"}).animate(g,b.duration,b.options.easing,function(){c.remove();(b.callback&&b.callback.apply(f[0],arguments));f.dequeue()})})}})(jQuery);;
--- a/mail/test/resources/mozmill/mozmill/extension/content/prefs.xul
+++ b/mail/test/resources/mozmill/mozmill/extension/content/prefs.xul
@@ -10,9 +10,9 @@
     <preference id="pref1" name="stockwatcher2.symbol" type="string"/>
   </preferences>
 
   <hbox align="center">
     <label control="symbol" value="All kinds of preferences go in here."/>
   </hbox>
 </prefpane>
 
-</prefwindow>
\ No newline at end of file
+</prefwindow>
--- a/mail/test/resources/mozmill/mozmill/extension/content/test/test.js
+++ b/mail/test/resources/mozmill/mozmill/extension/content/test/test.js
@@ -8,9 +8,9 @@ function dragStart(event) {
 }
 
 function dragOver(event) {
   event.preventDefault();
 }
 
 function dragEnter(event) {
   event.preventDefault();
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/mozmill/extension/content/test/test.xul
+++ b/mail/test/resources/mozmill/mozmill/extension/content/test/test.xul
@@ -14,9 +14,9 @@
           ondragstart="dragStart(event)">
     </hbox>
 
     <hbox id="item2"
           ondrop="drop(event)"
           ondragover="return false">
     </hbox>
   </vbox>
-</window>
\ No newline at end of file
+</window>
--- a/mail/test/resources/mozmill/mozmill/extension/resource/stdlib/arrays.js
+++ b/mail/test/resources/mozmill/mozmill/extension/resource/stdlib/arrays.js
@@ -85,9 +85,9 @@ function compare (array, carray) {
     return false;
   }
   for (i in array) {
     if (array[i] != carray[i]) {
       return false;
     }
   }
   return true;
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/mozmill/extension/resource/stdlib/strings.js
+++ b/mail/test/resources/mozmill/mozmill/extension/resource/stdlib/strings.js
@@ -42,9 +42,9 @@ var arrays = {}; Components.utils.import
 var trim = function (str) {
   return (str.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""));
 }
 
 var vslice = function (str, svalue, evalue) {
   var sindex = arrays.indexOf(str, svalue);
   var eindex = arrays.rindexOf(str, evalue);
   return str.slice(sindex + 1, eindex);
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/commonjs/modules1/moda.js
+++ b/mail/test/resources/mozmill/test/commonjs/modules1/moda.js
@@ -1,8 +1,8 @@
 var modb = require("modb"),
     modc = require("../modules2/modc");
 
 exports.add = modc.add;
 
 exports.subtract = function(a, b) {
   return a - b;
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/commonjs/modules1/modb.js
+++ b/mail/test/resources/mozmill/test/commonjs/modules1/modb.js
@@ -1,5 +1,5 @@
 function divide(a, b) {
   return a / b;
 }
 
-exports.divide = divide;
\ No newline at end of file
+exports.divide = divide;
--- a/mail/test/resources/mozmill/test/commonjs/modules2/modc.js
+++ b/mail/test/resources/mozmill/test/commonjs/modules2/modc.js
@@ -1,3 +1,3 @@
 exports.add = function(a, b) {
   return a + b;
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/commonjs/tests/test_require.js
+++ b/mail/test/resources/mozmill/test/commonjs/tests/test_require.js
@@ -1,4 +1,4 @@
 var moda = require("../modules1/moda");
 
 var six = moda.subtract(10, 4);
-var five = moda.add(2, 3);
\ No newline at end of file
+var five = moda.add(2, 3);
--- a/mail/test/resources/mozmill/test/dnd/testhtml.js
+++ b/mail/test/resources/mozmill/test/dnd/testhtml.js
@@ -8,9 +8,9 @@ var test = function () {
 
   var bar = new elementslib.ID(controller.window.document, "item1");
   var box = new elementslib.ID(controller.window.document, "item2");
 
   controller.dragToElement(bar, box);
 
   // successful drop makes bar disappear
   controller.assertNodeNotExist(bar);
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/dnd/testxul.js
+++ b/mail/test/resources/mozmill/test/dnd/testxul.js
@@ -8,9 +8,9 @@ var test = function () {
 
   var bar = new elementslib.ID(controller.window.document, "item1");
   var box = new elementslib.ID(controller.window.document, "item2");
 
   controller.dragToElement(bar, box);
 
   // successful drop makes bar disappear
   controller.assertNodeNotExist(bar);
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/elementLib-UnitTest.js
+++ b/mail/test/resources/mozmill/test/elementLib-UnitTest.js
@@ -35,9 +35,9 @@ var test_foo = function(){
   e = new elementslib.Lookup(chrome, '/id("main-window")/id("navigator-toolbox")/id("nav-bar")/id("search-container")/id("searchbar")/anon({"anonid":"searchbar-textbox"})/anon({"anonid":"searchbar-engine-button"})/anon({"anonid":"searchbar-popup"})/id("Yahoo")');
   controller.click(e);
   controller.sleep(1000);
 
   // Type in searchbox and hit return
   e = new elementslib.Lookup(chrome, '/id("main-window")/id("navigator-toolbox")/id("nav-bar")/id("search-container")/id("searchbar")/anon({"anonid":"searchbar-textbox"})/anon({"class":"autocomplete-textbox-container"})/anon({"anonid":"textbox-input-box"})/anon({"anonid":"input"})');
   controller.type(e, "mozilla");
   controller.keypress(e, 13);
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/restart/test_browser/testPost.js
+++ b/mail/test/resources/mozmill/test/restart/test_browser/testPost.js
@@ -10,9 +10,9 @@ var testKnowRightsDoesNotExist = functio
   if (!persisted.test) {
     throw "Persisted is not working."
   }
   var e = new elementslib.Lookup(controller.window.document, '/id("main-window")/id("browser")/id("appcontent")/id("content")/anon({"anonid":"tabbox"})/anon({"anonid":"panelcontainer"})/[0]/{"value":"about-rights"}/{"accesskey":"K"}');
 
   if (e.exists()) {
     throw 'First run "know our rights" dialog is up after restart';
   }
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/restart/test_fails/testPost.js
+++ b/mail/test/resources/mozmill/test/restart/test_fails/testPost.js
@@ -50,9 +50,9 @@ var testNotAsserts = function() {
   jum.assertNotEquals('asdf', 'asdf');
   jum.assertNull(true);
   jum.assertNotNull(null);
   jum.assertUndefined('asdf');
   jum.assertNotUndefined({}.asdf);
   jum.assertNaN(4);
   jum.assertNotNaN('f');
   jum.fail();
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/restart/test_fails/testPre.js
+++ b/mail/test/resources/mozmill/test/restart/test_fails/testPre.js
@@ -50,9 +50,9 @@ var testNotAsserts = function() {
   jum.assertNotEquals('asdf', 'asdf');
   jum.assertNull(true);
   jum.assertNotNull(null);
   jum.assertUndefined('asdf');
   jum.assertNotUndefined({}.asdf);
   jum.assertNaN(4);
   jum.assertNotNaN('f');
   jum.fail();
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/test_assert.js
+++ b/mail/test/resources/mozmill/test/test_assert.js
@@ -16,9 +16,9 @@ var test_assert = function(){
  controller.click(new elementslib.Name(controller.window.content.document, 'btnG'));
  controller.sleep(2000);
 
  // chrome
  controller.assertNode(new elementslib.ID(controller.window.document, 'searchbar'));
  controller.type(new elementslib.ID(controller.window.document, 'searchbar'), 'Mozilla Summit');
  controller.assertValue(new elementslib.ID(controller.window.document, 'searchbar'), 'Mozilla Summit');
  controller.keypress(new elementslib.ID(controller.window.document, 'searchbar'), '13');
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/test_diggIterator.js
+++ b/mail/test/resources/mozmill/test/test_diggIterator.js
@@ -10,9 +10,9 @@ var mozmill = {}; Components.utils.impor
 //   var links = controller.window.content.document.getElementsByTagName('a');
 //
 //   for (var i = 0; i<links.length; i++){
 //     controller.click(new elementslib.Elem( links[i] ));
 //     controller.sleep(3000);
 //     links = controller.window.content.document.getElementsByTagName('a');
 //     controller.sleep(2000);
 //   }
-// }
\ No newline at end of file
+// }
--- a/mail/test/resources/mozmill/test/test_focus.js
+++ b/mail/test/resources/mozmill/test/test_focus.js
@@ -93,9 +93,9 @@ var testContentTextboxFocus = function()
 var testChromeTextboxFocus = function() {
   var searchBar = new elementslib.ID(controller.window.document, "searchbar");
 
   checkKeypressFunction(searchBar);
 
   // Move focus to the location bar to blur the search bar
   controller.keypress(null, "l", {accelKey: true});
   checkTypeFunction(searchBar);
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/test_googleIterator.js
+++ b/mail/test/resources/mozmill/test/test_googleIterator.js
@@ -13,9 +13,9 @@ var mozmill = {}; Components.utils.impor
 //   var links = controller.window.content.document.getElementsByTagName('a');
 //
 //   for (var i = 0; i<links.length; i++){
 //     controller.click(new elementslib.Elem( links[i] ));
 //     controller.sleep(5000);
 //     links = controller.window.content.document.getElementsByTagName('a');
 //     controller.sleep(2000);
 //   }
-// }
\ No newline at end of file
+// }
--- a/mail/test/resources/mozmill/test/test_jum.js
+++ b/mail/test/resources/mozmill/test/test_jum.js
@@ -23,9 +23,9 @@ var testPass = function() {
  jum.assertNotEquals(2, 3, "shouldn't fail");
  jum.assertNull(null, "shouldn't fail");
  jum.assertNotNull(true, "shouldn't fail");
  jum.assertUndefined(undefined, "shouldn't fail");
  jum.assertNotUndefined(true, "shouldn't fail");
  jum.assertNaN(NaN, "shouldn't fail");
  jum.assertNotNaN(true, "shouldn't fail");
  jum.pass("shouldn't fail");
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/test_something/test_parents.js
+++ b/mail/test/resources/mozmill/test/test_something/test_parents.js
@@ -4,9 +4,9 @@ var MODULE_NAME = 'test_parent';
 var asdf = 'asdf'
 
 var setupModule = function (module) {
 
 }
 
 var testInParent = function () {
 
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/test_something/test_sub/test_deps.js
+++ b/mail/test/resources/mozmill/test/test_something/test_sub/test_deps.js
@@ -5,9 +5,9 @@ var RELATIVE_ROOT = '..';
 var MODULE_REQUIRES = ['test_parent'];
 
 var setupModule = function(module) {
   // module.asdf = module.collector.getModule('test_parent').asdf;
 }
 
 var testDependencies = function() {
   jum.assertEquals(test_parent.asdf, 'asdf');
-}
\ No newline at end of file
+}
--- a/mail/test/resources/mozmill/test/test_unit.js
+++ b/mail/test/resources/mozmill/test/test_unit.js
@@ -51,9 +51,9 @@ var testNotAsserts = function() {
   jum.assertNotEquals('asdf', 'asdf');
   jum.assertNull(true);
   jum.assertNotNull(null);
   jum.assertUndefined('asdf');
   jum.assertNotUndefined({}.asdf);
   jum.assertNaN(4);
   jum.assertNotNaN('f');
   jum.fail();
-}
\ No newline at end of file
+}
--- a/mailnews/addrbook/test/unit/test_nsAbManager3.js
+++ b/mailnews/addrbook/test/unit/test_nsAbManager3.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Tests that an address book, once renamed, is not deleted when a sibling address book is deleted.
  */
 
-let gAbListener;
+var gAbListener;
 
 function abListener() {
 }
 
 abListener.prototype = {
   mReceived: 0,
   mDirectory: null,
 
--- a/mailnews/base/prefs/content/SmtpServerEdit.js
+++ b/mailnews/base/prefs/content/SmtpServerEdit.js
@@ -2,17 +2,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource:///modules/hostnameUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 
-let gSmtpServer;
+var gSmtpServer;
 
 function onLoad(event)
 {
   gSmtpServer = window.arguments[0].server;
   initSmtpSettings(gSmtpServer);
 }
 
 function onAccept()
--- a/mailnews/base/prefs/content/am-junk.js
+++ b/mailnews/base/prefs/content/am-junk.js
@@ -2,17 +2,17 @@
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource:///modules/iteratorUtils.jsm");
 Components.utils.import("resource:///modules/MailUtils.js");
 
-let gDeferredToAccount = "";
+var gDeferredToAccount = "";
 
 function onInit(aPageId, aServerId)
 {
   // manually adjust several pref UI elements
   document.getElementById('server.spamLevel.visible').setAttribute("checked",
     document.getElementById('server.spamLevel').value > 0);
 
   let deferredToURI = null;
--- a/mailnews/base/search/content/FilterEditor.js
+++ b/mailnews/base/search/content/FilterEditor.js
@@ -26,19 +26,19 @@ var gFilterPosition = 0;
 var gFilterActionStrings = ["none", "movemessage", "setpriorityto", "deletemessage",
                             "markasread", "ignorethread", "watchthread", "markasflagged",
                             "label", "replytomessage", "forwardmessage", "stopexecution",
                             "deletefrompopserver",  "leaveonpopserver", "setjunkscore",
                             "fetchfrompopserver", "copymessage", "addtagtomessage",
                             "ignoresubthread", "markasunread"];
 
 // A temporary filter with the current state of actions in the UI.
-let gTempFilter = null;
+var gTempFilter = null;
 // A nsIArray of the currently defined actions in the order they will be run.
-let gActionListOrdered = null;
+var gActionListOrdered = null;
 
 var gFilterEditorMsgWindow = null;
 
 const nsMsgFilterAction = Components.interfaces.nsMsgFilterAction;
 const nsMsgFilterType   = Components.interfaces.nsMsgFilterType;
 const nsIMsgRuleAction  = Components.interfaces.nsIMsgRuleAction;
 const nsMsgSearchScope  = Components.interfaces.nsMsgSearchScope;
 
--- a/mailnews/base/test/unit/test_compactFailure.js
+++ b/mailnews/base/test/unit/test_compactFailure.js
@@ -4,18 +4,18 @@ Components.utils.import("resource://test
 
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 load("../../../resources/messageGenerator.js");
 
 Services.prefs.setCharPref("mail.serverDefaultStoreContractID",
                            "@mozilla.org/msgstore/berkeleystore;1");
 
-let gTargetFolder;
-let gUuid;
+var gTargetFolder;
+var gUuid;
 
 // Allow certain xpcom errors.
 logHelperAllowedErrors.push(Cr.NS_ERROR_FILE_IS_LOCKED);
 logHelperAllowedErrors.push(Cr.NS_ERROR_FILE_TARGET_DOES_NOT_EXIST);
 
 function LockedFileOutputStream() {
 }
 
--- a/mailnews/base/test/unit/test_detachToFile.js
+++ b/mailnews/base/test/unit/test_detachToFile.js
@@ -82,17 +82,17 @@ function SaveAttachmentCallback() {
 }
 
 SaveAttachmentCallback.prototype = {
   callback: function saveAttachmentCallback_callback(aMsgHdr, aMimeMessage) {
     this.attachments = aMimeMessage.allAttachments;
     async_driver();
   }
 }
-let gCallbackObject = new SaveAttachmentCallback();
+var gCallbackObject = new SaveAttachmentCallback();
 
 function run_test()
 {
   if (!localAccountUtils.inboxFolder)
     localAccountUtils.loadLocalMailAccount();
   async_run_tests(tests);
 }
 
--- a/mailnews/base/test/unit/test_junkWhitelisting.js
+++ b/mailnews/base/test/unit/test_junkWhitelisting.js
@@ -31,17 +31,17 @@ const kDomainTest = 0;
 const kDomainExample = 1;
 
 var Files = 
 [
   "../../../data/bugmail1",
   "../../../data/bugmail3"
 ]
 
-let hdrs = [];
+var hdrs = [];
 
 function run_test()
 {
 
   // Test setup - copy the data file into place
   var testAB = do_get_file("../../../addrbook/test/unit/data/cardForEmail.mab");
 
   // Copy the file to the profile directory for a PAB (this is the personal address book)
--- a/mailnews/base/test/unit/test_mimemaltdetach.js
+++ b/mailnews/base/test/unit/test_mimemaltdetach.js
@@ -86,17 +86,17 @@ function SaveAttachmentCallback() {
 }
 
 SaveAttachmentCallback.prototype = {
   callback: function saveAttachmentCallback_callback(aMsgHdr, aMimeMessage) {
     this.attachments = aMimeMessage.allAttachments;
     async_driver();
   }
 }
-let gCallbackObject = new SaveAttachmentCallback();
+var gCallbackObject = new SaveAttachmentCallback();
 
 function run_test()
 {
   if (!localAccountUtils.inboxFolder)
     localAccountUtils.loadLocalMailAccount();
   async_run_tests(tests);
 }
 
--- a/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js
+++ b/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js
@@ -11,17 +11,17 @@ load("../../../resources/messageInjectio
 var ViewType = Components.interfaces.nsMsgViewType;
 var SortType = Components.interfaces.nsMsgViewSortType;
 var SortOrder = Components.interfaces.nsMsgViewSortOrder;
 
 // This is an array of the actual test data. Each test datum is an array of two
 // elements: the first element is the argument into a simple message generator,
 // and the second element is a map of column names to expected values when
 // requesting the cell text for a given column name.
-let tests = [
+var tests = [
   [{from: "John Doe <db@tinderbox.invalid>"}, {sender: "John Doe"}],
   [{from: "\"Doe, John\" <db@tinderbox.invalid>"}, {sender: "Doe, John"}],
   [{from: "John Doe <db@tinderbox.invalid>, Sally Ann <db@null.invalid>"},
     {sender: "John Doe"}],
   [{from: "=?UTF-8?Q?David_H=C3=A5s=C3=A4ther?= <db@null.invalid>"},
     {sender: "David Håsäther"}],
   [{from: "=?UTF-8?Q?H=C3=A5s=C3=A4ther=2C_David?= <db@null.invalid>"},
     {sender: "Håsäther, David"}],
--- a/mailnews/base/test/unit/test_searchBoolean.js
+++ b/mailnews/base/test/unit/test_searchBoolean.js
@@ -6,17 +6,17 @@
  * Demonstrates and tests the use of grouped boolean expressions in search terms
  */
  
 Components.utils.import("resource:///modules/mailServices.js");
 
 const gSearchSession = Cc["@mozilla.org/messenger/searchSession;1"]
                         .createInstance(Ci.nsIMsgSearchSession);
 
-let gHdr; // the message header for the one mailbox message
+var gHdr; // the message header for the one mailbox message
 
 var Tests =
 [
   { A: false,
     B: false,
     C: false,
     D: false,
     matches: false},
@@ -163,17 +163,17 @@ function run_test()
   // Get a message into the local filestore. function testSearch() continues
   // the testing after the copy.
   var bugmail1 = do_get_file("../../../data/bugmail1");
   do_test_pending();
   MailServices.copy.CopyFileMessage(bugmail1, localAccountUtils.inboxFolder, null,
                                     false, 0, "", copyListener, null);
 }
 
-let gTest = null;
+var gTest = null;
 // process each test from queue, calls itself upon completion of each search
 function testSearch()
 {
   // tests the previous search
   if (gTest)
     do_check_eq(gHitCount, gTest.matches ? 1 : 0);
   gTest = Tests.shift();
   if (gTest)
--- a/mailnews/base/test/unit/test_searchChaining.js
+++ b/mailnews/base/test/unit/test_searchChaining.js
@@ -74,17 +74,17 @@ var searchListener =
   },
   onSearchDone: function(status)
   { 
     Assert.equal(this.numTotalMessages, 1);
     return true;
   }
 };
 
-let tests = [
+var tests = [
   setupIMAPPump,
   setupFolder,
   searchTest,
   teardownIMAPPump
 ];
 
 function run_test() {
   tests.forEach(add_task);
--- a/mailnews/base/util/mailServices.js
+++ b/mailnews/base/util/mailServices.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let EXPORTED_SYMBOLS = ["MailServices"];
+var EXPORTED_SYMBOLS = ["MailServices"];
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-let MailServices = {};
+var MailServices = {};
 
 XPCOMUtils.defineLazyServiceGetter(MailServices, "mailSession",
                                    "@mozilla.org/messenger/services/session;1",
                                    "nsIMsgMailSession");
 
 XPCOMUtils.defineLazyServiceGetter(MailServices, "accounts",
                                    "@mozilla.org/messenger/account-manager;1",
                                    "nsIMsgAccountManager");
--- a/mailnews/base/util/templateUtils.js
+++ b/mailnews/base/util/templateUtils.js
@@ -1,13 +1,13 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-let EXPORTED_SYMBOLS = ["PluralStringFormatter", "makeFriendlyDateAgo"];
+var EXPORTED_SYMBOLS = ["PluralStringFormatter", "makeFriendlyDateAgo"];
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cu = Components.utils;
 
 Cu.import("resource://gre/modules/PluralForm.jsm");
 Cu.import("resource:///modules/StringBundle.js");
--- a/mailnews/compose/test/unit/test_messageHeaders.js
+++ b/mailnews/compose/test/unit/test_messageHeaders.js
@@ -1,17 +1,17 @@
 /*
  * Test suite for ensuring that the headers of messages are set properly.
  */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource:///modules/mimeParser.jsm");
 
-let CompFields = CC("@mozilla.org/messengercompose/composefields;1",
+var CompFields = CC("@mozilla.org/messengercompose/composefields;1",
                     Ci.nsIMsgCompFields);
 
 function makeAttachment(opts = {}) {
   let attachment = Cc["@mozilla.org/messengercompose/attachment;1"]
                      .createInstance(Ci.nsIMsgAttachment);
   for (let key in opts) {
     attachment[key] = opts[key];
   }
--- a/mailnews/compose/test/unit/test_nsIMsgCompFields.js
+++ b/mailnews/compose/test/unit/test_nsIMsgCompFields.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /// Test that nsIMsgCompFields works properly
 
-let Ci = Components.interfaces;
+var Ci = Components.interfaces;
 
-let nsMsgCompFields = Components.Constructor(
+var nsMsgCompFields = Components.Constructor(
   "@mozilla.org/messengercompose/composefields;1",
   Ci.nsIMsgCompFields);
 
 function check_headers(enumerator, container) {
   let checkValues = new Set([for (header of container) header.toLowerCase()]);
   while (enumerator.hasMore()) {
     let value = enumerator.getNext().toLowerCase();
     do_check_true(checkValues.has(value));
--- a/mailnews/db/gloda/modules/databind.js
+++ b/mailnews/db/gloda/modules/databind.js
@@ -6,17 +6,17 @@ this.EXPORTED_SYMBOLS = ["GlodaDatabind"
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cu = Components.utils;
 
 Cu.import("resource:///modules/gloda/log4moz.js");
 
-let DBC_LOG = Log4Moz.repository.getLogger("gloda.ds.dbc");
+var DBC_LOG = Log4Moz.repository.getLogger("gloda.ds.dbc");
 
 function GlodaDatabind(aNounDef, aDatastore) {
   this._nounDef = aNounDef;
   this._tableName = aNounDef.tableName;
   this._tableDef = aNounDef.schema;
   this._datastore = aDatastore;
   this._log = Log4Moz.repository.getLogger("gloda.databind." + this._tableName);
 
--- a/mailnews/db/gloda/modules/datamodel.js
+++ b/mailnews/db/gloda/modules/datamodel.js
@@ -14,17 +14,17 @@ const Cu = Components.utils;
 Cu.import("resource:///modules/mailServices.js");
 
 Cu.import("resource:///modules/gloda/log4moz.js");
 const LOG = Log4Moz.repository.getLogger("gloda.datamodel");
 
 Cu.import("resource:///modules/gloda/utils.js");
 
 // Make it lazy.
-let gMessenger;
+var gMessenger;
 function getMessenger () {
   if (!gMessenger)
     gMessenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
   return gMessenger;
 }
 
 /**
  * @class Represents a gloda attribute definition's DB form.  This class
@@ -112,17 +112,17 @@ GlodaAttributeDBDef.prototype = {
     return dbAttributes;
   },
 
   toString: function() {
     return this._compoundName;
   }
 };
 
-let GlodaHasAttributesMixIn = {
+var GlodaHasAttributesMixIn = {
   enumerateAttributes: function gloda_attrix_enumerateAttributes() {
     let nounDef = this.NOUN_DEF;
     for each (let [key, value] in Iterator(this)) {
       let attrDef = nounDef.attribsByBoundName[key];
       // we expect to not have attributes for underscore prefixed values (those
       //  are managed by the instance's logic.  we also want to not explode
       //  should someone crap other values in there, we get both birds with this
       //  one stone.
--- a/mailnews/db/gloda/modules/datastore.js
+++ b/mailnews/db/gloda/modules/datastore.js
@@ -22,17 +22,17 @@ Cu.import("resource:///modules/gloda/log
 Cu.import("resource:///modules/gloda/datamodel.js");
 Cu.import("resource:///modules/gloda/databind.js");
 Cu.import("resource:///modules/gloda/collection.js");
 
 const MIN_CACHE_SIZE = 8 * 1048576;
 const MAX_CACHE_SIZE = 64 * 1048576;
 const MEMSIZE_FALLBACK_BYTES = 256 * 1048576;
 
-let PCH_LOG = Log4Moz.repository.getLogger("gloda.ds.pch");
+var PCH_LOG = Log4Moz.repository.getLogger("gloda.ds.pch");
 
 /**
  * Commit async handler; hands off the notification to
  *  |GlodaDatastore._asyncCompleted|.
  */
 function PostCommitHandler(aCallbacks) {
   this.callbacks = aCallbacks;
   GlodaDatastore._pendingAsyncStatements++;
@@ -67,31 +67,31 @@ PostCommitHandler.prototype = {
     }
     catch (e) {
       PCH_LOG.error("Exception in handleCompletion:", e);
     }
 
   }
 };
 
-let QFQ_LOG = Log4Moz.repository.getLogger("gloda.ds.qfq");
+var QFQ_LOG = Log4Moz.repository.getLogger("gloda.ds.qfq");
 
 /**
  * Singleton collection listener used by |QueryFromQueryCallback| to assist in
  *  the loading of referenced noun instances.  Which is to say, messages have
  *  identities (specific e-mail addresses) associated with them via attributes.
  *  And these identities in turn reference / are referenced by contacts (the
  *  notion of a person).
  *
  * This listener is primarily concerned with fixing up the references in each
  *  noun instance to its referenced instances once they have been loaded.  It
  *  also deals with caching so that our identity invariant is maintained: user
  *  code should only ever see one distinct instance of a thing at a time.
  */
-let QueryFromQueryResolver = {
+var QueryFromQueryResolver = {
   onItemsAdded: function(aIgnoredItems, aCollection, aFake) {
     let originColl = aCollection.dataStack ? aCollection.dataStack.pop()
                                            : aCollection.data;
     //QFQ_LOG.debug("QFQR: originColl: " + originColl);
     if (aCollection.completionShifter)
       aCollection.completionShifter.push(originColl);
     else
       aCollection.completionShifter = [originColl];
--- a/mailnews/db/gloda/modules/facet.js
+++ b/mailnews/db/gloda/modules/facet.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * This file provides faceting logic.
  */
 
-let EXPORTED_SYMBOLS = ["FacetDriver", "FacetUtils"];
+var EXPORTED_SYMBOLS = ["FacetDriver", "FacetUtils"];
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cu = Components.utils;
 
 Cu.import("resource:///modules/gloda/public.js");
 
--- a/mailnews/db/gloda/modules/log4moz.js
+++ b/mailnews/db/gloda/modules/log4moz.js
@@ -25,17 +25,17 @@ const ONE_KILOBYTE = 1024 * ONE_BYTE;
 const ONE_MEGABYTE = 1024 * ONE_KILOBYTE;
 
 const DEFAULT_NETWORK_TIMEOUT_DELAY = 5;
 
 const CDATA_START = "<![CDATA[";
 const CDATA_END = "]]>";
 const CDATA_ESCAPED_END = CDATA_END + "]]&gt;" + CDATA_START;
 
-let Log4Moz = {
+var Log4Moz = {
   Level: {
     Fatal:  70,
     Error:  60,
     Warn:   50,
     Info:   40,
     Config: 30,
     Debug:  20,
     Trace:  10,
--- a/mailnews/db/gloda/modules/mimeTypeCategories.js
+++ b/mailnews/db/gloda/modules/mimeTypeCategories.js
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * This file wants to be a data file of some sort.  It might do better as a real
  *  raw JSON file.  It is trying to be one right now, but it obviously is not.
  */
 
-let EXPORTED_SYMBOLS = ['MimeCategoryMapping'];
+var EXPORTED_SYMBOLS = ['MimeCategoryMapping'];
 
 /**
  * Input data structure to allow us to build a fast mapping from mime type to
  *  category name.  The keys in MimeCategoryMapping are the top-level
  *  categories.  Each value can either be a list of MIME types or a nested
  *  object which recursively defines sub-categories.  We currently do not use
  *  the sub-categories.  They are just there to try and organize the MIME types
  *  a little and open the door to future enhancements.
@@ -22,17 +22,17 @@ let EXPORTED_SYMBOLS = ['MimeCategoryMap
  *  "gloda.mimetype.category" branch and are making sure localizers are aware
  *  of the change and have time to localize it.
  *
  * Entries with wildcards in them are part of a fallback strategy by the
  *  |mimeTypeNoun| and do not actually use regular expressions or anything like
  *  that.  Everything is a straight string lookup.  Given "foo/bar" we look for
  *  "foo/bar", then "foo/*", and finally "*".
  */
-let MimeCategoryMapping = {
+var MimeCategoryMapping = {
   archives: [
     "application/java-archive",
     "application/x-java-archive",
     "application/x-jar",
     "application/x-java-jnlp-file",
 
     "application/mac-binhex40",
     "application/vnd.ms-cab-compressed",
--- a/mailnews/db/gloda/modules/mimemsg.js
+++ b/mailnews/db/gloda/modules/mimemsg.js
@@ -16,32 +16,32 @@ Components.utils.import("resource://gre/
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const EMITTER_MIME_CODE = "application/x-js-mime-message";
 
 /**
  * The URL listener is surplus because the CallbackStreamListener ends up
  *  getting the same set of events, effectively.
  */
-let dumbUrlListener = {
+var dumbUrlListener = {
   OnStartRunningUrl: function (aUrl) {
   },
   OnStopRunningUrl: function (aUrl, aExitCode) {
   },
 };
 
 /**
  * Maintain a list of all active stream listeners so that we can cancel them all
  *  during shutdown.  If we don't cancel them, we risk calls into javascript
  *  from C++ after the various XPConnect contexts have already begun their
  *  teardown process.
  */
-let activeStreamListeners = {};
+var activeStreamListeners = {};
 
-let shutdownCleanupObserver = {
+var shutdownCleanupObserver = {
   _initialized: false,
   ensureInitialized: function mimemsg_shutdownCleanupObserver_init() {
     if (this._initialized)
       return;
 
     Services.obs.addObserver(this, "quit-application", false);
 
     this._initialized = true;
@@ -126,17 +126,17 @@ CallbackStreamListener.prototype = {
                     createInstance(Ci.nsIScriptableInputStream);
       this._stream.init(aInputStream);
     }
     this._stream.read(aCount);
 
   },
 };
 
-let gMessenger = Cc["@mozilla.org/messenger;1"].
+var gMessenger = Cc["@mozilla.org/messenger;1"].
                    createInstance(Ci.nsIMessenger);
 
 function stripEncryptedParts(aPart) {
   if (aPart.parts && aPart.isEncrypted) {
     aPart.parts = []; // Show an empty container.
   } else if (aPart.parts) {
     aPart.parts = aPart.parts.map(stripEncryptedParts);
   }
@@ -272,17 +272,17 @@ MsgHdrToMimeMessage.RESULT_RENDEVOUZ = {
  * Cram rich options here for the MimeMessageEmitter to grab from.  We
  *  leverage the known control-flow to avoid needing a whole dictionary here.
  *  We set this immediately before constructing the emitter and clear it
  *  afterwards.  Control flow is never yielded during the process and reentrancy
  *  cannot happen via any other means.
  */
 MsgHdrToMimeMessage.OPTION_TUNNEL = null;
 
-let HeaderHandlerBase = {
+var HeaderHandlerBase = {
   /**
    * Look-up a header that should be present at most once.
    *
    * @param aHeaderName The header name to retrieve, case does not matter.
    * @param aDefaultValue The value to return if the header was not found, null
    *     if left unspecified.
    * @return the value of the header if present, and the default value if not
    *  (defaults to null).  If the header was present multiple times, the first
--- a/mailnews/db/gloda/modules/noun_mimetype.js
+++ b/mailnews/db/gloda/modules/noun_mimetype.js
@@ -11,17 +11,17 @@ const Cu = Components.utils;
 
 Cu.import("resource:///modules/gloda/log4moz.js");
 Cu.import("resource:///modules/StringBundle.js");
 
 const LOG = Log4Moz.repository.getLogger("gloda.noun.mimetype");
 
 Cu.import("resource:///modules/gloda/gloda.js");
 
-let CategoryStringMap = {};
+var CategoryStringMap = {};
 
 /**
  * Mime type abstraction that exists primarily so we can map mime types to
  *  integer id's.
  *
  * Instances of this class should only be retrieved via |MimeTypeNoun|; no one
  *  should ever create an instance directly.
  */
--- a/mailnews/db/gloda/test/unit/resources/asyncCallbackHandler.js
+++ b/mailnews/db/gloda/test/unit/resources/asyncCallbackHandler.js
@@ -8,17 +8,17 @@
  *  or support code.
  *
  * We do not do anything with the context stack or recovery.  Use the actual
  *  indexer callback handler for that!
  *
  * Actually, we do very little at all right now.  This will fill out as needs
  *  arise.
  */
-let asyncCallbackHandle = {
+var asyncCallbackHandle = {
   pushAndGo: function asyncCallbackHandle_push(aIterator, aContext) {
     asyncGeneratorStack.push([
       _asyncCallbackHandle_glodaWorkerAdapter(aIterator),
       "callbackHandler pushAndGo"]);
     return async_driver();
   }
 };
 
--- a/mailnews/db/gloda/test/unit/resources/genericIndexer.js
+++ b/mailnews/db/gloda/test/unit/resources/genericIndexer.js
@@ -47,17 +47,17 @@ var GenericIndexer = {
     }
 
     yield GlodaIndexer.kWorkDone;
     this._log.debug("Done indexing");
   }
 };
 GlodaIndexer.registerIndexer(GenericIndexer);
 
-let indexingInProgress = false;
+var indexingInProgress = false;
 function genericIndexerCallback(aStatus) {
   // If indexingInProgress is false, we've received the synthetic
   // notification, so ignore it
   if (indexingInProgress && aStatus == Gloda.kIndexerIdle) {
     indexingInProgress = false;
     async_driver();
   }
 }
--- a/mailnews/db/gloda/test/unit/resources/glodaTestHelper.js
+++ b/mailnews/db/gloda/test/unit/resources/glodaTestHelper.js
@@ -73,17 +73,17 @@ Services.prefs.setBoolPref("mailnews.dat
 const ENVIRON_MAPPINGS = [
   {
     envVar: "GLODA_DATASTORE_EXPLAIN_TO_PATH",
     prefName: "mailnews.database.global.datastore.explainToPath"
   }
 ];
 
 // -- Propagate environment variables to prefs as appropriate:
-let environ = Cc["@mozilla.org/process/environment;1"]
+var environ = Cc["@mozilla.org/process/environment;1"]
                 .getService(Ci.nsIEnvironment);
 for each (let [, {envVar, prefName}] in Iterator(ENVIRON_MAPPINGS)) {
  if (environ.exists(envVar)) {
    Services.prefs.setCharPref(prefName, environ.get(envVar));
  }
 }
 
 
@@ -94,17 +94,17 @@ Components.utils.import("resource:///mod
 Components.utils.import("resource:///modules/gloda/datastore.js");
 Components.utils.import("resource:///modules/gloda/collection.js");
 Components.utils.import("resource:///modules/gloda/datamodel.js");
 Components.utils.import("resource:///modules/gloda/noun_tag.js");
 Components.utils.import("resource:///modules/gloda/mimemsg.js");
 
 // -- Add a logger listener that throws when we give it a warning/error.
 Components.utils.import("resource:///modules/gloda/log4moz.js");
-let throwingAppender = new Log4Moz.ThrowingAppender(do_throw);
+var throwingAppender = new Log4Moz.ThrowingAppender(do_throw);
 throwingAppender.level = Log4Moz.Level.Warn;
 Log4Moz.repository.rootLogger.addAppender(throwingAppender);
 
 var LOG = Log4Moz.repository.getLogger("gloda.test");
 
 // index_msg does not export this, so we need to provide it.
 const GLODA_BAD_MESSAGE_ID = 2,
       GLODA_OLD_BAD_MESSAGE_ID = 1;
@@ -1090,18 +1090,18 @@ function wait_for_gloda_db_flush() {
   // we don't actually need to run things to zero... we can just wait for the
   //  outer transaction to close itself...
   GlodaDatastore._commitTransaction();
   if (savedDepth)
     GlodaDatastore._beginTransaction();
   return false;
 }
 
-let _gloda_simulate_hang_data = null;
-let _gloda_simulate_hang_waiting_for_hang = false;
+var _gloda_simulate_hang_data = null;
+var _gloda_simulate_hang_waiting_for_hang = false;
 
 function _simulate_hang_on_MsgHdrToMimeMessage() {
   _gloda_simulate_hang_data = [MsgHdrToMimeMessage, null, arguments];
   if (_gloda_simulate_hang_waiting_for_hang)
     async_driver();
 }
 
 /**
--- a/mailnews/db/gloda/test/unit/test_corrupt_database.js
+++ b/mailnews/db/gloda/test/unit/test_corrupt_database.js
@@ -59,17 +59,17 @@ CountingAppender.prototype = {
     return 0;
   },
   toString: function() {
     return "One, two, three! Ah ah ah!";
   }
 };
 
 
-let countingAppender = new CountingAppender();
+var countingAppender = new CountingAppender();
 Log4Moz.repository.rootLogger.addAppender(countingAppender);
 
 /**
  * Create an illegal=corrupt database and make sure that we log a message and
  * still end up happy.
  */
 function test_corrupt_databases_get_reported_and_blown_away() {
   // - get the file path
--- a/mailnews/db/gloda/test/unit/test_index_addressbook.js
+++ b/mailnews/db/gloda/test/unit/test_index_addressbook.js
@@ -46,17 +46,17 @@ function delete_card(aEmailAddress) {
 function get_cached_gloda_identity_for_email(aEmailAddress) {
   return GlodaCollectionManager.cacheLookupOneByUniqueValue(
     Gloda.NOUN_IDENTITY, "email@" + aEmailAddress.toLowerCase());
 }
 
 const EMAIL_ADDRESS = "all.over@the.world.invalid";
 const DISPLAY_NAME = "every day";
 
-let identityCollection;
+var identityCollection;
 
 /**
  * Create an e-mail so the identity can exist.
  */
 function setup_create_identity() {
   let [msgSet] = make_new_sets_in_folder(gInbox, [
                    {count: 1, from: [DISPLAY_NAME, EMAIL_ADDRESS]}]);
   yield wait_for_message_injection();
@@ -101,17 +101,17 @@ function test_add_card_cache_indication(
 function test_remove_card_cache_indication() {
   delete_card(EMAIL_ADDRESS);
 
   let identity = get_cached_gloda_identity_for_email(EMAIL_ADDRESS);
   do_check_eq(identity._hasAddressBookCard, false);
 }
 
 
-let tests = [
+var tests = [
   // - events update identity._hasAddressBookCard correctly
   setup_create_identity,
   test_add_card_cache_indication,
   test_remove_card_cache_indication,
   // add it back again
   test_add_card_cache_indication,
 ];
 
--- a/mailnews/db/gloda/test/unit/test_index_bad_messages.js
+++ b/mailnews/db/gloda/test/unit/test_index_bad_messages.js
@@ -122,17 +122,17 @@ function test_reindex_on_dirty_clear_dir
   msgHdr.setUint32Property("gloda-dirty", 2);
   GlodaMsgIndexer.indexFolder(gInbox);
   yield wait_for_gloda_indexer([], {recovered: 1, failedToRecover: 0,
                                     cleanedUp: 0, hadNoCleanUp: 0});
   // now the message should be clean
   do_check_eq(msgHdr.getUint32Property("gloda-dirty"), 0);
 }
 
-let tests = [
+var tests = [
   parameterizeTest(test_illegal_message, illegalMessageTemplates),
   test_streaming_failure,
   test_recovery_and_no_second_attempts,
   test_reindex_on_dirty_clear_dirty_on_fail,
 ];
 
 function run_test() {
   gInbox = configure_message_injection({mode: "local"});
--- a/mailnews/db/gloda/test/unit/test_index_sweep_folder.js
+++ b/mailnews/db/gloda/test/unit/test_index_sweep_folder.js
@@ -143,17 +143,17 @@ function test_count_pass() {
   explode_enumeration_after = 2;
   yield spin_folder_indexer(folder, 1);
 
   hdrs[1].setUint32Property("gloda-dirty", GlodaMsgIndexer.kMessageDirty);
   explode_enumeration_after = 2;
   yield spin_folder_indexer(folder, 2);
 }
 
-let tests = [
+var tests = [
   test_propagate_filthy_from_folder_to_messages,
   test_count_pass,
 ];
 
 function run_test() {
   configure_message_injection({mode: "local"});
   // we do not want the event-driven indexer crimping our style
   configure_gloda_indexing({event: false});
--- a/mailnews/db/gloda/test/unit/test_mime_emitter.js
+++ b/mailnews/db/gloda/test/unit/test_mime_emitter.js
@@ -550,17 +550,17 @@ function test_attachments_correctness ()
 
     yield false;
   }
 }
 
 var bogusMessage = msgGen.makeMessage({ body: { body: "whatever" } });
 bogusMessage._contentType = "woooooo"; // Breaking abstraction boundaries. Bad.
 
-let weirdMessageInfos = [
+var weirdMessageInfos = [
   // This message has an unnamed part as an attachment (with
   // Content-Disposition: inline and which is displayable inline). Previously,
   // libmime would emit notifications for this to be treated as an attachment,
   // name Part 1.2. Now it's not the case anymore, so we should ensure this
   // message has no attachments.
   {
     name: 'test message with part 1.2 attachment',
     attachments: [{ body: 'attachment',
--- a/mailnews/db/gloda/test/unit/test_startup_offline.js
+++ b/mailnews/db/gloda/test/unit/test_startup_offline.js
@@ -27,16 +27,16 @@ function test_gloda_offline_startup() {
 
   // Now go online...
   Services.io.offline = false;
 
   // ...and check we have done the indexing and indexed the message.
   yield wait_for_gloda_indexer(msgSet);
 }
 
-let tests = [
+var tests = [
   test_gloda_offline_startup,
 ];
 
 function run_test() {
   configure_message_injection({mode: "local"});
   glodaHelperRunTests(tests);
 }
--- a/mailnews/extensions/mdn/test/unit/test_askuser.js
+++ b/mailnews/extensions/mdn/test/unit/test_askuser.js
@@ -1,16 +1,16 @@
 var gMessenger = Cc["@mozilla.org/messenger;1"].
                    createInstance(Ci.nsIMessenger);
 
 localAccountUtils.loadLocalMailAccount();
 
-let localAccount = MailServices.accounts
+var localAccount = MailServices.accounts
                                .FindAccountForServer(localAccountUtils.incomingServer);
-let identity = MailServices.accounts.createIdentity();
+var identity = MailServices.accounts.createIdentity();
 identity.email = "bob@t2.example.net";
 localAccount.addIdentity(identity);
 localAccount.defaultIdentity = identity;
 
 function run_test()
 {
   var headers = 
     "from: alice@t1.example.com\r\n" + 
--- a/mailnews/extensions/mdn/test/unit/test_mdnFlags.js
+++ b/mailnews/extensions/mdn/test/unit/test_mdnFlags.js
@@ -3,19 +3,19 @@
  * reprompt when the user re-selects a message.
  */
 
 var gMessenger = Cc["@mozilla.org/messenger;1"].
                    createInstance(Ci.nsIMessenger);
 
 localAccountUtils.loadLocalMailAccount();
 
-let localAccount = MailServices.accounts
+var localAccount = MailServices.accounts
                                .FindAccountForServer(localAccountUtils.incomingServer);
-let identity = MailServices.accounts.createIdentity();
+var identity = MailServices.accounts.createIdentity();
 identity.email = "bob@t2.example.net";
 localAccount.addIdentity(identity);
 localAccount.defaultIdentity = identity;
 
 
 
 function run_test()
 {
--- a/mailnews/extensions/newsblog/content/feedAccountWizard.js
+++ b/mailnews/extensions/newsblog/content/feedAccountWizard.js
@@ -1,17 +1,17 @@
 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource:///modules/FeedUtils.jsm");
 
 /* Feed account standalone wizard functions */
-let FeedAccountWizard = {
+var FeedAccountWizard = {
   accountName: "",
 
   accountSetupPageInit: function() {
     this.accountSetupPageValidate();
   },
 
   accountSetupPageValidate: function() {
     this.accountName = document.getElementById("prettyName").value.trim();
--- a/mailnews/extensions/newsblog/content/newsblogOverlay.js
+++ b/mailnews/extensions/newsblog/content/newsblogOverlay.js
@@ -3,19 +3,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource:///modules/gloda/mimemsg.js");
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 // This global is for SeaMonkey compatibility.
-let gShowFeedSummary;
+var gShowFeedSummary;
 
-let FeedMessageHandler = {
+var FeedMessageHandler = {
   gShowSummary: true,
   gToggle: false,
   kSelectOverrideWebPage:   0,
   kSelectOverrideSummary:   1,
   kSelectFeedDefault:       2,
   kOpenWebPage:             0,
   kOpenSummary:             1,
   kOpenToggleInMessagePane: 2,
--- a/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js
+++ b/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js
@@ -138,9 +138,9 @@ function run_test()
  */
 
 // given a test file, return the file uri spec
 function specForFileName(aFileName)
 {
   let file = do_get_file("../../../data/" + aFileName);
   let msgfileuri = Services.io.newFileURI(file).QueryInterface(Ci.nsIFileURL);
   return msgfileuri.spec;
-}
\ No newline at end of file
+}
--- a/mailnews/imap/test/unit/test_dod.js
+++ b/mailnews/imap/test/unit/test_dod.js
@@ -99,17 +99,17 @@ function streamMessages() {
         do_check_true(buf.includes(marker));
       }
       catch(e){}
     }
   }
   yield true;
 }
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface : XPCOMUtils.generateQI([Ci.nsIStreamListener]),
   _stream : null,
   _data : null,
   onStartRequest : function (aRequest, aContext) {
     this._data = "";
     this._stream = null;
   },
   onStopRequest : function (aRequest, aContext, aStatusCode) {
--- a/mailnews/imap/test/unit/test_filterNeedsBody.js
+++ b/mailnews/imap/test/unit/test_filterNeedsBody.js
@@ -72,17 +72,17 @@ function *runFilterAction() {
 }
 
 function run_test() {
   tests.forEach(add_task);
   run_next_test();
 }
 
 // custom action to test offline status
-let actionTestOffline =
+var actionTestOffline =
 {
   id: "mailnews@mozilla.org#testOffline",
   name: "test if offline",
   apply: function(aMsgHdrs, aActionValue, aListener, aType, aMsgWindow)
   {
     for (var i = 0; i < aMsgHdrs.length; i++)
     {
       var msgHdr = aMsgHdrs.queryElementAt(i, Ci.nsIMsgDBHdr);
--- a/mailnews/imap/test/unit/test_gmailOfflineMsgStore.js
+++ b/mailnews/imap/test/unit/test_gmailOfflineMsgStore.js
@@ -235,17 +235,17 @@ var streamListener =
                           .createInstance(Ci.nsIScriptableInputStream);
 
     scriptStream.init(aInputStream);
 
     scriptStream.read(aCount);
   }
 };
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface : XPCOMUtils.generateQI([Ci.nsIStreamListener]),
   _stream : null,
   _data : null,
   onStartRequest : function (aRequest, aContext) {
     this._data = "";
   },
   onStopRequest : function (aRequest, aContext, aStatusCode) {
     async_driver();
--- a/mailnews/imap/test/unit/test_imapAttachmentSaves.js
+++ b/mailnews/imap/test/unit/test_imapAttachmentSaves.js
@@ -124,17 +124,17 @@ function SaveAttachmentCallback() {
 }
 
 SaveAttachmentCallback.prototype = {
   callback: function saveAttachmentCallback_callback(aMsgHdr, aMimeMessage) {
     this.attachments = aMimeMessage.allAttachments;
     async_driver();
   }
 }
-let gCallbackObject = new SaveAttachmentCallback();
+var gCallbackObject = new SaveAttachmentCallback();
 
 function run_test()
 {
   // Add folder listeners that will capture async events
   const nsIMFNService = Ci.nsIMsgFolderNotificationService;
   MailServices.mfn.addListener(mfnListener, nsIMFNService.msgsDeleted);
 
   // We need to register the dummyMsgWindow so that when we've finished running
--- a/mailnews/imap/test/unit/test_imapAutoSync.js
+++ b/mailnews/imap/test/unit/test_imapAutoSync.js
@@ -43,17 +43,17 @@ var tests = [
   test_createTargetFolder,
   test_checkForNewMessages,
   test_triggerAutoSyncIdle,
   test_moveMessageToTargetFolder,
   test_waitForTargetUpdate,
   endTest
 ]
 
-let gTargetFolder;
+var gTargetFolder;
 
 function test_createTargetFolder()
 {
   gAutoSyncManager.addListener(gAutoSyncListener);
 
   IMAPPump.incomingServer.rootFolder.createSubfolder("targetFolder", null);
   yield false;
   gTargetFolder = IMAPPump.incomingServer.rootFolder.getChildNamed("targetFolder");
--- a/mailnews/imap/test/unit/test_imapCopyTimeout.js
+++ b/mailnews/imap/test/unit/test_imapCopyTimeout.js
@@ -44,17 +44,17 @@ var tests = [
   createTargetFolder,
   loadImapMessage,
   moveMessageToTargetFolder,
   waitForOfflinePlayback,
   updateTargetFolder,
   endTest
 ]
 
-let gTargetFolder;
+var gTargetFolder;
 function createTargetFolder()
 {
   IMAPPump.daemon.copySleep = 5000;
   IMAPPump.incomingServer.rootFolder.createSubfolder("targetFolder", null);
   yield false; 
   gTargetFolder = IMAPPump.incomingServer.rootFolder.getChildNamed("targetFolder");
   do_check_true(gTargetFolder instanceof Ci.nsIMsgImapMailFolder);
   gTargetFolder.updateFolderWithListener(null, asyncUrlListener);
--- a/mailnews/imap/test/unit/test_imapStoreMsgOffline.js
+++ b/mailnews/imap/test/unit/test_imapStoreMsgOffline.js
@@ -218,17 +218,17 @@ var tests = [
   function checkOfflineStoreSize()
   {
     dump("checking offline store size\n");
     do_check_true(IMAPPump.inbox.filePath.fileSize <= gImapInboxOfflineStoreSize);
   },
   teardown
 ]
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface : XPCOMUtils.generateQI([Ci.nsIStreamListener]),
   _stream : null,
   _data : null,
   onStartRequest : function (aRequest, aContext) {
     this._data = "";
   },
   onStopRequest : function (aRequest, aContext, aStatusCode) {
     async_driver();
--- a/mailnews/imap/test/unit/test_listSubscribed.js
+++ b/mailnews/imap/test/unit/test_listSubscribed.js
@@ -17,17 +17,17 @@ load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 load("../../../resources/alertTestUtils.js");
 
 // IMAP pump
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 // Globals
-let nsMsgFolderFlags = Ci.nsMsgFolderFlags;
+var nsMsgFolderFlags = Ci.nsMsgFolderFlags;
 
 // Zimbra is one of the servers that supports LIST-EXTENDED
 // it also has a bug that causes a server crash in certain setups
 setupIMAPPump("Zimbra");
 
 // Definition of tests
 var tests = [
   setupMailboxes,
--- a/mailnews/imap/test/unit/test_localToImapFilterQuarantine.js
+++ b/mailnews/imap/test/unit/test_localToImapFilterQuarantine.js
@@ -148,17 +148,17 @@ function endTest()
   // server
   dl("Exiting mail tests");
   gPOP3Pump = null;
   teardownIMAPPump();
 }
 
 // listeners
 
-let mfnListener =
+var mfnListener =
 {
   folderAdded: function folderAdded(aFolder)
   {
     dl('folderAdded <' + aFolder.name + '>');
     // we are only using async yield on the Subfolder add
     if (aFolder.name == "subfolder")
       async_driver();
   },
--- a/mailnews/imap/test/unit/test_offlineDraftDataloss.js
+++ b/mailnews/imap/test/unit/test_offlineDraftDataloss.js
@@ -25,17 +25,17 @@ var tests = [
   createDraftsFolder,
   goOffline,
   saveDraft,
   goOnline,
   checkResult,
   endTest
 ];
 
-let gDraftsFolder;
+var gDraftsFolder;
 
 function createDraftsFolder()
 {
   IMAPPump.incomingServer.rootFolder.createSubfolder("Drafts", null);
   yield false;
   gDraftsFolder = IMAPPump.incomingServer.rootFolder.getChildNamed("Drafts");
   do_check_true(gDraftsFolder instanceof Ci.nsIMsgImapMailFolder);
   gDraftsFolder.updateFolderWithListener(null, asyncUrlListener);
--- a/mailnews/imap/test/unit/test_preserveDataOnMove.js
+++ b/mailnews/imap/test/unit/test_preserveDataOnMove.js
@@ -22,17 +22,17 @@ setupIMAPPump();
 var tests = [
   createSubfolder,
   loadImapMessage,
   moveMessageToSubfolder,
   testPropertyOnMove,
   endTest
 ]
 
-let gSubfolder;
+var gSubfolder;
 function createSubfolder()
 {
   IMAPPump.incomingServer.rootFolder.createSubfolder("Subfolder", null);
   dl('wait for folderAdded notification');
   yield false; 
   gSubfolder = IMAPPump.incomingServer.rootFolder.getChildNamed("Subfolder");
   do_check_true(gSubfolder instanceof Ci.nsIMsgImapMailFolder);
   gSubfolder.updateFolderWithListener(null, asyncUrlListener);
@@ -97,17 +97,17 @@ function testPropertyOnMove()
 // Cleanup
 function endTest()
 {
   teardownIMAPPump();
 }
 
 // listeners
 
-let mfnListener =
+var mfnListener =
 {
   folderAdded: function folderAdded(aFolder)
   {
     dl('folderAdded <' + aFolder.name + '>');
     // we are only using async yield on the Subfolder add
     if (aFolder.name == "Subfolder")
       async_driver();
   },
--- a/mailnews/imap/test/unit/test_saveImapDraft.js
+++ b/mailnews/imap/test/unit/test_saveImapDraft.js
@@ -23,17 +23,17 @@ setupIMAPPump();
 var tests = [
   createDraftsFolder,
   saveDraft,
   updateDrafts,
   checkResult,
   endTest
 ];
 
-let gDraftsFolder;
+var gDraftsFolder;
 function createDraftsFolder()
 {
   IMAPPump.incomingServer.rootFolder.createSubfolder("Drafts", null);
   dl('wait for folderAdded');
   yield false;
   gDraftsFolder = IMAPPump.incomingServer.rootFolder.getChildNamed("Drafts");
   do_check_true(gDraftsFolder instanceof Ci.nsIMsgImapMailFolder);
   gDraftsFolder.updateFolderWithListener(null, asyncUrlListener);
--- a/mailnews/imap/test/unit/test_saveTemplate.js
+++ b/mailnews/imap/test/unit/test_saveTemplate.js
@@ -80,17 +80,17 @@ function saveAsTemplate() {
   // Verify that Templates folder doesn't exist, and then create it.
   do_check_eq(templates.parent, null);
   templates.setFlag(Ci.nsMsgFolderFlags.Templates);
   templates.createStorageIfMissing(new saveAsUrlListener(uri, identity));
   yield false;
 }
 
 // listener for saveAsTemplate adding a message to the templates folder.
-let mfnListener =
+var mfnListener =
 {
   msgAdded: function msgAdded(aMsg)
   {
     // Check this is the templates folder.
     do_check_eq(aMsg.folder.prettyName, "Templates");
     async_driver();
   },
 };
--- a/mailnews/imap/test/unit/test_subfolderLocation.js
+++ b/mailnews/imap/test/unit/test_subfolderLocation.js
@@ -38,18 +38,18 @@ add_task(function* loadImapMessage() {
 
 add_task(function* downloadOffline() {
   // ...and download for offline use.
   let promiseUrlListener = new PromiseTestUtils.PromiseUrlListener();
   IMAPPump.inbox.downloadAllForOffline(promiseUrlListener, null);
   yield promiseUrlListener.promise;
 });
 
-let folderName1 = "sub1";
-let folderName2 = "sub2";
+var folderName1 = "sub1";
+var folderName2 = "sub2";
 
 // use a folder method to add a subfolder
 add_task(function* addSubfolder() {
   let promiseFolder1 = PromiseTestUtils.promiseFolderAdded(folderName1);
   IMAPPump.inbox.createSubfolder(folderName1, null);
   yield promiseFolder1;
 });
 
--- a/mailnews/imap/test/unit/test_trustSpamAssassin.js
+++ b/mailnews/imap/test/unit/test_trustSpamAssassin.js
@@ -30,17 +30,17 @@ var tests = [
   createJunkFolder,
   loadImapMessage,
   testMessageInJunk,
   markMessageAsGood,
   updateFoldersAndCheck,
   endTest,
 ]
 
-let gJunkFolder;
+var gJunkFolder;
 function createJunkFolder()
 {
   IMAPPump.incomingServer.rootFolder.createSubfolder("Junk", null);
   dl('wait for folderAdded');
   yield false;
   gJunkFolder = IMAPPump.incomingServer.rootFolder.getChildNamed("Junk");
   do_check_true(gJunkFolder instanceof Ci.nsIMsgImapMailFolder);
   gJunkFolder.updateFolderWithListener(null, asyncUrlListener);
@@ -153,17 +153,17 @@ function run_test()
         nsIMFNService.folderAdded | 
         nsIMFNService.msgAdded;
   MailServices.mfn.addListener(mfnListener, flags);
 
   //start first test
   async_run_tests(tests);
 }
 
-let mfnListener =
+var mfnListener =
 {
   msgsMoveCopyCompleted: function (aMove, aSrcMsgs, aDestFolder, aDestMsgs)
   {
     dl('msgsMoveCopyCompleted to folder ' + aDestFolder.name);
     async_driver();
   },
 
   folderAdded: function (aFolder)
--- a/mailnews/import/test/unit/resources/mock_windows_reg_factory.js
+++ b/mailnews/import/test/unit/resources/mock_windows_reg_factory.js
@@ -1,11 +1,11 @@
 Components.utils.import("resource://testing-common/mailnews/MockFactory.js");
 
-let gUuid;
+var gUuid;
 
 function MockWindowsRegKey(registryData) {
   this._registryData = registryData;
 }
 
 MockWindowsRegKey.prototype = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIWindowsRegKey]),
 
--- a/mailnews/import/test/unit/test_oe_settings.js
+++ b/mailnews/import/test/unit/test_oe_settings.js
@@ -103,17 +103,17 @@ OE5Registry.prototype = {
   'Identities\\{DEFAULT_ID}\\Software\\Microsoft\\Internet Account Manager': {
     'Default Mail Account': 'defaultAccount'
   },
   get 'Software\\Microsoft\\Internet Account Manager\\Accounts'() {
     return { 'defaultAccount': this._defaultAccount };
   }
 };
 
-let expectedPop3Account = {
+var expectedPop3Account = {
   incomingServer: {
     type: 'pop3',
     hostName: 'pop.invalid.host',
     port: 1100,
     username: 'pop3user',
     isSecure: false,
     authMethod: Ci.nsMsgAuthMethod.secure,
     socketType: 0,
@@ -134,17 +134,17 @@ let expectedPop3Account = {
     hostname: 'smtp.invalid.host',
     port: 250,
     username: 'smtpuser',
     authMethod: Ci.nsMsgAuthMethod.secure,
     socketType: 0,
   }
 };
 
-let expectedImapAccount = {
+var expectedImapAccount = {
   incomingServer: {
     type: 'imap',
     hostName: 'imap.invalid.host',
     port: 1340,
     username: 'imapuser',
     isSecure: true,
     authMethod: Ci.nsMsgAuthMethod.secure,
     socketType: Ci.nsMsgSocketType.SSL,
@@ -161,17 +161,17 @@ let expectedImapAccount = {
     hostname: 'smtp.invalid.host',
     port: 465,
     username: 'imapuser', // use incoming server's username if Sicily is 2.
     authMethod: Ci.nsMsgAuthMethod.secure,
     socketType: Ci.nsMsgSocketType.SSL,
   }
 };
 
-let expectedNntpAccount = {
+var expectedNntpAccount = {
   incomingServer: {
     type: 'nntp',
     hostName: 'nntp.invalid.host',
     port: 1190,
     username: 'nntpuser',
     isSecure: false,
     authMethod: Ci.nsMsgAuthMethod.passwordCleartext,
     socketType: 0,
--- a/mailnews/import/test/unit/test_outlook_settings.js
+++ b/mailnews/import/test/unit/test_outlook_settings.js
@@ -55,17 +55,17 @@ Outlook2003Registry.prototype = {
   get 'Software\\Microsoft\\Office\\Outlook\\OMI Account Manager'() {
     return {
       'Default Mail Account': '00000001',
       '00000001': this._defaultAccount
     };
   }
 };
 
-let expectedPop3Account = {
+var expectedPop3Account = {
   incomingServer: {
     type: 'pop3',
     hostName: 'pop.invalid.host',
     username: 'pop3user',
     leaveMessagesOnServer: true
   },
   identity: {
     fullName: 'SMTP Display Name',
@@ -74,17 +74,17 @@ let expectedPop3Account = {
     organization: 'SMTP Organization Name'
   },
   smtpServer: {
     hostname: 'smtp.invalid.host',
     username: 'smtpuser'
   }
 };
 
-let expectedImapAccount = {
+var expectedImapAccount = {
   incomingServer: {
     type: 'imap',
     hostName: 'imap.invalid.host',
     username: 'imapuser'
   },
   identity: {
     fullName: 'SMTP Display Name',
     email: 'imapuser@host.invalid',
--- a/mailnews/import/test/unit/test_winmail.js
+++ b/mailnews/import/test/unit/test_winmail.js
@@ -1,15 +1,15 @@
 /**
  * Basic tests for importing accounts of Windows Live Mail.
  */
 
 load("resources/mock_windows_reg_factory.js");
 
-let expectedPop3TestTestAccount = {
+var expectedPop3TestTestAccount = {
   incomingServer: {
     type: 'pop3',
     hostName: 'pop3.test.test',
     prettyName: 'testpopaccountname',
     port: 110,
     socketType: 0,
     doBiff: true,
     biffMinutes: 2,
@@ -30,17 +30,17 @@ let expectedPop3TestTestAccount = {
     hostname: 'smtp.pop.test',
     port: 0, // default port
     username: '',
     authMethod: Ci.nsMsgAuthMethod.none,
     socketType: 0,
   }
 };
 
-let expectedNewsMozillaOrgAccount = {
+var expectedNewsMozillaOrgAccount = {
   incomingServer: {
     type: 'nntp',
     hostName: 'testnews.mozilla.org',
     prettyName: 'accountnamemozillanews',
     port: 119,
     socketType: 0,
     isSecure: false,
     authMethod: Ci.nsMsgAuthMethod.passwordCleartext,
@@ -49,17 +49,17 @@ let expectedNewsMozillaOrgAccount = {
   },
   identity: {
     fullName: 'test',
     organization: '',
     email: 'mozillanews@invalid.invalid',
   },
 };
 
-let expectedMicrosoftCommunitiesAccount = {
+var expectedMicrosoftCommunitiesAccount = {
   incomingServer: {
     type: 'nntp',
     hostName: 'testmsnews.microsoft.invalid',
     prettyName: 'Microsoft Communities Test',
     port: 119,
     socketType: 0,
     isSecure: false,
     authMethod: Ci.nsMsgAuthMethod.passwordCleartext,
@@ -67,17 +67,17 @@ let expectedMicrosoftCommunitiesAccount 
     biffMinutes: 10, // default value
   },
   identity: {
     fullName: '',
     organization: '',
   },
 };
 
-let expectedDonHallNntpAccount = {
+var expectedDonHallNntpAccount = {
   incomingServer: {
     type: 'nntp',
     hostName: 'news.wingtiptoys.invalid',
     prettyName: 'donhallnntp',
     port: 563,
     username: 'don',
     isSecure: false,
     authMethod: Ci.nsMsgAuthMethod.secure,
@@ -88,17 +88,17 @@ let expectedDonHallNntpAccount = {
   identity: {
     fullName: 'Don Hall',
     organization: 'Wingtip Toys',
     email: 'don@wingtiptoys.invalid',
     replyTo: 'don@wingtiptoys.invalid',
   },
 };
 
-let expectedDonHallImapAccount = {
+var expectedDonHallImapAccount = {
   incomingServer: {
     type: 'imap',
     hostName: 'mail.wingtiptoys.invalid',
     prettyName: 'donhallimap',
     port: 993,
     isSecure: true,
     doBiff: true,
     biffMinutes: 2,
@@ -116,17 +116,17 @@ let expectedDonHallImapAccount = {
     hostname: 'smtp.wingtiptoys.invalid',
     username: 'don',
     port: 25,
     socketType: Ci.nsMsgSocketType.SSL,
     authMethod: Ci.nsMsgAuthMethod.secure,
   }
 };
 
-let expectedAccounts = [expectedPop3TestTestAccount,
+var expectedAccounts = [expectedPop3TestTestAccount,
                         expectedNewsMozillaOrgAccount,
                         expectedMicrosoftCommunitiesAccount,
                         expectedDonHallNntpAccount,
                         expectedDonHallImapAccount];
 
 function WinLiveMailRegistry(rootPath) {
   this._rootPath = rootPath;
 }
--- a/mailnews/local/test/unit/test_movemailDownload.js
+++ b/mailnews/local/test/unit/test_movemailDownload.js
@@ -17,17 +17,17 @@ var testSubjects = ["[Bug 397009] A filt
                     "[Bug 655578] list-id filter broken"];
 
 var gMsgHdrs = [];
 var gHdrIndex = 0;
 
 // the movemail spool dir file is these three files
 // concatenated together.
 
-let gFiles = ["../../../data/bugmail1",
+var gFiles = ["../../../data/bugmail1",
               "../../../data/draft1",
               "../../../data/bugmail19"];
 
 var gMoveMailInbox;
 
 function setup(storeID, aHostName) {
   return function _setup() {
     localAccountUtils.loadLocalMailAccount(storeID);
@@ -76,17 +76,17 @@ function run_test()
     add_task(setup(localAccountUtils.pluggableStores[index],
                    hostName + "-" + index));
     gTestArray.forEach(add_task);
   }
 
   run_next_test();
 }
 
-let streamNextMessage = Task.async(function* (aMsgHdr) {
+var streamNextMessage = Task.async(function* (aMsgHdr) {
   let messenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
   let msgURI = aMsgHdr.folder.getUriForMsg(aMsgHdr);
   dump("streaming msg " + msgURI + " store token = " +
        aMsgHdr.getStringProperty("storeToken"));
   let msgServ = messenger.messageServiceFromURI(msgURI);
   let streamListener = new PromiseTestUtils.PromiseStreamListener();
   msgServ.streamMessage(msgURI, streamListener, null, null, false, "", true);
   let data = yield streamListener.promise;
--- a/mailnews/local/test/unit/test_pop3Download.js
+++ b/mailnews/local/test/unit/test_pop3Download.js
@@ -6,17 +6,17 @@ load("../../../resources/POP3pump.js");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 var testSubjects = ["[Bug 397009] A filter will let me tag, but not untag",
                     "Hello, did you receive my bugmail?",
                     "[Bug 655578] list-id filter broken"];
 
 var gMsgHdrs = [];
 var gHdrIndex = 0;
-let gFiles = ["../../../data/bugmail1",
+var gFiles = ["../../../data/bugmail1",
               "../../../data/draft1",
               "../../../data/bugmail19"];
 
 // This combination of prefs is required to reproduce bug 713611, which
 // is what this test is about.
 Services.prefs.setBoolPref("mailnews.downloadToTempFile", false);
 Services.prefs.setBoolPref("mail.server.default.leave_on_server", true);
 
--- a/mailnews/local/test/unit/test_pop3MultiCopy2.js
+++ b/mailnews/local/test/unit/test_pop3MultiCopy2.js
@@ -8,21 +8,21 @@
 
 load("../../../resources/POP3pump.js");
 Components.utils.import("resource://gre/modules/Promise.jsm");
 Components.utils.import("resource://testing-common/mailnews/PromiseTestUtils.jsm");
 
 Services.prefs.setCharPref("mail.serverDefaultStoreContractID",
                            "@mozilla.org/msgstore/maildirstore;1");
 
-let gInboxFolder, gTestFolder;
+var gInboxFolder, gTestFolder;
 
 gPOP3Pump.files = ["../../../data/bugmail1",
                    "../../../data/draft1"];
-let gTestSubjects = ["[Bug 397009] A filter will let me tag, but not untag",
+var gTestSubjects = ["[Bug 397009] A filter will let me tag, but not untag",
                      "Hello, did you receive my bugmail?"];
 
 add_task(function* setupFolders() {
   let storeID = "@mozilla.org/msgstore/maildirstore;1";
   resetPluggableStoreLocal(storeID);
 
   // We want to test cross-server copy, so don't defer.
   gPOP3Pump.fakeServer.deferredToAccount = "";
--- a/mailnews/local/test/unit/test_saveMessage.js
+++ b/mailnews/local/test/unit/test_saveMessage.js
@@ -1,17 +1,17 @@
 /*
  * Test bug 460636 - Saving message in local folder as .EML removes starting dot in all lines, and ignores line if single dot only line.
  */
 
 Components.utils.import("resource:///modules/IOUtils.js");
 
 const MSG_LINEBREAK = "\r\n";
 const dot = do_get_file("data/dot");
-let saveFile = Services.dirsvc.get("TmpD", Ci.nsIFile);
+var saveFile = Services.dirsvc.get("TmpD", Ci.nsIFile);
 saveFile.append(dot.leafName + ".eml");
 saveFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0600);
 
 function run_test()
 {
   do_register_cleanup(teardown);
   do_test_pending();
   do_timeout(10000, function() {
--- a/mailnews/local/test/unit/test_streamHeaders.js
+++ b/mailnews/local/test/unit/test_streamHeaders.js
@@ -22,17 +22,17 @@ var tests = [loadMessages,
              badStreaming,
             ];
 
 function run_test()
 {
   async_run_tests(tests);
 }
 
-let gHdr;
+var gHdr;
 function loadMessages()
 {
   gPOP3Pump.files = ["../../../data/draft1"];
   gPOP3Pump.onDone = async_driver;
   gPOP3Pump.run();
   yield false;
 
   // get message headers for the inbox folder
--- a/mailnews/mime/jsmime/jsmime.js
+++ b/mailnews/mime/jsmime/jsmime.js
@@ -2842,17 +2842,17 @@ HeaderEmitter.prototype.addPhrase = func
   let words = text.split(' ');
   for (let i = 0; i < words.length; i++) {
     this.addQuotable(words[i], qchars,
       i == words.length - 1 ? mayBreakAfter : true);
   }
 };
 
 /// A regular expression for characters that need to be encoded.
-let nonAsciiRe = /[^\x20-\x7e]/;
+var nonAsciiRe = /[^\x20-\x7e]/;
 
 /// The beginnings of RFC 2047 encoded-word
 const b64Prelude = "=?UTF-8?B?", qpPrelude = "=?UTF-8?Q?";
 
 /// A list of ASCII characters forbidden in RFC 2047 encoded-words
 const qpForbidden = "=?_()\",";
 
 const hexString = "0123456789abcdef";
--- a/mailnews/mime/src/jsmime.jsm
+++ b/mailnews/mime/src/jsmime.jsm
@@ -49,17 +49,17 @@ FakeTextDecoder.prototype = {
     // This isn't quite right--it won't handle errors if there are a few
     // remaining bytes in the buffer, but it's the best we can do.
     if (!more)
       this._reset(this.encoding);
     return result;
   },
 };
 
-let RealTextDecoder = TextDecoder;
+var RealTextDecoder = TextDecoder;
 function FallbackTextDecoder(charset, options) {
   try {
     return new RealTextDecoder(charset, options);
   } catch (e) {
     return new FakeTextDecoder(charset, options);
   }
 }
 
@@ -72,19 +72,19 @@ Services.obs.addObserver(function (subje
   subject = subject.QueryInterface(Components.interfaces.nsISupportsCString)
                    .data;
   if (data == CATEGORY_NAME) {
     let url = catman.getCategoryEntry(CATEGORY_NAME, subject);
     Services.scriptloader.loadSubScript(url, {}, "UTF-8");
   }
 }, "xpcom-category-entry-added", false);
 
-let catman = Components.classes["@mozilla.org/categorymanager;1"]
+var catman = Components.classes["@mozilla.org/categorymanager;1"]
                        .getService(Components.interfaces.nsICategoryManager);
 
-let entries = catman.enumerateCategory(CATEGORY_NAME);
+var entries = catman.enumerateCategory(CATEGORY_NAME);
 while (entries.hasMoreElements()) {
   let string = entries.getNext()
                       .QueryInterface(Components.interfaces.nsISupportsCString)
                       .data;
   let url = catman.getCategoryEntry(CATEGORY_NAME, string);
   Services.scriptloader.loadSubScript(url, {}, "UTF-8");
 }
--- a/mailnews/mime/test/unit/test_alternate_p7m_handling.js
+++ b/mailnews/mime/test/unit/test_alternate_p7m_handling.js
@@ -2,36 +2,36 @@ load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 
 load("../../../resources/messageGenerator.js");
 load("../../../resources/messageModifier.js");
 load("../../../resources/messageInjection.js");
 
 Components.utils.import("resource:///modules/gloda/mimemsg.js");
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 
 const p7mAttachment = "dGhpcyBpcyBub3QgYSByZWFsIHMvbWltZSBwN20gZW50aXR5";
 
 // create a message with a p7m attachment
-let messages = [{
+var messages = [{
   attachments: [{ 
     body: p7mAttachment,
     filename: 'test.txt.p7m',
     contentType: 'application/pkcs7-mime',
     format:'',
     encoding: "base64"
   }]
 }];
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 
 function thunderbird_default(info) {
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
 
   let msgHdr = synSet.getMsgHdr(0);
@@ -92,20 +92,20 @@ function set_preference_to_false(info) {
     }
   });
 
   yield false;
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(thunderbird_default, messages),
   parameterizeTest(set_preference_to_true, messages),
   parameterizeTest(set_preference_to_false, messages)
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   gInbox = configure_message_injection({mode: "local"});
   async_run_tests(tests);
 }
--- a/mailnews/mime/test/unit/test_attachment_size.js
+++ b/mailnews/mime/test/unit/test_attachment_size.js
@@ -15,17 +15,17 @@ load("../../../resources/messageInjectio
 
 // Somehow we hit the blocklist service, and that needs appInfo defined
 Components.utils.import("resource://testing-common/AppInfo.jsm");
 updateAppInfo();
 
 // Register the mime types provider we need for this test.
 mailTestUtils.registerUMimTypProvider();
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 // Create a message scenario generator using that message generator
 const scenarios = gMessageScenarioFactory = new MessageScenarioFactory(msgGen);
 
 /* Today's gory details (thanks to Jonathan Protzenko): libmime somehow
@@ -83,18 +83,18 @@ const yencSize = 174;
 
 const partHtml = new SyntheticPartLeaf(
   "<html><head></head><body>I am HTML! Woo! </body></html>",
   {
     contentType: "text/html"
   }
 );
 
-let attachedMessage1 = msgGen.makeMessage({ body: { body: textAttachment } });
-let attachedMessage2 = msgGen.makeMessage({
+var attachedMessage1 = msgGen.makeMessage({ body: { body: textAttachment } });
+var attachedMessage2 = msgGen.makeMessage({
   body: { body: textAttachment },
   attachments: [{ body: imageAttachment,
                   contentType: 'application/x-ubik',
                   filename: 'ubik',
                   encoding: 'base64',
                   format: '' }]
 });
 
@@ -110,17 +110,17 @@ function get_message_size(message) {
   let messageString = message.toMessageString();
   if (epsilon == 4) // Windows
     return messageString.length;
   else // Mac/Linux
     return messageString.replace(/\r\n/g, "\n").length;
 }
 
 // create some messages that have various types of attachments
-let messages = [
+var messages = [
   // text attachment
   { attachments: [{ body: textAttachment,
                     filename: 'ubik.txt',
                     format: '' }],
     size: textAttachment.length },
   // (inline) image attachment
   { attachments: [{ body: imageAttachment,
                     contentType: 'image/png',
@@ -176,17 +176,17 @@ let messages = [
   },
   // a message/rfc822 "attachment" that's really the body of the message
   { bodyPart: attachedMessage1,
     size: get_message_size(attachedMessage1),
   },
 ];
 
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]),
 
   // nsIRequestObserver part
   onStartRequest: function (aRequest, aContext) {
     // We reset the size here because we know that we only expect one attachment
     //  per test email. In the case of the attached .eml with nested
     //  attachments, this allows us to properly discard the nested attachment
     //  sizes.
@@ -209,17 +209,17 @@ let gStreamListener = {
       this._stream = Cc["@mozilla.org/scriptableinputstream;1"].
                     createInstance(Ci.nsIScriptableInputStream);
       this._stream.init(aInputStream);
     }
     this._stream.read(aCount);
   },
 };
 
-let gMessageHeaderSink = {
+var gMessageHeaderSink = {
   handleAttachment: function(aContentType, aUrl, aDisplayName, aUri,
                              aIsExternalAttachment) {
   },
   addAttachmentField: function(aName, aValue) {
     // Only record the information for the first attachment.
     if (aName == "X-Mozilla-PartSize" && (this.size == null))
       this.size = parseInt(aValue);
   },
@@ -233,17 +233,17 @@ let gMessageHeaderSink = {
   onEndMsgHeaders: function(aUrl) {},
   onMsgHasRemoteContent: function(aMsgHdr, aContentURI) {},
   securityInfo: null,
   mDummyMsgHeader: null,
   properties: null,
   resetProperties: function () {}
 };
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 msgWindow.msgHeaderSink = gMessageHeaderSink;
 
 function test_message_attachments(info) {
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
 
@@ -261,19 +261,19 @@ function test_message_attachments(info) 
     "filter",
     false);
 
   yield false;
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(test_message_attachments, messages),
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   // use mbox injection because the fake server chokes sometimes right now
   gInbox = configure_message_injection({mode: "local"});
   async_run_tests(tests);
 }
--- a/mailnews/mime/test/unit/test_badContentType.js
+++ b/mailnews/mime/test/unit/test_badContentType.js
@@ -9,48 +9,48 @@
  */
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 
 load("../../../resources/messageGenerator.js");
 load("../../../resources/messageModifier.js");
 load("../../../resources/messageInjection.js");
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 // Create a message scenario generator using that message generator
 const scenarios = gMessageScenarioFactory = new MessageScenarioFactory(msgGen);
 
 const imageAttachment =
   'iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABHNCSVQICAgIfAhkiAAAAAlwS' +
   'FlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA' +
   'A5SURBVCiRY/z//z8DKYCJJNXkaGBgYGD4D8NQ5zUgiTVAxeBqSLaBkVRPM0KtIhrQ3km0jwe' +
   'SNQAAlmAY+71EgFoAAAAASUVORK5CYII=';
 
 // create some messages that have various types of attachments
-let messages = [
+var messages = [
   // image attachment (normal content type sanity test)
   { attachments: [{ body: imageAttachment,
                     contentType: 'image/png',
                     filename: 'lines.png',
                     encoding: 'base64',
                     format: '' }],
     testContentType: "image/png" },
   { attachments: [{ body: imageAttachment,
                     contentType: '=?windows-1252?q?application/pdf',
                     filename: 'lines.pdf',
                     encoding: 'base64',
                     format: '' }],
     testContentType: "application/pdf" },
 ];
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]),
 
   // nsIRequestObserver part
   onStartRequest: function (aRequest, aContext) {
     // We reset the size here because we know that we only expect one attachment
     //  per test email
     // msgHdrViewOverlay.js has a stack of attachment infos that properly
     //  handles this.
@@ -71,17 +71,17 @@ let gStreamListener = {
       this._stream = Cc["@mozilla.org/scriptableinputstream;1"].
                     createInstance(Ci.nsIScriptableInputStream);
       this._stream.init(aInputStream);
     }
     this._stream.read(aCount);
   },
 };
 
-let gMessageHeaderSink = {
+var gMessageHeaderSink = {
   handleAttachment: function(aContentType, aUrl, aDisplayName, aUri,
                              aIsExternalAttachment) {
     gMessageHeaderSink.contentType = aContentType;
   },
 
   // stub functions from nsIMsgHeaderSink
   addAttachmentField: function(aName, aValue) {},
   onStartHeaders: function() {},
@@ -92,17 +92,17 @@ let gMessageHeaderSink = {
   onEndMsgHeaders: function(aUrl) {},
   onMsgHasRemoteContent: function(aMsgHdr, aContentURI) {},
   securityInfo: null,
   mDummyMsgHeader: null,
   properties: null,
   resetProperties: function () {}
 };
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 msgWindow.msgHeaderSink = gMessageHeaderSink;
 
 function test_message_attachments(info) {
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
 
@@ -122,19 +122,19 @@ function test_message_attachments(info) 
     "filter",
     false);
 
   yield false;
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(test_message_attachments, messages),
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   // use mbox injection because the fake server chokes sometimes right now
   gInbox = configure_message_injection({mode: "local"});
   async_run_tests(tests);
 }
--- a/mailnews/mime/test/unit/test_bug493544.js
+++ b/mailnews/mime/test/unit/test_bug493544.js
@@ -78,9 +78,9 @@ function run_test() {
 
   for (let i = 0; i < headers.length; ++i) {
     let decoded = MailServices.mimeConverter.decodeMimeHeader(headers[i].encoded,
                                                               headers[i].defaultCharset,
                                                               headers[i].overrideCharset,
                                                               headers[i].eatContinuation);
     do_check_eq(decoded, headers[i].decoded);
   }
-}
\ No newline at end of file
+}
--- a/mailnews/mime/test/unit/test_hidden_attachments.js
+++ b/mailnews/mime/test/unit/test_hidden_attachments.js
@@ -8,26 +8,26 @@
  */
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 
 load("../../../resources/messageGenerator.js");
 load("../../../resources/messageModifier.js");
 load("../../../resources/messageInjection.js");
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 // Create a message scenario generator using that message generator
 const scenarios = gMessageScenarioFactory = new MessageScenarioFactory(msgGen);
 
 // create some messages that have various types of attachments
-let messages = [
+var messages = [
   {},
 
   /***** Attachments with Content-Disposition: attachment *****/
 
   // inline-able attachment with a name
   { attachments: [{ body: "attachment",
                     filename: "ubik.txt",
                     disposition: "attachment",
@@ -88,17 +88,17 @@ let messages = [
                     disposition: "inline",
                     contentType: "application/x-ubik",
                     format: "",
                     shouldShow: true }],
   },
 ];
 
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]),
 
   // nsIRequestObserver part
   onStartRequest: function (aRequest, aContext) {
   },
   onStopRequest: function (aRequest, aContext, aStatusCode) {
     let expectedAttachments = [i.filename for each (i in this.allAttachments)
                                if (i.shouldShow)];
@@ -125,17 +125,17 @@ let gStreamListener = {
       this._stream = Cc["@mozilla.org/scriptableinputstream;1"].
                     createInstance(Ci.nsIScriptableInputStream);
       this._stream.init(aInputStream);
     }
     this._stream.read(aCount);
   },
 };
 
-let gMessageHeaderSink = {
+var gMessageHeaderSink = {
   onEndMsgHeaders: function(aUrl) {
     this.attachments = [];
   },
   handleAttachment: function(aContentType, aUrl, aDisplayName, aUri,
                              aIsExternalAttachment) {
     this.attachments.push(aDisplayName);
   },
 
@@ -148,17 +148,17 @@ let gMessageHeaderSink = {
   onEndMsgDownload: function() {},
   onMsgHasRemoteContent: function(aMsgHdr, aContentURI) {},
   securityInfo: null,
   mDummyMsgHeader: null,
   properties: null,
   resetProperties: function () {}
 };
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 msgWindow.msgHeaderSink = gMessageHeaderSink;
 
 function test_message_attachments(info) {
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
 
@@ -176,19 +176,19 @@ function test_message_attachments(info) 
     "filter",
     false);
 
   yield false;
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(test_message_attachments, messages),
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   // use mbox injection because the fake server chokes sometimes right now
   gInbox = configure_message_injection({mode: "local"});
   async_run_tests(tests);
 }
--- a/mailnews/mime/test/unit/test_jsmime_charset.js
+++ b/mailnews/mime/test/unit/test_jsmime_charset.js
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // This tests that the charset decoding uses nsICharsetDecoder instead of
 // TextDecoder, to get some extra charsets.
 
 Components.utils.import("resource:///modules/jsmime.jsm");
 
-let tests = [
+var tests = [
   ["=?UTF-7?Q?+AKM-1?=", "\u00A31"],
   ["=?UTF-7?Q?+AK?= =?UTF-7?Q?M-1?=", "\u00A31"],
   ["=?UTF-8?Q?=C2?=", ""],
   ["=?NotARealCharset?Q?text?=", "=?NotARealCharset?Q?text?="],
   ["=?x-mac-croatian?Q?=E9?=", "\u00C8"],
   ["\xC2\xA31", "\u00A31", "ISO-8859-2"],
   ["\xA31", "\u01411", "ISO-8859-2"],
   ["\xC21", "\u00C21", "ISO-8859-1"],
--- a/mailnews/mime/test/unit/test_message_attachment.js
+++ b/mailnews/mime/test/unit/test_message_attachment.js
@@ -8,27 +8,27 @@
  */
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 
 load("../../../resources/messageGenerator.js");
 load("../../../resources/messageModifier.js");
 load("../../../resources/messageInjection.js");
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 
 const textAttachment =
   "inline text attachment";
 
 // create a message with a text attachment
-let messages = [
+var messages = [
   // unnamed email attachment
   { attachments: [{ body: textAttachment,
                     filename: 'test.txt',
                     format: '' },
                   { body: '',
                     expectedFilename: 'ForwardedMessage.eml',
                     contentType: 'message/rfc822', },
                  ]},
@@ -55,17 +55,17 @@ let messages = [
       msgGen.makeMessage({
         subject: '=?UTF-8?B?dGVzdFN1YmplY3Q?=', // This string is 'testSubject'.
         charset: 'UTF-8',
       }),
     ])},
 ];
 
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]),
 
   index: 0, // The index of the message we're currently looking at.
 
   // nsIRequestObserver part
   onStartRequest: function (aRequest, aContext) {
     this.contents = "";
     this.stream = null;
@@ -92,17 +92,17 @@ let gStreamListener = {
       this.stream = Cc["@mozilla.org/scriptableinputstream;1"].
                     createInstance(Ci.nsIScriptableInputStream);
       this.stream.init(aInputStream);
     }
     this.contents += this.stream.read(aCount);
   },
 };
 
-let gMessageHeaderSink = {
+var gMessageHeaderSink = {
   handleAttachment: function(aContentType, aUrl, aDisplayName, aUri,
                              aIsExternalAttachment) {},
   addAttachmentField: function(aName, aValue) {},
 
   // stub functions from nsIMsgHeaderSink
   onStartHeaders: function() {},
   onEndHeaders: function() {},
   processHeaders: function(aHeaderNames, aHeaderValues, dontCollectAddrs) {},
@@ -111,17 +111,17 @@ let gMessageHeaderSink = {
   onEndMsgHeaders: function(aUrl) {},
   onMsgHasRemoteContent: function(aMsgHdr, aContentURI) {},
   securityInfo: null,
   mDummyMsgHeader: null,
   properties: null,
   resetProperties: function () {}
 };
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 msgWindow.msgHeaderSink = gMessageHeaderSink;
 
 function test_message_attachments(info) {
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
 
@@ -137,18 +137,18 @@ function test_message_attachments(info) 
     "header=filter",
     false);
 
   yield false;
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(test_message_attachments, messages),
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   gInbox = configure_message_injection({mode: "local"});
   async_run_tests(tests);
 }
--- a/mailnews/mime/test/unit/test_mimeStreaming.js
+++ b/mailnews/mime/test/unit/test_mimeStreaming.js
@@ -14,17 +14,17 @@ var gTestFiles =[
   "../../../data/bug513543",
 ];
 
 var gMsgEnumerator;
 
 var gMessenger = Cc["@mozilla.org/messenger;1"].
                    createInstance(Ci.nsIMessenger);
 
-let gUrlListener = {
+var gUrlListener = {
   OnStartRunningUrl: function (aUrl) {
   },
   OnStopRunningUrl: function (aUrl, aExitCode) {
     do_test_finished();
   },
 };
 
 
--- a/mailnews/mime/test/unit/test_parser.js
+++ b/mailnews/mime/test/unit/test_parser.js
@@ -77,30 +77,30 @@ function read_file(file, start, end) {
 function make_body_test(test, file, opts, partspec) {
   var results = [[p[0], read_file(file, p[1], p[2])] for (p of partspec)];
   var msgcontents = read_file(file);
   return [test, msgcontents, opts, results];
 }
 
 /// This is the expected part specifier for the multipart-complex1 test file,
 /// specified here because it is used in several cases.
-let mpart_complex1 = [['1', 8, 10], ['2', 14, 16], ['3.1', 22, 24],
+var mpart_complex1 = [['1', 8, 10], ['2', 14, 16], ['3.1', 22, 24],
     ['4', 29, 31], ['5', 33, 35]];
 
 // Format of tests:
 // entry[0] = name of the test
 // entry[1] = message (a string or an array of packets)
 // entry[2] = options for the MIME parser
 // entry[3] = A checker result:
 //            either a {partnum: header object} (to check headers)
 //            or a [[partnum body], [partnum body], ...] (to check bodies)
 //            (the partnums refer to the expected part numbers of the MIME test)
 // Note that for body tests, unless you're testing decoding, it is preferable to
 // use make_body_test instead of writing the array yourself.
-let parser_tests = [
+var parser_tests = [
   // Body tests from data
   // (Note: line numbers are 1-based. Also, to capture trailing EOF, add 2 to
   // the last line number of the file).
   make_body_test("Basic body", "basic1", {}, [['', 3, 5]]),
   make_body_test("Basic multipart", "multipart1", {}, [['1', 10, 12]]),
   make_body_test("Basic multipart", "multipart2", {}, [['1', 8, 11]]),
   make_body_test("Complex multipart", "multipart-complex1", {}, mpart_complex1),
   make_body_test("Truncated multipart", "multipart-complex2", {},
@@ -198,17 +198,17 @@ function test_parser(message, opts, resu
     do_check_eq(dataCalls, results.length);
 }
 
 const ATTACH = MimeParser.HEADER_PARAMETER;
 // Format of tests:
 // entry[0] = header
 // entry[1] = flags
 // entry[2] = result to match
-let header_tests = [
+var header_tests = [
   // Parameter passing
   ["multipart/related", MimeParser.HEADER_PARAMETER, ["multipart/related", {}]],
   ["a ; b=v", MimeParser.HEADER_PARAMETER, ["a", {"b": "v"}]],
   ["a ; b='v'", MimeParser.HEADER_PARAMETER, ["a", {"b": "'v'"}]],
   ['a; b = "v"', MimeParser.HEADER_PARAMETER, ["a", {"b": "v"}]],
   ["a;b=1;b=2", MimeParser.HEADER_PARAMETER, ["a", {"b": "1"}]],
   ["a;b=2;b=1", MimeParser.HEADER_PARAMETER, ["a", {"b": "2"}]],
   ['a;b="a;b"', MimeParser.HEADER_PARAMETER, ["a", {"b": "a;b"}]],
--- a/mailnews/mime/test/unit/test_rfc822_body.js
+++ b/mailnews/mime/test/unit/test_rfc822_body.js
@@ -8,38 +8,38 @@
  */
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 
 load("../../../resources/messageGenerator.js");
 load("../../../resources/messageModifier.js");
 load("../../../resources/messageInjection.js");
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 
-let messages = [
+var messages = [
   // a message whose body is itself a message
   { bodyPart: msgGen.makeMessage(),
     attachmentCount: inline => 1,
   },
   // a message whose body is itself a message, and which has an attachment
   { bodyPart: msgGen.makeMessage({
       attachments: [{ body: "I'm an attachment!",
                       filename: "attachment.txt",
                       format: "" }]
     }),
     attachmentCount: inline => inline ? 2 : 1,
   },
 ];
 
-let gStreamListener = {
+var gStreamListener = {
   stream: null,
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]),
 
   // nsIRequestObserver part
   onStartRequest: function (aRequest, aContext) {
   },
   onStopRequest: function (aRequest, aContext, aStatusCode) {
     do_check_eq(gMessageHeaderSink.attachmentCount,
@@ -52,17 +52,17 @@ let gStreamListener = {
     if (this.stream === null) {
       this.stream = Cc["@mozilla.org/scriptableinputstream;1"].
                     createInstance(Ci.nsIScriptableInputStream);
       this.stream.init(aInputStream);
     }
   }
 };
 
-let gMessageHeaderSink = {
+var gMessageHeaderSink = {
   attachmentCount: 0,
 
   handleAttachment: function(aContentType, aUrl, aDisplayName, aUri,
                              aIsExternalAttachment) {
     this.attachmentCount++;
   },
 
   // stub functions from nsIMsgHeaderSink
@@ -77,17 +77,17 @@ let gMessageHeaderSink = {
   securityInfo: null,
   mDummyMsgHeader: null,
   properties: null,
   resetProperties: function () {
     this.attachmentCount = 0;
   },
 };
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 msgWindow.msgHeaderSink = gMessageHeaderSink;
 
 function help_test_rfc822_body(info, inline) {
   Services.prefs.setBoolPref("mail.inline_attachments", inline);
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
@@ -114,19 +114,19 @@ function test_rfc822_body_display_inline
 }
 
 function test_rfc822_body_no_display_inline(info) {
   return help_test_rfc822_body(info, false);
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(test_rfc822_body_display_inline, messages),
   parameterizeTest(test_rfc822_body_no_display_inline, messages),
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   gInbox = configure_message_injection({mode: "local"});
   async_run_tests(tests);
 }
--- a/mailnews/mime/test/unit/test_text_attachment.js
+++ b/mailnews/mime/test/unit/test_text_attachment.js
@@ -8,35 +8,35 @@
  */
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 
 load("../../../resources/messageGenerator.js");
 load("../../../resources/messageModifier.js");
 load("../../../resources/messageInjection.js");
 
-let gMessenger = Cc["@mozilla.org/messenger;1"]
+var gMessenger = Cc["@mozilla.org/messenger;1"]
                    .createInstance(Ci.nsIMessenger);
 
 // Create a message generator
 const msgGen = gMessageGenerator = new MessageGenerator();
 
 const textAttachment =
   "inline text attachment";
 
 // create a message with a text attachment
-let messages = [
+var messages = [
   // text attachment
   { attachments: [{ body: textAttachment,
                     filename: 'test.txt',
                     format: '' }]},
   ];
 
 
-let gStreamListener = {
+var gStreamListener = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]),
 
   _str:"",
   // nsIRequestObserver part
   onStartRequest: function (aRequest, aContext) {
   },
   onStopRequest: function (aRequest, aContext, aStatusCode) {
     // check that text attachment contents didn't end up inline.
@@ -55,17 +55,17 @@ let gStreamListener = {
       this._stream = Cc["@mozilla.org/scriptableinputstream;1"].
                     createInstance(Ci.nsIScriptableInputStream);
       this._stream.init(aInputStream);
     }
     this._str += this._stream.read(aCount);
   },
 };
 
-let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
+var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"]
                   .createInstance(Ci.nsIMsgWindow);
 
 function test_message_attachments(info) {
   let synMsg = gMessageGenerator.makeMessage(info);
   let synSet = new SyntheticMessageSet([synMsg]);
   yield add_sets_to_folder(gInbox, [synSet]);
 
   let msgURI = synSet.getMsgURI(0);
@@ -81,19 +81,19 @@ function test_message_attachments(info) 
     "filter",
     false);
 
   yield false;
 }
 
 /* ===== Driver ===== */
 
-let tests = [
+var tests = [
   parameterizeTest(test_message_attachments, messages),
 ];
 
-let gInbox;
+var gInbox;
 
 function run_test() {
   gInbox = configure_message_injection({mode: "local"});
   Services.prefs.setBoolPref("mail.inline_attachments", false);
   async_run_tests(tests);
 }
--- a/mailnews/news/test/unit/head_server_setup.js
+++ b/mailnews/news/test/unit/head_server_setup.js
@@ -94,17 +94,17 @@ function makeServer(handler, daemon) {
 Services.prefs.setBoolPref("mail.strict_threading", true);
 
 
 // Make sure we don't try to use a protected port. I like adding 1024 to the
 // default port when doing so...
 const NNTP_PORT = 1024+119;
 
 var _server = null;
-let _account = null;
+var _account = null;
 
 function subscribeServer(incomingServer) {
   // Subscribe to newsgroups
   incomingServer.QueryInterface(Ci.nsINntpIncomingServer);
   groups.forEach(function (element) {
       if (element[1])
         incomingServer.subscribeToNewsgroup(element[0]);
     });
--- a/mailnews/news/test/unit/test_internalUris.js
+++ b/mailnews/news/test/unit/test_internalUris.js
@@ -4,17 +4,17 @@
 
 load("../../../resources/logHelper.js");
 load("../../../resources/asyncTestUtils.js");
 load("../../../resources/alertTestUtils.js");
 
 Components.utils.import("resource:///modules/mailServices.js");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-let dummyMsgWindow = {
+var dummyMsgWindow = {
   get statusFeedback() {
     return {
       startMeteors: function () {},
       stopMeteors: function () {
         async_driver();
       },
       showProgress: function () {}
     };
@@ -22,17 +22,17 @@ let dummyMsgWindow = {
   get promptDialog() {
     return alertUtilsPrompts;
   },
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIMsgWindow,
                                          Ci.nsISupportsWeakReference])
 };
 var daemon, localserver, server;
 
-let tests = [
+var tests = [
   test_newMsgs,
   test_cancel,
   test_fetchMessage,
   test_search,
   test_grouplist,
   test_postMessage,
   test_escapedName,
   cleanUp
--- a/mailnews/news/test/unit/test_uriParser.js
+++ b/mailnews/news/test/unit/test_uriParser.js
@@ -1,14 +1,14 @@
 // Tests nsINntpUrl parsing.
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 var localserver;
-let tests = [
+var tests = [
   // news://host/-based URIs
   { uri: "news://localhost/?newgroups",
     get server() { return localserver; },
     folder: null,
     newsAction: Ci.nsINntpUrl.ActionListNewGroups
   },
   // news://host/group-based
   { uri: "news://news.server.example/example.group.this",
@@ -125,17 +125,17 @@ let tests = [
     get server() { return localserver; },
     folder: null,
     newsAction: Ci.nsINntpUrl.ActionFetchArticle,
     group: "i.dont.exist",
     key: 123
   },
 ];
 
-let invalid_uris = [
+var invalid_uris = [
   "news-message://localhost/test.simple.subscribe#hello",
   "nntp://localhost/",
   "nntp://localhost/a.group/hello",
   "nntp://localhost/a.group/0",
   "nntp:a.group"
 ];
 
 function run_test() {
--- a/mailnews/test/resources/MockFactory.js
+++ b/mailnews/test/resources/MockFactory.js
@@ -2,17 +2,17 @@ this.EXPORTED_SYMBOLS = ["MockFactory"];
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cm = Components.manager;
 
-let MockFactory = {
+var MockFactory = {
   _registeredComponents: {},
   /**
    * Register a mock to override target interfaces.
    * The target interface may be accessed though _genuine property of the mock.
    *
    * @param contractID The contract ID of the interface which is overridden by
                        the mock.
    *                   e.g. "@mozilla.org/messenger/account-manager;1"
--- a/mailnews/test/resources/folderEventLogHelper.js
+++ b/mailnews/test/resources/folderEventLogHelper.js
@@ -33,17 +33,17 @@ function registerFolderEventLogHelper() 
         Ci.nsIMsgFolderNotificationService.folderRenamed |
         Ci.nsIMsgFolderNotificationService.itemEvent);
 }
 
 /**
  * nsIMsgFolderListener implementation to logHelper events that gloda cares
  *  about.
  */
-let _folderEventLogHelper_msgFolderListener = {
+var _folderEventLogHelper_msgFolderListener = {
   msgAdded: function felh_msgAdded(aMsg) {
     mark_action("msgEvent", "msgAdded", [aMsg]);
   },
 
   msgsClassified: function felh_msgsClassified(aMsgs, aJunkProcessed,
                                                aTraitProcessed) {
     let args = [
       aJunkProcessed ? "junk processed" : "did not junk process",
@@ -110,17 +110,17 @@ let _folderEventLogHelper_msgFolderListe
     mark_action("msgEvent", "itemEvent", [aItem, aEvent, aData]);
   }
 };
 
 
 /**
  * nsIFolderListener implementation to logHelper stuff that gloda cares about.
  */
-let _folderEventLogHelper_folderListener = {
+var _folderEventLogHelper_folderListener = {
   OnItemAdded: function felh_OnItemAdded(aParentItem, aItem) {
   },
   OnItemRemoved: function felh_OnItemRemoved(aParentItem, aItem) {
   },
   OnItemPropertyChanged: function felh_OnItemPropertyChanged(
     aItem, aProperty, aOldValue, aNewValue) {
   },
   OnItemIntPropertyChanged: function felh_OnItemIntPropertyChanged(
--- a/mailnews/test/resources/logHelper.js
+++ b/mailnews/test/resources/logHelper.js
@@ -36,17 +36,17 @@ function logHelperHasInterestedListeners
 /**
  * Tunnel nsIScriptErrors that show up on the error console to Log4Moz.  We could
  *  send everything but I think only script errors are likely of much concern.
  *  Also, this nicely avoids infinite recursions no matter what you do since
  *  what we publish is not going to end up as an nsIScriptError.
  *
  * This is based on my (asuth') exmmad extension.
  */
-let _errorConsoleTunnel = {
+var _errorConsoleTunnel = {
   initialize: function () {
     Services.console.registerListener(this);
 
     // we need to unregister our listener at shutdown if we don't want explosions
     Services.obs.addObserver(this, "quit-application", false);
   },
 
   shutdown: function () {
@@ -281,17 +281,17 @@ function _explode_flags(aFlagWord, aFlag
   for each (let [flagName, flagVal] in Iterator(aFlagDefs)) {
     if (flagVal & aFlagWord)
       flagList.push(flagName);
   }
 
   return flagList;
 }
 
-let _registered_json_normalizers = [];
+var _registered_json_normalizers = [];
 
 /**
  * Copy natives or objects, deferring to _normalize_for_json for objects.
  */
 function __value_copy(aObj, aDepthAllowed) {
   if (aObj == null || typeof(aObj) != "object")
     return aObj;
   return _normalize_for_json(aObj, aDepthAllowed, true);
--- a/mailnews/test/resources/messageInjection.js
+++ b/mailnews/test/resources/messageInjection.js
@@ -556,17 +556,17 @@ function make_new_sets_in_folders(aMsgFo
   }
 
   // - add the messages to the folders (interleaving them)
   add_sets_to_folders(aMsgFolders, messageSets, aDoNotForceUpdate);
 
   return messageSets;
 }
 /** singular folder alias for single-folder users' readability */
-let make_new_sets_in_folder = make_new_sets_in_folders;
+var make_new_sets_in_folder = make_new_sets_in_folders;
 
 /**
  * An iterator that generates an infinite sequence of its argument.  So
  *  _looperator(1, 2, 3) will generate the iteration stream: [1, 2, 3, 1, 2, 3,
  *  1, 2, 3, ...].  For use by add_sets_across_folders.
  */
 function _looperator(aList) {
   if (aList.length == 0)
@@ -813,17 +813,17 @@ function add_sets_to_folders(aMsgFolders
     ims.pop3Service.GetNewMail(null, asyncUrlListener, mis.inboxFolder,
                                mis.incomingServer);
     return false; // wait for the url listener to be notified
   }
 
   return true;
 };
 /** singular function name for understandability of single-folder users */
-let add_sets_to_folder = add_sets_to_folders;
+var add_sets_to_folder = add_sets_to_folders;
 
 /**
  * Return the nsIMsgFolder associated with a folder handle.  If the folder has
  *  been created since the last injection and you are using IMAP, you may need
  *  to first "yield wait_for_async_promises();" for us to be able to provide
  *  you with a result.
  */
 function get_real_injection_folder(aFolderHandle) {
--- a/suite/browser/test/browser/browser_bug427559.js
+++ b/suite/browser/test/browser/browser_bug427559.js
@@ -4,17 +4,17 @@
 
 /*
  * Test bug 427559 to make sure focused elements that are no longer on the page
  * will have focus transferred to the window when changing tabs back to that
  * tab with the now-gone element.
  */
 
 // Default focus on a button and have it kill itself on blur
-let testPage = 'data:text/html,<body><button onblur="this.remove();"><script>document.body.firstChild.focus();</script></body>';
+var testPage = 'data:text/html,<body><button onblur="this.remove();"><script>document.body.firstChild.focus();</script></body>';
 
 function test() {
   waitForExplicitFinish();
 
   gBrowser.selectedTab = gBrowser.addTab();
 
   gBrowser.selectedBrowser.addEventListener("load", function loadListener() {
     gBrowser.selectedBrowser.removeEventListener("load", loadListener, true);
--- a/suite/browser/test/browser/browser_bug561636.js
+++ b/suite/browser/test/browser/browser_bug561636.js
@@ -16,17 +16,17 @@ function checkPopupHide()
 
 function checkPopupMessage(doc)
 {
   is(gInvalidFormPopup.firstChild.textContent,
      doc.getElementById('i').validationMessage,
      "The panel should show the message from validationMessage");
 }
 
-let gObserver = {
+var gObserver = {
   QueryInterface : XPCOMUtils.generateQI([Ci.nsIFormSubmitObserver]),
 
   notifyInvalidSubmit : function (aFormElement, aInvalidElements)
   {
   }
 };
 
 function test()
--- a/suite/browser/test/browser/browse