Bug 1280898 - Set up eslint for calendar files - enable semi rule. r=MakeMyDay
authoreslint <eslint@bugzilla.kewis.ch>
Fri, 08 Jul 2016 11:19:24 +0200
changeset 25970 42fb631fc841ecac5ae911a85fdc9fa38ba68954
parent 25969 626c889fd0927fd07df3bfe982a09c19ea7a8e7e
child 25971 305102c9beddb775c8841d10118d73e0adc5e3a3
push id1771
push userclokep@gmail.com
push dateMon, 14 Nov 2016 17:47:53 +0000
treeherdercomm-beta@399ae9d71595 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMakeMyDay
bugs1280898
Bug 1280898 - Set up eslint for calendar files - enable semi rule. r=MakeMyDay MozReview-Commit-ID: 6uLD7JQnPWh
calendar/.eslintrc
calendar/base/backend/icaljs/calICSService-worker.js
calendar/base/backend/icaljs/calICSService.js
calendar/base/content/agenda-listbox.js
calendar/base/content/calendar-chrome-startup.js
calendar/base/content/calendar-extract.js
calendar/base/content/calendar-invitations-manager.js
calendar/base/content/calendar-item-editing.js
calendar/base/content/calendar-month-view.xml
calendar/base/content/calendar-multiday-view.xml
calendar/base/content/calendar-task-view.js
calendar/base/content/calendar-view-core.xml
calendar/base/content/calendar-views.js
calendar/base/content/dialogs/calendar-alarm-dialog.js
calendar/base/content/dialogs/calendar-event-dialog-attendees.js
calendar/base/content/dialogs/calendar-event-dialog-attendees.xml
calendar/base/content/dialogs/calendar-event-dialog-freebusy.xml
calendar/base/content/dialogs/calendar-event-dialog-recurrence-preview.xml
calendar/base/content/dialogs/calendar-event-dialog-recurrence.js
calendar/base/content/dialogs/calendar-event-dialog-reminder.js
calendar/base/content/dialogs/calendar-print-dialog.js
calendar/base/content/dialogs/calendar-properties-dialog.js
calendar/base/content/dialogs/calendar-summary-dialog.js
calendar/base/content/import-export.js
calendar/base/content/preferences/categories.js
calendar/base/content/widgets/calendar-list-tree.xml
calendar/base/content/widgets/calendar-widgets.xml
calendar/base/content/widgets/minimonth.xml
calendar/base/modules/calAsyncUtils.jsm
calendar/base/modules/calExtract.jsm
calendar/base/modules/calHashedArray.jsm
calendar/base/modules/calItipUtils.jsm
calendar/base/modules/calPrintUtils.jsm
calendar/base/modules/calProviderUtils.jsm
calendar/base/modules/calRecurrenceUtils.jsm
calendar/base/modules/calUtils.jsm
calendar/base/modules/calViewUtils.jsm
calendar/base/src/calAlarmService.js
calendar/base/src/calCachedCalendar.js
calendar/base/src/calCalendarManager.js
calendar/base/src/calCalendarSearchService.js
calendar/base/src/calEvent.js
calendar/base/src/calFreeBusyService.js
calendar/base/src/calItemBase.js
calendar/base/src/calRecurrenceInfo.js
calendar/base/src/calTimezoneService.js
calendar/base/src/calTodo.js
calendar/base/src/calUtils.js
calendar/import-export/calOutlookCSVImportExport.js
calendar/itip/calItipEmailTransport.js
calendar/lightning/content/html-item-editing/react-code.js
calendar/lightning/content/imip-bar.js
calendar/lightning/content/lightning-item-iframe.js
calendar/lightning/content/lightning-item-panel.js
calendar/lightning/content/messenger-overlay-sidebar.js
calendar/lightning/content/suite-overlay-sidebar.js
calendar/lightning/modules/ltnInvitationUtils.jsm
calendar/providers/caldav/calDavCalendar.js
calendar/providers/caldav/calDavRequestHandlers.js
calendar/providers/ics/calICSCalendar.js
calendar/providers/storage/calStorageCalendar.js
calendar/providers/storage/calStorageUpgrade.jsm
calendar/providers/wcap/calWcapCalendarItems.js
calendar/providers/wcap/calWcapSession.js
calendar/resources/content/calendarCreation.js
calendar/resources/content/datetimepickers/datetimepickers.xml
calendar/resources/content/publish.js
calendar/test/mozmill/eventDialog/testEventDialog.js
calendar/test/mozmill/eventDialog/testEventDialogModificationPrompt.js
calendar/test/mozmill/eventDialog/testUTF8.js
calendar/test/mozmill/recurrence/testAnnualRecurrence.js
calendar/test/mozmill/recurrence/testBiweeklyRecurrence.js
calendar/test/mozmill/recurrence/testDailyRecurrence.js
calendar/test/mozmill/recurrence/testLastDayOfMonthRecurrence.js
calendar/test/mozmill/recurrence/testWeeklyNRecurrence.js
calendar/test/mozmill/recurrence/testWeeklyUntilRecurrence.js
calendar/test/mozmill/recurrence/testWeeklyWithExceptionRecurrence.js
calendar/test/mozmill/recurrenceRotated/testAnnualRecurrence.js
calendar/test/mozmill/recurrenceRotated/testBiweeklyRecurrence.js
calendar/test/mozmill/recurrenceRotated/testDailyRecurrence.js
calendar/test/mozmill/recurrenceRotated/testLastDayOfMonthRecurrence.js
calendar/test/mozmill/recurrenceRotated/testWeeklyNRecurrence.js
calendar/test/mozmill/recurrenceRotated/testWeeklyUntilRecurrence.js
calendar/test/mozmill/recurrenceRotated/testWeeklyWithExceptionRecurrence.js
calendar/test/mozmill/shared-modules/calendar-utils.js
calendar/test/mozmill/testAlarmDefaultValue.js
calendar/test/mozmill/testBasicFunctionality.js
calendar/test/mozmill/testLocalICS.js
calendar/test/mozmill/testTodayPane.js
calendar/test/mozmill/timezoneTests/test1.js
calendar/test/mozmill/timezoneTests/test10.js
calendar/test/mozmill/timezoneTests/test2.js
calendar/test/mozmill/timezoneTests/test3.js
calendar/test/mozmill/timezoneTests/test4.js
calendar/test/mozmill/timezoneTests/test5.js
calendar/test/mozmill/timezoneTests/test6.js
calendar/test/mozmill/timezoneTests/test7.js
calendar/test/mozmill/timezoneTests/test8.js
calendar/test/mozmill/timezoneTests/test9.js
calendar/test/mozmill/views/testDayView.js
calendar/test/mozmill/views/testMonthView.js
calendar/test/mozmill/views/testMultiweekView.js
calendar/test/mozmill/views/testTaskView.js
calendar/test/mozmill/views/testWeekView.js
calendar/test/unit/test_alarm.js
calendar/test/unit/test_alarmutils.js
calendar/test/unit/test_attendee.js
calendar/test/unit/test_calmgr.js
calendar/test/unit/test_deleted_items.js
calendar/test/unit/test_freebusy_service.js
calendar/test/unit/test_gdata_provider.js
calendar/test/unit/test_hashedarray.js
calendar/test/unit/test_ics_parser.js
calendar/test/unit/test_recur.js
calendar/test/unit/test_relation.js
calendar/test/unit/test_rfc3339_parser.js
calendar/test/unit/test_search_service.js
calendar/test/unit/test_utils.js
--- a/calendar/.eslintrc
+++ b/calendar/.eslintrc
@@ -175,16 +175,19 @@
     // Require space after keyword for anonymous functions, but disallow space
     // after name of named functions.
     "space-before-function-paren": [2, {"anonymous": "never", "named": "never"}],
 
     // Disallow unreachable statements after a return, throw, continue, or break
     // statement.
     "no-unreachable": 2,
 
+    // Always require use of semicolons wherever they are valid.
+    "semi": [2, "always"],
+
     // Will enable these rules later
     "block-spacing": 0,
     "no-lonely-if": 0,
     "space-before-blocks": 0,
     "computed-property-spacing": 0,
     "consistent-return": 0,
     "no-redeclare": 0,
     "no-empty": 0,
--- a/calendar/base/backend/icaljs/calICSService-worker.js
+++ b/calendar/base/backend/icaljs/calICSService-worker.js
@@ -15,9 +15,9 @@ importScripts("resource://calendar/modul
 onmessage = function onmessage(event) {
     try {
         let comp = ICAL.parse(event.data);
         postMessage({ rc: NS_OK, data: comp });
     } catch (e) {
         postMessage({ rc: NS_ERROR_FAILURE, data: "Exception occurred: " + e});
     }
     close();
-}
+};
--- a/calendar/base/backend/icaljs/calICSService.js
+++ b/calendar/base/backend/icaljs/calICSService.js
@@ -28,17 +28,17 @@ calIcalProperty.prototype = {
     set icalProperty(val) { this.innerObject = val; },
 
     get parent() { return this.innerObject.parent; },
     toString: function() { return this.innerObject.toICAL(); },
 
     get value() {
         // Unescaped value for properties of TEXT, escaped otherwise.
         if (this.innerObject.type == "text") {
-            return this.innerObject.getValues().join(",")
+            return this.innerObject.getValues().join(",");
         }
         return this.valueAsIcalString;
     },
     set value(val) {
         // Unescaped value for properties of TEXT, escaped otherwise.
         if (this.innerObject.type == "text") {
             this.innerObject.setValue(val);
             return val;
@@ -246,17 +246,17 @@ calIcalComponent.prototype = {
         this.componentIterator = (function* () {
             let comps = innerObject.getAllSubcomponents(kind);
             if (comps) {
                 for (let comp of comps) {
                     yield new calIcalComponent(comp);
                 }
             }
         })();
-        return this.getNextSubcomponent(kind)
+        return this.getNextSubcomponent(kind);
     },
     getNextSubcomponent: function(kind) {
         if (this.componentIterator) {
             let next = this.componentIterator.next();
             if (next.done) {
                 this.componentIterator = null;
             }
 
--- a/calendar/base/content/agenda-listbox.js
+++ b/calendar/base/content/agenda-listbox.js
@@ -42,17 +42,17 @@ function initAgendaListbox() {
         observe: function aL_observe(aSubject, aTopic, aPrefName) {
             switch (aPrefName) {
                 case "calendar.agendaListbox.soondays":
                     agendaListbox.soonDays = getSoondaysPreference();
                     agendaListbox.updateSoonSection();
                     break;
             }
         }
-    }
+    };
     Services.prefs.addObserver("calendar.agendaListbox", prefObserver, false);
 
     // Make sure the agenda listbox is unloaded
     var self = this;
     window.addEventListener("unload",
                             function unload_agendaListbox() {
                                 Services.prefs.removeObserver("calendar.agendaListbox", prefObserver);
                                 self.uninit();
@@ -90,32 +90,32 @@ function uninit() {
  */
 agendaListbox.addPeriodListItem =
 function addPeriodListItem(aPeriod, aItemId) {
     aPeriod.listItem = document.getElementById(aItemId + "-hidden").cloneNode(true);
     agendaListbox.agendaListboxControl.appendChild(aPeriod.listItem);
     aPeriod.listItem.id = aItemId;
     aPeriod.listItem.getCheckbox().setChecked(aPeriod.open);
     aPeriod.listItem.getCheckbox().addEventListener("CheckboxStateChange", this.onCheckboxChange, true);
-}
+};
 
 /**
  * Remove a period item from the agenda listbox.
  * @see agendaListbox::addPeriodListItem
  */
 agendaListbox.removePeriodListItem =
 function removePeriodListItem(aPeriod) {
     if (aPeriod.listItem) {
         aPeriod.listItem.getCheckbox().removeEventListener("CheckboxStateChange", this.onCheckboxChange, true);
         if (aPeriod.listItem) {
             aPeriod.listItem.remove();
             aPeriod.listItem = null;
         }
     }
-}
+};
 
 /**
  * Handler function called when changing the checkbox state on period items.
  *
  * @param event     The DOM event that triggered the checkbox state change.
  */
 agendaListbox.onCheckboxChange =
 function onCheckboxChange(event) {
@@ -156,34 +156,34 @@ function onCheckboxChange(event) {
 agendaListbox.onSelect =
 function onSelect(aListItem) {
     let listbox = document.getElementById("agenda-listbox");
     let item = aListItem || listbox.selectedItem;
     if (aListItem) {
         listbox.selectedItem = item;
     }
     calendarController.onSelectionChanged({detail: agendaListbox.getSelectedItems()});
-}
+};
 
 /**
  * Handler function called when the agenda listbox becomes focused
  */
 agendaListbox.onFocus =
 function onFocus() {
     let listbox = document.getElementById("agenda-listbox");
     calendarController.onSelectionChanged({detail: agendaListbox.getSelectedItems()});
-}
+};
 
 /**
  * Handler function called when the agenda listbox loses focus.
  */
 agendaListbox.onBlur =
 function onBlur() {
     calendarController.onSelectionChanged({detail: []});
-}
+};
 
 
 /**
  * Handler function called when a key was pressed on the agenda listbox
  */
 agendaListbox.onKeyPress =
 function onKeyPress(aEvent) {
     var listItem = aEvent.target;
@@ -205,28 +205,28 @@ function onKeyPress(aEvent) {
             }
             break;
         case aEvent.DOM_VK_RIGHT:
             if (!this.isEventListItem(listItem)) {
                 listItem.getCheckbox().setChecked(true);
             }
             break;
     }
-}
+};
 
 /**
  * Calls the event dialog to edit the currently selected item
  */
 agendaListbox.editSelectedItem =
 function editSelectedItem() {
     var listItem = document.getElementById("agenda-listbox").selectedItem;
     if (listItem) {
         modifyEventWithDialog(listItem.occurrence, null, true);
     }
-}
+};
 
 /**
  * Finds the appropriate period for the given item, i.e finds "Tomorrow" if the
  * item occurrs tomorrow.
  *
  * @param aItem     The item to find the period for.
  */
 agendaListbox.findPeriodsForItem =
@@ -250,62 +250,62 @@ function getStart(){
     var retStart = null;
     for (var i = 0; i < this.periods.length; i++) {
         if (this.periods[i].open) {
             retStart = this.periods[i].start;
             break;
         }
     }
     return retStart;
-}
+};
 
 /**
  * Gets the end of the latest period shown in the agenda listbox
  */
 agendaListbox.getEnd =
 function getEnd(){
     var retEnd = null;
     for (var i = this.periods.length - 1; i >= 0; i--) {
         if (this.periods[i].open) {
             retEnd = this.periods[i].end;
             break;
         }
     }
     return retEnd;
-}
+};
 
 /**
  * Adds an item to an agenda period before another existing item.
  *
  * @param aNewItem      The calIItemBase to add.
  * @param aAgendaItem   The existing item to insert before.
  * @param aPeriod       The period to add the item to.
  * @param visible       If true, the item should be visible.
  * @return              The newly created XUL element.
  */
 agendaListbox.addItemBefore =
 function addItemBefore(aNewItem, aAgendaItem, aPeriod, visible) {
     var newelement = null;
     if (aNewItem.startDate.isDate) {
         newelement = createXULElement("agenda-allday-richlist-item");
     } else {
-        newelement = createXULElement("agenda-richlist-item")
+        newelement = createXULElement("agenda-richlist-item");
     }
     // set the item at the richlistItem. When the duration of the period
     // is bigger than 1 (day) the starttime of the item has to include
     // information about the day of the item
     if (aAgendaItem == null) {
         this.agendaListboxControl.appendChild(newelement);
     } else {
         this.agendaListboxControl.insertBefore(newelement, aAgendaItem);
     }
     newelement.setOccurrence(aNewItem, aPeriod);
     newelement.removeAttribute("selected");
     return newelement;
-}
+};
 
 /**
  * Adds an item to the agenda listbox. This function finds the correct period
  * for the item and inserts it correctly so the period stays sorted.
  *
  * @param aItem         The calIItemBase to add.
  * @return              The newly created XUL element.
  */
@@ -338,24 +338,24 @@ function addItem(aItem) {
                     if (this.isSameEvent(aItem, compitem)) {
                         // The same event occurs on several calendars but we only
                         // display the first one.
                         // TODO: find a way to display this special circumstance
                         break;
                     } else if (this.isBefore(aItem, compitem, period)) {
                         if (this.isSameEvent(aItem, compitem)) {
                             newlistItem = this.addItemBefore(aItem, complistItem, period, visible);
-                            break
+                            break;
                         } else {
                             newlistItem = this.addItemBefore(aItem, complistItem, period, visible);
                             break;
                         }
                     }
                 }
-            } while (complistItem)
+            } while (complistItem);
         }
     }
     return newlistItem;
 };
 
 /**
  * Checks if the given item happens before the comparison item.
  *
@@ -402,17 +402,17 @@ function isBefore(aItem, aCompItem, aPer
     let comp = itemDate.compare(compItemDate);
     if (comp == 0) {
         comp = aItem.startDate.compare(aCompItem.startDate);
         if (comp == 0) {
             comp = aItem.endDate.compare(aCompItem.endDate);
         }
     }
     return (comp <= 0);
-}
+};
 
 /**
  * Returns the start or end date of an item according to which of them
  * must be displayed in a given period of the agenda
  *
  * @param aItem         The item to compare.
  * @param aPeriod       The period where the item is inserted.
  * @return              The start or end date of the item showed in the agenda.
@@ -442,17 +442,17 @@ function comparisonDate(aItem, aPeriod) 
     endDate.isDate = true;
     if (startDate.compare(endDate) != 0 &&
          startDate.compare(periodStartDate) < 0) {
         // returns a end date when the item is a multiday event AND
         // it starts before the given period
         return endDateToReturn;
     }
     return aItem.startDate.clone();
-}
+};
 
 /**
  * Gets the listitems for a given item, possibly in a given period.
  *
  * @param aItem         The item to get the list items for.
  * @param aPeriod       (optional) the period to search in.
  * @return              An array of list items for the given item.
  */
@@ -472,21 +472,21 @@ function getListItems(aItem, aPeriod) {
                 complistItem = complistItem.nextSibling;
                 leaveloop = (!this.isEventListItem(complistItem));
                 if (!leaveloop) {
                     if (this.isSameEvent(aItem, complistItem.occurrence)){
                         retlistItems.push(complistItem);
                         break;
                     }
                 }
-            } while (!leaveloop)
+            } while (!leaveloop);
         }
     }
     return retlistItems;
-}
+};
 
 /**
  * Removes the given item from the agenda listbox
  *
  * @param aItem             The item to remove.
  * @param aMoveSelection    If true, the selection will be moved to the next
  *                            sibling that is not an period item.
  * @return                  Returns true if the removed item was selected.
@@ -504,79 +504,79 @@ function deleteItem(aItem, aMoveSelectio
                 if (aMoveSelection) {
                     this.moveSelection();
                 }
             }
             listItem.remove();
         }
     }
     return isSelected;
-}
+};
 
 /**
  * Remove all items belonging to the specified calendar.
  *
  * @param aCalendar         The item to compare.
  */
 agendaListbox.deleteItemsFromCalendar =
 function deleteItemsFromCalendar(aCalendar) {
     let childNodes = Array.from(this.agendaListboxControl.childNodes);
     for (let childNode of childNodes) {
         if (childNode && childNode.occurrence
             && childNode.occurrence.calendar.id == aCalendar.id) {
             childNode.remove();
         }
     }
-}
+};
 
 /**
  * Compares two items to see if they have the same id and their start date
  * matches
  *
  * @param aItem         The item to compare.
  * @param aCompItem     The item to compare with.
  * @return              True, if the items match with the above noted criteria.
  */
 agendaListbox.isSameEvent =
 function isSameEvent(aItem, aCompItem) {
     return ((aItem.id == aCompItem.id) &&
             (aItem[calGetStartDateProp(aItem)].compare(aCompItem[calGetStartDateProp(aCompItem)]) == 0));
-}
+};
 
 /**
  * Checks if the currently selected node in the listbox is an Event item (not a
  * period item).
  *
  * @return              True, if the node is not a period item.
  */
 agendaListbox.isEventSelected =
 function isEventSelected() {
     var listItem = this.agendaListboxControl.selectedItem;
     if (listItem) {
         return (this.isEventListItem(listItem));
     }
     return false;
-}
+};
 
 /**
  * Delete the selected item from its calendar (if it is an event item)
  *
  * @param aDoNotConfirm     If true, the user will not be prompted.
  */
 agendaListbox.deleteSelectedItem =
 function deleteSelectedItem(aDoNotConfirm) {
     var listItem = this.agendaListboxControl.selectedItem;
     if (this.isEventListItem(listItem)) {
         var selectedItems = [listItem.occurrence];
         calendarViewController.deleteOccurrences(selectedItems.length,
                                                  selectedItems,
                                                  false,
                                                  aDoNotConfirm);
     }
-}
+};
 
 /**
  * If a Period item is targeted by the passed DOM event, opens the event dialog
  * with the period's start date prefilled.
  *
  * @param aEvent            The DOM event that targets the period.
  */
 agendaListbox.createNewEvent =
@@ -585,17 +585,17 @@ function createNewEvent(aEvent) {
         // Create new event for the date currently displayed in the agenda. Setting
         // isDate = true automatically makes the start time be the next full hour.
         var eventStart = agendaListbox.today.start.clone();
         eventStart.isDate = true;
         if (calendarController.isCommandEnabled("calendar_new_event_command")) {
             createEventWithDialog(getSelectedCalendar(), eventStart);
         }
     }
-}
+};
 
 /**
  * Sets up the context menu for the agenda listbox
  *
  * @param popup         The <menupopup> element to set up.
  */
 agendaListbox.setupContextMenu =
 function setupContextMenu(popup) {
@@ -603,17 +603,17 @@ function setupContextMenu(popup) {
     let enabled = this.isEventListItem(listItem);
     let menuitems = popup.childNodes;
     for (let i = 0; i < menuitems.length; i++) {
         setBooleanAttribute(menuitems[i], "disabled", !enabled);
     }
 
     let menu = document.getElementById("calendar-today-pane-menu-attendance-menu");
     setupAttendanceMenu(menu, agendaListbox.getSelectedItems({}));
-}
+};
 
 
 /**
  * Refreshes the agenda listbox. If aStart or aEnd is not passed, the agenda
  * listbox's limiting dates will be used.
  *
  * @param aStart        (optional) The start date for the item query.
  * @param aEnd          (optional) The end date for the item query.
@@ -767,17 +767,17 @@ function refreshPeriodDates(newDate) {
 /**
  * Adds a listener to this agenda listbox.
  *
  * @param aListener     The listener to add.
  */
 agendaListbox.addListener =
 function addListener(aListener) {
     this.mListener = aListener;
-}
+};
 
 /**
  * Checks if the agenda listbox is showing "today". Without arguments, this
  * function assumes the today attribute of the agenda listbox.
  *
  * @param aStartDate    (optional) The day to check if its "today".
  * @return              Returns true if today is shown.
  */
@@ -803,17 +803,17 @@ function showsToday(aStartDate) {
 agendaListbox.moveSelection =
 function moveSelection() {
     var selindex = this.agendaListboxControl.selectedIndex;
     if (!this.isEventListItem(this.agendaListboxControl.selectedItem.nextSibling)) {
         this.agendaListboxControl.goUp();
     } else {
         this.agendaListboxControl.goDown();
     }
-}
+};
 
 /**
  * Gets an array of selected items. If a period node is selected, it is not
  * included.
  *
  * @return      An array with all selected items.
  */
 agendaListbox.getSelectedItems =
@@ -821,17 +821,17 @@ function getSelectedItems() {
     var selindex = this.agendaListboxControl.selectedIndex;
     var items = [];
     if (this.isEventListItem(this.agendaListboxControl.selectedItem)) {
         // If at some point we support selecting multiple items, this array can
         // be expanded.
         items = [this.agendaListboxControl.selectedItem.occurrence];
     }
     return items;
-}
+};
 
 /**
  * Checks if the passed node in the listbox is an Event item (not a
  * period item).
  *
  * @param aListItem     The node to check for.
  * @return              True, if the node is not a period item.
  */
@@ -839,17 +839,17 @@ agendaListbox.isEventListItem =
 function isEventListItem(aListItem) {
     var isEventListItem = (aListItem != null);
     if (isEventListItem) {
         var localName = aListItem.localName;
         isEventListItem = (localName == "agenda-richlist-item" ||
                            localName == "agenda-allday-richlist-item");
     }
     return isEventListItem;
-}
+};
 
 /**
  * Removes all Event items, keeping the period items intact.
  */
 agendaListbox.removeListItems =
 function removeListItems() {
     var listItem = this.agendaListboxControl.lastChild;
     if (listItem) {
@@ -864,19 +864,19 @@ function removeListItems() {
             if (this.isEventListItem(listItem)) {
                 if (listItem != this.agendaListboxControl.firstChild) {
                     listItem.remove();
                 } else {
                     leaveloop = true;
                 }
             }
             listItem = newlistItem;
-        } while (!leaveloop)
+        } while (!leaveloop);
     }
-}
+};
 
 /**
  * Gets the list item node by its associated event's hashId.
  *
  * @return The XUL node if successful, otherwise null.
  */
 agendaListbox.getListItemByHashId =
 function getListItemByHashId(ahashId) {
@@ -885,19 +885,19 @@ function getListItemByHashId(ahashId) {
     do {
         if (this.isEventListItem(listItem)) {
             if (listItem.occurrence.hashId == ahashId) {
                 return listItem;
             }
         }
         listItem = listItem.nextSibling;
         leaveloop = (listItem == null);
-    } while (!leaveloop)
+    } while (!leaveloop);
     return null;
-}
+};
 
 /**
  * The operation listener used for calendar queries.
  * Implements calIOperationListener.
  */
 agendaListbox.calendarOpListener = {
     agendaListbox: agendaListbox
 };
@@ -947,17 +947,17 @@ agendaListbox.calendarObserver.getOccurr
 function getOccurrencesBetween(aItem) {
     var occs = [];
     var start = this.agendaListbox.getStart();
     var end = this.agendaListbox.getEnd();
     if (start && end) {
         occs = aItem.getOccurrencesBetween(start, end, {});
     }
     return occs;
-}
+};
 
 agendaListbox.calendarObserver.onDeleteItem =
 function observer_onDeleteItem(item, rebuildFlag) {
     this.onLocalDeleteItem(item, true);
 };
 
 agendaListbox.calendarObserver.onLocalDeleteItem =
 function observer_onLocalDeleteItem(item, moveSelection) {
@@ -1045,17 +1045,17 @@ agendaListbox.updateSoonSection =
 function updateSoonSection() {
     this.soon.duration = this.soonDays;
     this.soon.open = true;
     let soonHeader = document.getElementById("nextweek-header");
     if (soonHeader) {
         soonHeader.setItem(this.soon, true);
         agendaListbox.refreshPeriodDates(now());
     }
-}
+};
 
 /**
  * Updates the event considered "current". This goes through all "today" items
  * and sets the "current" attribute on all list items that are currently
  * occurring.
  *
  * @see scheduleNextCurrentEventUpdate
  */
--- a/calendar/base/content/calendar-chrome-startup.js
+++ b/calendar/base/content/calendar-chrome-startup.js
@@ -136,17 +136,17 @@ var calendarWindowPrefs = {
         } else if (aTopic == "domwindowopened") {
             let win = aSubject.QueryInterface(Components.interfaces.nsIDOMWindow);
             win.addEventListener("load", function() {
                 let attributeValue = Preferences.get("calendar.view.useSystemColors", false) && "true";
                 setElementValue(win.document.documentElement, attributeValue, "systemcolors");
             }, false);
         }
     }
