internal void OnPreviousClick()
{
if (DisplayMode == CalendarMode.Month && DisplayDate != null)
{
DateTime? d = DateTimeHelper.AddMonths(DateTimeHelper.DiscardDayTime(DisplayDate), -1);
if (d.HasValue)
{
if (!LastSelectedDate.HasValue || DateTimeHelper.CompareYearMonth(LastSelectedDate.Value, d.Value) != 0)
{
LastSelectedDate = d.Value;
}
DisplayDate = d.Value;
}
}
else
{
if (DisplayMode == CalendarMode.Year)
{
DateTime? d = DateTimeHelper.AddYears(new DateTime(SelectedMonth.Year, 1, 1), -1);
if (d.HasValue)
{
SelectedMonth = d.Value;
}
else
{
SelectedMonth = DateTimeHelper.DiscardDayTime(DisplayDateRangeStart);
}
}
else
{
Debug.Assert(DisplayMode == CalendarMode.Decade, "DisplayMode should be Decade!");
DateTime? d = DateTimeHelper.AddYears(new DateTime(SelectedYear.Year, 1, 1), -10);
if (d.HasValue)
{
int decade = Math.Max(1, DateTimeHelper.DecadeOfDate(d.Value));
SelectedYear = new DateTime(decade, 1, 1);
}
else
{
SelectedYear = DateTimeHelper.DiscardDayTime(DisplayDateRangeStart);
}
}
UpdateMonths();
}
}