function ShowCalendar(num){
var date = new Date();
var Monthdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
//var Days = new Array("日","月","火","水","木","金","土");
//var Days = new Array("Ｓ","Ｍ","Ｔ","Ｗ","Ｔ","Ｆ","Ｓ");
//var Days = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var Days = new Array("Su","Mo","Tu","We","Th","Fr","Sa");

date.setMonth(date.getMonth()+num);
thisday = date.getDate();
date.setDate(1);
month = date.getMonth() + 1;
year = date.getYear();
if(year < 2000){
	 year = year + 1900;
}
if((year%4 == 0) && (year%100 != 0) || (year%400 == 0)){
	Monthdays[1] = 29;
}
//休日のフラグを一旦-1とします
var holidayFlag1 = -1;
var holidayFlag2 = -1;
//
//祝日定義
//振替休日・祝日法第三条第三項の休日にも対応します
//しかしながら将来的に末日が祝日になった場合は想定していません
if(month == 1){
	//元旦（１日）成人の日（第二月曜日）
	holidayFlag1 = 1;
	holidayFlag2 = 14 - (date.getDay() + 5)%7;
}
else if(month == 2){
	//建国記念の日（政令で定める日＝11日）
	holidayFlag1 = 11;
}
else if(month == 3){
	//春分の日（前年の２月最初の官報で公布される暦要項にもとづく。Readme.txt参照）
	holidayFlag1 = Math.floor(20.8431 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4));
}
else if(month == 4){
	//みどりの日（29日）
	holidayFlag1 = 29;
}
else if(month == 5){
	//憲法記念日（３日）こどもの日（５日）
	//５月４日のように国民の祝日に挟まれる日については別途、下で指定します
	holidayFlag1 = 3;
	holidayFlag2 = 5;
//
}
else if((month == 7) && (year <= 2002)){
	//海の日（2002年までは20日）
	holidayFlag1 = 20;
}
else if((month == 7) && (year >= 2003)){
	//海の日（2003年以降は第三月曜日）
	holidayFlag1 = 21 - (date.getDay() + 5)%7;
}
else if((month == 9) && (year <= 2002)){
	//敬老の日（2002年までは15日）
	//秋分の日（前年の２月最初の官報で公布される暦要項にもとづく。Readme.txt参照）
	holidayFlag1 = 15;
	holidayFlag2 = Math.floor(23.2488 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4));
}
else if((month == 9) && (year >= 2003)){
	//敬老の日（2003年以降は第３月曜日）
	//秋分の日（前年の２月最初の官報で公布される暦要項にもとづく。Readme.txt参照）
	holidayFlag1 = 21 - (date.getDay() + 5)%7;
	holidayFlag2 = Math.floor(23.2488 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4));
}
else if(month == 10){
	//体育の日（第二月曜日）
	holidayFlag1 = 14 - (date.getDay() + 5)%7;
}
else if(month == 11){
	//文化の日（３日）勤労感謝の日（23日）
	holidayFlag1 = 3;
	holidayFlag2 = 23;
}
else if(month == 12){
	//天皇誕生日（23日）
	holidayFlag1 = 23;
}
with(document){
	write("<table summary='calendar ' + year + '/' + month class = 'calendar' border=0 cellspacing=0 cellpadding=0>");

	write("<tr class='cal-monthhead'>");
	write("<td class='cal-monthhead' colspan='7'> ");
	write("<span class='cal-year'>" + year + "</span>年<span class='cal-month'>" + month + "</span>月");
	write("</td></tr>");
	write("<tr class='cal-weekhead'><td class='cal-holiday'>" + Days[0] + "</td>");
}
for (i = 1; i < 6; i++){
	document.write("<td class='cal-day'>" + Days[i] + "</td>");
}
document.write("<td class='cal-saturday'>" + Days[6] + "</td></tr>");

