The logic in parseDate:
7732: else if (year < 100)
7733: year += new Date().getFullYear() - new Date().getFullYear() % 100 +
7734: (year <= shortYearCutoff ? 0 : -100);
parses the date 1 Jan 0001 as 1 Jan 2001 because of the above logic, which uses the current century if no century is provided.
This makes life a bit difficult for me because, if the DatePicker acceptable range is set to 1 Mar 2000 -> 1 Mar 4000, then a date of 1 Jan 0001 is accepted as being within range, which causes the server-side validation to reject the date, but the client side accepts it. Users will have a lot of fun with this once they figure it out.
If other agree that this is a problem, then I propose that the current century is not used to deal with the auto-handling of missing centuries, or perhaps a switch be implemented to turn this century selection feature off.
EDIT: A simple enough fix is:
7732: else if (year < 100)
7733: if (format.indexOf('yy') == -1)
// *new* = Only do auto century logic if no century supplied in format
7734: year += new Date().getFullYear() - new Date().getFullYear() % 100 +
7735: (year <= shortYearCutoff ? 0 : -100);