rem: displayEnd = gCalendarWindow.currentView.lastDateOfView; 
add: displayEnd = gCalendarWindow.currentView.endExDateOfView; 
context: function printCalendar() {  var ccalendar = getDisplayComposite();  var listener = {    mEventArray: new Array(),    onOperationComplete: function (aCalendar, aStatus, aOperationType, aId, aDateTime) {      printInitWindow(listener.mEventArray);     },    onGetResult: function (aCalendar, aStatus, aItemType, aDetail, aCount, aItems) {      for (var i = 0; i < aCount; i++) {        listener.mEventArray.push(aItems[i]);      }    }  };  var filter = ccalendar.ITEM_FILTER_TYPE_EVENT |                ccalendar.ITEM_FILTER_CLASS_OCCURRENCES;  switch( document.getElementById("view-field").value )  {    case 'currentview':    case '': //just in case      var displayStart = gCalendarWindow.currentView.displayStartDate;      var displayEnd = gCalendarWindow.currentView.displayEndDate;      //multiweek and month views call their display range something else      if(!displayStart) {        displayStart = gCalendarWindow.currentView.firstDateOfView;        displayEnd = gCalendarWindow.currentView.lastDateOfView;      }      ccalendar.getItems(filter, 0, jsDateToDateTime(displayStart), jsDateToDateTime(displayEnd), listener);      break;    case 'list' :      printInitWindow(gCalendarWindow.EventSelection.selectedEvents);      break;    case 'custom' :      var start = document.getElementById("start-date-picker").value;      var end = document.getElementById("end-date-picker").value;      ccalendar.getItems(filter, 0, jsDateToDateTime(start), jsDateToDateTime(end), listener);      break ;    default :      dump("Error : no case in printDialog.js::printCalendar()");  }}
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/2906bc9340d5d35cc8c44e9edf1a6d708914f6c1/printDialog.js/clean/calendar/resources/content/printDialog.js