cldr = "";
day = new Date();
thisday = day.getDate();  //今日の日付 - 背景色を変更するため
day.setDate(1);       //今月最初の日にセット
month = day.getMonth() + 1;

year = day.getYear();
if(year < 2000) year += 1900;
numdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

// うるう年
if((year%4 == 0) && (year%100 != 0) || (year%400 == 0)) numdays[1] = 29;

// 休日の定義
if(month == 1){holiday1 = 1; holiday2 = 2; holiday3 = 3; holiday4 = 14-(day.getDay()+5)%7; holiday5 = -1}  //成人の日
else if(month == 2){holiday1 = 11; holiday2 = -1; holiday3 = -1}
else if(month == 3){
  ed =  20.8431 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4);  //春分の日
  holiday1 = Math.floor(ed);
  holiday2 = -1;
  holiday3 = -1;
}
else if(month == 4){holiday1 = 29; holiday2 = -1; holiday3 = -1}
else if(month == 5){holiday1 = 3; holiday2 = 4; holiday3 = 5}
else if(month == 6){holiday1 = -1; holiday2 = -1; holiday3 = -1}
else if(month == 7){holiday1 = 21-(day.getDay()+5)%7; holiday2 = -1;holiday3 = -1}
else if(month == 8){holiday1 = -1; holiday2 = -1; holiday3 = -1}
else if(month == 9){
  holiday1 = 21-(day.getDay()+5)%7;
  ed =  23.2488 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4);  //秋分の日
  holiday2 = Math.floor(ed);
  holiday3 = -1
}
else if(month == 10){holiday1 = 14-(day.getDay()+5)%7;; holiday2 = -1; holiday3 = -1}  //体育の日
else if(month == 11){holiday1 = 3; holiday2 = 23; holiday3 = -1}
else if(month == 12){holiday1 = 23; holiday2 = 30; holiday3 = 31; holiday4 = -1; holiday5 = -1}
// 休日の定義終わり


// カレンダー本体
cldr += "<table width=\"150\" border=\"0\" bgcolor=\"#CCCCCC\" cellspacing=\"1\">";
cldr += "<tr align=center bgcolor=\"#FFFFCE\"><th colspan=7><font color=\"#666666\">"+month+"月</th></tr>";
cldr += "<tr align=center bgcolor=\"#FFFFFF\"><th bgcolor=\"#FFDFDE\"><font color=\"#FF0000\">日</a></th><th bgcolor=\"#DEDFFF\"><font color=\"#666666\">月</th><th bgcolor=\"#DEDFFF\"><font color=\"#666666\">火</th><th bgcolor=\"#DEDFFF\"><font color=\"#666666\">水</th><th bgcolor=\"#DEDFFF\"><font color=\"#666666\">木</th><th bgcolor=\"#DEDFFF\"><font color=\"#666666\">金</th><th bgcolor=\"#DEFFFF\"><font color=\"#0000FF\">土</a></th></tr>";


// 日付の書き込み
for(sunday = 1-day.getDay(); sunday <= 31; sunday +=7){
  cldr += "<tr align=center bgcolor=\"#000000\">";
  for(i = sunday; i < sunday + 7; i++){
    if((i > 0) && (i <= numdays[month-1])){
      day.setDate(i);
      today = day.getDay();

      if(thisday == i) cldr += "<td bgcolor='#999999'>";    // 今日の背景色
        else cldr += "<td>";

      if(today == 0){
        cldr += "<font color=\"#FF0000\">"+ i +"</font></td>";      // 日曜
      }else if((i == holiday1)||(i == holiday2)||(i == holiday3)){
        cldr += "<font color=\"#FF0000\">"+ i +"</font></td>";      // 祝日
      }else if((today == 1)&&((i-1 == holiday1)||(i-1 == holiday2)||(i-1 == holiday3))){
        cldr += "<font color=\"#FF0000\">"+ i +"</font></td>";
      }else if(today == 6){
        cldr += "<font color=\"#FF0000\">"+ i +"</font></td>";      //土曜日
      }else{
        cldr += ""+ i +"</td>";
      }

    }else{
      cldr += "<td></td>";
    }
  }
  cldr += "</tr>";
}


cldr += "</table>";

document.write(cldr);
