Great stuff. Here’s a small change you might want to incorporate. It changes it so you don’t define the day and month names on every call to getMonthName, etc.

Date.MONTH_NAMES = [
“January”, “February”, “March”,
“April”, “May”, “June”,
“July”, “August”, “September”,
“October”, “November”, “December” ];

Date.prototype.getFullMonthName = function() {
return Date.MONTH_NAMES[this.getMonth()];
}

Date.prototype.getShortMonthName = function() {
return Date.MONTH_NAMES[this.getMonth()].substring(0,3);
}

Date.WEEKDAY_NAMES = [
“Sunday”, “Monday”, “Tuesday”,
“Wednesday”, “Thursday”, “Friday”,
“Saturday” ];

Date.prototype.getDOWName = function () {
return Date.WEEKDAY_NAMES[this.getDay()];
}

Date.prototype.getShortDOWName = function () {
return Date.WEEKDAY_NAMES[this.getDay()].substring(0,3);
}