// 月齢カレンダーのスクリプト
var dd,dde,MFile;
var MAge = new Array(30);
var Moonname = new Array(30);
var SMLong = new Array(30);
var nowDate = new Date();
var yy,mm,jisa,n;	// 年月

var T,angl,anglb,anglp,nIP = 0;	// 以下、朔望名決定用変数
var MName = new Array("新月","上弦","満月","下弦");
var MNameIP = new Array(-1,-1,-1,-1,-1,-1);
var DayIP = new Array(-1,-1,-1,-1,-1,-1);
var moonnameJ = new Array('朔','既朔','三日月','(夕月)','(夕月)','(夕月)','弓張月','(宵月)','九夜月','十日月','(宵月)','(宵月)','十三夜','小望月','十五夜','十六夜','立待月','居待月','寝待月','更待月','(宵月)','(宵月)','二十三夜','(有明月)','(有明月)','二十六夜','(有明月)','(有明月)','(暁月)','晦日月');

CallMainIndex('.');

yy = nowDate.getYear();
yy = top.Y2K(yy);
mm = nowDate.getMonth() + 1;
jisa = top.GetJisa();
Tideflag = true;
Tideflagty = 1;	// 暦のページ方式
Moonflag = false;
tmp = '' + document.location;
n = tmp.indexOf('?cmd=',0);
if (n >= 0) {
	n += 4;
	tmp = tmp.substr(n + 1,11);
	yy = tmp.substr(0,4) * 1;
	mm = tmp.substr(4,2) * 1;
	jisa = tmp.substr(6,2) * 1;
	if (jisa > 50) {	// 負の時差をは 100 - jisa として受け渡す。（ここは戻し）
		jisa -= 100;
	}
	n = tmp.substr(8,3) * 1;
	if (n >= 100) Tideflag = true;
	else Tideflag = false;
	Tideflagty = Math.floor((n % 100) / 10);
	if (n % 10 > 0) Moonflag = true;
	else Moonflag = false;
}

function setMoonParam(yy,mm) {	// 毎日正午の月齢と、月の呼び名を作成
	var dd,i,nowAge = 31;
	var dofs,dde,month0day;

	dofs = (12 - jisa)/24.0 + top.deltaT(yy)/86400.0;	// 計算地の正午
	month0day = top.GetJ2000Days(yy,mm,0) + dofs + 1.0;
	for (i = 0; i < top.GetMonthDays(yy,mm) ; i++) {
		if (nowAge > 28) nowAge = top.GetMoonAge(yy,mm,(dofs + i + 1));
		Moonname[i] = moonnameJ[Math.floor(nowAge + 0.5)];
		if ((nowAge < 1.0) && (i > 0)) Moonname[i-1] = moonnameJ[29];	// 晦日月
		MAge[i] = Math.floor(nowAge * 10 + 0.5) / 10;
		nowAge += 1.0;
		SMLong[i] = top.MoonLong(month0day + i) - top.SunLong(month0day + i);	// 月と太陽の黄経差
		if (SMLong[i] >= 360.0) SMLong[i] -= 360.0;
		if (SMLong[i] < 0.0) SMLong[i] += 360.0;
	}
}

function Replay() // データをセットして再表示
{
	var param,urlstr,n,m;
	var ytmp;

	urlstr = '' + document.location;
	n = urlstr.indexOf('?',0);
	if (n >= 0) {
		urlstr = urlstr.substr(0,n);
	}

	ytmp = get_selectValue(document.MMAGE.SYear1) * 10;
	ytmp+= get_selectValue(document.MMAGE.SYear2) * 1;
	param = '' + ytmp;
	m = get_selectValue(document.MMAGE.SMonth) * 1;
	if (m < 10) m = '0' + m;
	else m = '' + m;
	param = param + m;
	m = get_selectValue(document.MMAGE.jisa) * 1;
	if (m < 0) m = 100 + m;
	if (m < 10) m = '0' + m;
	else m = '' + m;
	param = param + m;
	if (document.MMAGE.Tidename.checked) param = param + '1';
	else param = param + '0';
	ytmp = '1';
	for (i = 0; i < 3 ; i++) {
		if (document.MMAGE.ty[i].checked) {
			ytmp = '' + (i + 1);
		}
	}
	param = param + ytmp;
	if (document.MMAGE.Moonname.checked) param = param + '1';
	else param = param + '0';
	document.location = urlstr + '?cmd=' + param;
}

