<!--
// moonage.js
//

//
var Mdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
//
function Ymd2Jd(yy,mm,dd) {
	var days,tmp,yym1;
	yym1 = yy - 1;
	days = 1721422;	
	Mdays[1] = 28;
	if (yy % 4 == 0) {
		Mdays[1] = 29;
		if (yy > 1582) {
			if (yy % 100 == 0) {
				Mdays[1] = 28;
				if (yy %400 == 0) {
					Mdays[1] = 29;
	}	}	}	}
	days += Math.floor(365.25 * yym1 + 0.1);
	for (m = 0; m < (mm - 1) ; m++) {
		days += Mdays[m];
	}
	days += dd;
	if (days >= 2299160) days -= 10;	
	if (yym1 >= 1600) {
		days -= Math.floor((yym1 - 1600 + 0.1) / 100);
		days += Math.floor((yym1 - 1600 + 0.1) / 400);
	}
	return days;
}

//
var sla = new Array(36000.7695,280.4659,1.9147,0.0200,-0.0048,0.0020,0.0018,0.0018,0.0015,0.0013,0.0007,0.0007,0.0007,0.0006,0.0005,0.0005,0.0004,0.0004);
var slb = new Array(0,0,35999.05,71998.1,35999,32964,19,445267,45038,22519,65929,3035,9038,33718,155,2281,29930,31557);
var slc = new Array(0,0,267.52,265.1,268,158,159,208,254,352,45,110,64,316,118,221,48,161);
//
function SunMLong(T) {
	var d2r,kaku,i,ans;
	d2r = Math.PI / 180.0;
	T /= 36525.0;
	ans = 0.0;
	for (i = 17; i >= 0 ; i--) {
		kaku = (slb[i] * T + slc[i]) * d2r;
		if ((i == 0) || (i == 4)) ans += sla[i] * T * Math.cos(kaku);
		else ans += sla[i] * Math.cos(kaku);
	}
	ans = ans - Math.floor(ans / 360.0) * 360.0;
	return ans;
}

//
function SunLong(T) {
	var d2r,ans,dans;
	d2r = Math.PI / 180.0;
	dans = -0.0057 + 0.0048 * Math.cos((1934 * T / 36525.0 + 145) * d2r);
	ans = SunMLong(T);
	ans += dans;
	while(ans < 0.0) ans += 360.0;
	while(ans >= 360.0) ans -= 360.0;
	return ans;
}

