<!--

////////////////////////////////////////////////////////
// Copyright 2003, Timothy James Forsythe, all rights reserved.
// Permission granted to use, copy, modify, and distribute so long as
// the above copyright and this permission statement are retained in all
// copies.  THERE IS NO WARRANTY - USE AT YOUR OWN RISK.
//
// based on the algorithms of ?
////////////////////////////////////////////////////////


function RavDate()
{
  this.dstr = "";
  this.d    = 0;
  this.m    = 0;
  this.mstr = "";
  this.y    = 0;
}

function GregorianToRaventos(d,m,y)
{
  var DAYS      = new Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "New Year's Eve", "Olympic Year Day");
  var GR_MO_LEN = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30);
  var MONTHS    = new Array("January", "February", "March", "April", "May", "June", "July", "Vacational", "August", "September", "October", "November", "December");

  var date = new RavDate();


  if (y > 0)
  {
    var doy = d;

    var leapYear = false;
    if (   (   ((y % 4) == 0)
            && ((y % 100) != 0)
           )
        || ((y % 400) == 0)
       )
    {
      leapYear = true;
      GR_MO_LEN[1] = GR_MO_LEN[1] + 1;
    }

    var i;
    for(i=0; i < m-1; ++i)
    {
      doy += GR_MO_LEN[i];
    }

    if(doy < 365)
    {
        date.m = Math.floor((doy - 1) / 28) + 1;
        date.d = doy - ((date.m - 1) * 28);
      
      date.dstr = DAYS[(date.d - 1) % 7];
      date.mstr = MONTHS[date.m-1];
    }

    if(doy == 365)
    {
      date.m = "";
      date.d = "";
      date.dstr = DAYS[7];
    }

    if(doy > 365)
    {
      date.m = "";
      date.d = "";
      date.dstr = DAYS[8];
    }

    date.y = y;
  }  

  return date;
}

//-->