// 潮名方式３種対応 1:暦 2:気象庁 3:海上保安庁
function NewTidename(month0day,dd) {
	if (Tideflagty <= 1) {
		return top.NewTideName(MAge[dd - 1],1);
	} else {
		return top.NewTideName(SMLong[dd - 1],Tideflagty);
	}
}


//----------------
function PrintTable() {
	PrnWin = window.open("","PrnWin","menubar=no,toolbar=no,location=no,status=no,scrollbars=yes,resizeable=yes,width=460");
	PrnWin.document.writeln('<LINK REL="stylesheet" TYPE="text/css" href="./css/std.css">');
	MakeVTable(PrnWin.document);
}

function MakeVTable(VDOC) {
setMoonParam(yy,mm);	// 月齢と月の呼び名のセット
if (document.MMAGE.Tidename.checked) Tideflag = true;
for (i = 0; i < 3 ; i++) {
	if (document.MMAGE.ty[i].checked) {	// 潮名のタイプ
		Tideflagty = i + 1;
	}
}
if (document.MMAGE.Moonname.checked) Moonflag = true;

var weeknumber = 0;
var wday;
var mname;
var bc;
var dofs;
var month0day;

VDOC.writeln('<table border bgcolor="#bbbbbb" width=415 cellpadding=0 cellspacing=0 align="center">');
VDOC.writeln('<caption><strong>' + yy + '年' + mm + '月</strong></caption>');
VDOC.writeln('<tr><th>週</th><th bgcolor="#ffcccc">日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th bgcolor="#ccccff">土</th></tr>');

wday = top.GetWeekDays(yy,mm,1);	// １日の前の曜日欄を空白にする
for (dd = 0; dd < wday ; dd++)
{
	if (dd == 0) VDOC.writeln('<tr><th>第<br>' + (++weeknumber) + '<br>週</th>');
	VDOC.writeln('<td>&nbsp;</td>');
}

dofs = (12 - jisa)/24.0 + top.deltaT(yy)/86400.0;
month0day =  dofs + 1.0;
month0day += top.GetJ2000Days(yy,mm,0);
for(dd = 1; dd <= top.GetMonthDays(yy,mm) ; dd++)	// １日ごとの処理
{
	if (wday == 0) VDOC.writeln('<tr><th>第<br>' + (++weeknumber) + '<br>週</th>');	// 週初めの行変更

	mname = '&nbsp;';
	for (nIP = 0; DayIP[nIP] >= 0.0 ; nIP++)
	{
		if (Math.floor(DayIP[nIP]) == dd)
		{
			mname = MName[MNameIP[nIP]];
			break;
		}
	}
	bc = '';
	if (wday == 0) bc = ' bgcolor="#ffdddd"';
	if (wday == 6) bc = ' bgcolor="#ddddff"';
	VDOC.write('<td><table border=0 cellpadding=0 cellspacing=0><tr><td align="left"' + bc + ' class="h4"><strong>' + dd + ' ' + mname + '</strong><br>月齢 ' + MAge[dd-1]);
	
	bc = '';
	if (Moonflag) bc = bc + '<br>' + Moonname[dd-1];
	if (Tideflag) bc = bc + '<br>(' + NewTidename(month0day,dd) + ')';
	VDOC.write(bc + '</td></tr>');

	bc = Math.floor(MAge[dd-1]) - 15;
	if (bc < 0) bc = -bc;
	bc = Math.floor((15 - bc) / 2);
	VDOC.write('<tr><th><img src="./' + top.GetMoonImg(yy,mm,(dd * 1 + dofs),1) + '" width=55 height=55 alt="' + Math.floor(MAge[dd-1] + 1) + '"></th></tr>');
	VDOC.writeln('</table></td>');
	if (wday == 6) VDOC.writeln('</tr>');	// 週終わりの改行
	wday = (wday + 1) % 7;
}
if (wday != 0)
{
	while (wday != 0)
	{
		VDOC.writeln('<td>&nbsp;</td>');
		wday = (wday + 1) % 7;
	}
	VDOC.writeln('</tr>');
}
VDOC.writeln('</table>');

}