-}
+};
 
 /**
  * Migrate calendar UI. This function is called at each startup and can be used
  * to change UI items that require js code intervention
  */
 function migrateCalendarUI() {
     const UI_VERSION = 2;
     let currentUIVersion = Preferences.get("calendar.ui.version");
--- a/calendar/base/content/calendar-extract.js
+++ b/calendar/base/content/calendar-extract.js
@@ -45,17 +45,17 @@ var calendarExtract = {
                     return a[0].localeCompare(b[0]);
                 } else if (idx_a != -1 && idx_b != -1) {
                     return idx_a - idx_b;
                 } else if (idx_a != -1) {
                     return -1;
                 } else {
                     return 1;
                 }
-            }
+            };
         }
 
         langs.sort(createLanguageComptor(lastUsedLangs));
         removeChildren(localeList);
 
         for (let lang of langs) {
             addMenuItem(localeList, lang[0], lang[1], null);
         }
--- a/calendar/base/content/calendar-invitations-manager.js
+++ b/calendar/base/content/calendar-invitations-manager.js
@@ -141,17 +141,17 @@ InvitationsManager.prototype = {
             // calIOperationListener
             onOperationComplete: function(aCalendar,
                                           aStatus,
                                           aOperationType,
                                           aId,
                                           aDetail) {
                 if (--this.mCount == 0) {
                     this.mInvitationsManager.mItemList.sort((a, b) => {
-                        return a.startDate.compare(b.startDate)
+                        return a.startDate.compare(b.startDate);
                     });
                     for (var listener of listeners) {
                         try {
                             if (this.mInvitationsManager.mItemList.length) {
                                 // Only call if there are actually items
                                 listener.onGetResult(null,
                                                      Components.results.NS_OK,
                                                      Components.interfaces.calIItemBase,
--- a/calendar/base/content/calendar-item-editing.js
+++ b/calendar/base/content/calendar-item-editing.js
@@ -288,17 +288,17 @@ function createTodoWithDialog(calendar, 
         if (item.id) {
             // If the item already has an id, then this is the result of
             // saving the item without closing, and then saving again.
             doTransaction('modify', item, calendar, originalItem, listener);
         } else {
             // Otherwise, this is an addition
             doTransaction('add', item, calendar, null, listener);
         }
-    }
+    };
 
     if (todo) {
         // If the todo should be created from a template, then make sure to
         // remove the id so that the item obtains a new id when doing the
         // transaction
         if (todo.id) {
             todo = todo.clone();
             todo.id = null;
--- a/calendar/base/content/calendar-month-view.xml
+++ b/calendar/base/content/calendar-month-view.xml
@@ -761,17 +761,17 @@
             mainMonth = mainMonth % 12;
           }
 
           var dateBoxes = [];
           var today = this.today();
 
           // This gets set to true, telling us to collapse the rest of the rows
           var finished = false;
-          var dateList = this.getDateList({})
+          var dateList = this.getDateList({});
 
           // This allows to find the first column of dayboxes where to set the
           // week labels taking into account whether days-off are displayed or not.
           let weekLabelColumnPos = -1;
 
           var rows = this.monthgridrows.childNodes;
 
           // Iterate through each monthgridrow and set up the day-boxes that
@@ -1095,17 +1095,17 @@
               }
             }
           }
 
           if (!aStop) {
             // Set up a timer to stop the flashing after the total time.
             var this_ = this;
             this.mFlashingEvents[aAlarmItem.hashId] = aAlarmItem;
-            setTimeout(function() { this_.flashAlarm(aAlarmItem, true) }, totaltime);
+            setTimeout(function() { this_.flashAlarm(aAlarmItem, true); }, totaltime);
           } else {
             // We are done flashing, prevent newly created event boxes from flashing.
             delete this.mFlashingEvents[aAlarmItem.hashId];
           }
         ]]></body>
       </method>
     </implementation>
 
--- a/calendar/base/content/calendar-multiday-view.xml
+++ b/calendar/base/content/calendar-multiday-view.xml
@@ -599,17 +599,17 @@
                clearTimeout(this.mEventMapTimeout);
            }
            var column = this;
 
            if (this.mCreatedNewEvent) {
                this.mEventToEdit = aOccurrence;
            }
            // Fun with scoping...
-           this.mEventMapTimeout = setTimeout(function() { column.relayout.call(column) }, 5);
+           this.mEventMapTimeout = setTimeout(function() { column.relayout.call(column); }, 5);
         ]]></body>
       </method>
 
       <method name="deleteEvent">
         <parameter name="aOccurrence"/>
         <body><![CDATA[
            if (this.internalDeleteEvent(aOccurrence)) {
                this.relayout();
@@ -1138,17 +1138,17 @@
                   // are introduced based on the start column and number of spanning columns of an item.
                   if (data.colSpan != 1) {
                       var index = glob.totalCols * data.colSpan + data.startCol;
                       layerIndex = layerArray[index];
                       if (!layerIndex) {
                           layerIndex = layerCounter++;
                           layerArray[index] = layerIndex;
                       }
-                      var offset = ((glob.totalCols - data.colSpan) % glob.totalCols)
+                      var offset = ((glob.totalCols - data.colSpan) % glob.totalCols);
                       if (offset != 0) {
                           specialSpan = data.colSpan / glob.totalCols;
                       }
                   } else {
                       layerIndex = 0;
                   }
                   layerIndex += layerOffset;
 
@@ -2576,20 +2576,20 @@
           }
         ]]></body>
       </method>
 
       <method name="enableTimeIndicator">
         <body><![CDATA[
           // Hide or show the time indicator if the preference becomes 0 or greater than 0.
           let hideIndicator = this.mTimeIndicatorInterval == 0;
-          setBooleanAttribute(this.timeBarTimeIndicator, "hidden", hideIndicator)
+          setBooleanAttribute(this.timeBarTimeIndicator, "hidden", hideIndicator);
           let todayColumn = this.findColumnForDate(this.today());
           if (todayColumn) {
-              setBooleanAttribute(todayColumn.column.timeIndicatorBox, "hidden", hideIndicator)
+              setBooleanAttribute(todayColumn.column.timeIndicatorBox, "hidden", hideIndicator);
           }
           // Update the timer but only under some circumstances, otherwise
           // it will update the wrong view or it will start without need.
           let currentMode = document.getElementById("modeBroadcaster").getAttribute("mode");
           let currView = currentView().type;
           if (currentMode == "calendar" && currView == this.type && !hideIndicator
               && (currView == "day" || currView == "week")) {
               this.updateTimeIndicatorPosition(true);
@@ -2602,17 +2602,17 @@
         <parameter name="aPpmChanged"/>
         <parameter name="aViewChanged"/>
         <body><![CDATA[
           let now = cal.now();
           let nowMinutes = now.hour * 60 + now.minute;
           if (aUpdateTheTimer) {
               let prefInt = this.mTimeIndicatorInterval;
               if (prefInt == 0) {
-                  timeIndicator.cancel()
+                  timeIndicator.cancel();
                   return;
               }
 
               // Increase the update interval if pixels per minute is small.
               let oldPrefInt = prefInt;
               if (aPpmChanged && this.mPixPerMin < 0.6) {
                   prefInt = Math.round(prefInt / this.mPixPerMin);
               }
@@ -2705,17 +2705,17 @@
           }
           let ppm = size / self.mVisibleMinutes;
           ppm = Math.floor(ppm * 1000) / 1000;
           if (ppm < self.mMinPixelsPerMinute) {
               ppm = self.mMinPixelsPerMinute;
           }
           let ppmChanged = (self.pixelsPerMinute != ppm);
           self.pixelsPerMinute = ppm;
-          setTimeout(function(){self.scrollToMinute(self.mFirstVisibleMinute)}, 0);
+          setTimeout(function() { self.scrollToMinute(self.mFirstVisibleMinute); }, 0);
 
           // Fit the weekday labels while scrolling.
           self.adjustWeekdayLength(self.getAttribute("orient") == "horizontal");
 
           // Adjust the time indicator position and the related timer.
           if (this.mTimeIndicatorInterval != 0) {
               let viewChanged = isARelayout && (timeIndicator.lastView != this.id);
               let currentMode = document.getElementById("modeBroadcaster").getAttribute("mode");
@@ -2778,17 +2778,17 @@
               setFlashingAttribute(box);
             }
           }
 
           if (!aStop) {
             // Set up a timer to stop the flashing after the total time.
             var this_ = this;
             this.mFlashingEvents[aAlarmItem.hashId] = aAlarmItem;
-            setTimeout(function() { this_.flashAlarm(aAlarmItem, true) }, totaltime);
+            setTimeout(function() { this_.flashAlarm(aAlarmItem, true); }, totaltime);
           } else {
             // We are done flashing, prevent newly created event boxes from flashing.
             delete this.mFlashingEvents[aAlarmItem.hashId];
           }
         ]]></body>
       </method>
 
       <!-- calICalendarView -->
@@ -3111,32 +3111,32 @@
               }
           }
 
           var displayDuration = highMinute - lowMinute;
           if (this.mSelectedItems.length &&
               displayDuration >= 0) {
               let minute;
               if (displayDuration <= this.mVisibleMinutes) {
-                  minute = lowMinute + (displayDuration - this.mVisibleMinutes) / 2
+                  minute = lowMinute + (displayDuration - this.mVisibleMinutes) / 2;
               } else if (this.mSelectedItems.length == 1) {
                   // If the displayDuration doesn't fit into the visible
                   // minutes, but only one event is selected, then go ahead and
                   // center the event start.
 
                   minute = Math.max(0, lowMinute - (this.mVisibleMinutes / 2));
               }
               this.scrollToMinute(minute);
           }
         ]]></body>
       </method>
 
       <property name="pixelsPerMinute">
         <getter><![CDATA[
-          return this.mPixPerMin
+          return this.mPixPerMin;
         ]]></getter>
         <setter><![CDATA[
           this.mPixPerMin = val;
 
           let timebar = document.getAnonymousElementByAttribute(this, "anonid", "timebar");
           timebar.pixelsPerMinute = val;
 
           if (!this.mDateColumns) {
@@ -3392,17 +3392,17 @@
                       dayEventsBox.setAttribute("relation", "past");
                       labelbox.setAttribute("relation", "past");
                       break;
                   case 0:
                       let relation_ = this.numVisibleDates == 1 ? "today1day" : "today";
                       dayHeaderBox.setAttribute("relation", relation_);
                       dayEventsBox.setAttribute("relation", relation_);
                       labelbox.setAttribute("relation", relation_);
-                      setBooleanAttribute(dayEventsBox.timeIndicatorBox, "hidden", this.mTimeIndicatorInterval == 0)
+                      setBooleanAttribute(dayEventsBox.timeIndicatorBox, "hidden", this.mTimeIndicatorInterval == 0);
                       updateTimeIndicator = true;
 
                       // Due to equalsize=always being set on the dayboxes
                       // parent, there are a few issues showing the border of
                       // the last daybox correctly. To work around this, we're
                       // setting an attribute we can use in CSS. For more
                       // information about this hack, see bug 455045
                       if (dayHeaderBox == headerdaybox.childNodes[headerdaybox.childNodes.length - 1] &&
--- a/calendar/base/content/calendar-task-view.js
+++ b/calendar/base/content/calendar-task-view.js
@@ -125,17 +125,17 @@ var taskDetailsView = {
             textbox.value = description;
             textbox.inputField.readOnly = true;
             let attachmentRows = document.getElementById("calendar-task-details-attachment-rows");
             removeChildren(attachmentRows);
             let attachments = item.getAttachments({});
             if (displayElement("calendar-task-details-attachment-row", attachments.length > 0)) {
                 displayElement("calendar-task-details-attachment-rows", true);
                 for (let attachment of attachments) {
-                    let url = attachment.calIAttachment.uri.spec
+                    let url = attachment.calIAttachment.uri.spec;
                     let urlLabel = createXULElement("label");
                     urlLabel.setAttribute("value", url);
                     urlLabel.setAttribute("tooltiptext", url);
                     urlLabel.setAttribute("class", "text-link");
                     urlLabel.setAttribute("crop", "end");
                     urlLabel.setAttribute("onclick",
                                           "if (event.button != 2) launchBrowser(this.value);");
                     urlLabel.setAttribute("context", "taskview-link-context-menu");
--- a/calendar/base/content/calendar-view-core.xml
+++ b/calendar/base/content/calendar-view-core.xml
@@ -209,17 +209,17 @@
           }
 
           if (this.calendarView &&
               item.hashId in this.calendarView.mFlashingEvents) {
               this.setAttribute("flashing", "true");
           }
 
           if (alarms.length) {
-              this.setAttribute("alarm", "true")
+              this.setAttribute("alarm", "true");
           }
 
           // priority
           if (item.priority > 0 && item.priority < 5) {
               this.setAttribute("priority", "high");
           } else if (item.priority > 5 && item.priority < 10) {
               this.setAttribute("priority", "low");
           }
--- a/calendar/base/content/calendar-views.js
+++ b/calendar/base/content/calendar-views.js
@@ -208,17 +208,17 @@ function switchToView(aViewType) {
     // Set up the labels and accesskeys for the context menu
     ["calendar-view-context-menu-next",
      "calendar-view-context-menu-previous",
      "calendar-go-menu-next",
      "calendar-go-menu-previous",
      "appmenu_calendar-go-menu-next",
      "appmenu_calendar-go-menu-previous"].forEach(function(x) {
             setupViewNode(x, "label");
-            setupViewNode(x, "accesskey")
+            setupViewNode(x, "accesskey");
      });
 
     // Set up the labels for the view navigation
     ["previous-view-button",
      "today-view-button",
      "next-view-button"].forEach(x => setupViewNode(x, "tooltiptext"));
 
     try {
@@ -713,9 +713,9 @@ var timeIndicator = {
     },
     cancel: function() {
         if (timeIndicator.timer) {
             clearTimeout(timeIndicator.timer);
             timeIndicator.timer = null;
         }
     },
     lastView: null
-}
+};
--- a/calendar/base/content/dialogs/calendar-alarm-dialog.js
+++ b/calendar/base/content/dialogs/calendar-alarm-dialog.js
@@ -335,17 +335,17 @@ function closeIfEmpty() {
 }
 
 /**
  * Handler function called when an alarm entry in the richlistbox is selected
  *
  * @param event         The DOM event from the click action
  */
 function onSelectAlarm(event) {
-    let richList = document.getElementById("alarm-richlist")
+    let richList = document.getElementById("alarm-richlist");
     if (richList == event.target) {
         richList.ensureElementIsVisible(richList.getSelectedItem(0));
         richList.userSelectedWidget = true;
     }
 }
 
 function ensureCalendarVisible(aCalendar) {
     // This function is called on the alarm dialog from calendar-item-editing.js.
--- a/calendar/base/content/dialogs/calendar-event-dialog-attendees.js
+++ b/calendar/base/content/dialogs/calendar-event-dialog-attendees.js
@@ -110,17 +110,17 @@ function onLoad() {
             switch (aPrefName) {
                 case "calendar.view.daystarthour":
                 case "calendar.view.dayendhour":
                     initTimeRange();
                     propagateDateTime();
                     break;
             }
         }
-    }
+    };
     Services.prefs.addObserver("calendar.", prefObserver, false);
     window.addEventListener("unload",
         function() {
             Services.prefs.removeObserver("calendar.", prefObserver);
         },
         false);
 
     opener.setCursor("auto");
@@ -421,17 +421,17 @@ function updateEndTime() {
     propagateDateTime();
 
     if (warning) {
         var callback = function() {
             Services.prompt.alert(
                 null,
                 document.title,
                 calGetString("calendar", "warningEndBeforeStart"));
-        }
+        };
         setTimeout(callback, 1);
     }
 }
 
 /**
  * Prompts the user to pick a new timezone for the starttime. The dialog is
  * opened modally.
  */
--- a/calendar/base/content/dialogs/calendar-event-dialog-attendees.xml
+++ b/calendar/base/content/dialogs/calendar-event-dialog-attendees.xml
@@ -91,17 +91,17 @@
 
           // this trigger the continous update chain, which
           // effectively calls this.onModify() on predefined
           // time intervals [each second].
           var self = this;
           var callback = function() {
               setTimeout(callback, 1000);
               self.onModify();
-          }
+          };
           callback();
         ]]></body>
       </method>
 
       <method name="onInitialize">
         <body><![CDATA[
           var args = window.arguments[0];
           var organizer = args.organizer;
@@ -390,17 +390,17 @@
               let attendee = inputField.attendee.clone();
               if (attendee.isOrganizer) {
                   continue;
               }
 
               attendee.role = this.getRoleElement(i).getAttribute("role");
               // attendee.participationStatus = this.getStatusElement(i).getAttribute("status");
               let userType = this.getUserTypeElement(i).getAttribute("cutype");
-              attendee.userType = (userType == "INDIVIDUAL" ? null : userType) // INDIVIDUAL is the default
+              attendee.userType = (userType == "INDIVIDUAL" ? null : userType); // INDIVIDUAL is the default
 
               // break the list of potentially many attendees back into individual names. This
               // is required in case the user entered comma-separated attendees in one field and
               // then clicked OK without switching to the next line.
               let parsedInput = MailServices.headerParser.makeFromDisplayAddress(inputField.value);
               let j = 0;
               let addAttendee = function(aAddress) {
                   if (j > 0) {
@@ -678,17 +678,17 @@
             let role = targetIcon.getAttribute("role");
             // Set tooltip for rolenames
 
             const roleMap = {
               "REQ-PARTICIPANT": "required",
               "OPT-PARTICIPANT": "optional",
               "NON-PARTICIPANT": "nonparticipant",
               "CHAIR": "chair"
-            }
+            };
 
             let roleNameString = "event.attendee.role." + (role in roleMap ? roleMap[role] : "unknown");
             let tooltip = cal.calGetString("calendar-event-dialog-attendees",
                                            roleNameString,
                                            (role in roleMap ? null : [role]));
             targetIcon.setAttribute("tooltiptext", tooltip);
         } else if (targetIcon.className == "usertype-icon") {
             let cutype = targetIcon.getAttribute("cutype");
@@ -715,17 +715,17 @@
       </property>
 
       <method name="fitDummyRows">
         <body><![CDATA[
           var self = this;
           var func = function attendees_list_fitDummyRows() {
               self.calcContentHeight();
               self.createOrRemoveDummyRows();
-          }
+          };
           setTimeout(func, 0);
         ]]></body>
       </method>
 
       <method name="calcContentHeight">
         <body><![CDATA[
           var listbox =
               document.getAnonymousElementByAttribute(
@@ -910,17 +910,17 @@
                   if (aRow - 1 >= (firstVisibleRow + numOfVisibleRows)) {
                       listbox.scrollToIndex(aRow - numOfVisibleRows);
                   }
               }
               var input =
                   document.getAnonymousElementByAttribute(
                       node, "anonid", "input");
               input.focus();
-          }
+          };
           setTimeout(set_focus, 0);
         ]]></body>
       </method>
 
       <property name="firstVisibleRow">
         <getter><![CDATA[
           var listbox =
               document.getAnonymousElementByAttribute(
--- a/calendar/base/content/dialogs/calendar-event-dialog-freebusy.xml
+++ b/calendar/base/content/dialogs/calendar-event-dialog-freebusy.xml
@@ -196,17 +196,17 @@
                       newNode.className += " first-in-day";
                       first = false;
                   }
                   newNode.setAttribute("value", value);
                   hours.appendChild(newNode);
                   date.minute += step_in_minutes;
 
                   if (remain == 0) {
-                      newNode.className += " last-in-day"
+                      newNode.className += " last-in-day";
                   }
               }
           }
 
           return val;
         ]]></setter>
       </property>
     </implementation>
@@ -724,17 +724,17 @@
                           first = false;
                       }
 
                       newNode.setAttribute("value", value);
                       hours.appendChild(newNode);
                       date.minute += step_in_minutes;
 
                       if (remain == 0) {
-                          newNode.className += " last-in-day"
+                          newNode.className += " last-in-day";
                       }
                   }
                   date.hour = this.mStartHour;
                   date.day++;
                   remain = count;
               }
           }
         ]]></body>
@@ -1498,17 +1498,17 @@
       </method>
 
       <method name="fitDummyRows">
         <body><![CDATA[
           var self = this;
           var func = function func() {
               self.calcContentHeight();
               self.createOrRemoveDummyRows();
-          }
+          };
           setTimeout(func, 0);
         ]]></body>
       </method>
 
       <method name="calcContentHeight">
         <body><![CDATA[
           var listbox =
               document.getAnonymousElementByAttribute(
--- a/calendar/base/content/dialogs/calendar-event-dialog-recurrence-preview.xml
+++ b/calendar/base/content/dialogs/calendar-event-dialog-recurrence-preview.xml
@@ -110,17 +110,17 @@
           // Adjust rows
           while (numRows < numVertical) {
               let newNode = row.cloneNode(true);
               rows.appendChild(newNode);
               numRows++;
           }
           while (numRows > numVertical) {
               rows.firstChild.remove();
-              numRows--
+              numRows--;
           }
 
           // Adjust columns in the grid
           var column =
               document.getAnonymousElementByAttribute(
                   this, "anonid", "column");
           var columns = column.parentNode;
           while ((columns.childNodes.length - 1) < numHorizontal) {
--- a/calendar/base/content/dialogs/calendar-event-dialog-recurrence.js
+++ b/calendar/base/content/dialogs/calendar-event-dialog-recurrence.js
@@ -641,17 +641,17 @@ function checkUntilDate() {
         let callback = function() {
             // No warning when the dialog is being closed with the Cancel button.
             if (!checkUntilDate.warning) {
                 return;
             }
             Services.prompt.alert(null, document.title,
                                   cal.calGetString("calendar", "warningUntilDateBeforeStart"));
             checkUntilDate.warning = false;
-        }
+        };
         setTimeout(callback, 1);
     } else {
         gUntilDate = untilDate;
         updateRecurrenceControls();
     }
 }
 
 /**
--- a/calendar/base/content/dialogs/calendar-event-dialog-reminder.js
+++ b/calendar/base/content/dialogs/calendar-event-dialog-reminder.js
@@ -375,17 +375,17 @@ function onNewReminder() {
     offset.minutes = alarmlen;
     offset.normalize();
     offset.isNegative = true;
     reminder.related = reminder.ALARM_RELATED_START;
     reminder.offset = offset;
     if ("DISPLAY" in allowedActionsMap) {
         reminder.action = "DISPLAY";
     } else {
-        let calendar = window.arguments[0].calendar
+        let calendar = window.arguments[0].calendar;
         let actions = calendar.getProperty("capabilities.alarms.actionValues") || [];
         reminder.action = actions[0];
     }
 
     // Set up the listbox
     let listitem = setupListItem(null, reminder, window.arguments[0].item);
     listbox.appendChild(listitem);
     listbox.selectItem(listitem);
--- a/calendar/base/content/dialogs/calendar-print-dialog.js
+++ b/calendar/base/content/dialogs/calendar-print-dialog.js
@@ -143,17 +143,17 @@ function getPrintSettings(receiverFunc) 
             },
             onGetResult:
             function onGetResult(aCalendar, aStatus, aItemType, aDetail, aCount, aItems) {
                 settings.eventList = settings.eventList.concat(aItems);
                 if (!settings.printTasksWithNoDueDate) {
                     eventWithDueDate = [];
                     for (var item of settings.eventList) {
                         if (item.dueDate || item.endDate) {
-                            eventWithDueDate.push(item)
+                            eventWithDueDate.push(item);
                         }
                     }
                     settings.eventList = eventWithDueDate;
                 }
             }
         };
         let filter = getFilter(settings);
         if (filter) {
--- a/calendar/base/content/dialogs/calendar-properties-dialog.js
+++ b/calendar/base/content/dialogs/calendar-properties-dialog.js
@@ -25,17 +25,17 @@ function onLoad() {
     document.getElementById("read-only").checked = gCalendar.readOnly;
 
     // Set up refresh interval
     initRefreshInterval();
 
     // Set up the cache field
     let cacheBox = document.getElementById("cache");
     let canCache = (gCalendar.getProperty("cache.supported") !== false);
-    let alwaysCache = (gCalendar.getProperty("cache.always"))
+    let alwaysCache = (gCalendar.getProperty("cache.always"));
     if (!canCache || alwaysCache) {
         cacheBox.setAttribute("disable-capability", "true");
         cacheBox.hidden = true;
         cacheBox.disabled = true;
     }
     cacheBox.checked = (alwaysCache || (canCache && gCalendar.getProperty("cache.enabled")));
 
     // Set up the show alarms row and checkbox
@@ -86,17 +86,17 @@ function onAcceptDialog() {
 
     // Save refresh interval
     if (gCalendar.canRefresh) {
         let value = getElementValue("calendar-refreshInterval-menulist");
         gCalendar.setProperty("refreshInterval", value);
     }
 
     // Save cache options
-    let alwaysCache = (gCalendar.getProperty("cache.always"))
+    let alwaysCache = (gCalendar.getProperty("cache.always"));
     if (!alwaysCache) {
         gCalendar.setProperty("cache.enabled", document.getElementById("cache").checked);
     }
 
     if (!gCalendar.getProperty("force-disabled")) {
         // Save disabled option (should do this last), remove auto-enabled
         gCalendar.setProperty("disabled", !document.getElementById("calendar-enabled-checkbox").checked);
         gCalendar.deleteProperty("auto-enabled");
--- a/calendar/base/content/dialogs/calendar-summary-dialog.js
+++ b/calendar/base/content/dialogs/calendar-summary-dialog.js
@@ -330,17 +330,17 @@ function updateReminder() {
 /**
  * Browse the item's attached URL.
  *
  * XXX This function is broken, should be fixed in bug 471967
  */
 function browseDocument() {
     var args = window.arguments[0];
     var item = args.calendarEvent;
-    var url = item.getProperty("URL")
+    var url = item.getProperty("URL");
     launchBrowser(url);
 }
 
 /**
  * Extracts the item's organizer and opens a compose window to send the
  * organizer an email.
  */
 function sendMailToOrganizer() {
--- a/calendar/base/content/import-export.js
+++ b/calendar/base/content/import-export.js
@@ -169,17 +169,17 @@ function putItemsIntoCal(destCal, aItems
                 destCal.endBatch();
                 if (!failedCount && duplicateCount) {
                     showError(calGetString("calendar", "duplicateError", [duplicateCount, aFilePath]));
                 } else if (failedCount) {
                     showError(calGetString("calendar", "importItemsFailed", [failedCount, lastError.toString()]));
                 }
             }
         }
-    }
+    };
 
     for (let item of aItems) {
         // XXX prompt when finding a duplicate.
         try {
             destCal.addItem(item, listener);
         } catch (e) {
             failedCount++;
             lastError = e;
--- a/calendar/base/content/preferences/categories.js
+++ b/calendar/base/content/preferences/categories.js
@@ -247,17 +247,17 @@ var gCategoriesPane = {
     },
 
     /**
      * Enable the edit and delete category buttons.
      */
     updateButtons: function gCP_updateButtons() {
         let categoriesList = document.getElementById("categorieslist");
         document.getElementById("deleteCButton").disabled = (categoriesList.selectedCount <= 0);
-        document.getElementById("editCButton").disabled = (categoriesList.selectedCount != 1)
+        document.getElementById("editCButton").disabled = (categoriesList.selectedCount != 1);
     },
 
     /**
      * Backs up the category name in case the dialog is canceled.
      *
      * @see formatStringForCSSRule
      * @param categoryNameFix     The formatted category name.
      */
--- a/calendar/base/content/widgets/calendar-list-tree.xml
+++ b/calendar/base/content/widgets/calendar-list-tree.xml
@@ -397,17 +397,17 @@
       <method name="sortOrderChanged">
         <parameter name=""/>
         <body><![CDATA[
           if (this.mAddingFromComposite) {
               return;
           }
           let event = document.createEvent('Events');
           event.initEvent("SortOrderChanged", true, false);
-          event.sortOrder = this.sortOrder
+          event.sortOrder = this.sortOrder;
           this.dispatchEvent(event);
 
           let handler = this.getAttribute("onSortOrderChanged");
           if (handler) {
               // Call the given code in a function
               (new Function("event", handler))(event);
           }
         ]]></body>
--- a/calendar/base/content/widgets/calendar-widgets.xml
+++ b/calendar/base/content/widgets/calendar-widgets.xml
@@ -377,17 +377,17 @@
         ]]></body>
       </method>
 
       <method name="setVisible">
         <parameter name="aVisible"/>
         <parameter name="aPushModeCollapsedAttribute"/>
         <parameter name="aNotifyRefControl"/>
         <body><![CDATA[
-            var notifyRefControl = ((aNotifyRefControl == null) || (aNotifyRefControl === true))
+            var notifyRefControl = ((aNotifyRefControl == null) || (aNotifyRefControl === true));
             var pushModeCollapsedAttribute = ((aPushModeCollapsedAttribute == null)
                                                  || (aPushModeCollapsedAttribute === true));
             var collapsedModes = [];
             var modeIndex = -1;
             var display = aVisible;
             var collapsedInMode = false;
             if (this.hasAttribute("collapsedinmodes")) {
                 collapsedModes = this.getAttribute("collapsedinmodes").split(",");
@@ -418,17 +418,17 @@
                 this.setAttribute("collapsedinmodes", collapsedModes.join(","));
                 var id = this.getAttribute("id");
                 if (id) {
                     document.persist(id, "collapsedinmodes");
                 }
             }
             if (notifyRefControl === true) {
                 if (this.hasAttribute("refcontrol")) {
-                    var command = document.getElementById(this.getAttribute("refcontrol"))
+                    var command = document.getElementById(this.getAttribute("refcontrol"));
                     if (command) {
                         command.setAttribute("checked", display);
                         setBooleanAttribute(command, "disabled", !this.isVisibleInMode());
                     }
                 }
             }
         ]]></body>
       </method>
