function WorkOutDayOffsetFromHYear (HYears)
{
var Lunations =0
var YDays=0
var YHours=0 
var YYears=0 
var YParts=0

Lunations = 235 * HYears - 234
Lunations = Lunations - (Lunations % 19)
Lunations = Lunations / 19
 
YDays = Lunations * 29

YHours = Lunations * 12

YParts = Lunations * 793

YHours = YHours + (YParts -YParts%1080)/1080

YDays = YDays + (YHours -YHours%24)/24 

YDays = YDays%146097
YDays = YDays%36524
YDays = YDays%1461
YDays = YDays%365 
return YDays
}
function DaysSinceStartOfGYear(aDays, aMonths, aYears)
{
  var Resulta = 0
   
  if (aMonths > 1) 
  {
    Resulta = Resulta + 31 
  }

  var aYearsmod4 = aYears % 4
  var aYearsmod100 = aYears % 100
  var aYearsmod400 = aYears % 400

  if (aMonths > 2)
  {
   if ((aYearsmod4=0) && ((aYearsmod100 != 0) || (aYearsmod400 =0)))
   {
     Resulta = Resulta + 29
   }
   else
   {
     Resulta = Resulta + 28
   }
  }

  if (aMonths > 3)
  {  
    Resulta = Resulta + 31  
  }
  if (aMonths > 4)  
  {  
    Resulta = Resulta + 30  
  }  
  if (aMonths > 5)  
  {
    Resulta = Resulta + 31  
  }
  if (aMonths > 6)  
  {
    Resulta = Resulta + 30  
  }
  if (aMonths > 7)  
  {
    Resulta = Resulta + 31  
  }
  if (aMonths > 8)  
  {
    Resulta = Resulta + 31
  }  
  if (aMonths > 9 )
  {
    Resulta = Resulta + 30 
  }
  if (aMonths > 10)  
  {
    Resulta = Resulta + 31  
  }
  if (aMonths > 11)  
  {
    Resulta = Resulta + 30  
  }
  Resulta = Resulta + aDays 
  return Resulta
} 
function DoIt()
{
  var d = new Date()
  var GDays = d.getDate() 
  var GMonths = d.getMonth() + 1

  var GYears = d.getFullYear()
  var HYears = GYears + 3761 
  var StoreYDays = WorkOutDayOffsetFromHYear(HYears) 
  
  var InCurrent = new Boolean(1)  
  var DaysSinceGStart = DaysSinceStartOfGYear(GDays,GMonths,GYears)
  var DaysSinceHStartG = DaysSinceStartOfGYear(7,9,GYears)
  if ( DaysSinceGStart  < (  DaysSinceHStartG + StoreYDays)) 
  {
   HYears = HYears - 1 
   StoreYDays = WorkOutDayOffsetFromHYear(HYears) 
   InCurrent = 0
  } 
 
  var HLeapYear = new Boolean( 0 )
  var DaysInM = 0
  var DaysInCurrentYear = 365 + WorkOutDayOffsetFromHYear(HYears+1) - StoreYDays 
  if (DaysInCurrentYear = 354)  
  {
    HLeapYear = 0
    DaysInM = 29 
  } 
  if (DaysInCurrentYear = 355) 
  {
    HLeapYear = 0
    DaysInM = 30 
  } 
  if (DaysInCurrentYear = 384)  
  {
   HLeapYear = 1
   DaysInM = 30 
  } 
  if (DaysInCurrentYear = 383)  
  {
   HLeapYear = 1
   DaysInM = 29 
  } 
  
  
  if (InCurrent)
  {  
    DaysSinceStartOfHYear = DaysSinceStartOfGYear(GDays,GMonths,GYears) - (DaysSinceStartOfGYear(7,9,GYears) + StoreYDays)
  }
  else
  {  
    DaysSinceStartOfHYear = DaysSinceStartOfGYear(GDays,GMonths,GYears) + (DaysSinceStartOfGYear(31,12,GYears-1) - (DaysSinceStartOfGYear(7,9,GYears) + StoreYDays)) 
  }
   
  do
  {
    var MonthName = "" 
    if (DaysSinceStartOfHYear < 31)  
    {
      MonthName = "Boedromion" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 30 
    }
    if (DaysSinceStartOfHYear < 30)  
    {
      MonthName = "Pyanepsion" 
      break 
    }
    else
    { 
     DaysSinceStartOfHYear = DaysSinceStartOfHYear - 29 
    } 
    if (DaysSinceStartOfHYear < 31)  
    {
      MonthName = "Maimakterion" 
      break 
    }
    else
    {  
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 30 
    } 
    if (DaysSinceStartOfHYear < 30)  
    {
      MonthName = "Poseideon" 
      break 
    }
    else
    {
     DaysSinceStartOfHYear = DaysSinceStartOfHYear - 29 
    }
    if ( (HLeapYear) && (DaysSinceStartOfHYear < (DaysInM+1)))  
    {
      MonthName = "Poseideon II" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - DaysInM 
    }
    if (DaysSinceStartOfHYear < 31)  
    {
      MonthName = "Gamelion" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 30 
    }
    if (DaysSinceStartOfHYear < 30 ) 
    {
      MonthName = "Anthesterion" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 29 
    }
    if (DaysSinceStartOfHYear < 31)  
    {
      MonthName = "Elaphebolion" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 30 
    }
    if (DaysSinceStartOfHYear < 30)  
    {
      MonthName = "Mounykhion" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 29 
    }
    if (DaysSinceStartOfHYear < 31)  
    {
      MonthName = "Thargelion" 
      break 
    }
    else
    {
      DaysSinceStartOfHYear = DaysSinceStartOfHYear - 30 
    }
    if (DaysSinceStartOfHYear < 30)  
    {
      MonthName = "Skirophorion" 
      break 
    }
    else
    {
     DaysSinceStartOfHYear = DaysSinceStartOfHYear - 29 
    }
    if (DaysSinceStartOfHYear < 31)  
    {
      MonthName = "Hekatombaion" 
      break 
    }
    else
    { 
     DaysSinceStartOfHYear = DaysSinceStartOfHYear - 30 
    }
    MonthName = "Metageitnion" 
  }
  while (0) 
  return DaysSinceStartOfHYear + " " + MonthName + " " + HYears 

} 
