         if (selectedDateModifiedByUser)
         {
             selectedDateModifiedByUser = false;
-            dispatchEvent(new Event(Event.CHANGE));
+            if (hasEventListener(Event.CHANGE))
+                dispatchEvent(new Event(Event.CHANGE));
         }
     }
     

                        tempDate = new Date(selectedDate.fullYear, newValue.data, 1);
                        cd = new CalendarDate(tempDate);
                        if (dateList.selectedItem.data > cd.numDaysInMonth)
                            newDate.date = cd.numDaysInMonth;
                    }
                    newDate.month = newValue.data;
                    break;

     */
    public function set selectedDate(value:Date):void
    {
        // no-op if null; there must always be a selectedDate
        if (value == null)
            return;
        
        // short-circuit if no change
        if (value.time == _selectedDate.time)
            return;
        
        _selectedDate = value;