--- a/calendar/base/content/widgets/minimonth.xml
+++ b/calendar/base/content/widgets/minimonth.xml
@@ -288,17 +288,17 @@
     <handlers>
       <handler event="bindingattached" action="this.initialize();"/>
       <!-- handle click from nested months popup and years popup -->
       <handler event="click">
         <![CDATA[
           let element = event.originalTarget;
           let popup = getParentNodeOrThis(element, "menupopup");
           if (popup) {
-              let anonid = popup.getAttribute("anonid")
+              let anonid = popup.getAttribute("anonid");
               switch (anonid) {
                   case "months-popup":
                       this.hidePopupList();
                       this.kMinimonth.switchMonth(element.getAttribute("index"));
                       break;
                   case "years-popup":
                       this.hidePopupList();
                       let value = element.getAttribute("value");
@@ -432,17 +432,17 @@
       <field name="mShowWeekNumber">true</field>
       <constructor><![CDATA[
           Components.utils.import("resource://gre/modules/Services.jsm");
           Components.utils.import("resource://gre/modules/Preferences.jsm");
 
           this.mToday = false;
           this.mSelected = false;
           this.mExtra = false;
-          this.mValue = new Date() // Default to "today"
+          this.mValue = new Date(); // Default to "today"
           // save references for convenience
           if (this.hasAttribute("readonly")) {
               this.mIsReadOnly = this.getAttribute("readonly") == "true";
           }
           this.refreshDisplay();
           if (this.hasAttribute("freebusy")) {
               this._setFreeBusy(this.getAttribute("freebusy") == "true");
           }
@@ -774,17 +774,17 @@
                   for (j = 0; j < dayList.length; j++) {
                       if (i != j) {
                           if (dayList[i].substring(0, 1) == dayList[j].substring(0, 1)) {
                               foundMatch = 2;
                               break;
                           }
                       }
                   }
-                  dayList[i] = dayList[i].substring(0, foundMatch)
+                  dayList[i] = dayList[i].substring(0, foundMatch);
               }
           }
 
           setBooleanAttribute(header.childNodes[0], "hidden", !this.mShowWeekNumber);
           for (var column = 1; column < header.childNodes.length; column++) {
               header.childNodes[column].setAttribute("value", dayList[column - 1]);
           }
         ]]></body>
@@ -966,17 +966,17 @@
       </method>
       <method name="_setFreeBusy">
         <parameter name="aFreeBusy"/>
         <body><![CDATA[
             if (aFreeBusy == true) {
                 if (this.mObservesComposite == false) {
                     getCompositeCalendar().addObserver(this);
                     this.mObservesComposite = true;
-                    this.getItems()
+                    this.getItems();
                  }
             } else {
                 if (this.mObservesComposite == true) {
                     getCompositeCalendar().removeObserver(this);
                     this.mObservesComposite = false;
                  }
             }
         ]]></body>
@@ -1189,14 +1189,14 @@
     </handlers>
   </binding>
 
   <binding id="minimonth-day" extends="xul:text">
     <handlers>
       <handler event="click" button="0"><![CDATA[
         if (this.minimonthParent.getAttribute("readonly") != "true") {
             this.setAttribute("selected", "true");
-            this.minimonthParent.onSelectDay(this)
+            this.minimonthParent.onSelectDay(this);
         }
       ]]></handler>
     </handlers>
   </binding>
 </bindings>
--- a/calendar/base/modules/calAsyncUtils.jsm
+++ b/calendar/base/modules/calAsyncUtils.jsm
@@ -104,25 +104,25 @@ cal.async = {
                 } else {
                     this.itemSuccess = aStatus;
                 }
             },
 
             onOperationComplete: function(aCalendar, aStatus, aOpType, aId, aDetail) {
                 if (!Components.isSuccessCode(aStatus)) {
                     // This function has failed, reject with the status
-                    deferred.reject(aStatus)
+                    deferred.reject(aStatus);
                 } else if (!Components.isSuccessCode(this.itemStatus)) {
                     // onGetResult has failed, reject with its status
                     deferred.reject(this.itemStatus);
                 } else if (aOpType == cIOL.GET) {
                      // Success of a GET operation: resolve with array of
                      // resulting items.
                     deferred.resolve(this.items);
                 } else { /* ADD,MODIFY,DELETE: resolve with 1 item */
                     // Success of an ADD MODIFY or DELETE operation, resolve
                     // with the one item that was processed.
-                    deferred.resolve(aDetail)
+                    deferred.resolve(aDetail);
                 }
             }
-        }
+        };
     }
 };
--- a/calendar/base/modules/calExtract.jsm
+++ b/calendar/base/modules/calExtract.jsm
@@ -44,17 +44,17 @@ function Extractor(fallbackLocale, daySt
     }
 
     if (fixedLang != null) {
         this.fixedLang = fixedLang;
     }
 
     if (!this.checkBundle(fallbackLocale)) {
         this.bundleUrl = this.packagedUrl;
-        cal.WARN("Your installed Lightning only includes a single locale, extracting event info from other languages is likely inaccurate. You can install Lightning from addons.mozilla.org manually for multiple locale support.")
+        cal.WARN("Your installed Lightning only includes a single locale, extracting event info from other languages is likely inaccurate. You can install Lightning from addons.mozilla.org manually for multiple locale support.");
     }
 }
 
 Extractor.prototype = {
     /**
     * Removes confusing data like urls, timezones and phone numbers from email
     * Also removes standard signatures and quoted content from previous emails
     */
@@ -763,17 +763,17 @@ Extractor.prototype = {
                     return rc;
                 }
             }
         } else {
             rc = (one.hour > two.hour) - (one.hour < two.hour);
             if (rc != 0) {
                 return rc;
             } else {
-                rc = (one.minute > two.minute) - (one.minute < two.minute)
+                rc = (one.minute > two.minute) - (one.minute < two.minute);
                 return rc;
             }
         }
     },
 
     /**
     * Guesses start time from list of guessed datetimes
     *
@@ -946,17 +946,17 @@ Extractor.prototype = {
                         startDate.setMinutes(0);
                     }
 
                     let endTime = new Date(startDate.getTime() + duration * 60 * 1000);
                     guess.year = endTime.getFullYear();
                     guess.month = endTime.getMonth() + 1;
                     guess.day = endTime.getDate();
                     if (!(endTime.getHours() == 0 && endTime.getMinutes() == 0)) {
-                        guess.hour = endTime.getHours()
+                        guess.hour = endTime.getHours();
                         guess.minute = endTime.getMinutes();
                     }
                 }
             }
 
             // no zero or negative length events/tasks
             let startTime = new Date(start.year || 0, start.month - 1 || 0, start.day || 0,
                                      start.hour || 0, start.minute || 0).getTime();
--- a/calendar/base/modules/calHashedArray.jsm
+++ b/calendar/base/modules/calHashedArray.jsm
@@ -13,17 +13,17 @@ var EXPORTED_SYMBOLS = ["cal"]; // even 
  * Performance Considerations:
  *  - Accessing items is fast
  *  - Adding items is fast (they are added to the end)
  *  - Deleting items is O(n)
  *  - Modifying items is fast.
  */
 cal.HashedArray = function HashedArray() {
     this.clear();
-}
+};
 
 cal.HashedArray.prototype = {
     mArray: null,
     mHash: null,
 
     mBatch: 0,
     mFirstDirty: -1,
 
@@ -217,20 +217,20 @@ cal.HashedArray.prototype = {
  * Performance Considerations:
  *  - Accessing items is fast
  *  - Adding and deleting items is O(n)
  *  - Modifying items is fast.
  */
 cal.SortedHashedArray = function SortedHashedArray(comparator) {
     cal.HashedArray.apply(this, arguments);
     if (!comparator) {
-        throw "Sorted Hashed Array needs a comparator"
+        throw "Sorted Hashed Array needs a comparator";
     }
     this.mCompFunc = comparator;
-}
+};
 
 cal.SortedHashedArray.prototype = {
     __proto__: cal.HashedArray.prototype,
 
     mCompFunc: null,
 
     addItem: function addItem(item) {
         let newIndex = cal.binaryInsert(this.mArray, item, this.mCompFunc, false);
--- a/calendar/base/modules/calItipUtils.jsm
+++ b/calendar/base/modules/calItipUtils.jsm
@@ -839,17 +839,17 @@ cal.itip = {
      * @param aItems        List of items to be contained in the new itipItem
      * @param aProps        List of properties to be different in the new itipItem
      */
     getModifiedItipItem: function cal_getModifiedItipItem(aItipItem, aItems, aProps) {
         let itipItem = Components.classes["@mozilla.org/calendar/itip-item;1"]
                                  .createInstance(Components.interfaces.calIItipItem);
         let serializedItems = "";
         for (let item of (aItems || [])) {
-            serializedItems += cal.getSerializedItem(item)
+            serializedItems += cal.getSerializedItem(item);
         }
         itipItem.init(serializedItems);
 
         let props = aProps || {};
         itipItem.autoResponse = ("autoResponse" in props) ? props.autoResponse : aItipItem.autoResponse;
         itipItem.identity = ("identity" in props) ? props.identity : aItipItem.identity;
         itipItem.isSend = ("isSend" in props) ? props.isSend : aItipItem.isSend;
         itipItem.localStatus = ("localStatus" in props) ? props.localStatus : aItipItem.localStatus;
--- a/calendar/base/modules/calPrintUtils.jsm
+++ b/calendar/base/modules/calPrintUtils.jsm
@@ -192,9 +192,9 @@ cal.print = {
                 return "\u21ff";                                        // unicode '↔'
             } else if (compareEnd == 0) {
                 return "\u21e5 " + dateFormatter.formatTime(endDate);   // unicode '⇥'
             } else {
                 return "";
             }
         }
     }
-}
+};
--- a/calendar/base/modules/calProviderUtils.jsm
+++ b/calendar/base/modules/calProviderUtils.jsm
@@ -192,17 +192,17 @@ cal.BadCertHandler.prototype = {
  *
  * @param aCalId         The calendar id to set up with.
  * @param aFreeBusyType  The type from calIFreeBusyInterval.
  * @param aStart         The start of the interval.
  * @param aEnd           The end of the interval.
  * @return               The fresh calIFreeBusyInterval.
  */
 cal.FreeBusyInterval = function calFreeBusyInterval(aCalId, aFreeBusyType, aStart, aEnd) {
-    this.calId = aCalId
+    this.calId = aCalId;
     this.interval = Components.classes["@mozilla.org/calendar/period;1"]
                               .createInstance(Components.interfaces.calIPeriod);
     this.interval.start = aStart;
     this.interval.end = aEnd;
 
     this.freeBusyType = aFreeBusyType || Components.interfaces.calIFreeBusyInterval.UNKNOWN;
 };
 cal.FreeBusyInterval.prototype = {
--- a/calendar/base/modules/calRecurrenceUtils.jsm
+++ b/calendar/base/modules/calRecurrenceUtils.jsm
@@ -274,17 +274,17 @@ function recurrenceRule2String(recurrenc
                             yearlyString = getRString(yearlyString, [day, month]);
                             ruleString = PluralForm.get(rule.interval, yearlyString)
                                                    .replace("#3", rule.interval);
                         } else if (day_position(byday[0]) >= -1 ||
                                    day_position(byday[0]) <= 5) {
                             // The first|the second|...|the last  Monday, Tuesday, ..., day.
                             let yearlyString = "yearlyNthOnNthOf";
                             yearlyString = nounClass(dayString, yearlyString);
-                            let ordinalString = "repeatOrdinal" + day_position(byday[0])
+                            let ordinalString = "repeatOrdinal" + day_position(byday[0]);
                             ordinalString = nounClass(dayString, ordinalString);
                             let ordinal = getRString(ordinalString);
                             let day = getRString(dayString);
                             yearlyString = getRString(yearlyString, [ordinal, day, month]);
                             ruleString = PluralForm.get(rule.interval, yearlyString)
                                                    .replace("#4", rule.interval);
                         } else {
                             return getRString("ruleTooComplex");
--- a/calendar/base/modules/calUtils.jsm
+++ b/calendar/base/modules/calUtils.jsm
@@ -430,17 +430,17 @@ var cal = {
      */
     getRecipientList: function(aAttendees) {
         let cbEmail = function(aVal, aInd, aArr) {
             let email = cal.getAttendeeEmail(aVal, true);
             if (!email.length) {
                 cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString());
             }
             return email;
-        }
+        };
         return aAttendees.map(cbEmail)
                          .filter(aVal => aVal.length > 0)
                          .join(', ');
     },
 
     /**
      * Returns the default transparency to apply for an event depending on whether its an all-day event
      *
--- a/calendar/base/modules/calViewUtils.jsm
+++ b/calendar/base/modules/calViewUtils.jsm
@@ -56,9 +56,9 @@ cal.view = {
         cmp = a.endDate.compare(b.endDate);
         if (cmp != 0) {
             return cmp;
         }
 
         cmp = (a.title > b.title) - (a.title < b.title);
         return cmp;
     }
-}
+};
--- a/calendar/base/src/calAlarmService.js
+++ b/calendar/base/src/calAlarmService.js
@@ -332,17 +332,17 @@ calAlarmService.prototype = {
                 alarmDate = alarmDate.getInTimezone(this.timezone);
                 alarmDate.isDate = false;
             }
             alarmDate = alarmDate.getInTimezone(UTC());
 
             // Check for snooze
             let snoozeDate;
             if (aItem.parentItem != aItem) {
-                snoozeDate = aItem.parentItem.getProperty("X-MOZ-SNOOZE-TIME-" + aItem.recurrenceId.nativeTime)
+                snoozeDate = aItem.parentItem.getProperty("X-MOZ-SNOOZE-TIME-" + aItem.recurrenceId.nativeTime);
             } else {
                 snoozeDate = aItem.getProperty("X-MOZ-SNOOZE-TIME");
             }
 
             if (snoozeDate && !(snoozeDate instanceof Components.interfaces.calIDateTime)) {
                 snoozeDate = cal.createDateTime(snoozeDate);
             }
 
@@ -470,17 +470,17 @@ calAlarmService.prototype = {
             if (calendar.id in this.mTimerMap) {
                 for (let hashId in this.mTimerMap[calendar.id]) {
                     let itemTimerMap = this.mTimerMap[calendar.id][hashId];
                     for (let icalString in itemTimerMap) {
                         let timer = itemTimerMap[icalString];
                         timer.cancel();
                     }
                 }
-                delete this.mTimerMap[calendar.id]
+                delete this.mTimerMap[calendar.id];
             }
         }
     },
 
     findAlarms: function cAS_findAlarms(aCalendars, aStart, aUntil) {
         let getListener = {
             QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]),
             alarmService: this,
--- a/calendar/base/src/calCachedCalendar.js
+++ b/calendar/base/src/calCachedCalendar.js
@@ -680,17 +680,17 @@ calCachedCalendar.prototype = {
                     // On success, add the item to the cache.
                     self.mCachedCalendar.addItem(detail, listener);
                 } else if (listener) {
                     // Either an error occurred or this is a successful add
                     // to a cached calendar. Forward the call to the listener
                     listener.onOperationComplete(self, status, opType, id, detail);
                 }
             }
-        }
+        };
 
         if (this.offline) {
             // If we are offline, don't even try to add the item
             this.adoptOfflineItem(item, listener);
         } else {
             // Otherwise ask the provider to add the item now.
             this.mUncachedCalendar.adoptItem(item, cacheListener);
         }
--- a/calendar/base/src/calCalendarManager.js
+++ b/calendar/base/src/calCalendarManager.js
@@ -561,17 +561,17 @@ calCalendarManager.prototype = {
                                   Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
         }
     },
 
     clearRefreshTimer: function clearRefreshTimer(aCalendar) {
         if (aCalendar.id in this.mRefreshTimer &&
             this.mRefreshTimer[aCalendar.id]) {
             this.mRefreshTimer[aCalendar.id].cancel();
-            delete this.mRefreshTimer[aCalendar.id]
+            delete this.mRefreshTimer[aCalendar.id];
         }
     },
 
     unregisterCalendar: function(calendar) {
         this.notifyObservers("onCalendarUnregistering", [calendar]);
 
         // calendar may be a calICalendar wrapper:
         if (calendar.wrappedJSObject instanceof calCachedCalendar) {
@@ -1051,17 +1051,17 @@ function flushPrefs() {
  *
  * @param aCalendar     The calendar to refresh on notification
  */
 function timerCallback(aCalendar) {
     this.notify = function refreshNotify(aTimer) {
         if (!aCalendar.getProperty("disabled") && aCalendar.canRefresh) {
             aCalendar.refresh();
         }
-    }
+    };
 }
 
 var gCalendarManagerAddonListener = {
     onDisabling: function(aAddon, aNeedsRestart) {
         if (!this.queryUninstallProvider(aAddon)) {
             // If the addon should not be disabled, then re-enable it.
             aAddon.userDisabled = false;
         }
--- a/calendar/base/src/calCalendarSearchService.js
+++ b/calendar/base/src/calCalendarSearchService.js
@@ -14,17 +14,17 @@ function calCalendarSearchListener(numOp
     this.opGroup = new calOperationGroup(cancelFunc);
 }
 calCalendarSearchListener.prototype = {
     mFinalListener: null,
     mNumOperations: 0,
     opGroup: null,
 
     notifyResult: function calCalendarSearchListener_notifyResult(result) {
-        var listener = this.mFinalListener
+        var listener = this.mFinalListener;
         if (listener) {
             if (!this.opGroup.isPending) {
                 this.mFinalListener = null;
             }
             listener.onResult(this.opGroup, result);
         }
     },
 
--- a/calendar/base/src/calEvent.js
+++ b/calendar/base/src/calEvent.js
@@ -10,17 +10,17 @@ Components.utils.import("resource://gre/
 //
 function calEvent() {
     this.initItemBase();
 
     this.eventPromotedProps = {
         "DTSTART": true,
         "DTEND": true,
         __proto__: this.itemBasePromotedProps
-    }
+    };
 }
 var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}");
 var calEventInterfaces = [
     Components.interfaces.calIItemBase,
     Components.interfaces.calIEvent,
     Components.interfaces.calIInternalShallowCopy
 ];
 calEvent.prototype = {
--- a/calendar/base/src/calFreeBusyService.js
+++ b/calendar/base/src/calFreeBusyService.js
@@ -17,17 +17,17 @@ function calFreeBusyListener(numOperatio
 calFreeBusyListener.prototype = {
     mFinalListener: null,
     mNumOperations: 0,
     opGroup: null,
 
     QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIGenericOperationListener]),
 
     notifyResult: function calFreeBusyListener_notifyResult(result) {
-        var listener = this.mFinalListener
+        var listener = this.mFinalListener;
         if (listener) {
             if (!this.opGroup.isPending) {
                 this.mFinalListener = null;
             }
             listener.onResult(this.opGroup, result);
         }
     },
 
--- a/calendar/base/src/calItemBase.js
+++ b/calendar/base/src/calItemBase.js
@@ -489,17 +489,17 @@ calItemBase.prototype = {
         let parameters = this.mPropertyParams[propName];
         return { // nsISimpleEnumerator
             mParamNames: Object.keys(parameters),
             hasMoreElements: function cIB_gPE_hasMoreElements() {
                 return (this.mParamNames.length > 0);
             },
 
             getNext: function cIB_gPE_getNext() {
-                let paramName = this.mParamNames.pop()
+                let paramName = this.mParamNames.pop();
                 return { // nsIProperty
                     QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIProperty]),
                     name: paramName,
                     value: parameters[paramName]
                 };
             }
         };
     },
--- a/calendar/base/src/calRecurrenceInfo.js
+++ b/calendar/base/src/calRecurrenceInfo.js
@@ -548,17 +548,17 @@ calRecurrenceInfo.prototype = {
             for (let dateToRemove of cur_dates) {
                 let dateToRemoveKey = getRidKey(dateToRemove);
                 if (dateToRemove.isDate) {
                     // As decided in bug 734245, an EXDATE of type DATE shall also match a DTSTART of type DATE-TIME
                     let toRemove = [];
                     for (let occurenceKey in occurrenceMap) {
                         if (occurrenceMap[occurenceKey] && occurenceKey.substring(0, 8) == dateToRemoveKey) {
                             dates = dates.filter(d => d.id.compare(dateToRemove) != 0);
-                            toRemove.push(occurenceKey)
+                            toRemove.push(occurenceKey);
                         }
                     }
                     for (let i = 0; i < toRemove.length; i++) {
                         delete occurrenceMap[toRemove[i]];
                     }
                 } else if (occurrenceMap[dateToRemoveKey]) {
                     // TODO PERF Theoretically we could use occurrence map
                     // to construct the array of occurrences. Right now I'm
--- a/calendar/base/src/calTimezoneService.js
+++ b/calendar/base/src/calTimezoneService.js
@@ -603,17 +603,17 @@ function guessSystemTimezone() {
                 osUserTimeZone = wrk.readStringValue("TimeZoneKeyName").split("\0")[0];
             } else {
                 // If on Windows XP, current timezone only lists its localized name,
                 // so to find its registry key name, match localized name to
                 // localized names of each windows timezone listed in registry.
                 // Then use the registry key name to see if this timezone has a
                 // known ZoneInfo name.
                 var currentTZStandardName = wrk.readStringValue("StandardName");
-                wrk.close()
+                wrk.close();
 
                 wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
                          "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones",
                          wrk.ACCESS_READ);
 
                 // Linear search matching localized name of standard timezone
                 // to find the non-localized registry key.
                 // (Registry keys are sorted by subkeyName, not by localized name
--- a/calendar/base/src/calTodo.js
+++ b/calendar/base/src/calTodo.js
@@ -138,17 +138,17 @@ calTodo.prototype = {
         var bagenum = this.propertyEnumerator;
         while (bagenum.hasMoreElements()) {
             var iprop = bagenum.getNext().
                 QueryInterface(Components.interfaces.nsIProperty);
             try {
                 if (!this.todoPromotedProps[iprop.name]) {
                     var icalprop = icssvc.createIcalProperty(iprop.name);
                     icalprop.value = iprop.value;
-                    var propBucket = this.mPropertyParams[iprop.name]
+                    var propBucket = this.mPropertyParams[iprop.name];
                     if (propBucket) {
                         for (let paramName in propBucket) {
                             try {
                                 icalprop.setParameter(paramName, propBucket[paramName]);
                             } catch (e) {
                                 if (e.result == Components.results.NS_ERROR_ILLEGAL_VALUE) {
                                     // Illegal values should be ignored, but we could log them if
                                     // the user has enabled logging.
--- a/calendar/base/src/calUtils.js
+++ b/calendar/base/src/calUtils.js
@@ -1478,17 +1478,17 @@ function getParentNodeOrThisByAttribute(
         if (node.tagName == undefined) {
             return null;
         }
     }
     return node;
 }
 
 function setItemProperty(item, propertyName, aValue, aCapability) {
-    var isSupported = (item.calendar.getProperty("capabilities." + aCapability + ".supported") !== false)
+    var isSupported = (item.calendar.getProperty("capabilities." + aCapability + ".supported") !== false);
     var value = (aCapability && !isSupported ? null : aValue);
 
     switch (propertyName) {
         case "startDate":
             if (value.isDate && !item.startDate.isDate ||
                 !value.isDate && item.startDate.isDate ||
                 !compareObjects(value.timezone, item.startDate.timezone) ||
                 value.compare(item.startDate) != 0) {
@@ -1767,17 +1767,17 @@ function binarySearch(itemArray, newItem
     }
 
     if (itemArray.length < 1) {
         return -1;
     }
     if (!comptor) {
         comptor = function defaultComptor(a, b) {
             return (a > b) - (a < b);
-        }
+        };
     }
     return binarySearchInternal(0, itemArray.length - 1);
 }
 
 /**
  * Insert a new node underneath the given parentNode, using binary search. See binarySearch
  * for a note on how the comptor works.
  *
--- a/calendar/import-export/calOutlookCSVImportExport.js
+++ b/calendar/import-export/calOutlookCSVImportExport.js
@@ -190,17 +190,17 @@ calOutlookCSVImporter.prototype = {
             args.alarmTimeIndex = 9;
             args.categoriesIndex = 15;
             args.descriptionIndex = 16;
             args.locationIndex = 17;
             args.privateIndex = 20;
         }
 
         if (args.titleIndex == 0 || args.startDateIndex == 0) {
-            dump("Can't import. Life sucks\n")
+            dump("Can't import. Life sucks\n");
             aCount.value = 0;
             return [];
         }
 
         // Construct event regexp according to field indexes. The regexp can
         // be made stricter, if it seems this matches too loosely.
         let regExpStr = "^";
         for (i = 1; i <= header.length; i++) {
@@ -333,30 +333,30 @@ calOutlookCSVImporter.prototype = {
                     if (locale.valueTrue == eventFields[args.privateIndex]) {
                         event.privacy = "PRIVATE";
                     }
                 }
 
                 // Avoid setting empty properties
                 let txt = "";
                 if ("descriptionIndex" in args) {
-                    txt = this.parseTextField(eventFields[args.descriptionIndex])
+                    txt = this.parseTextField(eventFields[args.descriptionIndex]);
                     if (txt) {
                         event.setProperty("DESCRIPTION", txt);
                     }
                 }
                 if ("categoriesIndex" in args) {
-                    txt = this.parseTextField(eventFields[args.categoriesIndex])
+                    txt = this.parseTextField(eventFields[args.categoriesIndex]);
                     if (txt) {
                         let categories = cal.categoriesStringToArray(txt);
                         event.setCategories(categories.length, categories);
                     }
                 }
                 if ("locationIndex" in args) {
-                    txt = this.parseTextField(eventFields[args.locationIndex])
+                    txt = this.parseTextField(eventFields[args.locationIndex]);
                     if (txt) {
                         event.setProperty("LOCATION", txt);
                     }
                 }
 
                 // save the event into return array
                 eventArray.push(event);
             }
@@ -485,14 +485,14 @@ calOutlookCSVExporter.prototype = {
             line.push(txtString(cal.categoriesArrayToString(item.getCategories({})))); // xxx todo: what's the correct way to encode ',' in csv?, how are multi-values expressed?
             line.push(txtString(item.getProperty("DESCRIPTION")));
             line.push(txtString(item.getProperty("LOCATION")));
             line.push((item.privacy == "PRIVATE") ? localeEn.valueTrue : localeEn.valueFalse);
 
             line = line.map(function(v) {
                 v = String(v).replace(/"/g, '""');
                 return '"' + v + '"';
-            })
+            });
             str = line.join(',') + exportLineEnding;
             aStream.write(str, str.length);
         }
     }
 };
--- a/calendar/itip/calItipEmailTransport.js
+++ b/calendar/itip/calItipEmailTransport.js
@@ -260,18 +260,18 @@ calItipEmailTransport.prototype = {
                     cal.LOG("sendXpcomMail: Found AUTO autoResponse type.");
                 }
                 let cbEmail = function(aVal, aInd, aArr) {
                     let email = cal.getAttendeeEmail(aVal, true);
                     if (!email.length) {
                         cal.LOG("Invalid recipient for email transport: " + aVal.toString());
                     }
                     return email;
-                }
-                let toMap = aToList.map(cbEmail).filter(function(aVal, aInd, aArr) {return (aVal.length)});
+                };
+                let toMap = aToList.map(cbEmail).filter(function(aVal, aInd, aArr) {return (aVal.length);});
                 if (toMap.length < aToList.length) {
                     // at least one invalid recipient, so we skip sending for this message
                     return false;
                 }
                 let toList = toMap.join(', ');
                 let composeUtils = Components.classes["@mozilla.org/messengercompose/computils;1"]
                                              .createInstance(Components.interfaces.nsIMsgCompUtils);
                 let messageId = composeUtils.msgGenerateMessageId(identity);
--- a/calendar/lightning/content/html-item-editing/react-code.js
+++ b/calendar/lightning/content/html-item-editing/react-code.js
@@ -23,17 +23,17 @@ var Tabstrip = React.createClass({
                         className: style + ' tab',
                         key: 'tabkey' + index,
                         onClick: this.handleChange.bind(this, index)
                     },
                     tab
                     );
                 }
             )
-        )
+        );
     }
 });
 
 var TextField = React.createClass({
     handleChange: function(event) {
         this.props.onInput(this.props.keyprop, event.target.value);
     },
     render: function() {
@@ -215,17 +215,17 @@ var TopComponent = React.createClass({
                 [6, '2 Hours Before'],
                 [7, '12 Hours Before'],
                 [8, '1 Day Before'],
                 [9, '2 Days Before'],
                 [10, '1 Week Before'],
                 [11, 'Custom...']
             ],
             supportsPriority: false
-        }
+        };
     },
     getInitialState: function() {
         // all the passed-in props that begin with 'initial' become state
         return {
             title: this.props.initialTitle,
             location: this.props.initialLocation,
             startTimezone: this.props.initialStartTimezone,
             endTimezone: this.props.initialEndTimezone,
@@ -394,20 +394,20 @@ var TopComponent = React.createClass({
             categoriesCapsules =
                 this.state.categories.map((cat, index) => {
                     return React.createElement(Capsule, {
                         // color: this.props.categoryList.color,
                         value: cat,
                         key: cat + 'key',
                         keyprop: 'categories',
                         onDelete: this.onDeleteCapsule
-                    })
-                })
+                    });
+                });
         } else {
-            categoriesCapsules = null
+            categoriesCapsules = null;
         }
         let categoriesDiv = React.DOM.div(
             {id: 'categoriesDiv', className: 'box'},
             'Categories ',
             categoriesCapsules,
             React.createElement(Link, {
                 value: 'Add Categories',
                 onInput: this.linkClicked
@@ -581,10 +581,10 @@ var TopComponent = React.createClass({
                 )
             );
         }
     }
 });
 
 window.onload = function() {
     onLoad();
-}
+};
 
--- a/calendar/lightning/content/imip-bar.js
+++ b/calendar/lightning/content/imip-bar.js
@@ -217,17 +217,17 @@ var ltnImipBar = {
                 for (let identity in fixIterator(am.allIdentities,
                                                  Components.interfaces.nsIMsgIdentity)) {
                     if (author.includes(identity.email) && !identity.fccReplyFollowParent) {
                         return true;
                     }
                 }
             }
             return false;
-        }
+        };
 
         // We override the bar label for sent out invitations and in case the event does not exist
         // anymore, we also clear the buttons if any to avoid e.g. accept/decline buttons
         if (isOutgoing(gMessageDisplay.displayedMessage)) {
             if (ltnImipBar.foundItems && ltnImipBar.foundItems[0]) {
                 data.label = ltn.getString("lightning", "imipBarSentText");
             } else {
                 data = {label: ltn.getString("lightning", "imipBarSentButRemovedText"),
@@ -368,17 +368,17 @@ var ltnImipBar = {
                                                                     responseMethod: "PUBLISH"});
                     // control to avoid processing _execAction on later user changes on the item
                     let isFirstProcessing = true;
                     // setup callback and trigger re-processing
                     let storeCopy = function storeCopy(aItipItem, aRc, aActionFunc, aFoundItems) {
                         if (isFirstProcessing && aActionFunc && Components.isSuccessCode(aRc)) {
                             _execAction(aActionFunc, aItipItem, window, partStat);
                         }
-                    }
+                    };
                     cal.itip.processItipItem(newItipItem, storeCopy);
                     isFirstProcessing = false;
                 }
                 // we stop here to not process the original item
                 return false;
             }
             return _execAction(ltnImipBar.actionFunc, ltnImipBar.itipItem, window, partStat);
         }
--- a/calendar/lightning/content/lightning-item-iframe.js
+++ b/calendar/lightning/content/lightning-item-iframe.js
@@ -38,17 +38,17 @@ var gWarning = false;
 var gPreviousCalendarId = null;
 var gTabInfoObject;
 var gConfig = {
     priority: 0,
     privacy: null,
     status: "NONE",
     showTimeAs: null,
     percentComplete: 0
-}
+};
 // The following variables are set by the load handler function of the
 // parent context, so that they are already set before iframe content load:
 //   - gTimezoneEnabled
 //   - gShowLink
 
 var eventDialogQuitObserver = {
   observe: function(aSubject, aTopic, aData) {
     // Check whether or not we want to veto the quit request (unless another
@@ -270,17 +270,17 @@ function onLoad() {
             this.onAccept();
 
             let item = window.calendarItem;
 
             // ...and close the window.
             sendMessage({ command: "closeWindowOrTab", iframeId: iframeId });
 
             return item;
-        }
+        };
     }
 
     window.fbWrapper = args.fbWrapper;
 
     // the most important attribute we expect from the
     // arguments is the item we'll edit in the dialog.
     let item = args.calendarEvent;
 
@@ -291,17 +291,17 @@ function onLoad() {
 
     // new items should have a non-empty title.
     if (item.isMutable && (!item.title || item.title.length <= 0)) {
         item.title = cal.calGetString("calendar-event-dialog",
                                       isEvent(item) ? "newEvent" : "newTask");
     }
 
     window.onAcceptCallback = args.onOk;
-    window.mode = args.mode
+    window.mode = args.mode;
 
     // we store the item in the window to be able
     // to access this from any location. please note
     // that the item is either an occurrence [proxy]
     // or the stand-alone item [single occurrence item].
     window.calendarItem = item;
     // store the initial date value for datepickers in New Task dialog
     window.initialStartDateValue = args.initialStartDateValue;
@@ -535,17 +535,17 @@ function loadDialog(aItem) {
         // Properties for initializing the React component/UI.
         itemProps = {
             initialTitle: aItem.title,
             initialLocation: aItem.getProperty('LOCATION'),
             initialStartTimezone: gStartTimezone,
             initialEndTimezone: gEndTimezone,
             initialStartTime: gStartTime,
             initialEndTime: gEndTime
-        }
+        };
     } else {
         setElementValue("item-title", aItem.title);
         setElementValue("item-location", aItem.getProperty("LOCATION"));
     }
 
     // add calendars to the calendar menulist
     if (gNewItemUI) {
         let calendarToUse = aItem.calendar || window.arguments[0].calendar;
@@ -1809,17 +1809,17 @@ function editAttendees() {
         gEndTimezone = endTime.timezone;
         gStartTime = startTime.getInTimezone(kDefaultTimezone);
         gEndTime = endTime.getInTimezone(kDefaultTimezone);
         gItemDuration = duration;
         updateAttendees();
         updateDateTime();
         updateAllDay();
         if (isAllDay != gStartTime.isDate){
-            setShowTimeAs(gStartTime.isDate)
+            setShowTimeAs(gStartTime.isDate);
         }
     };
 
     var startTime = gStartTime.getInTimezone(gStartTimezone);
     var endTime = gEndTime.getInTimezone(gEndTimezone);
 
     var isAllDay = getElementValue("event-all-day", "checked");
     if (isAllDay) {
@@ -3357,17 +3357,17 @@ function updateDateTime() {
             } else if (hasDueDate) {
                 endTime.timezone = floating();
                 setElementValue("todo-entrydate", cal.dateTimeToJsDate(endTime));
 
                 setElementValue("todo-has-duedate", hasDueDate, "checked");
                 endTime.timezone = floating();
                 setElementValue("todo-duedate", cal.dateTimeToJsDate(endTime));
             } else {
-                startTime = window.initialStartDateValue
+                startTime = window.initialStartDateValue;
                 startTime.timezone = floating();
                 endTime = startTime.clone();
 
                 setElementValue("todo-entrydate", cal.dateTimeToJsDate(startTime));
                 setElementValue("todo-duedate", cal.dateTimeToJsDate(endTime));
             }
         }
     }
--- a/calendar/lightning/content/lightning-item-panel.js
+++ b/calendar/lightning/content/lightning-item-panel.js
@@ -30,39 +30,39 @@ if (!gTabmail) {
      */
     window.goUpdateGlobalEditMenuItems = () => {
         goUpdateCommand("cmd_undo");
         goUpdateCommand("cmd_redo");
         goUpdateCommand("cmd_cut");
         goUpdateCommand("cmd_copy");
         goUpdateCommand("cmd_paste");
         goUpdateCommand("cmd_selectAll");
-    }
+    };
     /**
      * Update menu items that rely on the current selection.
      */
     window.goUpdateSelectEditMenuItems = () => {
         goUpdateCommand("cmd_cut");
         goUpdateCommand("cmd_copy");
         goUpdateCommand("cmd_delete");
         goUpdateCommand("cmd_selectAll");
-    }
+    };
     /**
      * Update menu items that relate to undo/redo.
      */
     window.goUpdateUndoEditMenuItems = () => {
         goUpdateCommand("cmd_undo");
         goUpdateCommand("cmd_redo");
-    }
+    };
     /**
      * Update menu items that depend on clipboard contents.
      */
     window.goUpdatePasteMenuItems = () => {
         goUpdateCommand("cmd_paste");
-    }
+    };
 }
 
 // Stores the ids of the iframes of currently open event/task tabs, used
 // when window is closed to prompt for saving changes.
 var gItemTabIds = [];
 var gItemTabIdsCopy;
 
 // gConfig is used when switching tabs to restore the state of
@@ -80,17 +80,17 @@ var gConfig = {
     showTimeAs: null,
     // whether commands are enabled or disabled
     attendeesCommand: null, // cmd_attendees
     attachUrlCommand: null, // cmd_attach_url
     timezonesEnabled: false, // cmd_timezone
     // XXX Currently there is no toolbar button or menu item for
     // cmd_toggle_link for event/task tabs
     toggleLinkCommand: null // cmd_toggle_link
-}
+};
 
 /**
  * Receive an asynchronous message from the iframe.
  *
  * @param {MessageEvent} aEvent  Contains the message being received
  */
 function receiveMessage(aEvent) {
     if (aEvent.origin !== "chrome://lightning") {
--- a/calendar/lightning/content/messenger-overlay-sidebar.js
+++ b/calendar/lightning/content/messenger-overlay-sidebar.js
@@ -517,17 +517,17 @@ function ltnIntegrationCheck() {
         if (cnt.value == 1 &&
             calMgr.getCalendarPref_(cals[0], "type") == "storage" &&
             calMgr.getCalendarPref_(cals[0], "name") == homeCalName) {
             // this looks like a default setup, so let's see whether the calendar contains any items
             let pCal = cal.async.promisifyCalendar(cals[0]);
             // we look at all items at any time, but we can stop if the first item was found
             // if we've found no items, we call ltnIntegrationNotification to display the bar
             pCal.getItems(Components.interfaces.calICalendar.ITEM_FILTER_ALL_ITEMS, 1, null, null)
-                .then(function(aItems) {if (!aItems.length) {ltnIntegrationNotification()}});
+                .then(function(aItems) {if (!aItems.length) {ltnIntegrationNotification();}});
         }
     }
 }
 
 /* Called at midnight to tell us to redraw date-specific widgets.  Do NOT call
  * this for normal refresh, since it also calls scheduleMidnightRefresh.
  */
 function refreshUIBits() {
@@ -602,17 +602,17 @@ function LtnObserveDisplayDeckChange(eve
 
     // Bug 309505: The 'select' event also fires when we change the selected
     // panel of calendar-view-box.  Workaround with this check.
     if (deck.id != "calendarDisplayDeck") {
         return;
     }
 
     var id = null;
-    try { id = deck.selectedPanel.id } catch (e) { }
+    try { id = deck.selectedPanel.id; } catch (e) { }
 
     // Switch back to mail mode in case we find that this
     // notification has been fired but we're still in calendar or task mode.
     // Specifically, switch back if we're *not* in mail mode but the notification
     // did *not* come from either the "calendar-view-box" or the "calendar-task-box".
     if (gCurrentMode != 'mail') {
         if (id != "calendar-view-box" && id != "calendar-task-box") {
             ltnSwitch2Mail();
--- a/calendar/lightning/content/suite-overlay-sidebar.js
+++ b/calendar/lightning/content/suite-overlay-sidebar.js
@@ -34,11 +34,11 @@ var ltnSuiteUtils = {
           toolboxCustomizeDone("mail-menubar", toolbox, aToolboxChanged);
         };
         toolbox.customizeChange = function(aEvent) {
           toolboxCustomizeChange(toolbox, aEvent);
         };
       });
     }
   }
-}
+};
 
 ltnSuiteUtils.addStartupObserver();
--- a/calendar/lightning/modules/ltnInvitationUtils.jsm
+++ b/calendar/lightning/modules/ltnInvitationUtils.jsm
@@ -97,17 +97,17 @@ ltn.invitation = {
                     mode = Components.interfaces.mozITXTToHTMLConv.kStructPhrase +
                            Components.interfaces.mozITXTToHTMLConv.kGlyphSubstitution +
                            Components.interfaces.mozITXTToHTMLConv.kURLs;
                     content.innerHTML = linkConverter.scanHTML(contentText, mode);
                 } else {
                     content.textContent = aContentText;
                 }
             }
-        }
+        };
 
         // Simple fields
         let headerDescr = doc.getElementById("imipHtml-header-descr");
         if (headerDescr) {
             headerDescr.textContent = ltn.invitation.getItipHeader(aItipItem);
         }
 
         field("summary", aEvent.title);
@@ -127,28 +127,28 @@ ltn.invitation = {
                 dateString = repeatString;
             }
 
             let formattedExDates = [];
             let modifiedOccurrences = [];
 
             let dateComptor = function(a, b) {
                 return a.startDate.compare(b.startDate);
-            }
+            };
 
             // Show removed instances
             for (let exc of aEvent.recurrenceInfo.getRecurrenceItems({})) {
                 if (exc instanceof Components.interfaces.calIRecurrenceDate) {
                     if (exc.isNegative) {
                         // This is an EXDATE
                         formattedExDates.push(formatter.formatDateTime(exc.date));
                     } else {
                         // This is an RDATE, close enough to a modified occurrence
                         let excItem = aEvent.recurrenceInfo.getOccurrenceFor(exc.date);
-                        cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true)
+                        cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true);
                     }
                 }
             }
             if (formattedExDates.length > 0) {
                 field("canceledOccurrences", formattedExDates.join("\n"));
             }
 
             // Show modified occurrences
@@ -156,29 +156,29 @@ ltn.invitation = {
                 let exc = aEvent.recurrenceInfo.getExceptionFor(recurrenceId);
                 let excLocation = exc.getProperty("LOCATION");
 
                 // Only show modified occurrence if start, duration or location
                 // has changed.
                 if (exc.startDate.compare(exc.recurrenceId) != 0 ||
                     exc.duration.compare(aEvent.duration) != 0 ||
                     excLocation != aEvent.getProperty("LOCATION")) {
-                    cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true)
+                    cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true);
                 }
             }
 
             let stringifyOcc = function(occ) {
                 let formattedExc = formatter.formatItemInterval(occ);
                 let occLocation = occ.getProperty("LOCATION");
                 if (occLocation != aEvent.getProperty("LOCATION")) {
                     let location = ltn.getString("lightning", "imipHtml.newLocation", [occLocation]);
                     formattedExc += " (" + location + ")";
                 }
                 return formattedExc;
-            }
+            };
 
             if (modifiedOccurrences.length > 0) {
                 field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n"));
             }
         }
 
         field("when", dateString);
         field("comment", aEvent.getProperty("COMMENT"), true);