//
var mla = new Array(481267.8809,218.3162,6.2888,1.2740,0.6583,0.2136,0.1851,0.1144,0.0588,0.0571,0.0533,0.0458,0.0409,0.0347,0.0304,0.0154,0.0125,0.0110,0.0107,0.0100,0.0085,0.0079,0.0068,0.0052,0.0050,0.0040,0.0040,0.0040,0.0038,0.0037,0.0028,0.0027,0.0026,0.0024,0.0023,0.0022,0.0021,0.0021,0.0021,0.0018,0.0016,0.0012,0.0011,0.0009,0.0008,0.0007,0.0007,0.0007,0.0007,0.0006,0.0006,0.0005,0.0005,0.0005,0.0004,0.0004,0.0003,0.0003,0.0003,0.0003,0.0003,0.0003,0.0003);
var mlb = new Array(0,0,477198.868,413335.35,890534.22,954397.74,35999.05,966404,63863.5,377336.3,1367733.1,854535.2,441199.8,445267.1,513197.9,75870,1443603,489205,1303870,1431597,826671,449334,926533,31932,481266,1331734,1844932,133,1781068,541062,1934,918399,1379739,99863,922466,818536,990397,71998,341337,401329,1856938,1267871,1920802,858602,1403732,790672,405201,485333,27864,111869,2258267,1908795,1745069,509131,39871,12006,958465,381404,349472,1808933,549197,4067,2322131);
var mlc = new Array(0,0,44.963,10.74,145.7,179.93,87.53,276.5,124.2,13.2,280.7,148.2,47.4,27.9,222.5,41,52,142,246,315,111,188,323,107,205,283,56,29,21,259,145,182,17,122,163,151,357,85,16,274,152,249,186,129,98,114,50,186,127,38,156,90,24,242,223,187,340,354,337,58,220,70,191);
var maa = new Array(5.1281,0.2806,0.2777,0.1733,0.0554,0.0463,0.0326,0.0172,0.0093,0.0088,0.0082,0.0043,0.0042,0.0034,0.0025,0.0022,0.0022,0.0021,0.0019,0.0018,0.0018,0.0018,0.0015,0.0015,0.0015,0.0014,0.0013,0.0013,0.0011,0.0010,0.0009,0.0008,0.0007,0.0006,0.0006,0.0005,0.0005,0.0005,0.0004,0.0004,0.0003,0.0003,0.0003,0.0003,0.0003);
var mab = new Array(483202.019,960400.89,6003.15,407332.2,896537.4,69866.7,1373736.2,1437599.8,884531,471196,371333,547066,1850935,443331,860538,481268,1337737,105866,924402,820668,519201,1449606,42002,928469,996400,29996,447203,37935,1914799,1297866,1787072,972407,1309873,559072,1361730,848352,419339,948395,2328134,1024264,932536,1409735,2264270,1814936,335334);
var mac = new Array(3.273,138.24,48.31,52.43,104,82.5,239,273.2,187,87,55,217,14,230,106,308,241,80,141,153,181,10,46,121,316,129,6,65,48,288,340,235,205,134,322,190,149,222,149,352,282,57,115,16,57);
var mha = new Array(0.950725,0.051820,0.009530,0.007842,0.002824,0.000858,0.000531,0.000400,0.000319,0.000271,0.000263,0.000197,0.000173,0.000167,0.000111,0.000103,0.000084,0.000083,0.000078,0.000073,0.000064,0.000063,0.000041,0.000034,0.000033,0.000031,0.000030,0.000029,0.000026,0.000023,0.000019,0.000013,0.000013,0.000013,0.000012,0.000011,0.000011,0.000010,0.000009,0.000007,0.000007,0.000006,0.000006,0.000005);
var mhb = new Array(0,477198.868,413335.35,890534.22,954397.74,1367733.1,854535.2,377336.3,441199.8,445267,513198,489205,1431597,1303870,35999,826671,63864,926533,1844932,1781068,1331734,449334,481266,918399,541062,922466,75870,990397,818536,553069,1267871,1403732,341337,2258267,2258267,1908795,858602,1745069,790672,2322131,1808933,485333,99863,405201);
var mhc = new Array(0,134.963,100.74,235.7,269.93,10.7,238.2,103.2,137.4,118,312,232,45,336,178,201,214,53,146,111,13,278,295,272,349,253,131,87,241,266,339,188,106,246,246,180,219,114,204,281,148,276,212,140);
d2r = Math.PI / 180.0;
//
function MoonLong(T) {
	var kaku,i,ans;
	T /= 36525.0;
	ans = 0.0;
	for (i = 62; i >= 1 ; i--) {
		kaku = (mlb[i] * T + mlc[i]) * d2r;
		ans += mla[i] * Math.cos(kaku);
	}
	kaku = (mlb[0] * T + mlc[0] * d2r);
	ans += mla[0] * T * Math.cos(kaku);
	ans = ans - Math.floor(ans / 360.0) * 360.0;
	return ans;
}

//
function deltaT(year)
{
	return (58 + 0.44 * (year - 1990));
}

function GetMoonAge(yy,mm,dd)
{
	var T,a1,NowAge;

	T = Ymd2Jd(yy,mm,dd) - Ymd2Jd(2000,1,1.5);
	a1 = MoonLong(T) - SunLong(T);
	if (a1 < 0.0) a1 += 360.0;
	NowAge = Math.floor(a1 / 12.0 + 1.0);
	if (NowAge > 30) NowAge = 30;
	return NowAge;
}

//
function GetMoonImg(moonage)
{
	var fileName = "";

	if (moonage > 30) moonage = 30;
	fileName = '/assets/images/moonage/';
	if (moonage < 10) fileName = fileName + '0';
	fileName = fileName + moonage + '.jpg';
	return fileName;
}

// -->

