Date.prototype.getDateString = function(str) {
  var dnames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday',
      'Thursday', 'Friday', 'Saturday', 'Sunday'];
  var mnames = ['January', 'February', 'March', 'April',
      'May', 'June', 'July', 'August', 'September',
      'October', 'Novemeber', 'December'];
	  
  str = str.replace(/%(D{4}|day)/, dnames[this.getDay()]);
  str = str.replace(/%D{3}/, dnames[this.getDay()].substr(0, 3));  
  str = str.replace(/%(D{2}|date)/, (this.getDate() < 10 ? '0' : '') + this.getDate());
  str = str.replace(/%(OR|ordinal)/, this.getDateOrdinal());
  str = str.replace(/%(M{4}|month)/, mnames[this.getMonth()]);  
  str = str.replace(/%M{3}/, mnames[this.getMonth()].substr(0, 3));  
  str = str.replace(/%M{2}/, (this.getMonth() < 10 ? '0' : '') + this.getMonth());  
  str = str.replace(/%(Y{4}|year)/, this.getFullYear());
  return str;
};

Date.prototype.getDateOrdinal = function() {
  var n = this.getDate();
  var ord = 'th';
  if (n % 10 == 1 && n % 100 != 11) {
    ord = 'st';
  } else if (n % 10 == 2 && n % 100 != 12) {
    ord = 'nd';
  } else if (n % 10 == 3 && n % 100 != 13) {
    ord = 'rd';
  }

  return ord;
};

Date.prototype.getISODate = function() {
  var mth = this.getMonth() + 1;
  mth = (mth < 10 ? '0' : '') + mth;
  var date = this.getDate();
  date = (date < 10 ? '0' : '') + date;
  return this.getFullYear() + mth + date;
};

Date.prototype.getTimeString = function(clock)
{
  var str = '';
  var hrs = this.getHours();

  if (clock == 12)
  {
    var meridian = hrs < 12 ? 'am' : 'pm';

    hrs = hrs % 12;
    if (hrs == 0) { hrs = 12; }
    str += hrs;
  }
  else
  {
    str += (hrs < 10 ? '0' : '') + hrs;
  }

  str += ':';
  var mins = this.getMinutes();
  str += (mins < 10 ? '0' : '') + mins;

  if (clock == 12) { str += meridian; }

  return str;
};