--- a/calendar/providers/caldav/calDavCalendar.js
+++ b/calendar/providers/caldav/calDavCalendar.js
@@ -19,17 +19,17 @@ Components.utils.import("resource://cale
 Components.utils.import("resource://calendar/modules/calAsyncUtils.jsm");
 
 //
 // calDavCalendar.js
 //
 
 var xmlHeader = '<?xml version="1.0" encoding="UTF-8"?>\n';
 
-var davNS = "DAV:"
+var davNS = "DAV:";
 var caldavNS = "urn:ietf:params:xml:ns:caldav";
 var calservNS = "http://calendarserver.org/ns/";
 var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8";
 var MIME_TEXT_XML = "text/xml; charset=utf-8";
 
 var cICL = Components.interfaces.calIChangeLog;
 var cIOL = Components.interfaces.calIOperationListener;
 
@@ -659,17 +659,17 @@ calDavCalendar.prototype = {
                 try {
                     responseStatus = request.responseStatus;
 
                     if (thisCalendar.verboseLogging()) {
                         let str = cal.convertByteArray(aResult, aResultLength);
                         cal.LOG("CalDAV: recv: " + (str || ""));
                     }
                 } catch (ex) {
-                    listenerStatus = ex.result
+                    listenerStatus = ex.result;
                     listenerDetail = "Request Failed: " + ex.message;
                     cal.LOG("CalDAV: Request error during add: " + ex);
                 }
 
 
                 // Translate the HTTP status code to a status and message for the listener
                 if (responseStatus == 201 || responseStatus == 204) {
                     // 201 = HTTP "Created"
@@ -781,17 +781,17 @@ calDavCalendar.prototype = {
                 try {
                     responseStatus = request.responseStatus;
 
                     if (thisCalendar.verboseLogging()) {
                        let str = cal.convertByteArray(aResult, aResultLength);
                        cal.LOG("CalDAV: recv: " + (str || ""));
                     }
                 } catch (ex) {
-                    listenerStatus = ex.result
+                    listenerStatus = ex.result;
                     listenerDetail = "Request Failed: " + ex.message;
                     cal.LOG("CalDAV: Request error during add: " + ex);
                 }
 
                 if (responseStatus == 204 || responseStatus == 201 || responseStatus == 200) {
                     // We should not accept a 201 status here indefinitely: it indicates a server error
                     // of some kind that we want to know about. It's convenient to accept it for now
                     // since a number of server impls don't get this right yet.
@@ -909,17 +909,17 @@ calDavCalendar.prototype = {
                 try {
                     responseStatus = request.responseStatus;
 
                     if (thisCalendar.verboseLogging()) {
                         let str = cal.convertByteArray(aResult, aResultLength);
                         cal.LOG("CalDAV: recv: " + (str || ""));
                     }
                 } catch (ex) {
-                    listenerStatus = ex.result
+                    listenerStatus = ex.result;
                     listenerDetail = "Request Failed: " + ex.message;
                     cal.LOG("CalDAV: Request error during delete: " + ex);
                 }
 
                 // 204 = HTTP "No content"
                 // 404 = Not Found - This is kind of a success, since the item is already deleted.
                 //
                 if (responseStatus == 204 || responseStatus == 200 || responseStatus == 404) {
@@ -979,17 +979,17 @@ calDavCalendar.prototype = {
                 try {
                     responseStatus = request.responseStatus;
 
                     if (thisCalendar.verboseLogging()) {
                         let str = cal.convertByteArray(aResult, aResultLength);
                         cal.LOG("CalDAV: recv: " + (str || ""));
                     }
                 } catch (ex) {
-                    listenerStatus = ex.result
+                    listenerStatus = ex.result;
                     listenerDetail = "Request Failed: " + ex.message;
                     cal.LOG("CalDAV: Request error during add: " + ex);
                 }
 
                 if (responseStatus == 404) {
                     // Nothing to do (except notify the listener below)
                     // Someone else has already deleted it
                 } else if (responseStatus >= 500 && responseStatus <= 510) {
--- a/calendar/providers/caldav/calDavRequestHandlers.js
+++ b/calendar/providers/caldav/calDavRequestHandlers.js
@@ -57,17 +57,17 @@ etagsHandler.prototype = {
     /**
      * @see nsIStreamListener
      */
     onStartRequest: function eSL_onStartRequest(request, context) {
         let httpchannel = request.QueryInterface(Components.interfaces.nsIHttpChannel);
 
         let responseStatus;
         try {
-            responseStatus = httpchannel.responseStatus
+            responseStatus = httpchannel.responseStatus;
         } catch (ex) {
             cal.WARN("CalDAV: No response status getting etags for calendar " + this.calendar.name);
         }
 
         if (responseStatus == 207) {
             // We only need to parse 207's, anything else is probably a
             // server error (i.e 50x).
             httpchannel.contentType = "application/xml";
@@ -115,17 +115,17 @@ etagsHandler.prototype = {
                 // safely set variables from this function.
                 let pcal = cal.async.promisifyCalendar(this.calendar.mOfflineStorage);
                 let foundItem = (yield pcal.getItem(this.calendar.mHrefIndex[path]))[0];
 
                 if (foundItem) {
                     let wasInboxItem = this.calendar.mItemInfoCache[foundItem.id].isInboxItem;
                     if ((wasInboxItem && this.calendar.isInbox(this.baseUri.spec)) ||
                         (wasInboxItem === false && !this.calendar.isInbox(this.baseUri.spec))) {
-                        cal.LOG("Deleting local href: " + path)
+                        cal.LOG("Deleting local href: " + path);
                         delete this.calendar.mHrefIndex[path];
                         yield pcal.deleteItem(foundItem);
                         needsRefresh = true;
                     }
                 }
             }
         } finally {
             if (this.calendar.isCached) {
@@ -152,17 +152,17 @@ etagsHandler.prototype = {
             }
         } else {
             let multiget = new multigetSyncHandler(this.itemsNeedFetching,
                                        this.calendar,
                                        this.baseUri,
                                        null,
                                        false,
                                        null,
-                                       this.changeLogListener)
+                                       this.changeLogListener);
             multiget.doMultiGet();
         }
     }),
 
     onDataAvailable: function eSL_onDataAvailable(request, context, inputStream, offset, count) {
         if (this._reader) {
             // No reader means request error
             this._reader.onDataAvailable(request, context, inputStream, offset, count);
@@ -186,27 +186,27 @@ etagsHandler.prototype = {
             this.logXML += aValue;
         }
         this.currentResponse[this.tag] += aValue;
     },
 
     startDocument: function eH_startDocument() {
         this.hrefMap = {};
         this.currentResponse = {};
-        this.tag = null
+        this.tag = null;
     },
 
     endDocument: function eH_endDocument() { },
 
     startElement: function eH_startElement(aUri, aLocalName, aQName, aAttributes) {
         switch (aLocalName) {
             case "response":
                 this.currentResponse = {};
                 this.currentResponse.isCollection = false;
-                this.tag = null
+                this.tag = null;
                 break;
             case "collection":
                 this.currentResponse.isCollection = true;
             case "href":
             case "getetag":
             case "getcontenttype":
                 this.tag = aLocalName;
                 this.currentResponse[aLocalName] = "";
@@ -367,17 +367,17 @@ webDavSyncHandler.prototype = {
     /**
      * @see nsIStreamListener
      */
     onStartRequest: function wSL_onStartRequest(request, context) {
         let httpchannel = request.QueryInterface(Components.interfaces.nsIHttpChannel);
 
         let responseStatus;
         try {
-            responseStatus = httpchannel.responseStatus
+            responseStatus = httpchannel.responseStatus;
         } catch (ex) {
             cal.WARN("CalDAV: No response status doing webdav sync for calendar " + this.calendar.name);
         }
 
         if (responseStatus == 207) {
             // We only need to parse 207's, anything else is probably a
             // server error (i.e 50x).
             httpchannel.contentType = "application/xml";
@@ -441,17 +441,17 @@ webDavSyncHandler.prototype = {
             this.logXML += aValue;
         }
         this.currentResponse[this.tag] += aValue;
     },
 
     startDocument: function wH_startDocument() {
         this.hrefMap = {};
         this.currentResponse = {};
-        this.tag = null
+        this.tag = null;
         if (this.calendar.isCached) {
             this.calendar.superCalendar.startBatch();
         }
     },
 
     endDocument: function wH_endDocument() {
         if (this.unhandledErrors) {
             this.calendar.superCalendar.endBatch();
@@ -487,26 +487,26 @@ webDavSyncHandler.prototype = {
                                                this.baseUri);
         } else {
             let multiget = new multigetSyncHandler(this.itemsNeedFetching,
                                                    this.calendar,
                                                    this.baseUri,
                                                    this.newSyncToken,
                                                    this.additionalSyncNeeded,
                                                    null,
-                                                   this.changeLogListener)
+                                                   this.changeLogListener);
             multiget.doMultiGet();
         }
     },
 
     startElement: function wH_startElement(aUri, aLocalName, aQName, aAttributes) {
         switch (aLocalName) {
             case "response": // WebDAV Sync draft 3
                 this.currentResponse = {};
-                this.tag = null
+                this.tag = null;
                 this.isInPropStat = false;
                 break;
             case "propstat":
                 this.isInPropStat = true;
                 break;
             case "status":
                 if (this.isInPropStat) {
                     this.tag = "propstat_" + aLocalName;
@@ -728,17 +728,17 @@ multigetSyncHandler.prototype = {
     /**
      * @see nsIStreamListener
      */
     onStartRequest: function mg_onStartRequest(request, context) {
         let httpchannel = request.QueryInterface(Components.interfaces.nsIHttpChannel);
 
         let responseStatus;
         try {
-            responseStatus = httpchannel.responseStatus
+            responseStatus = httpchannel.responseStatus;
         } catch (ex) {
             cal.WARN("CalDAV: No response status doing multiget for calendar " + this.calendar.name);
         }
 
         if (responseStatus == 207) {
             // We only need to parse 207's, anything else is probably a
             // server error (i.e 50x).
             httpchannel.contentType = "application/xml";
@@ -834,34 +834,34 @@ multigetSyncHandler.prototype = {
             this.logXML += aValue;
         }
         this.currentResponse[this.tag] += aValue;
     },
 
     startDocument: function mg_startDocument() {
         this.hrefMap = {};
         this.currentResponse = {};
-        this.tag = null
+        this.tag = null;
         this.logXML = "";
         if (this.calendar.isCached) {
             this.calendar.superCalendar.startBatch();
         }
     },
 
     endDocument: function mg_endDocument() {
         if (this.calendar.isCached) {
             this.calendar.superCalendar.endBatch();
         }
     },
 
     startElement: function mg_startElement(aUri, aLocalName, aQName, aAttributes) {
         switch (aLocalName) {
             case "response":
                 this.currentResponse = {};
-                this.tag = null
+                this.tag = null;
                 this.isInPropStat = false;
                 break;
             case "propstat":
                 this.isInPropStat = true;
                 break;
             case "status":
                 if (this.isInPropStat) {
                     this.tag = "propstat_" + aLocalName;
--- a/calendar/providers/ics/calICSCalendar.js
+++ b/calendar/providers/ics/calICSCalendar.js
@@ -104,17 +104,17 @@ calICSCalendar.prototype = {
     // calICalendar interface
     //
     get type() { return "ics"; },
 
     get canRefresh() {
         return true;
     },
 
-    get uri() { return this.mUri },
+    get uri() { return this.mUri; },
     set uri(aUri) {
         this.mUri = aUri;
         this.mMemoryCalendar.uri = this.mUri;
 
         // Use the ioservice, to create a channel, which makes finding the
         // right hooks to use easier.
         var channel = Services.io.newChannelFromURI2(this.mUri,
                                                      null,
@@ -801,17 +801,17 @@ calICSCalendar.prototype = {
                     copyToOverwriting(result, backupDir, makeName('initial'));
                 }
                 if (doDailyBackup) {
                     copyToOverwriting(result, backupDir, dailyBackupFileName);
                 }
 
                 aCallback.call(savedthis);
             }
-        }
+        };
 
         downloader.init(listener, backupFile);
         try {
             channel.asyncOpen(downloader, null);
         } catch (e) {
             // For local files, asyncOpen throws on new (calendar) files
             // No problem, go and upload something
             cal.ERROR("[calICSCalendar] Backup failed in asyncOpen:" + e);
@@ -1021,17 +1021,17 @@ httpHooks.prototype = {
                     let str = resultConverter.convertFromByteArray(aResult, aResultLength);
                     multistatus = cal.xml.parseString(str);
                 } catch (ex) {
                     cal.LOG("[calICSCalendar] Failed to fetch channel etag");
                 }
 
                 thisHook.mEtag = icsXPathFirst(multistatus, "/D:propfind/D:response/D:propstat/D:prop/D:getetag");
                 aRespFunc();
-            }
+            };
             let queryXml =
                 '<D:propfind xmlns:D="DAV:">' +
                   '<D:prop>' +
                     '<D:getetag/>' +
                   '</D:prop>' +
                 '</D:propfind>';
 
             let etagChannel = cal.prepHttpChannel(aChannel.URI, queryXml,
--- a/calendar/providers/storage/calStorageCalendar.js
+++ b/calendar/providers/storage/calStorageCalendar.js
@@ -1113,20 +1113,20 @@ calStorageCalendar.prototype = {
             //   WHERE  ((event_end > :range_start OR
             //           (event_end = :range_start AND
             //           event_start = :range_start))
             //          AND event_start < :range_end)
             //
             // but that doesn't work with floating start or end times. The logic
             // is the same though.
             // For readability, a few helpers:
-            var floatingEventStart = "event_start_tz = 'floating' AND event_start"
-            var nonFloatingEventStart = "event_start_tz != 'floating' AND event_start"
-            var floatingEventEnd = "event_end_tz = 'floating' AND event_end"
-            var nonFloatingEventEnd = "event_end_tz != 'floating' AND event_end"
+            var floatingEventStart = "event_start_tz = 'floating' AND event_start";
+            var nonFloatingEventStart = "event_start_tz != 'floating' AND event_start";
+            var floatingEventEnd = "event_end_tz = 'floating' AND event_end";
+            var nonFloatingEventEnd = "event_end_tz != 'floating' AND event_end";
             // The query needs to take both floating and non floating into account
             this.mSelectNonRecurringEventsByRange = this.mDB.createStatement(
                 "SELECT * FROM cal_events " +
                 "WHERE " +
                 " ((" + floatingEventEnd + " > :range_start + :start_offset) OR " +
                 "  (" + nonFloatingEventEnd + " > :range_start) OR " +
                 "  (((" + floatingEventEnd + " = :range_start + :start_offset) OR " +
                 "    (" + nonFloatingEventEnd + " = :range_start)) AND " +
--- a/calendar/providers/storage/calStorageUpgrade.jsm
+++ b/calendar/providers/storage/calStorageUpgrade.jsm
@@ -274,17 +274,17 @@ function createDBDelegate(funcName) {
  * database is passed, no error is thrown but null is returned.
  *
  * @param getterAttr        The getter to delegate.
  * @return                  The function that delegates the getter.
  */
 function createDBDelegateGetter(getterAttr) {
     return function(db) {
         return (db ? db[getterAttr] : null);
-    }
+    };
 }
 
 // These functions use the db delegate to allow easier calling of common
 // database functions.
 var beginTransaction = createDBDelegate("beginTransaction");
 var commitTransaction = createDBDelegate("commitTransaction");
 var rollbackTransaction = createDBDelegate("rollbackTransaction");
 var createStatement = createDBDelegate("createStatement");
@@ -1349,17 +1349,17 @@ upgrade.v20 = function upgrade_v20(db, v
         for (let tblName of ["cal_events", "cal_todos"]) {
             addColumn(tbl, tblName, ["offline_journal"], "INTEGER", db);
         }
         setDbVersionAndCommit(db, 20);
     } catch (e) {
         throw reportErrorAndRollback(db, e);
     }
     return tbl;
-}
+};
 
 /**
  * Bug 785659 - Get rid of calIRecurrenceDateSet
  * Migrate x-dateset to x-date in the storage database
  * r=mmecca, p=philipp
  */
 upgrade.v21 = function upgrade_v21(db, version) {
     let tbl = upgrade.v20(version < 20 && db, version);
@@ -1422,17 +1422,17 @@ upgrade.v21 = function upgrade_v21(db, v
             executeSimpleSQL(db, 'DELETE FROM cal_recurrence WHERE recur_type = "x-dateset"');
         }
 
         setDbVersionAndCommit(db, 21);
     } catch (e) {
         throw reportErrorAndRollback(db, e);
     }
     return tbl;
-}
+};
 
 /**
  * Bug 785733 - Move some properties to use icalString in database.
  * Use the full icalString in attendees, attachments, relations and recurrence
  * tables.
  * r=mmecca, p=philipp
  */
 upgrade.v22 = function upgrade_v22(db, version) {
@@ -1574,17 +1574,17 @@ upgrade.v22 = function upgrade_v22(db, v
                             WEEKNO: aWeekno,
                             MONTH: aMonth,
                             SETPOS: aSetPos
                         };
 
                         for (let rtype in rtypes) {
                             if (rtypes[rtype]) {
                                 let comp = "BY" + rtype;
-                                let rstr = rtypes[rtype].toString()
+                                let rstr = rtypes[rtype].toString();
                                 let rarray = rstr.split(",").map(parseInt10);
                                 ritem.setComponent(comp, rarray.length, rarray);
                             }
                         }
                     }
 
                     return ritem.icalString;
                 } catch (e) {
--- a/calendar/providers/wcap/calWcapCalendarItems.js
+++ b/calendar/providers/wcap/calWcapCalendarItems.js
@@ -650,17 +650,17 @@ function calWcapCalendar_adoptItem(item,
         log("adoptItem() call: " + item.title, this));
 
     try {
         this.storeItem(true /* bAddItem */, item, null, request);
     } catch (exc) {
         request.execRespFunc(exc);
     }
     return request;
-}
+};
 
 calWcapCalendar.prototype.addItem =
 function calWcapCalendar_addItem(item, listener) {
     this.adoptItem(item.clone(), listener);
 };
 
 calWcapCalendar.prototype.modifyItem =
 function calWcapCalendar_modifyItem(newItem, oldItem, listener) {
@@ -820,17 +820,17 @@ calWcapCalendar.prototype.patchTimezone 
                 log("patching " + xpropOrTz + ": from " +
                     dt + " to " + dt.getInTimezone(tz), this);
             }
             dt = dt.getInTimezone(tz);
             subComp[attr] = dt;
         }
     }
     return dt;
-}
+};
 
 calWcapCalendar.prototype.parseItems = function calWcapCalendar_parseItems(
     icalRootComp, itemFilter, maxResults, rangeStart, rangeEnd, bLeaveMutable) {
     let items = [];
     let unexpandedItems = [];
     let uid2parent = {};
     let excItems = [];
     let fakedParents = {};
--- a/calendar/providers/wcap/calWcapSession.js
+++ b/calendar/providers/wcap/calWcapSession.js
@@ -520,17 +520,17 @@ calWcapSession.prototype = {
                             calprops_resp = function(aCalendar) {
                                 if (aCalendar.isDefaultCalendar) {
                                     // tweak name:
                                     aCalendar.setProperty("name", aCalendar.displayName);
                                 } else {
                                     log("registering subscribed calendar: " + aCalendar.calId, this_);
                                     cal.getCalendarManager().registerCalendar(aCalendar);
                                 }
-                            }
+                            };
                             // do only once:
                             defaultCal.setProperty("subscriptions_registered", true);
                         }
                     }
 
                     if (!defaultCal.getProperty("user_id")) { // nail once:
                         defaultCal.setProperty("user_id", this_.credentials.userId);
                     }
--- a/calendar/resources/content/calendarCreation.js
+++ b/calendar/resources/content/calendarCreation.js
@@ -6,17 +6,17 @@
 Components.utils.import("resource://calendar/modules/calUtils.jsm");
 
 var gCalendar;
 
 var errorConstants = {
     SUCCESS: 0,
     INVALID_URI: 1,
     ALREADY_EXISTS: 2
-}
+};
 
 var l10nStrings = {};
 l10nStrings[errorConstants.SUCCESS] = "";
 l10nStrings[errorConstants.INVALID_URI] = cal.calGetString("calendarCreation", "error.invalidUri");
 l10nStrings[errorConstants.ALREADY_EXISTS] = cal.calGetString("calendarCreation", "error.alreadyExists");
 
 /**
  * Initialize the location page
--- a/calendar/resources/content/datetimepickers/datetimepickers.xml
+++ b/calendar/resources/content/datetimepickers/datetimepickers.xml
@@ -711,17 +711,17 @@
         if (event.deltaMode == event.DOM_DELTA_PAGE ||
             event.deltaMode == event.DOM_DELTA_LINE) {
             // Line/Page scrolling is usually vertical
             if (event.deltaY) {
                 deltaView = event.deltaY < 0 ? -1 : 1;
             }
         } else if (event.deltaMode == event.DOM_DELTA_PIXEL) {
             // The natural direction for pixel scrolling is left/right
-            this.mPixelScrollDelta += event.deltaX
+            this.mPixelScrollDelta += event.deltaX;
             if (this.mPixelScrollDelta > pixelThreshold) {
                 deltaView = 1;
                 this.mPixelScrollDelta = 0;
             } else if (this.mPixelScrollDelta < -pixelThreshold) {
                 deltaView = -1;
                 this.mPixelScrollDelta = 0;
             }
         }
@@ -760,17 +760,17 @@
         if (event.deltaMode == event.DOM_DELTA_PAGE ||
             event.deltaMode == event.DOM_DELTA_LINE) {
             // Line/Page scrolling is usually vertical
             if (event.deltaY) {
                 deltaView = event.deltaY < 0 ? -1 : 1;
             }
         } else if (event.deltaMode == event.DOM_DELTA_PIXEL) {
             // The natural direction for pixel scrolling is left/right
-            this.mPixelScrollDelta += event.deltaX
+            this.mPixelScrollDelta += event.deltaX;
             if (this.mPixelScrollDelta > pixelThreshold) {
                 deltaView = 1;
                 this.mPixelScrollDelta = 0;
             } else if (this.mPixelScrollDelta < -pixelThreshold) {
                 deltaView = -1;
                 this.mPixelScrollDelta = 0;
             }
         }
@@ -1707,17 +1707,17 @@
             } catch (ex) {
             }
 
             var time = null;
             var timePartsArray = this.parseTimeRegExp.exec(aValue);
             const PRE_INDEX = 1, HR_INDEX = 2, MIN_INDEX = 4, SEC_INDEX = 6, POST_INDEX = 8;
 
             if (timePartsArray != null) {
-              var hoursString = timePartsArray[HR_INDEX]
+              var hoursString = timePartsArray[HR_INDEX];
               var hours = Number(hoursString);
               var hoursSuffix = timePartsArray[HR_INDEX + 1];
               if (!(hours >= 0 && hours < 24)) {
                 return null;
               }
 
               var minutesString = timePartsArray[MIN_INDEX];
               var minutes = (minutesString == null ? 0 : Number(minutesString));
--- a/calendar/resources/content/publish.js
+++ b/calendar/resources/content/publish.js
@@ -189,17 +189,17 @@ var notificationCallbacks =
     getInterface: function(iid, instance) {
         if (iid.equals(Components.interfaces.nsIAuthPrompt)) {
             // use the window watcher service to get a nsIAuthPrompt impl
             return Services.ww.getNewAuthPrompter(null);
         }
 
         throw Components.results.NS_ERROR_NO_INTERFACE;
     }
-}
+};
 
 
 var publishingListener = {
     QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIStreamListener]),
 
     onStartRequest: function(request, ctxt) {
     },
 
@@ -221,9 +221,9 @@ var publishingListener = {
             // XXX this should be made human-readable.
             Services.prompt.alert(null, calGetString("calendar", "genericErrorTitle"),
                                   props.formatStringFromName('otherPutError', [request.status.toString(16)], 1));
         }
     },
 
     onDataAvailable: function(request, ctxt, inStream, sourceOffset, count) {
     }
-}
+};
--- a/calendar/test/mozmill/eventDialog/testEventDialog.js
+++ b/calendar/test/mozmill/eventDialog/testEventDialog.js
@@ -13,17 +13,17 @@ var location = "Location";
 var desc = "Event Decription";
 var attendee = "foo@bar.com";
 var url = "http://mozilla.org";
 var tmp;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testEventDialog = function() {
   // paths
   let monthView = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/'
     + 'id("calendarDisplayDeck")/id("calendar-view-box")/id("view-deck")/id("month-view")/';
   let miniMonth = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/id("ltnSidebar")/'
@@ -56,27 +56,27 @@ var testEventDialog = function() {
 
   // pick day
   controller.waitThenClick(new elementslib.Lookup(controller.window.document, miniMonth
     + 'anon({"anonid":"minimonth-calendar"})/[1]/{"value":"1"}'));
   controller.sleep(sleep);
 
   // create new event
   controller.mainMenu.click("#ltnNewEvent");
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // check that the start time is correct
   // next full hour except last hour hour of the day
   let now = new Date();
   let hour = now.getHours();
   let startHour = (hour == 23) ? hour : (hour + 1) % 24;
   let ampm = "";
   if (now.toLocaleTimeString().match(/AM|PM/)) {
-    ampm = (hour >= 12 ? " PM" : " AM")
+    ampm = (hour >= 12 ? " PM" : " AM");
     startHour = startHour % 12;
     if (startHour == 0) {
       startHour = 12;
     }
   }
 
   let startTime = startHour + ':00' + ampm;
   let endTime = ((startHour + 1) % 24) + ':00' + ampm;
@@ -87,17 +87,17 @@ var testEventDialog = function() {
     + 'anon({"class":"menulist-editable-box textbox-input-box"})/anon({"anonid":"input"})'
     );
   event.waitForElement(startTimeInput);
   event.assertValue(startTimeInput, startTime);
 
   // check selected calendar
   event.assertNode(new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-category-color-row")/id("event-grid-category-box")/id("item-calendar")/[0]/'
-    + '{"selected":"true","label":"' + calendar + '"}'))
+    + '{"selected":"true","label":"' + calendar + '"}'));
 
   // fill in name, location, description
   event.type(new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})'),
     title);
   event.type(new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-location-row")/id("item-location")/anon({"class":"textbox-input-box"})/'
@@ -137,22 +137,22 @@ var testEventDialog = function() {
   event.assertNode(new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-attachment-row")/id("attachment-link")/{"label":"mozilla.org"}'));
 
   // save
   calUtils.acceptSendingNotificationMail(event);
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // catch and dismiss alarm
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:AlarmWindow").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:AlarmWindow").length > 0;}, sleep);
   let alarm = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:AlarmWindow")[0]);
   // dismiss all button, label in .dtd file, bug #504635
   alarm.waitThenClick(new elementslib.Lookup(alarm.window.document, '/id("calendar-alarm-dialog")/'
     + 'id("alarm-actionbar")/[1]'));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:AlarmWindow").length == 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:AlarmWindow").length == 0;}, sleep);
 
   // verify event and alarm icon visible every day of the month and check tooltip
   // 1st January is Thursday so there's three days to check in the first row
   controller.assertNode(new elementslib.Lookup(controller.window.document,
     eventBox.replace("rowNumber", "0").replace("columnNumber", "4")));
   checkIcon(eventBox, "0", "4");
   checkTooltip(monthView, "0", "4", "1", startTime, endTime);
 
@@ -216,17 +216,17 @@ var testEventDialog = function() {
     eventBox.replace("rowNumber", "0").replace("columnNumber", "6")));
 
   for (row = 1; row < 5; row++) {
     for (col = 0; col < 7; col++) {
         controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document,
           eventBox.replace("rowNumber", row).replace("columnNumber", col)));
     }
   }
-}
+};
 
 function handleAttendees(attendees){
   let input = new elementslib.Lookup(attendees.window.document,
     '/id("calendar-event-dialog-attendees-v2")/[6]/[0]/id("attendees-list")/'
     + 'anon({"anonid":"listbox"})/[1]/[1]/anon({"anonid":"input"})/'
     + 'anon({"class":"autocomplete-textbox-container"})/'
     + '{"class":"textbox-input-box"}/anon({"anonid":"input"})');
   attendees.waitForElement(input);
@@ -261,9 +261,9 @@ function checkTooltip(monthView, row, co
     '/id("messengerWindow")/id("calendar-popupset")/id("itemTooltip")/'
     + '{"class":"tooltipBox"}/{"class":"tooltipHeaderGrid"}/[1]/[2]/[1]').getNode().textContent + '';
   controller.assertJS(dateTime.includes(date) && dateTime.includes(startTime)
     && dateTime.includes(endTime));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/eventDialog/testEventDialogModificationPrompt.js
+++ b/calendar/test/mozmill/eventDialog/testEventDialogModificationPrompt.js
@@ -31,61 +31,61 @@ var newlines = [{title: "title", descrip
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
 
   let categories = prefs.preferences.getPref("calendar.categories.names", "string").split(',');
   data[0].category = categories[0];
   data[1].category = categories[1];
-}
+};
 
 // Test that closing an event dialog with no changes does not prompt for save
 var testEventDialogModificationPrompt = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   // create new event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, 8)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   // enter first set of data
   calUtils.setData(event, data[0]);
 
   // save
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // open, but change nothing
   let eventBox = new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, 8)
     + '/{"tooltip":"itemTooltip"}');
   controller.waitForElement(eventBox);
   controller.doubleClick(eventBox);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   // modal dialog setup
   let md = new modalDialog.modalDialog(event.window);
   md.start(handleSavePrompt);
 
   // escape the event window, there should be no prompt to save event
   event.keypress(undefined, "VK_ESCAPE", {});
   controller.sleep(sleep);
   md.stop();
 
   // open
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, 8)
     + '/{"tooltip":"itemTooltip"}'));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   // change all values
   calUtils.setData(event, data[1]);
 
   // edit all values back to original
   calUtils.setData(event, data[0]);
@@ -106,53 +106,53 @@ var testEventDialogModificationPrompt = 
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, 8)));
 
   for (let i = 0; i < newlines.length; i++) {
     // test set i
     controller.doubleClick(new elementslib.Lookup(controller.window.document,
       calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, 8)), 1, 1);
-    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
     event = new mozmill.controller.MozMillController(mozmill.utils
       .getWindows("Calendar:EventDialog")[0]);
     calUtils.setData(event, newlines[i]);
     event.click(new elementslib.ID(event.window.document, "button-save"));
 
     // open and close
     eventBox = new elementslib.Lookup(controller.window.document,
       calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, 8)
       + '/{"tooltip":"itemTooltip"}');
     controller.waitForElement(eventBox);
     controller.doubleClick(eventBox);
-    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
     event = new mozmill.controller.MozMillController(mozmill.utils
       .getWindows("Calendar:EventDialog")[0]);
     md = new modalDialog.modalDialog(event.window);
     md.start(handleSavePrompt);
     event.keypress(undefined, "VK_ESCAPE", {});
     controller.sleep(sleep);
     md.stop();
 
     // delete it
     // XXX somehow the event is selected at this point, this didn't use to be the case
     // and can't be reproduced manually
     controller.keypress(new elementslib.ID(controller.window.document, "day-view"),
       "VK_DELETE", {});
     controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document,
       calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, 8)));
   }
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
   if (pass != undefined && pass == false) {
     controller.assertJS('"Prompt appeared" == "Prompt didn\'t appear."');
   }
-}
+};
 
 function handleSavePrompt(controller) {
   // unexpected prompt, thus the test has already failed
   // can't trigger a failure though, because the following click wouldn't be executed
   // so remembering it
   pass = false;
   // application close is blocked without it
   controller.click(new elementslib.Lookup(controller.window.document,
--- a/calendar/test/mozmill/eventDialog/testUTF8.js
+++ b/calendar/test/mozmill/eventDialog/testUTF8.js
@@ -9,28 +9,28 @@ Components.utils.import("resource://gre/
 
 var sleep = 500;
 var UTF8string = "õäöü";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, UTF8string);
   Preferences.set("calendar.categories.names", UTF8string);
-}
+};
 
 var testUTF8 = function() {
   let eventDialog = '/id("calendar-event-dialog")/id("event-grid")/id("event-grid-rows")/';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
 
   // create new event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, 8)));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // fill in name, location, description
   let titleTextBox = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})');
   event.waitForElement(titleTextBox);
   event.type(titleTextBox, UTF8string);
@@ -51,17 +51,17 @@ var testUTF8 = function() {
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // open
   let eventBox = new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, 8)
     + '/{"tooltip":"itemTooltip","calendar":"' + UTF8string.toLowerCase() + '"}');
   controller.waitForElement(eventBox);
   controller.doubleClick(eventBox);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // check values
   titleTextBox = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})');
   event.waitForElement(titleTextBox);
   event.assertValue(titleTextBox, UTF8string);
@@ -73,14 +73,14 @@ var testUTF8 = function() {
     + 'id("event-grid-description-row")/id("item-description")/'
     + 'anon({"class":"textbox-input-box"})/anon({"anonid":"input"})'),
     UTF8string);
   event.assertValue(new elementslib.ID(event.window.document, "item-categories"),
     UTF8string);
 
   // escape the event window
   event.keypress(undefined, "VK_ESCAPE", {});
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, UTF8string);
   prefs.preferences.clearUserPref("calendar.categories.names");
-}
+};
--- a/calendar/test/mozmill/recurrence/testAnnualRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testAnnualRecurrence.js
@@ -7,31 +7,31 @@ var calUtils = require("../shared-module
 var sleep = 500;
 var calendar = "Mozmill";
 var startYear = 1950;
 var epoch = 1970;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testAnnualRecurrence = function() {
   var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   controller.sleep(sleep);
 
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, startYear, 1, 1);
 
   // create yearly recurring all-day event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.ALLDAY, undefined, 1, undefined)));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
                  .getWindows("Calendar:EventDialog")[0]);
   event.sleep(sleep);
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "yearly");
   event.click(new elementslib.ID(event.window.document, "button-save"));
   controller.sleep(sleep);
 
@@ -72,13 +72,13 @@ var testAnnualRecurrence = function() {
   calUtils.switchToView(controller, "day");
   box = calUtils.getEventBoxPath(controller, "day", calUtils.ALLDAY, undefined, 1, undefined)
     + eventPath;
   calUtils.handleParentDeletion(controller, false);
   controller.click(new elementslib.Lookup(controller.window.document, box));
   controller.keypress(new elementslib.ID(controller.window.document, "day-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrence/testBiweeklyRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testBiweeklyRecurrence.js
@@ -6,35 +6,35 @@ var calUtils = require("../shared-module
 
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testBiweeklyRecurrence = function() {
   var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 31);
 
   // create biweekly event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "bi.weekly");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   let box = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
 
   // check day view
   for (let i = 0; i < 4; i++){
     controller.assertNode(new elementslib.Lookup(controller.window.document, box));
     calUtils.forward(controller, 14);
@@ -94,13 +94,13 @@ var testBiweeklyRecurrence = function() 
   controller.assertNode(new elementslib.Lookup(controller.window.document, box));
 
   // delete event
   controller.click(new elementslib.Lookup(controller.window.document, box));
   calUtils.handleParentDeletion(controller, false);
   controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrence/testDailyRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testDailyRecurrence.js
@@ -6,29 +6,29 @@ var calUtils = require("../shared-module
 
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testDailyRecurrence = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   // create daily event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "daily");
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
@@ -125,25 +125,25 @@ var testDailyRecurrence = function() {
   // go to previous day to edit event to occur only on weekdays
   calUtils.back(controller, 1);
 
   calUtils.handleParentModification(controller, false);
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
       + eventPath));
 
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "every.weekday");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // check day view for 7 days
   let day = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, undefined)
     + eventPath;
   var dates = [[2009, 1, 3],
                [2009, 1, 4]];
   for (let i = 0; i < dates.length; i++){
     calUtils.goToDate(controller, dates[i][0], dates[i][1], dates[i][2]);
@@ -193,13 +193,13 @@ var testDailyRecurrence = function() {
   // delete event
   day = calUtils.getEventBoxPath(controller, "month", calUtils.EVENT_BOX, 1, 5, undefined)
     + eventPath;
   controller.click(new elementslib.Lookup(controller.window.document, day));
   calUtils.handleParentDeletion(controller, false);
   controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, day));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrence/testLastDayOfMonthRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testLastDayOfMonthRecurrence.js
@@ -7,39 +7,39 @@ var modalDialog = require("../shared-mod
 
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testLastDayOfMonthRecurrence = function() {
   var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2008, 1, 31); // start with a leap year
 
   // create monthly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   //                        date     correct row in month view
   let checkingData = [[2008, 1, 31, 5],
                       [2008, 2, 29, 5],
                       [2008, 3, 31, 6],
                       [2008, 4, 30, 5],
                       [2008, 5, 31, 5],
                       [2008, 6, 30, 5],
@@ -90,17 +90,17 @@ var testLastDayOfMonthRecurrence = funct
   calUtils.switchToView(controller, "day");
   box = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX,
     undefined, 1, hour) + eventPath;
   calUtils.handleParentDeletion(controller, false);
   controller.waitThenClick(new elementslib.Lookup(controller.window.document, box));
   controller.keypress(new elementslib.ID(controller.window.document, "day-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
-}
+};
 
 function setRecurrence(recurrence){
   recurrence.sleep(sleep);
 
   // monthly
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined,
     undefined, "2");
 
@@ -116,9 +116,9 @@ function setRecurrence(recurrence){
 
   // close dialog
   recurrence.click(new elementslib.Lookup(recurrence.window.document,
     '/id("calendar-event-dialog-recurrence")/anon({"anonid":"buttons"})/{"dlgtype":"accept"}'));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrence/testWeeklyNRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testWeeklyNRecurrence.js
@@ -9,27 +9,27 @@ var utils = require("../shared-modules/u
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeeklyNRecurrence = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 5);
 
   // create weekly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
@@ -74,17 +74,17 @@ var testWeeklyNRecurrence = function() {
   // delete event
   box = calUtils.getEventBoxPath(controller, "month", calUtils.EVENT_BOX, 2, 2, hour)
     + eventPath;
   controller.click(new elementslib.Lookup(controller.window.document, box));
   calUtils.handleParentDeletion(controller, false);
   controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
-}
+};
 
 function setRecurrence(recurrence){
   // weekly
   recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
   recurrence.sleep(sleep);
 
   let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
@@ -137,9 +137,9 @@ function checkMultiWeekView(view){
   // Saturday
   let box = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, week, 7, undefined)
     + eventPath;
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrence/testWeeklyUntilRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testWeeklyUntilRecurrence.js
@@ -11,36 +11,36 @@ var calendar = "Mozmill";
 var endDate = new Date(2009, 0, 26); // last Monday in month
 
 var hour = 8;
 var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeeklyUntilRecurrence = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 5); // Monday
 
   // create weekly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   let box = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
 
   // check day view
   for (let week = 0; week < 3; week++){
     // Monday
     controller.assertNode(new elementslib.Lookup(controller.window.document, box));
@@ -102,17 +102,17 @@ var testWeeklyUntilRecurrence = function
   // delete event
   box = calUtils.getEventBoxPath(controller, "month", calUtils.EVENT_BOX, 2, 2, undefined)
     + eventPath;
   controller.click(new elementslib.Lookup(controller.window.document, box));
   calUtils.handleParentDeletion(controller, false);
   controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
-}
+};
 
 function setRecurrence(recurrence){
   // weekly
   recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
   recurrence.sleep(sleep);
 
   let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
@@ -180,9 +180,9 @@ function checkMultiWeekView(view){
   // Wednesday
   box = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek + 3, 4,
     undefined) + eventPath;
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrence/testWeeklyWithExceptionRecurrence.js
+++ b/calendar/test/mozmill/recurrence/testWeeklyWithExceptionRecurrence.js
@@ -10,43 +10,43 @@ var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 var startDate = new Date(2009, 0, 6);
 var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeeklyWithExceptionRecurrence = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 5);
 
   // create weekly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // move 5th January occurrence to 6th January
   calUtils.handleOccurrenceModification(controller, false);
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
       + eventPath));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
   event.sleep(sleep);
 
   let startDateInput = new elementslib.Lookup(event.window.document, '/id("calendar-event-dialog")/'
     + 'id("event-grid")/id("event-grid-rows")/id("event-grid-startdate-row")/'
     + 'id("event-grid-startdate-picker-box")/id("event-starttime")/anon({"anonid":"hbox"})/'
     + 'anon({"anonid":"date-picker"})/anon({"class":"datepicker-box-class"})/'
     + '{"class":"datepicker-text-class"}/anon({"class":"menulist-editable-box textbox-input-box"})/'
@@ -63,34 +63,34 @@ var testWeeklyWithExceptionRecurrence = 
                      .getService(Components.interfaces.nsIScriptableDateFormat);
   let startDateString = dateService.FormatDate("", dateService.dateFormatShort,
                                              startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate());
   event.type(startDateInput, startDateString);
   // applies startdate change
   event.click(endDateInput);
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // change recurrence rule
   calUtils.goToDate(controller, 2009, 1, 7);
   calUtils.handleParentModification(controller, false);
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
       + eventPath));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   md = new modalDialog.modalDialog(event.window);
   md.start(changeRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // check two weeks
   // day view
   calUtils.switchToView(controller, "day");
   let path = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
 
   calUtils.goToDate(controller, 2009, 1, 5);
@@ -195,17 +195,17 @@ var testWeeklyWithExceptionRecurrence = 
   calUtils.goToDate(controller, 2009, 1, 12);
   path = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
   controller.click(new elementslib.Lookup(controller.window.document, path));
   calUtils.handleParentDeletion(controller, false);
   controller.keypress(new elementslib.ID(controller.window.document, "day-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, path));
-}
+};
 
 function setRecurrence(recurrence){
   // weekly
   recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
   recurrence.sleep(sleep);
 
   let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
@@ -251,17 +251,17 @@ function changeRecurrence(recurrence){
   recurrence.click(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + tue + '"}'));
 
   // close dialog
   recurrence.click(new elementslib.Lookup(recurrence.window.document, '/id("calendar-event-dialog-recurrence")/'
     + 'anon({"anonid":"buttons"})/{"dlgtype":"accept"}'));
 }
 
 function checkMultiWeekView(view){
-  let startWeek = view == "multiweek" ? 1 : 2
+  let startWeek = view == "multiweek" ? 1 : 2;
 
   let path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek, 2, hour);
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, path + eventPath));
   // assert exactly two
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek, 3, hour);
   controller.assertNode(new elementslib.Lookup(controller.window.document, path + '/[0]'));
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek, 3, hour);
   controller.assertNode(new elementslib.Lookup(controller.window.document, path + '/[1]'));
@@ -289,9 +289,9 @@ function checkMultiWeekView(view){
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek + 1, 6, hour);
   controller.assertNode(new elementslib.Lookup(controller.window.document, path + eventPath));
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek + 1, 7, hour);
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, path + eventPath));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testAnnualRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testAnnualRecurrence.js
@@ -7,17 +7,17 @@ var calUtils = require("../shared-module
 var sleep = 500;
 var calendar = "Mozmill";
 var startYear = 1950;
 var epoch = 1970;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testAnnualRecurrence = function() {
   var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, startYear, 1, 1);
 
@@ -26,17 +26,17 @@ var testAnnualRecurrence = function() {
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create yearly recurring all-day event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.ALLDAY, undefined, 1, undefined)));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
                  .getWindows("Calendar:EventDialog")[0]);
   event.sleep(sleep);
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "yearly");
   event.click(new elementslib.ID(event.window.document, "button-save"));
   controller.sleep(sleep);
 
@@ -84,13 +84,13 @@ var testAnnualRecurrence = function() {
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
 
   // reset view
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testBiweeklyRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testBiweeklyRecurrence.js
@@ -6,17 +6,17 @@ var calUtils = require("../shared-module
 
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testBiweeklyRecurrence = function() {
   var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 31);
 
@@ -25,23 +25,23 @@ var testBiweeklyRecurrence = function() 
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create biweekly event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "bi.weekly");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   let box = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
 
   // check day view
   for (let i = 0; i < 4; i++){
     controller.assertNode(new elementslib.Lookup(controller.window.document, box));
     calUtils.forward(controller, 14);
@@ -109,13 +109,13 @@ var testBiweeklyRecurrence = function() 
 
   // reset view
   calUtils.switchToView(controller, "day");
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testDailyRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testDailyRecurrence.js
@@ -6,17 +6,17 @@ var calUtils = require("../shared-module
 
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testDailyRecurrence = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
@@ -25,17 +25,17 @@ var testDailyRecurrence = function() {
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create daily event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "daily");
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
@@ -132,25 +132,25 @@ var testDailyRecurrence = function() {
   // go to previous day to edit event to occur only on weekdays
   calUtils.back(controller, 1);
 
   calUtils.handleParentModification(controller, false);
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
       + eventPath));
 
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "every.weekday");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // check day view for 7 days
   let day = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, undefined)
     + eventPath;
   var dates = [[2009, 1, 3],
                [2009, 1, 4]];
   for (let i = 0; i < dates.length; i++){
     calUtils.goToDate(controller, dates[i][0], dates[i][1], dates[i][2]);
@@ -194,27 +194,27 @@ var testDailyRecurrence = function() {
     controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, day));
     day = calUtils.getEventBoxPath(controller, "month", calUtils.EVENT_BOX, i, 7, undefined)
       + eventPath;
     controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, day));
   }
 
   // delete event
   day = calUtils.getEventBoxPath(controller, "month", calUtils.EVENT_BOX, 1, 5, undefined)
-    + eventPath
+    + eventPath;
   controller.click(new elementslib.Lookup(controller.window.document, day));
   calUtils.handleParentDeletion(controller, false);
   controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, day));
 
   // reset view
   calUtils.switchToView(controller, "day");
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testLastDayOfMonthRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testLastDayOfMonthRecurrence.js
@@ -7,17 +7,17 @@ var modalDialog = require("../shared-mod
 
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testLastDayOfMonthRecurrence = function() {
   var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2008, 1, 31); // start with a leap year
 
   // rotate view
@@ -25,28 +25,28 @@ var testLastDayOfMonthRecurrence = funct
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create monthly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined,
     "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   //                      date      correct row in month view
   //                   vvvvvvvvvvv  v
   let checkingData = [[2008, 1, 31, 5],
                       [2008, 2, 29, 5],
                       [2008, 3, 31, 6],
                       [2008, 4, 30, 5],
                       [2008, 5, 31, 5],
@@ -105,17 +105,17 @@ var testLastDayOfMonthRecurrence = funct
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
 
   // reset view
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 function setRecurrence(recurrence){
   recurrence.sleep(sleep);
 
   // monthly
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined,
     undefined, "2");
 
@@ -131,9 +131,9 @@ function setRecurrence(recurrence){
 
   // close dialog
   recurrence.click(new elementslib.Lookup(recurrence.window.document,
     '/id("calendar-event-dialog-recurrence")/anon({"anonid":"buttons"})/{"dlgtype":"accept"}'));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testWeeklyNRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testWeeklyNRecurrence.js
@@ -9,34 +9,34 @@ var utils = require("../shared-modules/u
 var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeeklyNRecurrence = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 5);
 
   // rotate view
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create weekly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
@@ -89,17 +89,17 @@ var testWeeklyNRecurrence = function() {
 
   // reset view
   calUtils.switchToView(controller, "day");
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 function setRecurrence(recurrence){
   // weekly
   recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
   recurrence.sleep(sleep);
 
   let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
@@ -152,9 +152,9 @@ function checkMultiWeekView(view){
   // Saturday
   let box = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, week, 7, undefined)
     + eventPath;
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testWeeklyUntilRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testWeeklyUntilRecurrence.js
@@ -10,43 +10,43 @@ var sleep = 500;
 var calendar = "Mozmill";
 var endDate = new Date(2009, 0, 26); // last Monday in month
 var hour = 8;
 var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeeklyUntilRecurrence = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 5); // Monday
 
   // rotate view
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create weekly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   let box = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
 
   // check day view
   for (let week = 0; week < 3; week++){
     // Monday
     controller.assertNode(new elementslib.Lookup(controller.window.document, box));
@@ -116,17 +116,17 @@ var testWeeklyUntilRecurrence = function
 
   // reset view
   calUtils.switchToView(controller, "day");
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 function setRecurrence(recurrence){
   // weekly
   recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
   recurrence.sleep(sleep);
 
   let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
@@ -195,9 +195,9 @@ function checkMultiWeekView(view){
   // Wednesday
   box = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek + 3, 4,
     undefined) + eventPath;
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/recurrenceRotated/testWeeklyWithExceptionRecurrence.js
+++ b/calendar/test/mozmill/recurrenceRotated/testWeeklyWithExceptionRecurrence.js
@@ -10,49 +10,49 @@ var sleep = 500;
 var calendar = "Mozmill";
 var hour = 8;
 var startDate = new Date(2009, 0, 6);
 var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeeklyWithExceptionRecurrence = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 5);
 
   // rotate view
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "horizontal";
   });
 
   // create weekly recurring event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   let md = new modalDialog.modalDialog(event.window);
   md.start(setRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // move 5th January occurrence to 6th January
   calUtils.handleOccurrenceModification(controller, false);
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
       + eventPath));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
   event.sleep(sleep);
 
   let startDateInput = new elementslib.Lookup(event.window.document, '/id("calendar-event-dialog")/'
     + 'id("event-grid")/id("event-grid-rows")/id("event-grid-startdate-row")/'
     + 'id("event-grid-startdate-picker-box")/id("event-starttime")/anon({"anonid":"hbox"})/'
     + 'anon({"anonid":"date-picker"})/anon({"class":"datepicker-box-class"})/'
     + '{"class":"datepicker-text-class"}/anon({"class":"menulist-editable-box textbox-input-box"})/'
@@ -69,34 +69,34 @@ var testWeeklyWithExceptionRecurrence = 
                      .getService(Components.interfaces.nsIScriptableDateFormat);
   let startDateString = dateService.FormatDate("", dateService.dateFormatShort,
                                              startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate());
   event.type(startDateInput, startDateString);
   // applies startdate change
   event.click(endDateInput);
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // change recurrence rule
   calUtils.goToDate(controller, 2009, 1, 7);
   calUtils.handleParentModification(controller, false);
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
       + eventPath));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   md = new modalDialog.modalDialog(event.window);
   md.start(changeRecurrence);
   event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
   event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // check two weeks
   // day view
   calUtils.switchToView(controller, "day");
   let path = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
     + eventPath;
 
   calUtils.goToDate(controller, 2009, 1, 5);
@@ -208,17 +208,17 @@ var testWeeklyWithExceptionRecurrence = 
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, path));
 
   // reset view
   controller.mainMenu.click("#ltnViewRotated");
   controller.waitFor(function() {
     let view = (new elementslib.ID(controller.window.document, "day-view")).getNode();
     return view.orient == "vertical";
   });
-}
+};
 
 function setRecurrence(recurrence){
   // weekly
   recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
   recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
   recurrence.sleep(sleep);
 
   let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
@@ -264,17 +264,17 @@ function changeRecurrence(recurrence){
   recurrence.click(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + tue + '"}'));
 
   // close dialog
   recurrence.click(new elementslib.Lookup(recurrence.window.document, '/id("calendar-event-dialog-recurrence")/'
     + 'anon({"anonid":"buttons"})/{"dlgtype":"accept"}'));
 }
 
 function checkMultiWeekView(view){
-  let startWeek = view == "multiweek" ? 1 : 2
+  let startWeek = view == "multiweek" ? 1 : 2;
 
   let path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek, 2, hour);
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, path + eventPath));
   // assert exactly two
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek, 3, hour);
   controller.assertNode(new elementslib.Lookup(controller.window.document, path + '/[0]'));
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek, 3, hour);
   controller.assertNode(new elementslib.Lookup(controller.window.document, path + '/[1]'));
@@ -302,9 +302,9 @@ function checkMultiWeekView(view){
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek + 1, 6, hour);
   controller.assertNode(new elementslib.Lookup(controller.window.document, path + eventPath));
   path = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, startWeek + 1, 7, hour);
   controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, path + eventPath));
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/shared-modules/calendar-utils.js
+++ b/calendar/test/mozmill/shared-modules/calendar-utils.js
@@ -394,17 +394,17 @@ function setData(controller, data) {
     dialog = taskDialog;
     isEvent = false;
   }
 
   let dateInput = 'anon({"class":"datepicker-box-class"})/{"class":"datepicker-text-class"}/'
     + 'anon({"class":"menulist-editable-box textbox-input-box"})/anon({"anonid":"input"})';
   let timeInput = 'anon({"anonid":"hbox"})/anon({"anonid":"time-picker"})/'
     + 'anon({"class":"timepicker-box-class"})/anon({"class":"timepicker-text-class"})/'
-    + 'anon({"flex":"1"})/anon({"anonid":"input"})'
+    + 'anon({"flex":"1"})/anon({"anonid":"input"})';
   let startDateInput = new elementslib.Lookup(controller.window.document, dialog
     + 'id("event-grid-startdate-row")/id("event-grid-startdate-picker-box")/'
     + (isEvent ? 'id("event-starttime")/' : 'id("todo-entrydate")/')
     + 'anon({"anonid":"hbox"})/anon({"anonid":"date-picker"})/' + dateInput);
   let endDateInput = new elementslib.Lookup(controller.window.document, dialog
     + 'id("event-grid-enddate-row")/[1]/id("event-grid-enddate-picker-box")/'
     + (isEvent ? 'id("event-endtime")/' : 'id("todo-duedate")/')
     + 'anon({"anonid":"hbox"})/anon({"anonid":"date-picker"})/' + dateInput);
@@ -640,25 +640,25 @@ function setData(controller, data) {
 function open_lightning_prefs(aCallback, aParentController, collector, windowTimeout) {
   function paneLoadedChecker() {
     let pane = prefsController.window.document.getElementById("paneLightning");
     return pane.loaded;
   }
 
   let timeout = windowTimeout || 30000;
   aParentController.window.openOptionsDialog("paneLightning");
-  aParentController.waitFor(function() {return mozmill.utils.getWindows("Mail:Preferences").length == 1},
+  aParentController.waitFor(function() {return mozmill.utils.getWindows("Mail:Preferences").length == 1;},
                             "Error opening preferences window", timeout);
   let prefsController = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Mail:Preferences")[0]);
   prefsController.waitFor(paneLoadedChecker, "Timed out waiting for lightning prefpane to load.");
 
   aCallback(prefsController);
 
   prefsController.window.close();
-  aParentController.waitFor(function() {return mozmill.utils.getWindows("Mail:Preferences").length == 0},
+  aParentController.waitFor(function() {return mozmill.utils.getWindows("Mail:Preferences").length == 0;},
                             "Error closing preferences window", timeout);
 }
 
 // Export of constants
 exports.ALLDAY = ALLDAY;
 exports.CANVAS_BOX = CANVAS_BOX;
 exports.EVENT_BOX = EVENT_BOX;
 
--- a/calendar/test/mozmill/testAlarmDefaultValue.js
+++ b/calendar/test/mozmill/testAlarmDefaultValue.js
@@ -40,52 +40,52 @@ function testDefaultAlarms() {
 
   // Configure the lightning preferences
   calUtils.open_lightning_prefs(handle_pref_dialog, calendarController, collector);
 
   // Create New Event
   calendarController.click(new elementslib.ID(calendarController.window.document, "newMsgButton-calendar-menuitem"));
 
   // Set up the event dialog controller
-  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0});
+  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;});
   let eventController = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // Check if the "custom" item was selected
   eventController.assertDOMProperty(new elementslib.ID(eventController.window.document, "item-alarm"),
                                     "value",
                                     "custom");
   eventController.assertDOMProperty(new elementslib.XPath(eventController.window.document,
                                       '//*[@id="reminder-details"]/*[local-name()="label" ' +
                                       'and (not(@hidden) or @hidden="false")]'),
                                     "value",
                                     expectedEventReminder);
 
   // Close the event dialog
   eventController.window.close();
-  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // Create New Task
   calendarController.click(new elementslib.ID(calendarController.window.document, "newMsgButton-task-menuitem"));
 
   // Set up the task dialog controller
-  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0});
+  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;});
   let taskController = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // Check if the "custom" item was selected
   taskController.assertDOMProperty(new elementslib.ID(taskController.window.document, "item-alarm"),
                                    "value",
                                    "custom");
   taskController.assertDOMProperty(new elementslib.XPath(taskController.window.document,
                                      '//*[@id="reminder-details"]/*[local-name()="label" ' +
                                       'and (not(@hidden) or @hidden="false")]'),
                                    "value",
                                    expectedTaskReminder);
   // Close the task dialog
   taskController.window.close();
-  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  calendarController.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 }
 
 function handle_pref_dialog(prefsController) {
   // Click on the alarms tab
   prefsController.click(new elementslib.ID(prefsController.window.document, "calPreferencesTabAlarms"));
 
   // Turn on alarms for events and tasks
   prefsController.waitThenClick(new elementslib.ID(prefsController.window.document, "eventdefalarm"));
--- a/calendar/test/mozmill/testBasicFunctionality.js
+++ b/calendar/test/mozmill/testBasicFunctionality.js
@@ -8,17 +8,17 @@ var MODULE_REQUIRES = ["calendar-utils",
 
 var calUtils = require("shared-modules/calendar-utils");
 var TIMEOUT_MODAL_DIALOG = 30000;
 
 var modalDialog;
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   modalDialog = collector.getModule('window-helpers');
-}
+};
 
 var testSmokeTest = function() {
   let dateService = Components.classes["@mozilla.org/intl/scriptabledateformat;1"]
                               .getService(Components.interfaces.nsIScriptableDateFormat);
   let path = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/id("tabpanelcontainer")/'
     + 'id("calendarTabPanel")/id("calendarContent")/';
 
   // open calendar view
@@ -66,17 +66,17 @@ var testSmokeTest = function() {
 
   // create test calendar
   modalDialog.plan_for_modal_dialog("Calendar:NewCalendarWizard", handleNewCalendarWizard);
   let calendarList = new elementslib.Lookup(controller.window.document, path
     + '/id("ltnSidebar")/id("calendar-panel")/id("calendar-list-pane")/id("calendar-listtree-pane")/'
     + 'id("calendar-list-tree-widget")/anon({"anonid":"tree"})/anon({"anonid":"treechildren"})');
   controller.doubleClick(calendarList, 0, calendarList.getNode().boxObject.height); // bottom left
   modalDialog.wait_for_modal_dialog("Calendar:NewCalendarWizard", TIMEOUT_MODAL_DIALOG);
-}
+};
 
 function handleNewCalendarWizard(controller) {
   let docEl = controller.window.document.documentElement;
   // click next
   docEl.getButton("next").doCommand();
 
   // set calendar name
   let calendarNameTextBox = new elementslib.Lookup(controller.window.document, '/id("calendar-wizard")/'
@@ -89,9 +89,9 @@ function handleNewCalendarWizard(control
   docEl.getButton("next").doCommand();
 
   // click finish
   docEl.getButton("finish").doCommand();
 }
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, "Mozmill");
-}
+};
--- a/calendar/test/mozmill/testLocalICS.js
+++ b/calendar/test/mozmill/testLocalICS.js
@@ -28,46 +28,46 @@ var setupModule = function(module) {
   let time = (new Date()).getTime() + '';
   calendar = time;
   title = time;
 
   file = Services.dirsvc.get("TmpD", Components.interfaces.nsIFile);
   file.append(calendar + ".ics");
   let fileURI = Services.io.newFileURI(file);
   uri = fileURI.prePath + fileURI.path;
-}
+};
 
 var testLocalICS = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
 
   modalDialog.plan_for_modal_dialog("Calendar:NewCalendarWizard", handleNewCalendarWizard);
   controller.mainMenu.click("#ltnNewCalendar");
   modalDialog.wait_for_modal_dialog("Calendar:NewCalendarWizard", TIMEOUT_MODAL_DIALOG);
 
   // create new event
   controller.doubleClick(new elementslib.Lookup(controller.window.document,
     calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils
     .getWindows("Calendar:EventDialog")[0]);
 
   // let the iframe load
   let iframe = event.window.document.getElementById("lightning-item-panel-iframe");
   event.waitFor(() => iframe.contentWindow.onLoad && iframe.contentWindow.onLoad.hasLoaded == true);
 
   // title
   let titleTextBox = new elementslib.Lookup(iframe.contentDocument, '/id("calendar-event-dialog-inner")/'
     + 'id("event-grid")/id("event-grid-rows")/id("event-grid-title-row")/'
     + 'id("item-title")/anon({"class":"textbox-input-box"})/anon({"anonid":"input"})');
   event.waitForElement(titleTextBox);
   event.type(titleTextBox, title);
 
   // set calendar
-  let itemCalendar = new elementslib.ID(event.window.document, "item-calendar")
+  let itemCalendar = new elementslib.ID(event.window.document, "item-calendar");
   event.select(itemCalendar, undefined, calendar);
   // HACK - Wait for the value to be selected. This is needed for platforms
   // like mac where selecting the menuitem is an asynchronous process, it might
   // be fixed in a later version of mozmill.
   event.waitFor(() => itemCalendar.getNode().value == calendar);
 
   // save
   event.click(new elementslib.ID(event.window.document, "button-save"));
@@ -93,21 +93,21 @@ var testLocalICS = function() {
   fstream.init(file, -1, 0, 0);
   cstream.init(fstream, "UTF-8", 0, 0);
 
   let str = {};
   cstream.readString(-1, str);
   cstream.close();
 
   controller.assertJS(str.value.includes("SUMMARY:" + title));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
 
 function handleNewCalendarWizard(wizard) {
   let docEl = wizard.window.document.documentElement;
 
   // choose network calendar
   let remoteOption = new elementslib.Lookup(wizard.window.document, '/id("calendar-wizard")/'
     + '{"pageid":"initialPage"}/id("calendar-type")/{"value":"remote"}');
   wizard.waitForElement(remoteOption);
@@ -122,14 +122,14 @@ function handleNewCalendarWizard(wizard)
   // enter location
   wizard.type(new elementslib.Lookup(wizard.window.document, '/id("calendar-wizard")/'
     + '{"pageid":"locationPage"}/[1]/[1]/{"align":"center"}/id("calendar-uri")/'
     + 'anon({"class":"textbox-input-box"})/anon({"anonid":"input"})'),
     uri);
   docEl.getButton("next").doCommand();
 
   // name is filled in automatically using filename
-  wizard.waitFor(function() {return docEl.getButton("next").disabled == false});
+  wizard.waitFor(function() {return docEl.getButton("next").disabled == false;});
   docEl.getButton("next").doCommand();
 
   // finish
   docEl.getButton("finish").doCommand();
 }
--- a/calendar/test/mozmill/testTodayPane.js
+++ b/calendar/test/mozmill/testTodayPane.js
@@ -12,17 +12,17 @@ var MOZMILL_CALENDAR = "Mozmill";
 
 var calUtils = require("./shared-modules/calendar-utils");
 
 Components.utils.import("resource://calendar/modules/calUtils.jsm");
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, MOZMILL_CALENDAR);
-}
+};
 
 var testTodayPane = function() {
   // paths
   let panels = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/';
   let miniMonth = panels + 'id("calendarTabPanel")/id("calendarContent")/id("ltnSidebar")/'
     + 'id("minimonth-pane")/';
   let dayView = panels + 'id("calendarTabPanel")/id("calendarContent")/id("calendarDisplayDeck")/'
@@ -54,64 +54,64 @@ var testTodayPane = function() {
   if (startHour < 8 || startHour > 16) {
     view.scrollToMinute(60 * startHour);
   }
 
   controller.doubleClick(new elementslib.Lookup(controller.window.document, dayView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '{"class":"calendar-event-column-even"}/anon({"anonid":"boxstack"})/'
     + 'anon({"anonid":"bgbox"})/[' + startHour + ']'), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, WAIT_FOR_WINDOW_TIMEOUT);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, WAIT_FOR_WINDOW_TIMEOUT);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
   let iframe = event.window.document.getElementById("lightning-item-panel-iframe");
   event.waitFor(() => iframe.contentWindow.onLoad && iframe.contentWindow.onLoad.hasLoaded == true);
 
   event.waitForElement(new elementslib.Lookup(iframe.contentDocument, eventName));
   event.type(new elementslib.Lookup(iframe.contentDocument, eventName), "Today's Event");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // reset view
   view.scrollToMinute(60 * 8);
 
   // go to tomorrow and add an event
   controller.click(new elementslib.ID(controller.window.document, "next-view-button"));
   controller.doubleClick(new elementslib.Lookup(controller.window.document, dayView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '{"class":"calendar-event-column-even"}/anon({"anonid":"boxstack"})/'
     + 'anon({"anonid":"bgbox"})/[9]'), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, WAIT_FOR_WINDOW_TIMEOUT);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, WAIT_FOR_WINDOW_TIMEOUT);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
   iframe = event.window.document.getElementById("lightning-item-panel-iframe");
   event.waitFor(() => iframe.contentWindow.onLoad && iframe.contentWindow.onLoad.hasLoaded == true);
 
   event.waitForElement(new elementslib.Lookup(iframe.contentDocument, eventName));
   event.type(new elementslib.Lookup(iframe.contentDocument, eventName), "Tomorrow's Event");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // go 5 days forward and add an event
   for (let i = 0; i < 5; i++) {
     controller.click(new elementslib.ID(controller.window.document, "next-view-button"));
   }
   controller.sleep(WAIT_FOR_WINDOW_TIMEOUT);
 
   controller.doubleClick(new elementslib.Lookup(controller.window.document, dayView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '{"class":"calendar-event-column-even"}/anon({"anonid":"boxstack"})/'
     + 'anon({"anonid":"bgbox"})/[9]'), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, WAIT_FOR_WINDOW_TIMEOUT);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, WAIT_FOR_WINDOW_TIMEOUT);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
   iframe = event.window.document.getElementById("lightning-item-panel-iframe");
   event.waitFor(() => iframe.contentWindow.onLoad && iframe.contentWindow.onLoad.hasLoaded == true);
 
   event.waitForElement(new elementslib.Lookup(iframe.contentDocument, eventName));
   event.type(new elementslib.Lookup(iframe.contentDocument, eventName), "Future's Event");
   event.click(new elementslib.ID(event.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // go to mail tab
   controller.click(new elementslib.Lookup(controller.window.document, '/id("messengerWindow")/'
     + 'id("navigation-toolbox")/id("tabs-toolbar")/id("tabcontainer")/{"first-tab":"true","type":"folder"}/'
     + 'anon({"class":"tab-stack"})/{"class":"tab-background"}/{"class":"tab-background-middle"}'));
   controller.sleep(WAIT_FOR_WINDOW_TIMEOUT);
 
   // verify today pane open
@@ -232,22 +232,22 @@ var testTodayPane = function() {
   let soon = (new elementslib.Lookup(controller.window.document,
     '/id("messengerWindow")/id("tabmail-container")/id("today-pane-panel")/[1]/id("agenda-panel")/'
     + '{"flex":"1"}/id("agenda-listbox")/[2]/anon({"class":"agenda-checkbox"})')).getNode();
 // TODO This is failing, which might actually be an error in our code!
 //  controller.assertJS(!tomorrow.hasAttribute("checked")
 //    || tomorrow.getAttribute("checked") != "true");
   controller.assertJS(!soon.hasAttribute("checked")
     || soon.getAttribute("checked") != "true");
-}
+};
 
 var getIsoDate = function() {
   let date = new Date();
   let year = date.getFullYear();
   let month = (date.getMonth() < 9) ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);
   let day = (date.getDate() < 10) ? '0' + date.getDate() : date.getDate();
   let isoDate = year + '' + month + '' + day;
   return isoDate;
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, MOZMILL_CALENDAR);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test1.js
+++ b/calendar/test/mozmill/timezoneTests/test1.js
@@ -5,13 +5,13 @@
 var calUtils = require("../shared-modules/calendar-utils");
 var timezoneUtils = require("../shared-modules/timezone-utils");
 
 var calendar = "Mozmill";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testTimezones1_SetGMT = function() {
   timezoneUtils.switchAppTimezone("Europe/London");
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test10.js
+++ b/calendar/test/mozmill/timezoneTests/test10.js
@@ -16,28 +16,28 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[18, 30], [19, 30], [20, 30], [21, 30], [22, 30], [23, 30], [0, 30, +1], [1, 30, +1]],
              [[17, 30], [19, 30], [20, 30], [20, 30], [22, 30], [22, 30], [0, 30, +1], [1, 30, +1]],
              [[16, 30], [18, 30], [19, 30], [19, 30], [21, 30], [21, 30], [23, 30], [1, 30, +1]],
              [[16, 30], [18, 30], [19, 30], [19, 30], [21, 30], [21, 30], [23, 30], [1, 30, +1]],
              [[16, 30], [18, 30], [19, 30], [19, 30], [21, 30], [21, 30], [23, 30], [1, 30, +1]],
              [[17, 30], [19, 30], [20, 30], [20, 30], [22, 30], [22, 30], [0, 30, +1], [1, 30, +1]],
              [[17, 30], [19, 30], [20, 30], [20, 30], [22, 30], [23, 30], [0, 30, +1], [1, 30, +1]],
-             [[18, 30], [19, 30], [20, 30], [21, 30], [22, 30], [23, 30], [0, 30, +1], [1, 30, +1]]]
+             [[18, 30], [19, 30], [20, 30], [21, 30], [22, 30], [23, 30], [0, 30, +1], [1, 30, +1]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones10_checkAdelaide = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   prefs.preferences.clearUserPref("calendar.timezone.local");
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test2.js
+++ b/calendar/test/mozmill/timezoneTests/test2.js
@@ -10,49 +10,49 @@ var sleep = 500;
 var calendar = "Mozmill";
 var timezones = ["America/St_Johns", "America/Caracas", "America/Phoenix", "America/Los_Angeles",
                  "America/Argentina/Buenos_Aires", "Europe/Paris", "Asia/Kathmandu", "Australia/Adelaide"];
 var times = [[4, 30], [4, 30], [3, 0], [3, 0], [9, 0], [14, 0], [19, 45], [1, 30]];
 var gTimezone;
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones2_CreateEvents = function() {
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   // create daily recurring events in all timezones
   let time = new Date();
   for (let i = 0; i < timezones.length; i++) {
     controller.doubleClick(new elementslib.Lookup(controller.window.document,
       calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, i + 8)), 1, 1);
-    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
     let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
     time.setHours(times[i][0]);
     time.setMinutes(times[i][1]);
 
     // set timezone
     setTimezone(event, timezones[i]);
 
     // set title and repeat
     calUtils.setData(event, {title: timezones[i], repeat: "weekly", starttime: time});
 
     // save
     event.click(new elementslib.ID(event.window.document, "button-save"));
-    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+    controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
   }
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[0]);
-}
+};
 
 function setTimezone(event, timezone) {
   gTimezone = timezone;
 
   // for some reason setting checked is needed, no other menuitem with checkbox needs it
   let menuitem = new elementslib.ID(event.window.document, "options-timezones-menuitem");
   event.waitForElement(menuitem);
   menuitem.getNode().setAttribute("checked", "true");
--- a/calendar/test/mozmill/timezoneTests/test3.js
+++ b/calendar/test/mozmill/timezoneTests/test3.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[4, 30], [5, 30], [6, 30], [7, 30], [8, 30], [9, 30], [10, 30], [11, 30]],
              [[4, 30], [6, 30], [7, 30], [7, 30], [9, 30], [9, 30], [11, 30], [12, 30]],
              [[4, 30], [6, 30], [7, 30], [7, 30], [9, 30], [9, 30], [11, 30], [13, 30]],
              [[4, 30], [6, 30], [7, 30], [7, 30], [9, 30], [9, 30], [11, 30], [13, 30]],
              [[4, 30], [6, 30], [7, 30], [7, 30], [9, 30], [9, 30], [11, 30], [13, 30]],
              [[4, 30], [6, 30], [7, 30], [7, 30], [9, 30], [9, 30], [11, 30], [12, 30]],
              [[4, 30], [6, 30], [7, 30], [7, 30], [9, 30], [10, 30], [11, 30], [12, 30]],
-             [[4, 30], [5, 30], [6, 30], [7, 30], [8, 30], [9, 30], [10, 30], [11, 30]]]
+             [[4, 30], [5, 30], [6, 30], [7, 30], [8, 30], [9, 30], [10, 30], [11, 30]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones3_checkStJohns = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[1]);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test4.js
+++ b/calendar/test/mozmill/timezoneTests/test4.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[3, 30], [4, 30], [5, 30], [6, 30], [7, 30], [8, 30], [9, 30], [10, 30]],
              [[2, 30], [4, 30], [5, 30], [5, 30], [7, 30], [7, 30], [9, 30], [10, 30]],
              [[2, 30], [4, 30], [5, 30], [5, 30], [7, 30], [7, 30], [9, 30], [11, 30]],
              [[2, 30], [4, 30], [5, 30], [5, 30], [7, 30], [7, 30], [9, 30], [11, 30]],
              [[2, 30], [4, 30], [5, 30], [5, 30], [7, 30], [7, 30], [9, 30], [11, 30]],
              [[2, 30], [4, 30], [5, 30], [5, 30], [7, 30], [7, 30], [9, 30], [10, 30]],
              [[2, 30], [4, 30], [5, 30], [5, 30], [7, 30], [8, 30], [9, 30], [10, 30]],
-             [[3, 30], [4, 30], [5, 30], [6, 30], [7, 30], [8, 30], [9, 30], [10, 30]]]
+             [[3, 30], [4, 30], [5, 30], [6, 30], [7, 30], [8, 30], [9, 30], [10, 30]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones4_checkCaracas = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[2]);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test5.js
+++ b/calendar/test/mozmill/timezoneTests/test5.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0], [8, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [8, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [9, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [9, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [9, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [8, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [6, 0], [7, 0], [8, 0]],
-             [[1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0], [8, 0]]]
+             [[1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0], [8, 0]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones5_checkPhoenix = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[3]);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test6.js
+++ b/calendar/test/mozmill/timezoneTests/test6.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[0, 0], [1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [8, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [9, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [9, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [9, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [5, 0], [7, 0], [8, 0]],
              [[0, 0], [2, 0], [3, 0], [3, 0], [5, 0], [6, 0], [7, 0], [8, 0]],
-             [[0, 0], [1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0]]]
+             [[0, 0], [1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones6_checkLosAngeles = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[4]);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test7.js
+++ b/calendar/test/mozmill/timezoneTests/test7.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[5, 0], [6, 0], [7, 0], [8, 0], [9, 0], [10, 0], [11, 0], [12, 0]],
              [[4, 0], [6, 0], [7, 0], [7, 0], [9, 0], [9, 0], [11, 0], [12, 0]],
              [[4, 0], [6, 0], [7, 0], [7, 0], [9, 0], [9, 0], [11, 0], [13, 0]],
              [[4, 0], [6, 0], [7, 0], [7, 0], [9, 0], [9, 0], [11, 0], [13, 0]],
              [[4, 0], [6, 0], [7, 0], [7, 0], [9, 0], [9, 0], [11, 0], [13, 0]],
              [[4, 0], [6, 0], [7, 0], [7, 0], [9, 0], [9, 0], [11, 0], [12, 0]],
              [[4, 0], [6, 0], [7, 0], [7, 0], [9, 0], [10, 0], [11, 0], [12, 0]],
-             [[5, 0], [6, 0], [7, 0], [8, 0], [9, 0], [10, 0], [11, 0], [12, 0]]]
+             [[5, 0], [6, 0], [7, 0], [8, 0], [9, 0], [10, 0], [11, 0], [12, 0]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones7_checkBuenosAires = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[5]);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test8.js
+++ b/calendar/test/mozmill/timezoneTests/test8.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[9, 0], [10, 0], [11, 0], [12, 0], [13, 0], [14, 0], [15, 0], [16, 0]],
              [[9, 0], [11, 0], [12, 0], [12, 0], [14, 0], [14, 0], [16, 0], [17, 0]],
              [[9, 0], [11, 0], [12, 0], [12, 0], [14, 0], [14, 0], [16, 0], [18, 0]],
              [[9, 0], [11, 0], [12, 0], [12, 0], [14, 0], [14, 0], [16, 0], [18, 0]],
              [[9, 0], [11, 0], [12, 0], [12, 0], [14, 0], [14, 0], [16, 0], [18, 0]],
              [[9, 0], [11, 0], [12, 0], [12, 0], [14, 0], [14, 0], [16, 0], [17, 0]],
              [[8, 0], [10, 0], [11, 0], [11, 0], [13, 0], [14, 0], [15, 0], [16, 0]],
-             [[9, 0], [10, 0], [11, 0], [12, 0], [13, 0], [14, 0], [15, 0], [16, 0]]]
+             [[9, 0], [10, 0], [11, 0], [12, 0], [13, 0], [14, 0], [15, 0], [16, 0]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones8_checkParis = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[6]);
-}
+};
--- a/calendar/test/mozmill/timezoneTests/test9.js
+++ b/calendar/test/mozmill/timezoneTests/test9.js
@@ -15,27 +15,27 @@ var timezones = ["America/St_Johns", "Am
    columns - correct time for each event */
 var times = [[[13, 45], [14, 45], [15, 45], [16, 45], [17, 45], [18, 45], [19, 45], [20, 45]],
              [[12, 45], [14, 45], [15, 45], [15, 45], [17, 45], [17, 45], [19, 45], [20, 45]],
              [[12, 45], [14, 45], [15, 45], [15, 45], [17, 45], [17, 45], [19, 45], [21, 45]],
              [[12, 45], [14, 45], [15, 45], [15, 45], [17, 45], [17, 45], [19, 45], [21, 45]],
              [[12, 45], [14, 45], [15, 45], [15, 45], [17, 45], [17, 45], [19, 45], [21, 45]],
              [[12, 45], [14, 45], [15, 45], [15, 45], [17, 45], [17, 45], [19, 45], [20, 45]],
              [[12, 45], [14, 45], [15, 45], [15, 45], [17, 45], [18, 45], [19, 45], [20, 45]],
-             [[13, 45], [14, 45], [15, 45], [16, 45], [17, 45], [18, 45], [19, 45], [20, 45]]]
+             [[13, 45], [14, 45], [15, 45], [16, 45], [17, 45], [18, 45], [19, 45], [20, 45]]];
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
-}
+};
 
 var testTimezones9_checkKathmandu = function() {
   let eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
   controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
   calUtils.switchToView(controller, "day");
   calUtils.goToDate(controller, 2009, 1, 1);
 
   timezoneUtils.verify(controller, dates, timezones, times);
-}
+};
 
 var teardownTest = function(module) {
   timezoneUtils.switchAppTimezone(timezones[7]);
-}
+};
--- a/calendar/test/mozmill/views/testDayView.js
+++ b/calendar/test/mozmill/views/testDayView.js
@@ -8,17 +8,17 @@ var sleep = 500;
 var calendar = "Mozmill";
 var title1 = "Day View Event";
 var title2 = "Day View Event Changed";
 var desc = "Day View Event Description";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testDayView = function() {
   let dateService = Components.classes["@mozilla.org/intl/scriptabledateformat;1"]
                               .getService(Components.interfaces.nsIScriptableDateFormat);
   // paths
   let miniMonth = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/id("ltnSidebar")/'
     + 'id("minimonth-pane")/{"align":"center"}/id("calMinimonthBox")/id("calMinimonth")/';
@@ -48,24 +48,24 @@ var testDayView = function() {
     + 'anon({"anonid":"minimonth-header"})/anon({"anonid":"minmonth-popupset"})/'
     + 'anon({"anonid":"months-popup"})/[0]/{"index":"0"}'));
 
   // pick day
   controller.waitThenClick(new elementslib.Lookup(controller.window.document, miniMonth
     + 'anon({"anonid":"minimonth-calendar"})/[1]/{"value":"1"}'));
 
   // verify date in view
-  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101"});
+  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101";});
 
   // create event at 8 AM
   controller.doubleClick(new elementslib.Lookup(controller.window.document, dayView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '{"class":"calendar-event-column-even"}/anon({"anonid":"boxstack"})/'
     + 'anon({"anonid":"bgbox"})/[8]'), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // check that the start time is correct
   let startTimeInput = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-startdate-row")/id("event-grid-startdate-picker-box")/'
     + 'id("event-starttime")/anon({"anonid":"hbox"})/anon({"anonid":"time-picker"})/'
     + 'anon({"class":"timepicker-box-class"})/anon({"class":"timepicker-text-class"})/'
     + 'anon({"flex":"1"})/anon({"anonid":"input"})');
@@ -98,17 +98,17 @@ var testDayView = function() {
   // if it was created successfully, it can be opened
   let eventBox = new elementslib.Lookup(controller.window.document, dayView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '{"class":"calendar-event-column-even"}/anon({"anonid":"boxstack"})/'
     + 'anon({"anonid":"topbox"})/{"flex":"1"}/{"flex":"1"}/[0]/'
     + '{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}');
   controller.waitForElement(eventBox);
   controller.doubleClick(eventBox);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // change title and save changes
   let titleTextBox = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})');
   event.waitForElement(titleTextBox);
   event.type(titleTextBox, title2);
@@ -133,13 +133,13 @@ var testDayView = function() {
     + '{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}'));
   controller.keypress(new elementslib.ID(controller.window.document, "day-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, dayView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '{"class":"calendar-event-column-even"}/anon({"anonid":"boxstack"})/'
     + 'anon({"anonid":"topbox"})/{"flex":"1"}/{"flex":"1"}/{"flex":"1"}/'
     + '{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}'));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/views/testMonthView.js
+++ b/calendar/test/mozmill/views/testMonthView.js
@@ -8,17 +8,17 @@ var sleep = 500;
 var calendar = "Mozmill";
 var title1 = "Month View Event";
 var title2 = "Month View Event Changed";
 var desc = "Month View Event Description";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testMonthView = function() {
   let dateService = Components.classes["@mozilla.org/intl/scriptabledateformat;1"]
                               .getService(Components.interfaces.nsIScriptableDateFormat);
   // paths
   let miniMonth = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/id("ltnSidebar")/'
     + 'id("minimonth-pane")/{"align":"center"}/id("calMinimonthBox")/id("calMinimonth")/';
@@ -52,25 +52,25 @@ var testMonthView = function() {
   // pick day
   controller.waitThenClick(new elementslib.Lookup(controller.window.document, miniMonth
     + 'anon({"anonid":"minimonth-calendar"})/[1]/{"value":"1"}'));
 
   // verify date
   let day = new elementslib.Lookup(controller.window.document, monthView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"monthgrid"})/anon({"anonid":"monthgridrows"})/'
     + '[0]/{"selected":"true"}');
-  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101"});
+  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101";});
 
   // create event
   // Thursday of 2009-01-01 should be the selected box in the first row with default settings
   let hour = new Date().getHours(); // remember time at click
   controller.doubleClick(new elementslib.Lookup(controller.window.document, monthView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"monthgrid"})/anon({"anonid":"monthgridrows"})/'
     + '[0]/{"selected":"true"}/anon({"anonid":"day-items"})'));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // check that the start time is correct
   // next full hour except last hour hour of the day
   let nextHour = (hour == 23) ? hour : (hour + 1) % 24;
   let startTime = nextHour + ':00'; // next full hour
   let startTimeInput = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-startdate-row")/id("event-grid-startdate-picker-box")/'
@@ -104,17 +104,17 @@ var testMonthView = function() {
     + '[0]/{"label":"' + calendar + '"}'));
 
   // save
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // if it was created successfully, it can be opened
   controller.waitForElement(new elementslib.Lookup(controller.window.document, eventBox));
   controller.doubleClick(new elementslib.Lookup(controller.window.document, eventBox));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // change title and save changes
   let titleTextBox = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})');
   event.waitForElement(titleTextBox);
   event.type(titleTextBox, title2);
