var holyday = new Object();

holyday["2010/11/27"] = 1;
holyday["2010/11/23"] = 2;
holyday["2010/11/20"] = 3;
holyday["2010/11/13"] = 4;
holyday["2010/11/06"] = 5;
holyday["2010/11/03"] = 6;
holyday["2010/10/30"] = 7;
holyday["2010/10/23"] = 8;
holyday["2010/10/16"] = 9;
holyday["2010/10/11"] = 10;
holyday["2010/10/09"] = 11;
holyday["2010/10/02"] = 12;
holyday["2010/9/25"] = 13;
holyday["2010/9/25"] = 14;
holyday["2010/9/23"] = 15;
holyday["2010/9/20"] = 16;
holyday["2010/9/18"] = 17;
holyday["2010/9/11"] = 18;
holyday["2010/9/04"] = 19;
holyday["2010/8/28"] = 20;
holyday["2010/8/21"] = 21;
holyday["2010/8/14"] = 22;
holyday["2010/8/07"] = 23;
holyday["2010/7/31"] = 24;
holyday["2010/7/24"] = 25;
holyday["2010/7/19"] = 26;
holyday["2010/7/17"] = 27;
holyday["2010/7/10"] = 28;
holyday["2010/7/03"] = 29;
holyday["2010/6/26"] = 30;
holyday["2010/6/19"] = 31;
holyday["2010/6/12"] = 32;
holyday["2010/6/05"] = 33;
holyday["2010/5/29"] = 34;
holyday["2010/5/22"] = 35;
holyday["2010/5/15"] = 36;
holyday["2010/5/08"] = 37;
holyday["2010/5/05"] = 38;
holyday["2010/5/04"] = 39;
holyday["2010/5/03"] = 40;
holyday["2010/5/01"] = 41;
holyday["2010/5/01"] = 42;
holyday["2010/4/29"] = 43;
holyday["2010/4/17"] = 44;
holyday["2010/4/10"] = 45;
holyday["2010/4/03"] = 46;
holyday["2010/3/27"] = 47;
holyday["2010/3/22"] = 48;
holyday["2010/3/20"] = 49;
holyday["2010/3/13"] = 50;
holyday["2010/3/06"] = 51;
holyday["2010/2/27"] = 52;
holyday["2010/2/20"] = 53;
holyday["2010/2/13"] = 54;
holyday["2010/2/11"] = 55;
holyday["2010/2/06"] = 56;
holyday["2010/1/30"] = 57;
holyday["2010/1/23"] = 58;
holyday["2010/1/16"] = 59;
holyday["2010/1/11"] = 60;
holyday["2010/1/09"] = 61;
holyday["2010/1/05"] = 62;
holyday["2010/1/04"] = 63;
holyday["2010/1/03"] = 64;
holyday["2010/1/02"] = 65;
holyday["2010/1/01"] = 66;
holyday["2009/12/31"] = 67;
holyday["2009/12/30"] = 68;
holyday["2009/12/29"] = 69;
holyday["2009/12/28"] = 70;
holyday["2009/12/23"] = 71;
holyday["2009/12/19"] = 72;
holyday["2009/12/12"] = 73;
holyday["2009/12/05"] = 74;
holyday["2009/11/28"] = 75;
holyday["2009/11/23"] = 76;
holyday["2009/11/21"] = 77;
holyday["2009/11/14"] = 78;
holyday["2009/11/07"] = 79;
holyday["2009/11/03"] = 80;
holyday["2009/10/31"] = 81;
holyday["2009/10/24"] = 82;
holyday["2009/10/17"] = 83;
holyday["2009/10/12"] = 84;
holyday["2009/10/10"] = 85;
holyday["2009/10/03"] = 86;
holyday["2009/9/26"] = 87;
holyday["2009/9/23"] = 88;
holyday["2009/9/22"] = 89;
holyday["2009/9/21"] = 90;
holyday["2009/9/19"] = 91;
holyday["2009/9/12"] = 92;
holyday["2009/9/05"] = 93;
holyday["2009/8/29"] = 94;
holyday["2009/8/22"] = 95;
holyday["2009/8/15"] = 96;
holyday["2009/8/08"] = 97;
holyday["2009/8/01"] = 98;
holyday["2009/7/25"] = 99;
holyday["2009/7/20"] = 100;
holyday["2009/7/18"] = 101;
holyday["2009/7/11"] = 102;
holyday["2009/7/04"] = 103;
holyday["2009/6/27"] = 104;
holyday["2009/6/20"] = 105;
holyday["2009/6/13"] = 106;
holyday["2009/6/06"] = 107;
holyday["2009/5/30"] = 108;
holyday["2009/5/23"] = 109;
holyday["2009/5/16"] = 110;
holyday["2009/5/09"] = 111;
holyday["2009/5/06"] = 112;
holyday["2009/5/05"] = 113;
holyday["2009/5/04"] = 114;
holyday["2009/5/02"] = 115;
holyday["2009/4/29"] = 116;
holyday["2009/4/25"] = 117;
holyday["2009/4/18"] = 118;
holyday["2009/4/11"] = 119;
holyday["2009/4/04"] = 120;
holyday["2009/3/28"] = 121;
holyday["2009/3/21"] = 122;
holyday["2009/3/20"] = 123;
holyday["2009/3/15"] = 124;
holyday["2009/3/14"] = 125;
holyday["2009/3/14"] = 126;
holyday["2009/3/08"] = 127;
holyday["2009/3/07"] = 128;
holyday["2009/3/07"] = 129;
holyday["2009/2/28"] = 130;
holyday["2009/2/21"] = 131;
holyday["2009/2/14"] = 132;
holyday["2009/2/11"] = 133;
holyday["2009/2/07"] = 134;
holyday["2009/1/31"] = 135;
holyday["2009/1/24"] = 136;
holyday["2009/1/17"] = 137;
holyday["2009/1/10"] = 138;
holyday["2009/1/05"] = 139;
holyday["2009/1/03"] = 140;
holyday["2009/1/02"] = 141;
holyday["2009/1/01"] = 142;
holyday["2008/12/23"] = 143;
holyday["2008/11/24"] = 144;
holyday["2008/11/03"] = 145;

