
var aDc  =  1725227.53125;  // astronomical Day correction;


/*  JavaScript support routines  */


/*  JYEAR  --  Convert  Julian  date  to  year,  month, day, which are
               returned as an Array.  */



function CE_Date(aD) {
var cD, iD, a, b, c, d, e, f, m, s;

    cD =  aD-4*1024*1024;
    iD =  Math.floor(cD);
     f =  cD - iD;
     s = (Math.floor(aD)+1) %7;

    a = 0;
          while (iD <     0) iD += 46751, a--;
          while (iD > 46750) iD -= 46751, a++;

    b = iD + 1524;                            if (iD >=  59)  b++;
    c = Math.floor((b - 122.1) / 365.25);
    d = Math.floor(365.25 * c);
    e = Math.floor((b - d) / 30.6001);
    m = Math.floor((e < 14) ? (e - 1) : (e - 13));


    return new Array(
                     Math.floor((m > 2) ? (c + a*128 + 252) : (c  + a*128 + 253)),
                     m,
                     Math.floor(b - d - Math.floor(30.6001 * e) + f),
                     s,
                     f
                    );
}




/*  JHMS  --  Convert Julian time to hour, minutes, and seconds,
              returned as a three-element array.  */



/*  DTR  --  Degrees to radians.  */

function dtr(d)
{
    return (d * Math.PI) / 180.0;
}




/*  PAD  --  Pad a string to a given length with a given fill character.  */

function pad(str, howlong, padwith) {

    if(!str) str ="bla";   // ie bug

    var s = str.toString();

    while (s.length < howlong) {
        s = padwith + s;
    }
    return s;
}



/*  TRUEPHASE  --  Given a K value used to determine the mean phase of
                   the new moon, and a phase selector (0.0, 0.25, 0.5,
                   0.75), obtain the true, corrected phase time.  */

function dsin(x) {
    return Math.sin(dtr(x));
}

function dcos(x) {
    return Math.cos(dtr(x));
}



function truephase(s, ph)
{
    var k = s// + ph;                     /* Add phase to new moon time */

    var FQ = new Array();

    var t, t2, t3, pt, m, mprime, f,
        SynMonth = 29.53058868;    /* Synodic month (mean time from new to next new Moon) */

                                   /* Add phase to new moon time */

    t  = k / 1236.85;              /* Time in Julian centuries from
                                       1900 January 0.5 */
    t2 = t * t;                    /* Square for frequent use */
    t3 = t * t2;                   /* Cube for frequent use */
    pt = 2415020.75933             /* Mean time of phase */
          +    SynMonth   * k
          +   0.0001178   * t2
          -   0.000000155 * t3
          +   0.00033     * dsin(166.56 + 132.87 * t - 0.009173 * t2);

     m =    359.2242                 /* Sun's mean anomaly */
          +  29.10535608  * k
          -   0.0000333   * t2
          -   0.00000347  * t3;
mprime =    306.0253                 /* Moon's mean anomaly */
          + 385.81691806  * k
          +   0.0107306   * t2
          +   0.00001236  * t3;
     f =     21.2964                 /* Moon's argument of latitude */
          + 390.67050646  * k
          -   0.0016528   * t2
          -   0.00000239  * t3;


    if ((ph < 0.01) || (Math.abs(ph - 0.5) < 0.01)) {
       /* Corrections for New and Full Moon */
       pt +=     (0.1734 - 0.000393 * t) * dsin(m)
                + 0.0021 * dsin(2 * m)
                - 0.4068 * dsin(mprime)
                + 0.0161 * dsin(2 * mprime)
                - 0.0004 * dsin(3 * mprime)
                + 0.0104 * dsin(2 * f)
                - 0.0051 * dsin(m + mprime)
                - 0.0074 * dsin(m - mprime)
                + 0.0004 * dsin(2 * f + m)
                - 0.0004 * dsin(2 * f - m)
                - 0.0006 * dsin(2 * f + mprime)
                + 0.0010 * dsin(2 * f - mprime)
                + 0.0005 * dsin(m + 2 * mprime);
    } else if ((Math.abs(ph - 0.25) < 0.01 || (Math.abs(ph - 0.75) < 0.01))) {
       pt +=     (0.1721 - 0.0004 * t) * dsin(m)
                + 0.0021 * dsin(2 * m)
                - 0.6280 * dsin(mprime)
                + 0.0089 * dsin(2 * mprime)
                - 0.0004 * dsin(3 * mprime)
                + 0.0079 * dsin(2 * f)
                - 0.0119 * dsin(m + mprime)
                - 0.0047 * dsin(m - mprime)
                + 0.0003 * dsin(2 * f + m)
                - 0.0004 * dsin(2 * f - m)
                - 0.0006 * dsin(2 * f + mprime)
                + 0.0021 * dsin(2 * f - mprime)
                + 0.0003 * dsin(m + 2 * mprime)
                + 0.0004 * dsin(m - 2 * mprime)
                - 0.0003 * dsin(2 * m + mprime);
       if (ph < 0.5)
          /* First quarter correction */
          pt +=  0.0028 - 0.0004 * dcos(m) + 0.0003 * dcos(mprime);
       else
          /* Last quarter correction */
          pt += -0.0028 + 0.0004 * dcos(m) - 0.0003 * dcos(mprime);
    }

      FQ.push(k);
      FQ.push(pt);

    return FQ;
}