@@ -126,13 +126,13 @@ var testMonthView = function() {
   controller.waitForElement(eventName);
   controller.assertValue(eventName, title2);
 
   // delete event
   controller.click(new elementslib.Lookup(controller.window.document, eventBox));
   controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, eventBox));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/views/testMultiweekView.js
+++ b/calendar/test/mozmill/views/testMultiweekView.js
@@ -8,17 +8,17 @@ var sleep = 500;
 var calendar = "Mozmill";
 var title1 = "Multiweek View Event";
 var title2 = "Multiweek View Event Changed";
 var desc = "Multiweek View Event Description";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testMultiWeekView = function() {
   let dateService = Components.classes["@mozilla.org/intl/scriptabledateformat;1"]
                               .getService(Components.interfaces.nsIScriptableDateFormat);
   // paths
   let miniMonth = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/id("ltnSidebar")/'
     + 'id("minimonth-pane")/{"align":"center"}/id("calMinimonthBox")/id("calMinimonth")/';
@@ -52,25 +52,25 @@ var testMultiWeekView = function() {
   // pick day
   controller.waitThenClick(new elementslib.Lookup(controller.window.document, miniMonth
     + 'anon({"anonid":"minimonth-calendar"})/[1]/{"value":"1"}'));
 
   // verify date
   let day = new elementslib.Lookup(controller.window.document, multiWeekView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"monthgrid"})/anon({"anonid":"monthgridrows"})/'
     + '[0]/{"selected":"true"}');