var today = new Date();
var cal_year = today.getYear();
var cal_month = today.getMonth() + 1;
var cal_day = today.getDate();
if (cal_year < 1900) cal_year += 1900;
document.write("<div id='calendar'></div>");
var cal = document.getElementById("calendar");
var defaultBackgroundColors = new Object();
var to_year = cal_year;
var to_month = cal_month;
var to_day = cal_day;

function currentCal(){
cal_year = to_year;
cal_month = to_month;
cal_day = to_day;
writeCal(cal_year,cal_month,cal_day);
}
function prevCal(){
cal_month -= 1;
if(cal_month < 1){
cal_month = 12;
cal_year -= 1;
}
writeCal(cal_year,cal_month,0);
}
function nextCal(){
cal_month += 1;
if(cal_month > 12){
cal_month = 1;
cal_year += 1;
}
writeCal(cal_year,cal_month,0);
}
function getWeek(year,month,day){
if (month == 1 || month == 2) {
year--;
month += 12;
}
var week = Math.floor(year + Math.floor(year/4) - Math.floor(year/100) + Math.floor(year/400) + Math.floor((13 * month + 8) / 5) + day) % 7;
return week;
}
function writeCal(year,month,day){
var calendars = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var weeks = new Array("<th abbr='日' class='sun-block'>日</th>","<th abbr='月'>月</th>","<th abbr='火'>火</th>","<th abbr='水'>水</th>","<th abbr='木'>木</th>","<th abbr='金'>金</th>","<th abbr='土' class='sat-block'>土</th>");
var monthName = new Array('none','01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月');

var cal_flag = 0;
if(year % 100 == 0 || year % 4 != 0){
if(year % 400 != 0){
cal_flag = 0;
}
else{
cal_flag = 1;
}
}
else if(year % 4 == 0){
cal_flag = 1;
}
else{
cal_flag = 0;
}
calendars[2] += cal_flag;

var cal_start_day = getWeek(year,month,1);
var cal_tags = "<div id='calendar-index' style='height:13em; margin-left:34px;'>";
cal_tags += "<table class='calendar-block'>";
cal_tags += "<tr><th class='ti' colspan='7'>";
cal_tags += "<span onClick='prevCal();' style='display:inline; cursor:pointer;'>＜</span>　";
cal_tags += "<span onClick='currentCal();' style='display:inline; cursor:pointer;'>";
cal_tags += year + "年" + monthName[month];
cal_tags += "</span>";
cal_tags += "　<span onClick='nextCal();' style='display:inline; cursor:pointer;'>＞</span>";
cal_tags += "</th></tr>";
cal_tags += "<tr class='headline'>";
for(var i=0;i<weeks.length;i++){
cal_tags += weeks[i];
}
cal_tags += "</tr><tr>";
for(var i=0;i < cal_start_day;i++){
cal_tags += "<td>&nbsp;</td>";
}

//main
for(var cal_day_cnt = 1;cal_day_cnt <= calendars[month];cal_day_cnt++){
var cal_day_cnt_sub = cal_day_cnt;
if (cal_day_cnt_sub < 10){
cal_day_cnt_sub = "0" + cal_day_cnt_sub;
};
var cal_day_match = year + "/" + month + "/" + cal_day_cnt_sub;
var dayClass = "";
var onClass = "";

if(holyday[cal_day_match] != undefined){
onClass = ' class="on"';
}
else if(cal_start_day == 0){
dayClass = 'sun-block';
}
else if(cal_start_day == 6){
dayClass = 'sat-block';
}
cal_tags += "<td class=\"" + dayClass + "\"><span" + onClass + ">" + cal_day_cnt + "</span></td>";
if(cal_start_day == 6){
cal_tags += "</tr>";
if(cal_day_cnt < calendars[month]){
cal_tags += "<tr>";
}
cal_start_day = 0;
}
else{
cal_start_day++;
}
}
while(cal_start_day <= 6 && cal_start_day != 0){
cal_tags += "<td>&nbsp;</td>";
if(cal_start_day == 6){
cal_tags += "</tr>";
}
cal_start_day++;
}
cal_tags += "</table>";
cal_tags += "</div>";
cal.innerHTML = cal_tags;
}
writeCal(cal_year,cal_month,cal_day);
