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



// 休日の設定
var holiday = [
"2009/02/01", "2009/02/08", "2009/02/15", "2009/02/22",
"2009/03/01", "2009/03/08", "2009/03/15", "2009/03/22", "2009/03/29", "2009/04/05", "2009/04/12", "2009/04/19", "2009/04/26",
"2009/05/03","2009/05/04","2009/05/05","2009/05/06",
"2009/05/10","2009/05/17","2009/05/24","2009/05/31",
"2009/06/07","2009/06/14","2009/06/21","2009/06/28",
"2009/07/05","2009/07/12","2009/07/19","2009/07/20","2009/07/26",
"2009/08/02","2009/08/09","2009/08/13","2009/08/14","2009/08/15","2009/08/16",
"2009/08/23","2009/08/30","2009/9/6","2009/9/13","2009/9/20","2009/9/21","2009/9/22","2009/9/23","2009/9/27","2009/10/04","2009/10/11","2009/10/12","2009/10/18","2009/10/25","2009/11/1","2009/11/3","2009/11/8","2009/11/15","2009/11/22","2009/11/23","2009/11/29","2009/12/6","2009/12/13","2009/12/20","2009/12/23","2009/12/27","2009/12/30","2009/12/31","2010/01/01","2010/01/02","2010/01/03","2010/01/04","2010/01/10","2010/01/11","2010/01/17","2010/01/24","2010/01/31","2010/02/07","2010/02/11","2010/02/14","2010/02/21","2010/02/28","2010/03/07","2010/03/14","2010/03/21","2010/03/22","2010/03/28","2010/4/04","2010/4/11","2010/4/18","2010/4/25","2010/4/29","2010/5/2","2010/5/3","2010/5/4","2010/5/5","2010/5/9","2010/5/16","2010/5/23","2010/5/30","2010/6/6","2010/6/13","2010/6/20","2010/6/27","2010/7/4","2010/7/11","2010/7/18","2010/7/19","2010/7/25","2010/8/1","2010/8/8","2010/8/13","2010/8/14","2010/8/15","2010/8/22","2010/8/29","2010/9/5","2010/9/12","2010/9/19","2010/9/26"
];



// 以下編集不可
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");
}
