Yes it's a nice starting point, it would be nice if someone would enhance it to support localized calendars - wouldn't be too hard - just take month names, day names and date format from the current culture. Maybe I'll do it one day...
The bug is in Calendar.htc, a typo in the function InitializeLeapYear:
if (leapYear == true) {
c_arrMonthDays[1] = 29;
}
else {
c_arrMonthDays[2] = 28; // **** should be Feb (c_arrMonthDays[1])
}
As you can see it initialises the number of days in March to be 28 for any year that isn't a leap year.