public int getIndexForDay(CalendarDay day) {
   if (day == null) {
     return getCount() / 2;
   }
   if (minDate != null && day.isBefore(minDate)) {
     return 0;
   }
   if (maxDate != null && day.isAfter(maxDate)) {
     return getCount() - 1;
   }
   return rangeIndex.indexOf(day);
 }
 private CalendarDay getValidSelectedDate(CalendarDay date) {
   if (date == null) {
     return null;
   }
   if (minDate != null && minDate.isAfter(date)) {
     return minDate;
   }
   if (maxDate != null && maxDate.isBefore(date)) {
     return maxDate;
   }
   return date;
 }