function startOfDay (dateOrYear, month, day)
{
  if (arguments.length == 1)
    var date = new Date (dateOrYear.getFullYear (), dateOrYear.getMonth (), dateOrYear.getDate (), 0, 0, 0);
  else
    var date = new Date (dateOrYear, month, day, 0, 0, 0);
  return date;
}

function endOfDay (dateOrYear, month, day)
{
  if (arguments.length == 1)
    var date = new Date (dateOrYear.getFullYear (), dateOrYear.getMonth (), dateOrYear.getDate (), 23, 59, 59);
  else
    var date = new Date (dateOrYear, month, day, 23, 59, 59);
  return date;
}

function th (number)
{
  if ((number / 10).floor () == 1)
    return "th";
  else if ((number % 10) == 1)
    return "st";
  else if ((number % 10) == 2)
    return "nd";
  else if ((number % 10) == 3)
    return "rd";
  else
    return "th";
}

function fullDate (date)
{
  var dayName = Array ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")[date.getDay ()];
  var day = date.getDate ();
  var monthName = Array ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")[date.getMonth ()];
  var year = date.getFullYear ();
  return dayName + ' ' + day + th (day) + ' ' + monthName + ' ' + year
}