var holiday_recent=new Array(12);
var holiday_current=new Array(12);
var holiday_next=new Array(12);
//2009 holiday
holiday_recent[0]=new Array('1','12');
holiday_recent[1]=new Array('11');
holiday_recent[2]=new Array('20');
holiday_recent[3]=new Array('29');
holiday_recent[4]=new Array('4','5','6');
holiday_recent[5]=new Array();
holiday_recent[6]=new Array('20');
holiday_recent[7]=new Array();
holiday_recent[8]=new Array('21','22','23');
holiday_recent[9]=new Array('12');
holiday_recent[10]=new Array('3','23');
holiday_recent[11]=new Array('23');
//2010 holiday
holiday_current[0]=new Array('1','11');
holiday_current[1]=new Array('11');
holiday_current[2]=new Array('22');
holiday_current[3]=new Array('29');
holiday_current[4]=new Array('3','4','5');
holiday_current[5]=new Array();
holiday_current[6]=new Array('19');
holiday_current[7]=new Array();
holiday_current[8]=new Array('20','23');
holiday_current[9]=new Array('11');
holiday_current[10]=new Array('3','23');
holiday_current[11]=new Array('23');
//2011 holiday
holiday_next[0]=new Array('1','10');
holiday_next[1]=new Array('11');
holiday_next[2]=new Array('21');
holiday_next[3]=new Array('29');
holiday_next[4]=new Array('3','4','5');
holiday_next[5]=new Array();
holiday_next[6]=new Array('18');
holiday_next[7]=new Array();
holiday_next[8]=new Array('19','23');
holiday_next[9]=new Array('10');
holiday_next[10]=new Array('3','23');
holiday_next[11]=new Array('23');


function putcal(month,year,dy,dm,dd) {
	var version = navigator.appVersion;
	if (navigator.appVersion.indexOf("Mac") != -1) {
		calwin = open("","calwin","width=300,height=300,resizable=yes");
	} else {
		calwin = open("","calwin","width=180,height=280,resizable=yes");
	}
	calccal(calwin,month,year,dy,dm,dd);
	calwin.focus();
}