function GenTabl(Year) {

var Yip1 =  Year + 1792;

var ST00 = new Array();   // String Test
var ST01 = new Array();
var ST02 = new Array();

var SN00 = new Array();
var SN01 = new Array();


var Test = Math.floor((Yip1 - 1900) * 12.3685) - 8;
    ST00 = truephase(Test);
    ST01 = CE_Date(ST00[1] + aDc)


while (ST01[0] < Yip1 - 1792) {

       Test++;
       ST00 = truephase(Test);
       ST02 = CE_Date(ST00[1] + aDc)
       ST01[0] = ST02[0];

}

var k = Test-1;  

    for (var i = 0; i < 56; i++) {
    SN00[i] = truephase((k+i*0.25),i*0.25);
    SN01[i] = CE_Date(SN00[i][1] + aDc)
    }


	MOON0 = new Array();
	MOON1 = new Array();
	MOON2 = new Array();
	MOON3 = new Array();

    for (var i = 0; i < 14; i++) {

if (SN01[0+4*i][0]==Year) {  MOON0[i]  =  pad(SN01[0+4*i][1],2,"0") + pad(SN01[0+4*i][2],2,"0");  }
if (SN01[1+4*i][0]==Year) {  MOON1[i]  =  pad(SN01[1+4*i][1],2,"0") + pad(SN01[1+4*i][2],2,"0");  }
if (SN01[2+4*i][0]==Year) {  MOON2[i]  =  pad(SN01[2+4*i][1],2,"0") + pad(SN01[2+4*i][2],2,"0");  }
if (SN01[3+4*i][0]==Year) {  MOON3[i]  =  pad(SN01[3+4*i][1],2,"0") + pad(SN01[3+4*i][2],2,"0");  }

    }

    for (var i = 0; i < 4; i++) { if (isNaN(eval("MOON"+i)[0])) eval("MOON"+i).shift(); }


document.calc.test.value += MOON0 + "\n";
document.calc.test.value += MOON1 + "\n";
document.calc.test.value += MOON2 + "\n";
document.calc.test.value += MOON3 + "\n";

document.calc.test.value  += "\n";

FMT();

}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var nowNADN = (new Date().getTime()/1000 + 2700)/86400 + 4165815;