-  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101"});
+  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101";});
 
   // create event
   // Thursday of 2009-01-01 should be the selected box in the first row with default settings
   let hour = new Date().getHours(); // remember time at click
   controller.doubleClick(new elementslib.Lookup(controller.window.document, multiWeekView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"monthgrid"})/anon({"anonid":"monthgridrows"})/'
     + '[0]/{"selected":"true"}/anon({"anonid":"day-items"})'));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // check that the start time is correct
   // next full hour except last hour hour of the day
   let nextHour = (hour == 23) ? hour : (hour + 1) % 24;
   let startTime = nextHour + ':00';
   let startTimeInput = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-startdate-row")/id("event-grid-startdate-picker-box")/'
@@ -104,17 +104,17 @@ var testMultiWeekView = function() {
     + '[0]/{"label":"' + calendar + '"}'));
 
   // save
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // if it was created successfully, it can be opened
   controller.waitForElement(new elementslib.Lookup(controller.window.document, eventBox));
   controller.doubleClick(new elementslib.Lookup(controller.window.document, eventBox));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // change title and save changes
   let titmeTextBox = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})');
   event.waitForElement(titmeTextBox);
   event.type(titmeTextBox, title2);
@@ -126,13 +126,13 @@ var testMultiWeekView = function() {
   controller.waitForElement(eventName);
   controller.assertValue(eventName, title2);
 
   // delete event
   controller.click(new elementslib.Lookup(controller.window.document, eventBox));
   controller.keypress(new elementslib.ID(controller.window.document, "multiweek-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, eventBox));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/views/testTaskView.js
+++ b/calendar/test/mozmill/views/testTaskView.js
@@ -9,17 +9,17 @@ var sleep = 500;
 var calendar = "Mozmill";
 var title = "Task";
 var description = "1. Do A\n2. Do B";
 var percentComplete = "50";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 // mozmill doesn't support trees yet, therefore completed checkbox and line-through style are not
 // checked
 var testTaskView = function() {
   // paths
   let taskView = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/'
     + 'id("calendarDisplayDeck")/id("calendar-task-box")/';
@@ -70,23 +70,23 @@ var testTaskView = function() {
   // last added task is automatically selected so verify detail window data
   controller.assertJSProperty(new elementslib.ID(controller.window.document,
     "calendar-task-details-title"), "textContent", title);
 
   // open added task
   // doubleclick on completion checkbox is ignored as opening action, so don't click at immediate
   // left where the checkbox is located
   controller.doubleClick(new elementslib.Lookup(controller.window.document, treeChildren), 50, 0);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let task = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // verify calendar
   task.waitForElement(new elementslib.Lookup(task.window.document, taskDialog
     + 'id("event-grid-category-color-row")/id("event-grid-category-box")/id("item-calendar")/[0]/'
-    + '{"selected":"true","label":"' + calendar + '"}'))
+    + '{"selected":"true","label":"' + calendar + '"}'));
 
   // add description, mark needs action and add percent complete
   task.type(new elementslib.Lookup(task.window.document, taskDialog
     + 'id("event-grid-description-row")/id("item-description")/'
     + 'anon({"class":"textbox-input-box"})/anon({"anonid":"input"})'),
     description);
   task.click(new elementslib.ID(task.window.document, "todo-status-needsaction-menuitem"));
 
@@ -99,17 +99,17 @@ var testTaskView = function() {
   task.type(new elementslib.Lookup(task.window.document, taskDialog
     + 'id("event-grid-todo-status-row")/id("event-grid-todo-status-picker-box")/'
     + 'id("percent-complete-textbox")/anon({"class":"textbox-input-box numberbox-input-box"})/'
     + 'anon({"anonid":"input"})'),
     percentComplete);
 
   // save
   task.click(new elementslib.ID(task.window.document, "button-save"));
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0});
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length == 0;});
 
   // verify description and status in details pane
   controller.assertValue(new elementslib.Lookup(controller.window.document, taskView
     + '{"flex":"1"}/id("calendar-task-details-container")/id("calendar-task-details-description")/'
     + 'anon({"class":"textbox-input-box"})/anon({"anonid":"input"})'),
     description);
   let status = utils.getProperty("chrome://calendar/locale/calendar.properties",
     "taskDetailsStatusNeedsAction");