function calccal(targetwin,month,year,dy,dm,dd) {
	var monthname = new Array(12);
	monthname[0] = "1月";
	monthname[1] = "2月";
	monthname[2] = "3月";
	monthname[3] = "4月";
	monthname[4] = "5月";
	monthname[5] = "6月";
	monthname[6] = "7月";
	monthname[7] = "8月";
	monthname[8] = "9月";
	monthname[9] = "10月";
	monthname[10] = "11月";
	monthname[11] = "12月";
	var endday = calclastday(eval(month),eval(year));

	mystr = month + "/01/" + year;
	mydate = new Date(mystr);
	firstday = mydate.getDay();
	var cnt = 0;
	var day = new Array(6);

	for (var i=0; i<6; i++)
		day[i] = new Array(7);

	for (var r=0; r<6; r++) {
		for (var c=0; c<7; c++) {
			if ((cnt==0) && (c!=firstday))
				continue;
			cnt++;
			day[r][c] = cnt;
			if (cnt==endday)
				break;
		}
		if (cnt==endday)
			break;
	}

	targetwin.document.write("<html><head><title>カレンダー</title><META HTTP-EQUIV='Content-type' CONTENT='text/html; charset=x-sjis-jp'></head><body>");
	targetwin.document.write("<TABLE align=center><TR VALIGN=TOP><FORM>");

	var prevyear = eval(year) - 1;
//  targetwin.document.write("<TD><INPUT TYPE=BUTTON NAME=prevyearbutton VALUE='<<'"+
//   " onclick='document.clear(); opener.calccal(opener.calwin,"+month+","+prevyear+",\""+dy+"\",\""+dm+"\",\""+dd+"\");'></TD>");

	var prevmonth = calcprevmonth(month);
	var prevmonthyear = calcprevyear(month,year);
	targetwin.document.write("<TD><INPUT TYPE=BUTTON NAME=prevmonthbutton VALUE='&nbsp;<'"+
	" onclick='document.clear(); opener.calccal(opener.calwin,"+prevmonth+","+prevmonthyear+",\""+dy+"\",\""+dm+"\",\""+dd+"\");'></TD>");

	targetwin.document.write("<TD COLSPAN=5 ALIGN=CENTER NOWRAP>");
	var index = eval(month) - 1;

	targetwin.document.write("<B>" + year + "年" + monthname[index] + "</B></TD>");

	var nextmonth = calcnextmonth(month);
	var nextmonthyear = calcnextyear(month,year);
	targetwin.document.write("<TD><INPUT TYPE=BUTTON NAME=nextmonthbutton VALUE='&nbsp;>'"+
	" onclick='document.clear(); opener.calccal(opener.calwin,"+nextmonth+","+nextmonthyear+",\""+dy+"\",\""+dm+"\",\""+dd+"\");'></TD>");

	var nextyear = eval(year) + 1;
//  targetwin.document.write("<TD><INPUT TYPE=BUTTON NAME=nextyearbutton VALUE='>>'"+
//   " onclick='document.clear(); opener.calccal(opener.calwin,"+month+","+nextyear+",\""+dy+"\",\""+dm+"\",\""+dd+"\");'></TD>");

	targetwin.document.write("</TR><TR bgcolor=\"#ededed\">");
	targetwin.document.write("<TD align=\"center\"><font color='#ff0000'>日</font></TD>");
	targetwin.document.write("<TD align=\"center\">月</TD>");
	targetwin.document.write("<TD align=\"center\">火</TD>");
	targetwin.document.write("<TD align=\"center\">水</TD>");
	targetwin.document.write("<TD align=\"center\">木</TD>");
	targetwin.document.write("<TD align=\"center\">金</TD>");
	targetwin.document.write("<TD align=\"center\"><font color='#0000ff'>土</font></TD>");
	targetwin.document.write("</TR>");

//	targetwin.document.write("<TR><TD COLSPAN=7><HR NOSHADE></TD></TR>");

	var selectedmonth = eval(month) - 1;
	var today = new Date();

	var thisyear = today.getYear();
	if (thisyear < 2000) { thisyear += 1900; }
	var thismonth = today.getMonth()+1;
	var thisday = today.getDate();
	var selectedyear = eval(year)-thisyear;
	var conditionalpadder = "";
	var ele1,ele2,ele3;

	for(r=0; r<6; r++) {
		targetwin.document.write("<TR>");
		for(c=0; c<7; c++) {
			if (year==thisyear&&month==thismonth&&day[r][c]==thisday) {
				targetwin.document.write("<TD align=\"right\" bgcolor=\"ffff00\">");
			} else {
				if (c==0) {
					targetwin.document.write("<TD align=\"right\" bgcolor=\"fdbdcc\">");
				}
				if (c==6) {
					targetwin.document.write("<TD align=\"right\" bgcolor=\"b5dbfd\">");
				}
				if (c!=0&&c!=6) {
					targetwin.document.write("<TD align=\"right\">");
				}
			}

			if(day[r][c] != null) {
				if (day[r][c] < 10)
					conditionalpadder = "&nbsp;"
				else
					conditionalpadder = "";

				if ((year==thisyear&&month==thismonth&&day[r][c]>thisday+1)||(year==thisyear&&month>thismonth)||(year>thisyear&&year<=thisyear+1)) {
					if (!(thisday==calclastday(eval(month-1),eval(year))&&month==thismonth+1&&day[r][c]==1)) {
						targetwin.document.write("<A HREF='javascript:" +
						"opener."+dm+".selectedIndex="+selectedmonth+";"+
						"opener."+dy+".selectedIndex="+selectedyear+"; "+
						"opener.ud(\""+dy+"\",\""+dm+"\",\""+dd+"\"); "+
						"opener."+dd+".selectedIndex="+day[r][c]+"-1; "+
						"window.close();'"+">");
					}
				}
				//sunday
				if (c==0) { targetwin.document.write("<font color=\"ff0000\">"); }
				//saturday
				if (c==6) { targetwin.document.write("<font color=\"0000ff\">"); }
				//monday-friday
				if (c!=0&&c!=6) { targetwin.document.write("<font color=\"000000\">"); }
				//holiday_current
				if (year==thisyear) {
					var num=holiday_current[month-1].length;
					for(i=0; i<num; i++) {
						if (day[r][c]==holiday_current[month-1][i]) { targetwin.document.write("<font color=\"ff0000\">"); }
					}
				}
				//holiday_recent
				if (year==thisyear-1) {
					var num=holiday_recent[month-1].length;
					for(i=0; i<num; i++) {
						if (day[r][c]==holiday_recent[month-1][i]) { targetwin.document.write("<font color=\"ff0000\">"); }
					}
				}
				//holiday_next
				if (year==thisyear+1) {
					var num=holiday_next[month-1].length;
					for(i=0; i<num; i++) {
						if (day[r][c]==holiday_next[month-1][i]) { targetwin.document.write("<font color=\"ff0000\">"); }
					}
				}
				targetwin.document.write(day[r][c]);
				if ((year==thisyear&&month==thismonth&&day[r][c]>thisday+1)||(year==thisyear&&month>thismonth)||(year>thisyear&&year<=thisyear+1)) {
					if (thisday!=calclastday(eval(month-1),eval(year))||month!=thismonth+1||day[r][c]!=1) {
						targetwin.document.write("</a>");
					}
				}
			}
			targetwin.document.write("</TD>");
		}
		targetwin.document.write("</TR>");
	}

	targetwin.document.write("</FORM></TABLE><form><center><input type=button value=\"閉じる\" onClick=window.close()></center></form></body></html>");
	targetwin.document.close();
}

