diff --git a/mozilla/calendar/base/content/calendar-month-view.xml b/mozilla/calendar/base/content/calendar-month-view.xml
index d7c1a92870f..f6d6a0fef13 100644
--- a/mozilla/calendar/base/content/calendar-month-view.xml
+++ b/mozilla/calendar/base/content/calendar-month-view.xml
@@ -91,7 +91,7 @@
+ height="1px"/>
@@ -107,15 +107,9 @@
0)
- break;
+
+ // A binary search into the array. That's possible here, because the
+ // array is always sorted
+ function binarySearch(itemArray, low, high, newItem, comptor) {
+ // Are we done yet?
+ if (low == high) {
+ return low + (comptor(newItem, itemArray[low]) < 0 ? 0 : 1);
+ }
+
+ var mid = Math.floor(low + ((high - low) / 2));
+ var q = comptor(newItem, itemArray[mid]);
+ if (q > 0)
+ return binarySearch(itemArray, mid + 1, high, newItem, comptor);
+ else if (q < 0)
+ return binarySearch(itemArray, low, mid, newItem, comptor);
+ return mid;
}
- this.mItemData.splice(i, 0, newItem);
+
+ var newIndex;
+ if (this.mItemData.length == 0) {
+ newIndex = 0;
+ } else {
+ newIndex = binarySearch(this.mItemData, 0, this.mItemData.length - 1,
+ newItem, dayboxItemComparator);
+ }
+ this.mItemData.splice(newIndex, 0, newItem);
this.relayout();
]]>