/*
 * jscalendar for Rentall 1.0.0
 * copyright (C) 2008 Rent all Nodahanshin all Rights Reserved.
 *
 * Date: 2008-05-08
 */



// 休日の設定
var holiday = [
"2011/2/6","2011/2/11","2011/2/13","2011/2/20","2011/2/27",
"2011/3/6","2011/3/13","2011/3/21","2011/3/22","2011/3/27",
"2011/4/3","2011/4/10","2011/4/17","2011/4/24","2011/4/29",
"2011/5/1","2011/5/3","2011/5/4","2011/5/5","2011/5/8","2011/5/15","2011/5/22","2011/5/29",
"2011/6/5","2011/6/12","2011/6/19","2011/6/26",
"2011/7/3","2011/7/10","2011/7/17","2011/7/5","2011/7/24","2011/7/31",
"2011/8/7","2011/8/13","2011/8/14","2011/8/15","2011/8/21","2011/8/28",
"2011/9/4","2011/9/11","2011/9/18","2011/9/19","2011/9/23","2011/9/25",
"2011/10/2","2011/10/9","2011/10/10","2011/10/16","2011/10/23","2011/10/30",
"2011/11/3","2011/11/6","2011/11/13","2011/11/20","2011/11/23","2011/11/27",
"2011/12/4","2011/12/11","2011/12/18","2011/12/23","2011/12/25",
"2012/1/1","2012/1/2","2012/1/3","2012/1/4","2012/1/8","2012/1/9","2012/1/15","2012/1/22","2012/1/29",
"2012/2/5","2012/2/11","2012/2/12","2012/2/19","2012/2/26",
"2012/3/4","2012/3/11","2012/3/18","2012/3/20","2012/3/25",
"2012/4/1","2012/4/8","2012/4/15","2012/4/22","2012/4/29","2012/4/30"
];



// 以下編集不可
function leap(year){
  return (year % 4) ? 0 : (year % 100) ? 1 : (year % 400) ? 0 : 1;
}

function make_cal_array(year){
  var months = [31, 28 + leap(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  var result = [];
  for (var m = 0; m < 12; m++){
    result[m] = [];
    var dofw1 = (new Date(year, m, 1, 0, 0, 0)).getDay();
    for (var d = 1; d <= months[m]; d++){
    result[m][d + dofw1 - 1] = d;
    }
  }
  return result;
}

function calendar(year, month){
  if (!year && !month){
    var date = new Date();
    month = date.getMonth() + 1;
    year = date.getFullYear();
  }
  if (year && !month){
    var date = new Date();
    if (year > 0){
      month = date.getMonth() + 1 + year;
      year = date.getFullYear() + ((month % 12) ? (month / 12 | 0) : (month / 12 | 0) - 1);
      month = (month % 12 == 0) ? 12 : month % 12;
    }
    else if (year < 0){
      month = date.getMonth() + 1 + year;
      year = date.getFullYear() + ((month <= 0) ? (month / 12 | 0) - 1 : 0);
      if (month <= 0){
        month *= -1;
        month = (month % 12 == 0) ? 12 : 12 - month % 12;
      }
    }
    else {
      month = date.getMonth() + 1;
      year = date.getFullYear();
    }
  }
  var daynames = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
  var daynames_j = ["日", "月", "火", "水", "木", "金", "土"];
  var cal = make_cal_array(year);
  document.write('<table id="jsCalendar'+year+month+'" class="jsCalendar">'+"\n"+'<tbody>'+"\n");
  for (var d = 0; d < 42; d++){
    if (d == 0){
      document.write('<tr><th colspan="7" class="caption">'+year+'年'+month+'月</th></tr>');
      for (var w = 0; w < daynames.length; w++) document.write('<th class="'+daynames[w % 7]+'">'+daynames_j[w]+'</th>');
    }
    var className = ' class="'+daynames[d % 7];
    for (h= 0; h < holiday.length; h++){
      var hday = holiday[h].split('/');
      if (year == hday[0] && month == hday[1] && cal[month-1][d] == hday[2]){
        className += " holiday";
        break;
      }
    }
    className += '"';
    if (d % 7 == 0) document.write('<tr>');
    document.write('<td'+className+'>'+(cal[month-1][d] ? cal[month-1][d] : '&nbsp;')+'</td>');
    if (d % 7 == 6) document.write('</tr>'+"\n");
  }
  document.write('</tbody>'+"\n"+'</table>'+"\n");
}

