function calendar(monthstyle,months,m,space,todayflg){

//****************** 設定ここから ******************

days = new Array('日','月','火','水','木','金','土');	//曜日

//***------祝日設定( 休業日:1 / 営業日:0 )------***
holywday = new Array();
holy = new Array();
kyugyoday = new Array();
eigyouday = new Array();

//-------------------
//　　定休日設定
//-------------------
holywday[0] = 0;	//日曜日
holywday[1] = 0;	//月曜日
holywday[2] = 1;	//火曜日
holywday[3] = 0;	//水曜日
holywday[4] = 0;	//木曜日
holywday[5] = 0;	//金曜日
holywday[6] = 0;	//土曜日
//-------------------
//　　祝日設定
//-------------------
holy[0] = 0;	//元日
holy[1] = 0;	//成人の日
holy[2] = 0;	//建国記念の日
holy[3] = 0;	//春分の日
holy[4] = 0;	//昭和の日
holy[5] = 0;	//憲法記念日
holy[6] = 0;	//みどりの日
holy[7] = 0;	//こどもの日
holy[8] = 0;	//海の日
holy[9] = 0;	//敬老の日
holy[10] = 0;	//秋分の日
holy[11] = 0;	//体育の日
holy[12] = 0;	//文化の日
holy[13] = 0;	//勤労感謝の日
holy[14] = 0;	//天皇誕生日
//-------------------
//　　休業日設定
//-------------------
kyugyoday[0] = new Array(0,0);	//ダミー

kyugyoday[1] = new Array(0,1,2,3,4,5);	//１月
kyugyoday[2] = new Array(0,0);	//２月
kyugyoday[3] = new Array(0,0);	//３月
kyugyoday[4] = new Array(0,0);	//４月
kyugyoday[5] = new Array(0,0);	//５月
kyugyoday[6] = new Array(0,0);	//６月
kyugyoday[7] = new Array(0,0);	//７月
kyugyoday[8] = new Array(0,0);	//８月
kyugyoday[9] = new Array(0,0);	//９月
kyugyoday[10] = new Array(0,0);	//１０月
kyugyoday[11] = new Array(0,0);	//１１月
kyugyoday[12] = new Array(0,25);	//１２月
//-------------------
//　　営業日設定
//-------------------
eigyouday[0] = new Array(0,0);	//ダミー

eigyouday[1] = new Array(0,0);	//１月
eigyouday[2] = new Array(0,0);	//２月
eigyouday[3] = new Array(0,0);	//３月
eigyouday[4] = new Array(0,0);	//４月
eigyouday[5] = new Array(0,0);	//５月
eigyouday[6] = new Array(0,0);	//６月
eigyouday[7] = new Array(0,0);	//７月
eigyouday[8] = new Array(0,0);	//８月
eigyouday[9] = new Array(0,0);	//９月
eigyouday[10] = new Array(0,0);	//１０月
eigyouday[11] = new Array(0,0);	//１１月
eigyouday[12] = new Array(0,0);	//１２月

//****************** 設定ここまで ******************


//***--------ここから下はいじらない--------***

lastdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

today = new Date();
months = months + m;

for(a=m;a<months;a++){

	year = today.getYear();
	month = today.getMonth();

	if(year<1900){
		year = year + 1900;
	}

	month = month + a;
	if(month>11){
		month = month - 12;
		year = year + 1;
	}
	if(year%4==0 && year%100!=0 && year%400==0){
		lastdays[1] = 29;
	}

	firstdate = new Date(year,month,1);
	lastdate = new Date(year,month,lastdays[month]);

	pmonth = month + 1;

	firstday = firstdate.getDay();
	lastday = lastdate.getDay();


	document.write('<table id="test" class="tblstyle" cellspacing="1" cellpadding="0" border="0" style="margin-bottom:' + space + '">\n');
	
	switch(monthstyle){
	case 1:
		if(pmonth<10){
			document.write('<tr class="month" align="center"><td colspan="7">' + year + '/0' + pmonth + '</td></tr>\n');
		}else{
			document.write('<tr class="month" align="center"><td colspan="7">' + year + '/' + pmonth + '</td></tr>\n');
		}
	break;
	case 2:
		document.write('<tr class="month" align="center"><td colspan="7">' + pmonth + '月</td></tr>\n');
	break;
	case 3:
		document.write('<tr class="month" align="center"><td colspan="7">' + year + '年' + pmonth + '月</td></tr>\n');
	break;
	case 4:
		if(pmonth<10){
			document.write('<tr class="month" align="center"><td colspan="7">' + year + '年0' + pmonth + '月</td></tr>\n');
		}else{
			document.write('<tr class="month" align="center"><td colspan="7">' + year + '年' + pmonth + '月</td></tr>\n');
		}
	break;
	}
	document.write('<tr class="weekstyle1" align="center">\n');
	for(i=0;i<7;i++){
		document.write('<td class="daywidth">' + days[i] + '</td>\n');
	}
	document.write('</tr><tr class="weekstyle2" align="center">\n');
	for(i=1;i<=firstday;i++){
		document.write('<td>&nbsp;</td>\n');
	}
	for(i=1,j=firstday+1,furikaeflg=0;i<=lastdays[month];i++,j++){
		todaydate = new Date(year,month,i);
		todayday = todaydate.getDay();

		document.write('<td');
		if(todayflg==1){
			if(year==today.getYear() && month==today.getMonth() && i==today.getDate()){
				document.write(' style="font-weight:bold;"');
			}
		}
		if(holywday[todayday]==1){
			style = ' class="holystyle"';
		}else if(todayday==0){
			style = ' class="sunstyle"';
		}else if(todayday==6){
			style = ' class="satstyle"';
		}else{
			style = ' class="daystyle"';
		}

		hstyleflg = 0;
		switch(pmonth){
		case 1:
			if(i==1 && holy[0]==1){
				hstyleflg = 1;
			}
			if(todayday==1 && Math.floor((i-1)/7)+1==2 && holy[1]==1){
				hstyleflg = 1;
			}
		break;
		case 2:
			if(i==11 && holy[2]==1){
				hstyleflg = 1;
			}
		break;
		case 3:
			if(i==Math.floor((20.8431 + 0.242194*(year-1980)-((year-1980)/4))) && holy[3]==1){
				hstyleflg = 1;
			}
			break;
		case 4:
			if(i==29 && holy[4]==1){
				hstyleflg = 1;
			}
		break;
		case 5:
			if(i==3 && holy[5]==1){
				hstyleflg = 1;
			}
			if(i==4 && holy[6]==1){
				hstyleflg = 1;
			}
			if(i==5 && holy[7]==1){
				hstyleflg = 1;
			}
		break;
		case 7:
			if(todayday==1 && Math.floor((i-1)/7)+1==3 && holy[8]==1){
				hstyleflg = 1;
			}
		break;
		case 9:
			if(todayday==1 && Math.floor((i-1)/7)+1==3 && holy[9]==1){
				hstyleflg = 1;
			}
			if(i==Math.floor((23.2488+0.242194*(year-1980)-((year-1980)/4))) && holy[10]==1){
				hstyleflg = 1;
			}
		break;
		case 10:
			if(todayday==1 && Math.floor((i-1)/7)+1==2 && holy[11]==1){
				hstyleflg = 1;
			}
		break;
		case 11:
			if(i==3 && holy[12]==1){
				hstyleflg = 1;
			}
			if(i==23 && holy[13]==1){
				hstyleflg = 1;
			}
		break;
		case 12:
			if(i==23 && holy[14]==1){
				hstyleflg = 1;
			}
		break;
		}
		if(furikaeflg==1 && hstyleflg==1){
			style = ' class="holystyle"';
			furikaeflg=1;
		}else if(furikaeflg==1){
			style = ' class="holystyle"';
			furikaeflg=0;
		}else if(hstyleflg==1){
			style = ' class="holystyle"';
			if(todayday==0){
				furikaeflg = 1;
			}
		}

		for(x=0;x<kyugyoday[pmonth].length;x++){
			if(kyugyoday[pmonth][x]==i){
				style = ' class="holystyle"';
				break;
			}
		}
		for(x=0;x<eigyouday[pmonth].length;x++){
			if(eigyouday[pmonth][x]==i){
				style = ' class="daystyle"';
				break;
			}
		}

		document.write(style + '>' + i + '</td>\n');
		if(j%7==0 && i!=lastdays[month]){
			document.write('</tr><tr class="weekstyle2" align="center">\n');
		}
	}
	for(i=1;i<=7-(j-1)%7 && 7-(j-1)%7!=7;i++){
		document.write('<td>&nbsp;</td>\n');
	}
	document.write('</tr>\n');
	document.write('</table>\n');
}

}