@@ -152,13 +152,13 @@ var testTaskView = function() {
   toolTipNode.ownerDocument.defaultView.showToolTip(toolTipNode, taskTreeNode.getTaskAtRow(0));
   controller.assertJS(toolTipStatus.getNode().textContent.toLowerCase() == status.toLowerCase());
 
   // delete task, verify
   controller.click(new elementslib.ID(controller.window.document, "task-context-menu-delete"));
   controller.click(new elementslib.ID(controller.window.document, "calendar-delete-task-button"));
   let countAfterDelete = taskTreeNode.mTaskArray.length;
   controller.assertJS(countAfter - 1 == countAfterDelete);
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/mozmill/views/testWeekView.js
+++ b/calendar/test/mozmill/views/testWeekView.js
@@ -8,17 +8,17 @@ var sleep = 500;
 var calendar = "Mozmill";
 var title1 = "Week View Event";
 var title2 = "Week View Event Changed";
 var desc = "Week View Event Description";
 
 var setupModule = function(module) {
   controller = mozmill.getMail3PaneController();
   calUtils.createCalendar(controller, calendar);
-}
+};
 
 var testWeekView = function() {
   let dateService = Components.classes["@mozilla.org/intl/scriptabledateformat;1"]
                               .getService(Components.interfaces.nsIScriptableDateFormat);
   // paths
   let miniMonth = '/id("messengerWindow")/id("tabmail-container")/id("tabmail")/'
     + 'id("tabpanelcontainer")/id("calendarTabPanel")/id("calendarContent")/id("ltnSidebar")/'
     + 'id("minimonth-pane")/{"align":"center"}/id("calMinimonthBox")/id("calMinimonth")/';
@@ -51,24 +51,24 @@ var testWeekView = function() {
   // pick day
   controller.waitThenClick(new elementslib.Lookup(controller.window.document, miniMonth
     + 'anon({"anonid":"minimonth-calendar"})/[1]/{"value":"1"}'));
 
   // verify date
   let day = new elementslib.Lookup(controller.window.document, weekView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"labelbox"})/anon({"anonid":"labeldaybox"})/'
     + '{"selected":"true"}');
-  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101"});
+  controller.waitFor(function() {return day.getNode().mDate.icalString == "20090101";});
 
   // create event at 8 AM
   // Thursday of 2009-01-01 is 4th with default settings
   controller.doubleClick(new elementslib.Lookup(controller.window.document, weekView
     + 'anon({"anonid":"mainbox"})/anon({"anonid":"scrollbox"})/anon({"anonid":"daybox"})/'
     + '[4]/anon({"anonid":"boxstack"})/anon({"anonid":"bgbox"})/[8]'), 1, 1);
-  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // check that the start time is correct
   let startTimeInput = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-startdate-row")/id("event-grid-startdate-picker-box")/'
     + 'id("event-starttime")/anon({"anonid":"hbox"})/anon({"anonid":"time-picker"})/'
     + 'anon({"class":"timepicker-box-class"})/anon({"class":"timepicker-text-class"})/'
     + 'anon({"flex":"1"})/anon({"anonid":"input"})');