var RN5 = new Array("", "",  "",   "",    "IV", "V", "VI", "VII", "VIII", "IX" );
var RN4 = new Array("", "M", "MM", "MMM", "",   "",  "",   "",    "",     ""   );
var RN3 = new Array("", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" );
var RN2 = new Array("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" );
var RN1 = new Array("", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" );
var RD  = new Array(); 


function ADtoRoman(y) {

                        var Era = "AD ";
if (y < 1) y *= -1, y += 1, Era = "BC ";

for (var i = 0; i <= 3; i++) { RD[i] = parseInt(y%Math.pow(10,4-i)/Math.pow(10,3-i)) };

var Pt = "."; if ((RD[0] == 0 && RD[1] == 0) || (RD[2] == 0 && RD[3] == 0)) Pt = "";
var RR = RN3[RD[1]] + Pt + RN2[RD[2]] + RN1[RD[3]];

return new Array( Era, RN5[RD[0]], RN4[RD[0]], RR); 
}



	function FMT() {

    for (var i = 0; i < MOON0.length; i++) {
    document.getElementById("d4_"+MOON0[i]).innerHTML = '<img class="" src="img/moon/Mn0.gif" alt="" width="11px" height="11px" style="position: relative; left:-1; top:4">';
    }
    for (var i = 0; i < MOON1.length; i++) {
    document.getElementById("d4_"+MOON1[i]).innerHTML = '<img class="" src="img/moon/Mn1.gif" alt="" width="11px" height="11px" style="position: relative; left:-1; top:4">';
    }
    for (var i = 0; i < MOON2.length; i++) {
    document.getElementById("d4_"+MOON2[i]).innerHTML = '<img class="" src="img/moon/Mn2.gif" alt="" width="11px" height="11px" style="position: relative; left:-1; top:4">';
    }
    for (var i = 0; i < MOON3.length; i++) {
    document.getElementById("d4_"+MOON3[i]).innerHTML = '<img class="" src="img/moon/Mn3.gif" alt="" width="11px" height="11px" style="position: relative; left:-1; top:4">';
    }

}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////




//      DT – UT = 35.0 (t + 3.75)^2 + 40         //ELP 2000-85

/*

http://sunearth.gsfc.nasa.gov/eclipse/SEhelp/deltatpoly2004.html


Polynomial Expressions for Delta T (delta-T)Adapted from "Five Millennium Canon of Solar Eclipses" [Espenak and Meeus]Using the delta-T values derived from the historical record and from direct observations (see: Table 1 and Table 2 ), a series of polynomial expressions have been created to simplify the evaluation of delta-T for any time during the interval -1999 to +3000. 

We define the decimal year "y" as follows:

		y = year + (month - 0.5)/12
This gives "y" for the middle of the month, which is accurate enough given the precision in the known values of delta-T. The following polynomial expressions can be used calculate the value of delta-T (in seconds) over the time period covered by of the Five Millennium Canon of Solar Eclipses: -1999 to +3000.

Before the year -500, calculate:

		delta-T = -20 + 32 * u^2
		where:	u = (year-1820)/100
Between years -500 and +500, we use the data from Table 1, except that for the year -500 we changed the value 17190 to 17203.7 in order to avoid a discontinuity with the previous formula at that epoch. The value for delta-T is given by a polynomial of the 6th degree, which reproduces the values in Table 1 with an error not larger than 4 seconds:

	delta-T = 10583.6 - 1014.41 * u + 33.78311 * u^2 - 5.952053 * u^3
		- 0.1798452 * u^4 + 0.022174192 * u^5 + 0.0090316521 * u^6 
	where: u = y/100
Between years +500 and +1600, we again use the data from Table 1 to derive a polynomial of the 6th degree.

	delta-T = 1574.2 - 556.01 * u + 71.23472 * u^2 + 0.319781 * u^3
		- 0.8503463 * u^4 - 0.005050998 * u^5 + 0.0083572073 * u^6
	where: u = (y-1000)/100
Between years +1600 and +1700, calculate:

	delta-T = 120 - 0.9808 * t - 0.01532 * t^2 + t^3 / 7129
	where:  t = y - 1600
Between years +1700 and +1800, calculate:

	delta-T = 8.83 + 0.1603 * t - 0.0059285 * t^2 + 0.00013336 * t^3 - t^4 / 1174000
	where: t = y - 1700
Between years +1800 and +1860, calculate:

	delta-T = 13.72 - 0.332447 * t + 0.0068612 * t^2 + 0.0041116 * t^3 - 0.00037436 * t^4 
		+ 0.0000121272 * t^5 - 0.0000001699 * t^6 + 0.000000000875 * t^7
	where: t = y - 1800
Between years 1860 and 1900, calculate:

	delta-T = 7.62 + 0.5737 * t - 0.251754 * t^2 + 0.01680668 * t^3
		-0.0004473624 * t^4 + t^5 / 233174
	where: t = y - 1860
Between years 1900 and 1920, calculate:

	delta-T = -2.79 + 1.494119 * t - 0.0598939 * t^2 + 0.0061966 * t^3 - 0.000197 * t^4
	where: t = y - 1900
Between years 1920 and 1941, calculate:

	delta-T = 21.20 + 0.84493*t - 0.076100 * t^2 + 0.0020936 * t^3
	where: t = y - 1920
Between years 1941 and 1961, calculate:

	delta-T = 29.07 + 0.407*t - t^2/233 + t^3 / 2547
	where: t = y - 1950
Between years 1961 and 1986, calculate:

	delta-T = 45.45 + 1.067*t - t^2/260 - t^3 / 718
	where: t = y - 1975
Between years 1986 and 2005, calculate:

	delta-T = 63.86 + 0.3345 * t - 0.060374 * t^2 + 0.0017275 * t^3 + 0.000651814 * t^4 
		+ 0.00002373599 * t^5
	where: t = y - 2000
Between years 2005 and 2050, calculate:

	delta-T = 62.92 + 0.32217 * t + 0.005589 * t^2
	where: t = y - 2000
This expression is derived from estimated values of delta-T in the years 2010 and 2050. The value for 2010 (66.9 seconds) is based on a linearly extrapolation from 2005 using 0.39 seconds/year (average from 1995 to 2005). The value for 2050 (93 seconds) is linearly extrapolated from 2010 using 0.66 seconds/year (average rate from 1901 to 2000).

Between years 2050 and 2150, calculate:

	delta-T = -20 + 32 * ((y-1820)/100)^2 - 0.5628 * (2150 - y)
The last term is introduced to eliminate the discontinuity at 2050.

After 2150, calculate:

	delta-T = -20 + 32 * u^2
	where:	u = (year-1820)/100
All values of delta-T based on Morrison and Stephenson [2004] assume a value for the Moon's secular acceleration of -26 arcsec/cy^2. However, the ELP-2000/82 lunar ephemeris employed in the Canon uses a slightly different value of -25.858 arcsec/cy^2. Thus, a small correction "c" must be added to the values derived from the polynomial expressions for delta-T before they can be used in the Canon

	c = -0.000012932 * (y - 1955)^2
Since the values of delta-T for the interval 1955 to 2005 were derived independent of any lunar ephemeris, no correction is needed for this period.

The uncertainty in delta-T over this period can be estimated from scatter in the measurements. 


--------------------------------------------------------------------------------

References 
Morrison, L. and Stephenson, F. R., "Historical Values of the Earth's Clock Error ?T and the Calculation of Eclipses", J. Hist. Astron., Vol. 35 Part 3, August 2004, No. 120, pp 327-336 (2004).

Stephenson F.R and Houlden M.A., Atlas of Historical Eclipse Maps, Cambridge Univ.Press., Cambridge, 1986.


--------------------------------------------------------------------------------


*/