function calclastday(month,year) {
	if ((month==2) && ((year%4)==0))
		return 29;

	if ((month==2) && ((year%4)!=0))
		return 28;

	if ((month==1) || (month == 3) || (month == 5) || (month == 7) ||
	(month==8) || (month == 10) || (month ==12))
	return 31;

	return 30;
}

function calcnextmonth(month) {
	if (month=="12")
		return "1";
	else
		return (eval(month)+1);
}

function calcnextyear(month,year) {
	if (month=="12")
		return (eval(year)+1);
	else
		return (year);
}

function calcprevmonth(month) {
	if (month=="1")
		return "12";
	else
		return (eval(month)-1);
}

function calcprevyear(month,year) {
	if (month=="1")
		return (eval(year)-1);
	else
		return (year);
}

function ud(ele1,ele2,ele3) {
	var ele11=eval(ele1);
	var ele22=eval(ele2);
	var ele33=eval(ele3);
	var i=ele22.selectedIndex;

	if (ele22.options[i].value == "2"||ele22.options[i].value == "02") {
		ele33.options[30] = null;
		ele33.options[29] = null;
		var j = ele11.selectedIndex;
		var year = eval(ele11.options[j].value);
		if ( ((year%400)==0) || (((year%100)!=0) && ((year%4)==0)) ) {
			if (ele33.options[28] == null) {
				ele33.options[28] = new Option("29");
				ele33.options[28].value = "29";
			}
		} else {
			ele33.options[28] = null;
		}
	}

	if (ele22.options[i].value == "1" || ele22.options[i].value == "01" ||
		ele22.options[i].value == "3" || ele22.options[i].value == "03" ||
		ele22.options[i].value == "5" || ele22.options[i].value == "05" ||
		ele22.options[i].value == "7" || ele22.options[i].value == "07" ||
		ele22.options[i].value == "8" || ele22.options[i].value == "08" ||
		ele22.options[i].value == "10" ||
		ele22.options[i].value == "12") {

		if (ele33.options[28] == null) {
			ele33.options[28] = new Option("29");
			ele33.options[28].value = "29";
		}
		if (ele33.options[29] == null) {
			ele33.options[29] = new Option("30");
			ele33.options[29].value = "30";
		}
		if (ele33.options[30] == null) {
			ele33.options[30] = new Option("31");
			ele33.options[30].value = "31";
		}
	}

	if (ele22.options[i].value == "4" || ele22.options[i].value == "04" ||
		ele22.options[i].value == "6" || ele22.options[i].value == "06" ||
		ele22.options[i].value == "9" || ele22.options[i].value == "09" ||
		ele22.options[i].value == "11") {

		if (ele33.options[28] == null) {
			ele33.options[28] = new Option("29");
			ele33.options[28].value = "29";
		}
		if (ele33.options[29] == null) {
			ele33.options[29] = new Option("30");
			ele33.options[29].value = "30";
		}
		ele33.options[30] = null;
	}

	if (ele33.selectedIndex == -1)
		ele33.selectedIndex = 0;
}
