         else if (newMonth < oldMonth)
             event.detail = DateChooserEventDetail.PREVIOUS_MONTH;
     	dispatchEvent(event);
+    }
+    
+    /**
+     *  @private Takes a year and a month as well as an increment year and month value
+     *           and returns a new valid year/month.
+     */
+    static mx_internal function getNewIncrementDate(oldYear:int, oldMonth:int, deltaY:int, deltaM:int):Object
+    {
+        var newYear:int = oldYear + deltaY;
+        var newMonth:int = oldMonth + deltaM;
+
+        while (newMonth < 0)
+        {
+            newYear--;
+            newMonth += 12;
+        }
+
+        while (newMonth > 11)
+        {
+            newYear++;
+            newMonth -= 12;
+        }
+
+        return {month: newMonth, year: newYear};
     }
 
     /**

import mx.events.DateChooserEvent;
import mx.events.DateChooserEventDetail;
import mx.managers.IFocusManagerComponent;
import mx.managers.ISystemManager;
import mx.managers.SystemManager;
import mx.skins.halo.DateChooserIndicator;
import mx.styles.ISimpleStyleClient;


import flash.geom.Point;
import flash.text.TextLineMetrics;
import flash.ui.Keyboard;
import flash.utils.describeType;
import flash.utils.getQualifiedClassName;

import mx.core.IFlexDisplayObject;
import mx.core.IFlexModuleFactory;
import mx.core.IFontContextComponent;
