<?php

Function number_to_words($number) {
  if (preg_match('/,/', $number)) $number = preg_replace('/,/', '', $number);
  $ret = '';
  if ($number < 20) {
    if ($number == 1) return ' One';
    if ($number == 2) return ' Two';
    if ($number == 3) return ' Three';
    if ($number == 4) return ' Four';
    if ($number == 5) return ' Five';
    if ($number == 6) return ' Six';
    if ($number == 7) return ' Seven';
    if ($number == 8) return ' Eight';
    if ($number == 9) return ' Nine';
    if ($number == 10) return ' Ten';
    if ($number == 11) return ' Eleven';
    if ($number == 12) return ' Twelve';
    if ($number == 13) return ' Thirteen';
    if ($number == 14) return ' Fourteen';
    if ($number == 15) return ' Fifteen';
    if ($number == 16) return ' Sixteen';
    if ($number == 17) return ' Seventeen';
    if ($number == 18) return ' Eighteen';
    if ($number == 19) return ' Nineteen';
  } elseif ($number < 100) {
    if ($number < 30)
      $ret .= ' Twenty' . number_to_words($number - 20);
    elseif ($number < 40)
      $ret .= ' Thirty' . number_to_words($number - 30);
    elseif ($number < 50)
      $ret .= ' Fourty' . number_to_words($number - 40);
    elseif ($number < 60)
      $ret .= ' Fifty' . number_to_words($number - 50);
    elseif ($number < 70)
      $ret .= ' Sixty' . number_to_words($number - 60);
    elseif ($number < 80)
      $ret .= ' Seventy' . number_to_words($number - 70);
    elseif ($number < 90)
      $ret .= ' Eighty' . number_to_words($number - 80);
    else
      $ret .= ' Ninety' . number_to_words($number - 90);

  } else {

    $thousands = intval($number / 1000);
    $number = $number % 1000;

    if ($thousands >= 1000) {
      $ret .= sprintf (' %s Million', number_to_words(intval($thousands/1000)));
      $thousands = $thousands % 1000;
    }

    if ($thousands > 0)
      $ret .= sprintf (' %s Thousand', number_to_words($thousands));

    $hundreds = intval($number / 100);
    $number = $number %100;
    if ($hundreds > 0)
      $ret .= sprintf (' %s Hundred', number_to_words($hundreds));
    if ($number > 0)
      $ret .= sprintf (' and %s', number_to_words($number));
  }

  while (preg_match('/^ /', $ret))
    $ret = preg_replace('/^ /', '', $ret);
  #print '<br>returning $ret';
  return $ret;
}


Function dateworded($when) {
  $yearnum = Date('Y', $when);
  $yearstr = number_to_words($yearnum);
  $monthstr = Date('F', $when);
  $weekdaystr = Date('l', $when);
  $monthdaystr = Date('j', $when);
  $monthday = (int)$monthdaystr;
  $array_firsts = array(1, 21, 31);
  $array_seconds = array(2, 22);
  $array_thirds = array(3, 23);
  if ( in_array($monthday, $array_firsts) )
    $monthdaystr .= 'st';
  elseif ( in_array($monthday, $array_seconds) )
    $monthdaystr .= 'nd';
  elseif ( in_array($monthday, $array_thirds) )
    $monthdaystr .= 'rd';
  else
    $monthdaystr .= 'th';

  return sprintf('%s %s day of %s in the year %s',
        $weekdaystr, $monthdaystr, $monthstr, $yearstr);
}
?>