     {
         var obj:Object = { dateItem:datePart, position:position };
         return obj;
+    }
+    
+    // identify the dateList item that has the longest width in DATE_AND_TIME mode    
+    private function findLongestDateItem():Object
+    {
+        if (!dayMonthDateFormatter)
+        {
+            dayMonthDateFormatter = new DateTimeFormatterEx();
+            dayMonthDateFormatter.dateTimeSkeletonPattern = DateTimeFormatterEx.DATESTYLE_MMMEEEd;
+        }
+        
+        var localeStr:String = getStyle("locale");
+        if (localeStr)
+            dayMonthDateFormatter.setStyle("locale", localeStr);
+        else
+            dayMonthDateFormatter.clearStyle("locale");
+        
+        // TODO: talk with the global team to make it much faster.
+        dateTimeFormatter.dateTimePattern =  dayMonthDateFormatter.getMonthPattern();
+        
+        var longestDateItem:Object;
+        var longestMonth:int = 0;
+        var labelWidth:Number = -1;
+        var maxWidth:int = 0;
+        var dateStr:String;
+        dateObj.date = 1;
+        
+        // find the longest month
+        for (var month:int = 0; month < 12; month++)
+        {
+            dateObj.month = month;
+            labelWidth = measureText(dateTimeFormatter.format(dateObj)).width;
+            if (labelWidth > maxWidth)
+            {
+                maxWidth = labelWidth;
+                longestMonth = month;
+            }
+        }
+        
+        dateObj.month = longestMonth;
+        maxWidth = 0;
+        
+        // find the longest dateList item
+        for (var date:int = 1; date <= 31; date++)
+        {
+            dateObj.date = date;
+            dateStr = dayMonthDateFormatter.format(dateObj);
+            labelWidth = measureText(dateStr).width;
+            if (labelWidth > maxWidth)
+            {
+                maxWidth = labelWidth;
+                longestDateItem = dateStr;
+            }
+        }
+        
+        return longestDateItem;
     }
   
     //----------------------------------------------------------------------------------------------

    
    private var refreshDateTimeFormatter:Boolean = true;
    
    // the internal DateTimeFormatter that provdies a set of extended functionalities
    private var dateTimeFormatterEx:DateTimeFormatterEx = new DateTimeFormatterEx();
    
    private var dateTimeFormatter:DateTimeFormatter = new DateTimeFormatter();
    
    private var dateObj:Date = new Date();
    private var use24HourTime:Boolean;
    
    //--------------------------------------------------------------------------
    //

        if (yearList && populateYearDataProvider)
        {
            yearList.dataProvider = generateYears(today);
            // yearList.dataProvider = new YearRangeList(localeStr, minDate.fullYear, maxDate.fullYear);
            
            yearList.typicalItem = getLongestLabel(yearList.dataProvider);
        }