@@ -96,17 +96,17 @@ var testWeekView = function() {
   event.select(new elementslib.ID(event.window.document, "item-calendar"), null, calendar);
 
   // save
   event.click(new elementslib.ID(event.window.document, "button-save"));
 
   // if it was created successfully, it can be opened
   controller.waitForElement(new elementslib.Lookup(controller.window.document, eventBox));
   controller.doubleClick(new elementslib.Lookup(controller.window.document, eventBox));
-  controller.waitFor(function() {return utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
+  controller.waitFor(function() {return utils.getWindows("Calendar:EventDialog").length > 0;}, sleep);
   event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
   // change title and save changes
   let titleTextBox = new elementslib.Lookup(event.window.document, eventDialog
     + 'id("event-grid-title-row")/id("item-title")/anon({"class":"textbox-input-box"})/'
     + 'anon({"anonid":"input"})');
   event.waitForElement(titleTextBox);
   event.type(titleTextBox, title2);
@@ -120,13 +120,13 @@ var testWeekView = function() {
   controller.waitForElement(eventName);
   controller.assertJSProperty(eventName, "textContent", title2);
 
   // delete event
   controller.click(new elementslib.Lookup(controller.window.document, eventBox));
   controller.keypress(new elementslib.ID(controller.window.document, "week-view"),
     "VK_DELETE", {});
   controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, eventBox));
-}
+};
 
 var teardownTest = function(module) {
   calUtils.deleteCalendars(controller, calendar);
-}
+};
--- a/calendar/test/unit/test_alarm.js
+++ b/calendar/test/unit/test_alarm.js
@@ -184,17 +184,17 @@ function test_audio_alarm() {
 
     dump("Done\n");
 }
 
 function test_custom_alarm() {
     dump("Testing X-SMS (custom) alarms...");
     let alarm = cal.createAlarm();
     // Set ACTION to a custom value, make sure this was not rejected
-    alarm.action = "X-SMS"
+    alarm.action = "X-SMS";
     equal(alarm.action, "X-SMS");
 
     // There is no restriction on DESCRIPTION for custom alarms
     alarm.description = "description";
     equal(alarm.description, "description");
 
     // There is no restriction on SUMMARY for custom alarms
     alarm.summary = "summary";
@@ -303,17 +303,17 @@ function test_xprop() {
     ok(!alarm.hasProperty("X-PROP"));
     equal(alarm.getProperty("X-PROP"), null);
 
     // also check X-MOZ-LASTACK prop
     let dt = cal.createDateTime();
     alarm.setProperty("X-MOZ-LASTACK", dt.icalString);
     alarm.action = "DISPLAY";
     alarm.description = "test";
-    alarm.related = Ci.calIAlarm.ALARM_RELATED_START
+    alarm.related = Ci.calIAlarm.ALARM_RELATED_START;
     alarm.offset = createDuration("-PT5M");
     ok(alarm.icalComponent.serializeToICS().includes(dt.icalString));
 
     alarm.deleteProperty("X-MOZ-LASTACK");
     ok(!alarm.icalComponent.serializeToICS().includes(dt.icalString));
     dump("Done\n");
 }
 
@@ -321,17 +321,17 @@ function test_dates() {
     dump("Testing alarm dates...");
     let passed;
     // Initial value
     let alarm = cal.createAlarm();
     equal(alarm.alarmDate, null);
     equal(alarm.offset, null);
 
     // Set an offset and check it
-    alarm.related = Ci.calIAlarm.ALARM_RELATED_START
+    alarm.related = Ci.calIAlarm.ALARM_RELATED_START;
     let offset = createDuration("-PT5M");
     alarm.offset = offset;
     equal(alarm.alarmDate, null);
     equal(alarm.offset, offset);
     try {
         alarm.alarmDate = createDateTime();
         passed = false;
     } catch (e) {
@@ -442,17 +442,17 @@ function test_clone() {
     newAlarm = newAlarm.clone();
     ok(newAlarm.isMutable);
 
     // Check if item is still the same
     // TODO This is not quite optimal, maybe someone can find a better way to do
     // the comparisons.
     for (let prop in propMap) {
         if (prop == "item") {
-            equal(alarm.item.icalString, newAlarm.item.icalString)
+            equal(alarm.item.icalString, newAlarm.item.icalString);
         } else {
             if ((alarm[prop] instanceof Ci.nsISupports &&
                  alarm[prop].icalString != newAlarm[prop].icalString) ||
                 !(alarm[prop] instanceof Ci.nsISupports) &&
                   alarm[prop] != newAlarm[prop]) {
                 do_throw(prop + " differs, " + alarm[prop] + " == " + newAlarm[prop]);
             }
         }
@@ -492,17 +492,17 @@ function test_serialize() {
     // most checks done by other tests, these don't fit into categories
     let alarm = cal.createAlarm();
     let srv = cal.getIcsService();
 
     throws(function() {
         alarm.icalComponent = srv.createIcalComponent("BARF");
     }, /0x80070057/, "Invalid Argument");
 
-    function addProp(k, v) { let p = srv.createIcalProperty(k); p.value = v; comp.addProperty(p) }
+    function addProp(k, v) { let p = srv.createIcalProperty(k); p.value = v; comp.addProperty(p); }
     function addActionDisplay() { addProp("ACTION", "DISPLAY"); }
     function addActionEmail() { addProp("ACTION", "EMAIL"); }
     function addTrigger() { addProp("TRIGGER", "-PT15M"); }
     function addDescr() { addProp("DESCRIPTION", "TEST"); }
     function addDuration() { addProp("DURATION", "-PT15M"); }
     function addRepeat() { addProp("REPEAT", "1"); }
     function addAttendee() { addProp("ATTENDEE", "mailto:horst"); }
     function addAttachment() { addProp("ATTACH", "data:yeah"); }
--- a/calendar/test/unit/test_alarmutils.js
+++ b/calendar/test/unit/test_alarmutils.js
@@ -65,17 +65,17 @@ add_task(function* test_setDefaultValues
 });
 
 add_task(function* test_setDefaultValues_tasks() {
     let item, alarm;
     let calnow = cal.now;
     let nowDate = cal.createDateTime("20150815T120000");
     cal.now = function() {
       return nowDate;
-    }
+    };
 
     Preferences.set("calendar.alarms.onfortodos", 1);
     Preferences.set("calendar.alarms.todoalarmunit", "hours");
     Preferences.set("calendar.alarms.todoalarmlen", 60);
     item = cal.createTodo();
     equal(item.entryDate, null);
     cal.alarms.setDefaultValues(item);
     alarm = item.getAlarms({})[0];
--- a/calendar/test/unit/test_attendee.js
+++ b/calendar/test/unit/test_attendee.js
@@ -86,34 +86,34 @@ function test_values() {
     // Testing cascaded immutability (event -> attendee)
     event.makeImmutable();
     testImmutability(a2, properties);
 
     // Testing cloning
     var ec = event.clone();
     var clonedatts = ec.getAttendees({});
     var atts = event.getAttendees({});
-    equal(atts.length, clonedatts.length)
+    equal(atts.length, clonedatts.length);
 
     for (let i = 0; i < clonedatts.length; i++) {
         // The attributes should not be equal
         notEqual(atts[i], clonedatts[i]);
         // But the ids should
-        equal(atts[i].id, clonedatts[i].id)
+        equal(atts[i].id, clonedatts[i].id);
     }
 
     // Make sure organizers are also cloned correctly
     let a3 = cal.createAttendee();
     a3.id = "horst";
     a3.isOrganizer = true;
     let a4 = a3.clone();
 
-    ok(a4.isOrganizer)
+    ok(a4.isOrganizer);
     a3.isOrganizer = false;
-    ok(a4.isOrganizer)
+    ok(a4.isOrganizer);
 }
 
 function test_serialize() {
     let a = cal.createAttendee();
 
     throws(function() {
         a.icalProperty;
     }, /Component not initialized/);
--- a/calendar/test/unit/test_calmgr.js
+++ b/calendar/test/unit/test_calmgr.js
@@ -147,17 +147,17 @@ add_test(function test_calobserver() {
     resetCounters();
     calmgr.registerCalendar(memory);
     calmgr.registerCalendar(memory2);
     calmgr.addCalendarObserver(allobs);
     memory.addObserver(calobs);
 
     // Add an item
     let item = cal.createEvent();
-    item.id = cal.getUUID()
+    item.id = cal.getUUID();
     item.startDate = cal.now();
     item.endDate = cal.now();
     memory.addItem(item, null);
     checkCounters(1, 0, 0);
 
     // Modify the item
     let newItem = item.clone();
     newItem.title = "title";
@@ -259,17 +259,17 @@ add_test(function test_calprefs() {
     // Before checking the value, reinitialize the memory calendar with the
     // same id to make sure the pref value isn't just cached
     memory = calmgr.createCalendar("memory", Services.io.newURI("moz-memory-calendar://", null, null));
     memory.id = memid;
 
     // First test the standard types
     prop = memory.getProperty("stringpref");
     equal(typeof prop, "string");
-    equal(prop, "abc")
+    equal(prop, "abc");
 
     prop = memory.getProperty("boolpref");
     equal(typeof prop, "boolean");
     equal(prop, true);
 
     prop = memory.getProperty("intpref");
     equal(typeof prop, "number");
     equal(prop, 123);
@@ -286,17 +286,17 @@ add_test(function test_calprefs() {
     // Check if changing pref types works. We need to reset the calendar again
     // because retrieving the value just cached it again.
     memory = calmgr.createCalendar("memory", Services.io.newURI("moz-memory-calendar://", null, null));
     memory.id = memid;
 
     calmgr.setCalendarPref_(memory, "boolpref", "kinda true");
     prop = memory.getProperty("boolpref");
     equal(typeof prop, "string");
-    equal(prop, "kinda true")
+    equal(prop, "kinda true");
 
     // Check if unsetting a pref works
     memory.setProperty("intpref", null);
     memory = calmgr.createCalendar("memory", Services.io.newURI("moz-memory-calendar://", null, null));
     memory.id = memid;
     prop = memory.getProperty("intpref");
     ok(prop === null);
 
--- a/calendar/test/unit/test_deleted_items.js
+++ b/calendar/test/unit/test_deleted_items.js
@@ -51,17 +51,17 @@ add_task(function* test_deleted_items() 
 
     // We need to stop time so we have something to compare with.
     let referenceDate = cal.createDateTime("20120726T112045"); referenceDate.timezone = cal.calendarDefaultTimezone();
     let futureDate = cal.createDateTime("20380101T000000"); futureDate.timezone = cal.calendarDefaultTimezone();
     let useFutureDate = false;
     let oldNowFunction = cal.now;
     cal.now = function test_specific_now() {
         return (useFutureDate ? futureDate : referenceDate).clone();
-    }
+    };
 
     // Deleting an item should trigger it being marked for deletion.
     yield check_delmgr_call(() => memory.deleteItem(item, null));
 
     // Now check if it was deleted at our reference date.
     let deltime = delmgr.getDeletedDate(item.id);
     notEqual(deltime, null);
     equal(deltime.compare(referenceDate), 0);
--- a/calendar/test/unit/test_freebusy_service.js
+++ b/calendar/test/unit/test_freebusy_service.js
@@ -30,17 +30,17 @@ function test_found() {
           aListener.onResult(null, []);
         }
     };
 
     let provider2 = {
         id: 2,
         called: false,
         getFreeBusyIntervals: function(aCalId, aStart, aEnd, aTypes, aListener) {
-            ok(!this.called)
+            ok(!this.called);
             this.called = true;
 
             let interval = new cal.FreeBusyInterval(aCalId, cIFI.BUSY, aStart, aEnd);
             aListener.onResult(null, [interval]);
         }
     };
     provider2.wrappedJSObject = provider2;
 
--- a/calendar/test/unit/test_gdata_provider.js
+++ b/calendar/test/unit/test_gdata_provider.js
@@ -468,17 +468,17 @@ function findKey(container, key, searchK
         }
     }
 
     let foundItem = foundIndex == -1 ? null : container[foundIndex];
     return [foundIndex, foundItem];
 }
 
 function generateID() {
-    let c = "abcdefghijklmnopqrstuvwxyz0123456789"
+    let c = "abcdefghijklmnopqrstuvwxyz0123456789";
     let s = "";
     for (let i = 26; i; i--) {
       s += c[Math.floor(Math.random() * c.length)];
     }
     return s;
 }
 
 function getAllMeta(calendar) {
@@ -748,30 +748,30 @@ add_task(function* test_always_readOnly(
        "organizer": gServer.creator,
        "start": { "dateTime": "2006-06-10T18:00:00+02:00" },
        "end": {"dateTime": "2006-06-10T20:00:00+02:00" },
        "iCalUID": "go6ijb0b46hlpbu4eeu92njevo@google.com"
     }];
     gServer.calendarListData.accessRole = "freeBusyReader";
     let client = yield gServer.getClient();
     let pclient = cal.async.promisifyCalendar(client);
-    ok(client.readOnly)
+    ok(client.readOnly);
     client.readOnly = false;
-    ok(client.readOnly)
+    ok(client.readOnly);
 
     let items = yield pclient.getAllItems();
     equal(items.length, 1);
     notEqual(items[0].title, "New Event");
     gServer.resetClient(client);
 
     gServer.calendarListData.accessRole = "reader";
     client = yield gServer.getClient();
-    ok(client.readOnly)
+    ok(client.readOnly);
     client.readOnly = false;
-    ok(client.readOnly)
+    ok(client.readOnly);
     gServer.resetClient(client);
 });
 
 add_task(function* test_reset_sync() {
     gServer.tasks = [
        {
         "kind": "tasks#task",
         "id": "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU",
@@ -1024,28 +1024,28 @@ add_task(function* test_addModifyDeleteI
     notEqual(addedEvent.id, null);
     equal(addedEvent.organizer.id, "mailto:xpcshell@example.com");
 
     let items = yield pclient.getAllItems();
     equal(items.length, 1);
     equal(items[0].id, addedEvent.id);
     equal(items[0].organizer.id, "mailto:xpcshell@example.com");
 
-    equal(gServer.events.length, 1)
+    equal(gServer.events.length, 1);
     equal(gServer.tasks.length, 0);
 
     // Add a task
     let addedTask = yield pclient.adoptItem(task);
     notEqual(addedTask.id, null);
 
     items = yield pclient.getAllItems();
     equal(items.length, 2);
     equal(items[1].id, addedTask.id);
 
-    equal(gServer.events.length, 1)
+    equal(gServer.events.length, 1);
     equal(gServer.tasks.length, 1);
 
     // Modify an event
     let newEvent = items[0].clone();
     newEvent.title = "changed";
 
     let modifiedEvent = yield pclient.modifyItem(newEvent, items[0]);
     equal(modifiedEvent.title, "changed");
@@ -1371,17 +1371,17 @@ add_task(function* test_metadata() {
         "updated": "2014-09-08T16:30:27.000Z",
         "selfLink": gServer.baseUri + "/tasks/v1/lists/MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDow/tasks/MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU",
         "notes": "description"
     }];
 
     let idToEtag = {
         "go6ijb0b46hlpbu4eeu92njevo@google.com": '"1"',
         "MTEyMDE2MDE5NzE0NjYzMDk4ODI6MDo0MDI1NDg2NjU": '"2"'
-    }
+    };
 
     let client = yield gServer.getClient();
     let offline = client.wrappedJSObject.mCachedCalendar;
     let pclient = cal.async.promisifyCalendar(client.wrappedJSObject);
 
     // Check initial metadata
     let items = yield pclient.getAllItems();
     let meta = getAllMeta(offline);
@@ -1553,17 +1553,17 @@ add_task(function* test_conflict_modify(
     MockConflictPrompt.overwrite = true;
     let newItem = item.clone();
     newItem.title = "local change";
     gServer.events[0].etag = '"2"';
     gServer.events[0].summary = "remote change";
     let modifiedItem = yield pclient.modifyItem(newItem, item);
     item = (yield pclient.getAllItems())[0];
     equal(gServer.events[0].summary, "local change");
-    notEqual(gServer.events[0].etag, '"2"')
+    notEqual(gServer.events[0].etag, '"2"');
     equal(item.title, "local change");
     equal(modifiedItem.title, "local change");
     equal(gServer.events.length, 1);
 
     // Case #2: Modified on server, modify locally, don't overwrite conflict
     MockConflictPrompt.overwrite = false;
     gServer.events[0].etag = '"3"';
     gServer.events[0].summary = "remote change";
@@ -1576,17 +1576,17 @@ add_task(function* test_conflict_modify(
             throw e;
         }
     }
 
     yield gServer.waitForLoad(client);
 
     item = (yield pclient.getAllItems())[0];
     equal(gServer.events[0].summary, "remote change");
-    equal(gServer.events[0].etag, '"3"')
+    equal(gServer.events[0].etag, '"3"');
     equal(item.title, "remote change");
 
     // Case #3: Modified on server, delete locally, don't overwrite conflict
     MockConflictPrompt.overwrite = false;
     gServer.events[0].etag = '"4"';
     gServer.events[0].summary = "remote change";
     try {
         yield pclient.deleteItem(item);
@@ -1597,17 +1597,17 @@ add_task(function* test_conflict_modify(
             throw e;
         }
     }
 
     yield gServer.waitForLoad(client);
 
     item = (yield pclient.getAllItems())[0];
     equal(gServer.events[0].summary, "remote change");
-    equal(gServer.events[0].etag, '"4"')
+    equal(gServer.events[0].etag, '"4"');
     equal(item.title, "remote change");
 
     // Case #4: Modified on server, delete locally, overwrite conflict
     MockConflictPrompt.overwrite = true;
     gServer.events[0].etag = '"5"';
     gServer.events[0].summary = "remote change";
     yield pclient.deleteItem(item);
     item = (yield pclient.getAllItems())[0];
@@ -1643,17 +1643,17 @@ add_task(function* test_conflict_delete(
     // Case #1: Deleted on server, modify locally, overwrite conflict
     MockConflictPrompt.overwrite = true;
     gServer.events = [];
     let newItem = item.clone();
     newItem.title = "local change";
     let modifiedItem = yield pclient.modifyItem(newItem, item);
     item = (yield pclient.getAllItems())[0];
     equal(gServer.events[0].summary, "local change");
-    notEqual(gServer.events[0].etag, '"2"')
+    notEqual(gServer.events[0].etag, '"2"');
     equal(item.title, "local change");
     equal(modifiedItem.title, "local change");
     equal(gServer.events.length, 1);
 
     // Case #2: Deleted on server, modify locally, don't overwrite conflict
     MockConflictPrompt.overwrite = false;
     gServer.events = [];
     try {
--- a/calendar/test/unit/test_hashedarray.js
+++ b/calendar/test/unit/test_hashedarray.js
@@ -14,17 +14,17 @@ function run_test() {
  * Helper function to create an item that has a sensible hash id, with the given
  * title identification.
  *
  * @param ident     The title to identify the item.
  * @return          The created item.
  */
 function hashedCreateItem(ident) {
     let item = cal.createEvent();
-    item.calendar = { id: "test" }
+    item.calendar = { id: "test" };
     item.id = cal.getUUID();
     item.title = ident;
     return item;
 }
 
 /**
  * Comparator function to sort the items by their title
  *
@@ -47,17 +47,17 @@ function titleComptor(a, b) {
  * items array.
  *
  * @param har           The Hashed Array
  * @param testItems     The array of test items
  * @param itemAccessor  The accessor func to retrieve the items
  * @throws Exception    If the arrays are not the same.
  */
 function checkConsistancy(har, testItems, itemAccessor) {
-    itemAccessor = itemAccessor || function(o) { return o; }
+    itemAccessor = itemAccessor || function(o) { return o; };
     for (let idx in testItems) {
         let ti = itemAccessor(testItems[idx]);
         equal(itemAccessor(har.itemByIndex(idx)).title,
                     ti.title);
         equal(itemAccessor(har.itemById(ti.hashId)).title,
                     ti.title);
         equal(har.indexOf(testItems[idx]), idx);
     }
@@ -85,17 +85,17 @@ function dumpArray(ar) {
  * @param itemAccessor      (optional) The function to access the item for an
  *                            array element.
  * @param itemCreator       (optional) Function to create a new item for the
  *                            array.
  */
 function testRemoveModify(har, testItems, postprocessFunc, itemAccessor, itemCreator) {
     postprocessFunc = postprocessFunc || function(a, b) { return [a, b]; };
     itemCreator = itemCreator || (title => hashedCreateItem(title));
-    itemAccessor = itemAccessor || function(o) { return o; }
+    itemAccessor = itemAccessor || function(o) { return o; };
 
     // Now, delete the second item and check again
     har.removeById(itemAccessor(testItems[1]).hashId);
     testItems.splice(1, 1);
     [har, testItems] = postprocessFunc(har, testItems);
 
     checkConsistancy(har, testItems, itemAccessor);
 
--- a/calendar/test/unit/test_ics_parser.js
+++ b/calendar/test/unit/test_ics_parser.js
@@ -42,17 +42,17 @@ function test_props_comps() {
     equal(comps[0].componentType, "VJOURNAL");
     equal(comps[0].location, "BEFORE TIME");
 }
 
 function test_failures() {
     let parser = Components.classes["@mozilla.org/calendar/ics-parser;1"]
                            .createInstance(Components.interfaces.calIIcsParser);
 
-    do_test_pending()
+    do_test_pending();
     parser.parseString("BOGUS", null, {
         onParsingComplete: function(rc, parser) {
             dump("Note: The previous error message is expected ^^\n");
             equal(rc, Components.results.NS_ERROR_FAILURE);
             do_test_finished();
         }
     });
 
@@ -191,17 +191,17 @@ function test_roundtrip() {
 
     items = parser.getItems({});
     let comps = parser.getComponents({});
     let props = parser.getProperties({});
     equal(items.length, 1);
     equal(comps.length, 1);
     equal(props.length, 1);
 
-    let everything = items[0].icalString.split("\r\n").concat(comps[0].serializeToICS().split("\r\n"))
+    let everything = items[0].icalString.split("\r\n").concat(comps[0].serializeToICS().split("\r\n"));
     everything.push((props[0].icalString.split("\r\n"))[0]);
     everything.sort();
 
     equal(everything.join("\r\n"), str.split("\r\n").concat([""]).sort().join("\r\n"));
 
     // Test serializeToStream/parseFromStream
     parser = Components.classes["@mozilla.org/calendar/ics-parser;1"]
                        .createInstance(Components.interfaces.calIIcsParser);
--- a/calendar/test/unit/test_recur.js
+++ b/calendar/test/unit/test_recur.js
@@ -533,17 +533,17 @@ function test_interface() {
     newRItems[1].date = cal.createDateTime("20020404T114500Z");
 
     rinfo.setRecurrenceItems(2, newRItems);
     let itemString = item.icalString;
 
     equal(itemString.match(/RRULE:[A-Z=,]*FREQ=WEEKLY/), null);
     equal(itemString.match(/EXDATE[A-Z;=-]*:20020403T114500Z/, null));
     equal(itemString.match(/RDATE[A-Z;=-]*:20020401T114500Z/, null));
-    notEqual(itemString.match(/RRULE:[A-Z=,]*FREQ=DAILY/), null)
+    notEqual(itemString.match(/RRULE:[A-Z=,]*FREQ=DAILY/), null);
     notEqual(itemString.match(/EXDATE[A-Z;=-]*:20020404T114500Z/, null));
 
     // This may be an implementation detail, but we don't want this breaking
     rinfo.wrappedJSObject.ensureSortedRecurrenceRules();
     equal(rinfo.wrappedJSObject.mNegativeRules[0].icalProperty.icalString, newRItems[1].icalProperty.icalString);
     equal(rinfo.wrappedJSObject.mPositiveRules[0].icalProperty.icalString, newRItems[0].icalProperty.icalString);
 
     // countRecurrenceItems
@@ -597,17 +597,17 @@ function test_interface() {
                           "RRULE:FREQ=WEEKLY;BYDAY=TU,WE\n");
     ok(!item2.recurrenceInfo.isFinite);
 
     // removeOccurrenceAt/restoreOccurreceAt
     let occDate1 = cal.createDateTime("20020403T114500Z");
     let occDate2 = cal.createDateTime("20020404T114500Z");
     rinfo.removeOccurrenceAt(occDate1);
     ok(item.icalString.includes("EXDATE"));
-    rinfo.restoreOccurrenceAt(occDate1)
+    rinfo.restoreOccurrenceAt(occDate1);
     ok(!item.icalString.includes("EXDATE"));
 
     // modifyException / getExceptionFor
     let occ1 = rinfo.getOccurrenceFor(occDate1);
     occ1.startDate = cal.createDateTime("20020401T114500");
     rinfo.modifyException(occ1, true);
     ok(rinfo.getExceptionFor(occDate1) != null);
 
@@ -665,26 +665,26 @@ function test_rrule_interface() {
     equal(rrule.type, "MONTHLY");
     equal(rrule.icalString.match(/FREQ=MONTHLY/), "FREQ=MONTHLY");
 
     // untilDate (without UTC)
     rrule.count = 3;
     let untilDate = cal.createDateTime();
     untilDate.timezone = cal.getTimezoneService().getTimezone("Europe/Berlin");
     rrule.untilDate = untilDate;
-    ok(!rrule.isByCount)
+    ok(!rrule.isByCount);
     throws(() => rrule.count, /0x80004005/);
     equal(rrule.untilDate.icalString, untilDate.getInTimezone(cal.UTC()).icalString);
 
     // untilDate (with UTC)
     rrule.count = 3;
     untilDate = cal.createDateTime();
     untilDate.timezone = cal.UTC();
     rrule.untilDate = untilDate;
-    ok(!rrule.isByCount)
+    ok(!rrule.isByCount);
     throws(() => rrule.count, /0x80004005/);
     equal(rrule.untilDate.icalString, untilDate.icalString);
 }
 
 function test_startdate_change() {
     // Setting a start date if its missing shouldn't throw
     let item = makeEvent("DTEND:20020402T124500Z\r\n" +
                          "RRULE:FREQ=DAILY\r\n");
@@ -767,17 +767,17 @@ function test_failures() {
     throws(() => rinfo.deleteRecurrenceItem(ritem), /Illegal value/, "Invalid Argument");
     throws(() => rinfo.insertRecurrenceItemAt(ritem, -1), /Illegal value/, "Invalid Argument");
     throws(() => rinfo.insertRecurrenceItemAt(ritem, 2), /Illegal value/, "Invalid Argument");
     throws(() => rinfo.restoreOccurrenceAt(cal.createDateTime("20080101T010101")), /Illegal value/, "Invalid Argument");
     throws(() => cal.createRecurrenceInfo().isFinite, /Component not initialized/);
 
     // modifyException with a different parent item
     let occ = rinfo.getOccurrenceFor(cal.createDateTime("20120102T114500Z"));
-    occ.calendar = {}
+    occ.calendar = {};
     occ.id = "1234";
     occ.parentItem = occ;
     throws(() => rinfo.modifyException(occ, true), /Illegal value/, "Invalid Argument");
 
     occ = rinfo.getOccurrenceFor(cal.createDateTime("20120102T114500Z"));
     occ.recurrenceId = null;
     throws(() => rinfo.modifyException(occ, true), /Illegal value/, "Invalid Argument");
 
--- a/calendar/test/unit/test_relation.js
+++ b/calendar/test/unit/test_relation.js
@@ -9,17 +9,17 @@ function run_test() {
     // Create Items
     let e1 = cal.createEvent();
     let e2 = cal.createEvent();
 
     // Testing relation set/get.
     let properties = {
         relType: "PARENT",
         relId: e2.id
-    }
+    };
 
     for (let [property, value] in Iterator(properties)) {
         r1[property] = value;
         equal(r1[property], value);
     }
 
     // Add relation to event
     e1.addRelation(r1);
--- a/calendar/test/unit/test_rfc3339_parser.js
+++ b/calendar/test/unit/test_rfc3339_parser.js
@@ -28,17 +28,17 @@ function really_run_test() {
             timezone: aExpectedDateTime[6],
             isDate: aExpectedDateTime[7]
         };
         for (let prop in expectedDateProps) {
             do_print("Checking prop: " + prop);
             // Object comparison fails with ical.js, and we only want to check
             // that we have the right timezone.
             if (prop == "timezone") {
-                equal(dateTime[prop].tzid, expectedDateProps[prop].tzid)
+                equal(dateTime[prop].tzid, expectedDateProps[prop].tzid);
             } else {
                 equal(dateTime[prop], expectedDateProps[prop]);
             }
         }
 
         // Test round tripping that dateTime object back to an RFC 3339 string.
         let rfc3339Date = cal.toRFC3339(dateTime);
 
--- a/calendar/test/unit/test_search_service.js
+++ b/calendar/test/unit/test_search_service.js
@@ -23,17 +23,17 @@ function test_found() {
         id: 1,
         searchForCalendars: function() {}
     };
 
     let provider2 = {
         id: 2,
         called: false,
         searchForCalendars: function(aStr, aHint, aMax, aListener) {
-            ok(!this.called)
+            ok(!this.called);
             this.called = true;
 
             equal(aStr, "str");
             equal(aHint, HINT_EXACT_MATCH);
             equal(aMax, 0);
 
             let mockCalendar = {
                 id: "test"
--- a/calendar/test/unit/test_utils.js
+++ b/calendar/test/unit/test_utils.js
@@ -179,12 +179,12 @@ function test_sameDay() {
 }
 
 function test_binarySearch() {
     let arr = [2, 5, 7, 9, 20, 27, 34, 39, 41, 53, 62];
     equal(binarySearch(arr, 27), 5); // Center
     equal(binarySearch(arr, 2), 0); // Left most
     equal(binarySearch(arr, 62), 11); // Right most
 
-    equal(binarySearch([5], 5), 1) // One element found
-    equal(binarySearch([1], 0), 0) // One element insert left
-    equal(binarySearch([1], 2), 1) // One element insert right
+    equal(binarySearch([5], 5), 1); // One element found
+    equal(binarySearch([1], 0), 0); // One element insert left
+    equal(binarySearch([1], 2), 1); // One element insert right
 }