             return list.getItemAt(idx);
         
         return null;
+    }
+    
+    // set textAlign on list based on position, listType, or typicalItem content type:
+    // left list => align right
+    // right list => align left
+    // HOUR list => align right
+    // MINUTE list => align left
+    // numeric or (numeric + text) => align right
+    // (text + numeric) => align left
+    // all other cases => align center
+    mx_internal function alignList(list:SpinnerList):void
+    {
+        // set outside alignments tight; set alignments for HOUR and MINUTE
+        if (list == listContainer.getElementAt(0))
+            list.setStyle("textAlign", "right");
+        else if (list == listContainer.getElementAt(listContainer.numElements - 1))
+            list.setStyle("textAlign", "left");
+        else if (list == hourList)
+            list.setStyle("textAlign", "right");
+        else if (list == minuteList)
+            list.setStyle("textAlign", "left");
+        else
+        {
+            var testString:String = list.typicalItem["label"];
+            if (testString == null)
+            {
+                // nothing to test; use default
+                list.setStyle("textAlign", "center");
+                return;
+            }
+            
+            var numericPattern:RegExp = /^\d+$/;
+            var numericWithTextRight:RegExp = /^\d+\D+$/;
+            var numericWithTextLeft:RegExp = /^\D+\d+$/;
+            if (numericPattern.test(testString) || numericWithTextRight.test(testString)) // e.g. ja-JP month
+                list.setStyle("textAlign", "right");
+            else if (numericWithTextLeft.test(testString))
+                list.setStyle("textAlign", "left");
+            else
+                list.setStyle("textAlign", "center"); // default
+        }
     }
     
     private function updateListsToSelectedDate(useAnimation:Boolean):void

                // set size to width of longest visible value
                dateList.typicalItem = getLongestLabel(dateList.dataProvider);
            }
        }
        if (hourList && populateHourDataProvider)
        {
            hourList.dataProvider = generateHours(use24HourTime);
            hourList.typicalItem = getLongestLabel(hourList.dataProvider);
        }
        if (minuteList && populateMinuteDataProvider)
        {
            minuteList.dataProvider = generateMinutes();
            minuteList.typicalItem = getLongestLabel(minuteList.dataProvider);
        }
        if (meridianList && populateMeridianDataProvider)
        {

            
            // set size
            monthList.typicalItem = getLongestLabel(monthList.dataProvider);
            
            alignList(monthList);
        }
        if (dateList && populateDateDataProvider)
        {