for (Sday = 1 - date.getDay(); Sday <= Monthdays[month-1]; Sday = Sday + 7){
	document.write("<tr>");
	for(i = Sday; i < Sday + 7; i++){
		if((i > 0) && (i <= Monthdays[month-1])){
			date.setDate(i);
			Tday = date.getDay();
			if((thisday == i)&&(num == 0)){
				document.write("<td class='cal-today' >" + i + "</td>");
			}else if(Tday == 0){
				document.write("<td class='cal-holiday' >" + i + "</td>");
			}
			else if((i == holidayFlag1) || (i == holidayFlag2)){
				document.write("<td class='cal-holiday' >" + i + "</td>");
			}
			else if((Tday == 1) && ((i - 1 == holidayFlag1) || (i - 1 == holidayFlag2))){
				document.write("<td class='cal-holiday' >" + i + "</td>");
			}
			else if((i - 1 == holidayFlag1) && (i + 1 == holidayFlag2) || (i - 1 == holidayFlag2) && (i + 1 == holidayFlag1)){
				document.write("<td class='cal-holiday' >" + i + "</td>");
			//その前日及び翌日が「国民の祝日」である日は、休日とする
			}
			else if(Tday == 6){
				document.write("<td class='cal-saturday' >" + i + "</td>");
			}
			else{
				document.write("<td class='cal-day' >" + i + "</td>");
			}
		}
		else{
			document.write("<td class='null'></td>");
		}
	}
	document.write("</tr>");
}

with(document){
	write("</table>");
}
}


var brOK=false;
var mie=false;
var aver=parseInt(navigator.appVersion.substring(0,1));
var aname=navigator.appName;
function checkbrOK()
{
  if(aname.indexOf("Internet Explorer")!=-1)
  {
     if(aver>=4) 
       brOK=navigator.javaEnabled();
       mie=true;
  }
  if(aname.indexOf("Netscape")!=-1)
  {
     if(aver>=4) 
       brOK=navigator.javaEnabled();
  }
}

var vmin=2;
var vmax=5;
var vr=2;
var timer1;
function Chip(chipname,width,height)
{
  this.named=chipname;
  this.vx=vmin+vmax*Math.random();
  this.vy=vmin+vmax*Math.random();
  this.w=width;
  this.h=height;
  this.xx=0;
  this.yy=0;
  this.timer1=null;
}

function movechip(chipname)
{
  if(brOK)
  {
    eval("chip="+chipname);
    if(!mie)
    {
      pageX=window.pageXOffset;
      pageW=window.innerWidth;
      pageY=window.pageYOffset+201;
      pageH=window.innerHeight-201;
    }
    else
    {
      pageX=window.document.body.scrollLeft;
      pageW=window.document.body.offsetWidth-8;
      pageY=window.document.body.scrollTop+201;
      pageH=window.document.body.offsetHeight-201;
    }
    chip.xx=chip.xx+chip.vx;
    chip.yy=chip.yy+chip.vy;
    chip.vx+=vr*(Math.random()-0.5);
    chip.vy+=vr*(Math.random()-0.5);
    if(chip.vx>(vmax+vmin))  chip.vx=(vmax+vmin)*2-chip.vx;
    if(chip.vx<(-vmax-vmin)) chip.vx=(-vmax-vmin)*2-chip.vx;
    if(chip.vy>(vmax+vmin))  chip.vy=(vmax+vmin)*2-chip.vy;
    if(chip.vy<(-vmax-vmin)) chip.vy=(-vmax-vmin)*2-chip.vy;
    if(chip.xx<=pageX)
    {
      chip.xx=pageX;
      chip.vx=vmin+vmax*Math.random();
    }
    if(chip.xx>=pageX+pageW-chip.w)
    {
      chip.xx=pageX+pageW-chip.w;
      chip.vx=-vmin-vmax*Math.random();
    }
    if(chip.yy<=pageY)
    {
      chip.yy=pageY;
      chip.vy=vmin+vmax*Math.random();
    }
    if(chip.yy>=pageY+pageH-chip.h)
    {
      chip.yy=pageY+pageH-chip.h;
      chip.vy=-vmin-vmax*Math.random();
    }
    if(!mie)
    {
      eval('document.'+chip.named+'.top ='+chip.yy);
      eval('document.'+chip.named+'.left='+chip.xx);
    }
    else
    {
      eval('document.all.'+chip.named+'.style.pixelLeft='+chip.xx);
      eval('document.all.'+chip.named+'.style.pixelTop ='+chip.yy);
    }
    chip.timer1=setTimeout("movechip('"+chip.named+"')",100);
  }
}

function stopme(chipname)
{
  if(brOK)
  {
    eval("chip="+chipname);
    if(chip.timer1!=null)
    {
      clearTimeout(chip.timer1)
    }
  }
}

var go;
var chip;
function go()
{
  checkbrOK();
  go=new Chip("go",60,40);
  if(brOK)
  {
    movechip("go");
  }
}

