thisDay = new Date();
//thisDay = new Date(2006,9,23,8,00,00);　//デバッグ用

timeStamp = thisDay.getTime();
myMonth = thisDay.getMonth() + 1;
myDate  = thisDay.getDate();
myHours = thisDay.getHours();
myDay   = thisDay.getDay();
myWeekTbl = new Array( "日","月","火","水","木","金","土" );

function isHoliday (year, month, date, nday) {
  nofw    = Math.floor((date - 1) / 7) + 1;
  shunbun = Math.floor(20.8431+0.242194*(year-1980)-Math.floor((year-1980)/4));
  syubun  = Math.floor(23.2488+0.242194*(year-1980)-Math.floor((year-1980)/4));
  if (month ==  1 && date ==  1)               { return 1; } // 元旦
  if (month ==  1 && nday ==  1 && nofw ==  2) { return 1; } // 成人の日
  if (month ==  2 && date == 11)               { return 1; } // 建国記念の日
  if (month ==  3 && date == shunbun)          { return 1; } // 春分の日
  if (month ==  4 && date == 29)               { return 1; } // みどりの日
  if (month ==  5 && date >=  3 && date <=  5) { return 1; } // 憲法記念日〜こどもの日
  if (month ==  7 && nday ==  1 && nofw ==  3) { return 1; } // 海の日
  if (month ==  8 && date >=  15 && data <=16) { return 1; } // お盆休み
  if (month ==  9 && nday ==  1 && nofw ==  3) { return 1; } // 敬老の日
  if (month ==  9 && date == syubun)           { return 1; } // 秋分の日
  if (month ==  9 && nday ==  2 && nofw ==  3
                  && date+1 == syubun) { return 1; } // 9月第3火曜の翌日が秋分の日→国民の休日
  if (month == 10 && nday ==  1 && nofw ==  2) { return 1; } // 体育の日
  if (month == 11 && date ==  3)               { return 1; } // 文化の日
  if (month == 11 && date == 23)               { return 1; } // 勤労感謝の日
  if (month == 12 && date == 23)               { return 1; } // 天皇誕生日
  if (nday  ==  0)                             { return 2; } // 日曜

//  if (nday  ==  6)                             { return 2; } // 土曜休み


// 2011年度
  if (month ==  1 && date >=  2 && date <= 4 )              { return 2; } // 年始
  if (month ==  1 && date == 22)              { return 2; } // 土曜休み
  if (month ==  1 && date == 29)              { return 2; } // ネット発送中止
//  if (month ==  1 && date == 31)              { return 2; } // ネット発送中止

  if (month ==  2 && date == 5)              { return 2; } // 土曜休み
  if (month ==  2 && date == 12)              { return 2; } // 土曜休み
  if (month ==  2 && date == 19)              { return 2; } // 土曜休み

  if (month ==  3 && date == 5)              { return 2; } // 土曜休み
  if (month ==  3 && date == 12)              { return 2; } // 土曜休み
  if (month ==  3 && date == 19)              { return 2; } // 土曜休み
  if (month ==  3 && date == 26)              { return 2; } // 土曜休み

  if (month ==  4 && date == 2)              { return 2; } // 土曜休み
  if (month ==  4 && date == 9)              { return 2; } // 土曜休み
  if (month ==  4 && date == 16)              { return 2; } // 土曜休み

  if (month ==  5 && date == 21)              { return 2; } // 土曜休み
  if (month ==  5 && date == 28)              { return 2; } // 土曜休み

  if (month ==  6 && date == 4)              { return 2; } // 土曜休み
  if (month ==  6 && date == 11)              { return 2; } // 土曜休み
  if (month ==  6 && date == 18)              { return 2; } // 土曜休み
  if (month ==  6 && date == 25)              { return 2; } // 土曜休み

  if (month ==  7 && date == 2)              { return 2; } // 土曜休み
  if (month ==  7 && date == 9)              { return 2; } // 土曜休み
  if (month ==  7 && date == 30)              { return 2; } // 土曜休み
		

  if (month ==  8 && date == 20)              { return 2; } // 土曜休み
  if (month ==  8 && date == 27)              { return 2; } // 土曜休み

  if (month ==  9 && date == 3)              { return 2; } // 土曜休み
  if (month ==  9 && date == 10)              { return 2; } // 土曜休み
		
  if (month ==  10 && date == 1)              { return 2; } // 土曜休み
  if (month ==  10 && date == 15)              { return 2; } // 土曜休み
  if (month ==  10 && date == 22)              { return 2; } // 土曜休み
		
  if (month ==  11 && date == 12)              { return 2; } // 土曜休み
  if (month ==  11 && date == 19)              { return 2; } // 土曜休み
  if (month ==  11 && date == 26)              { return 2; } // 土曜休み
		
  if (month ==  12 && date == 3)              { return 2; } // 土曜休み
  if (month ==  12 && date == 17)              { return 2; } // 土曜休み
  if (month ==  12 && date >=  25 && date <= 31 )              { return 2; } // 2010年末
		
  return 0;
}

function dispDateW () {
  return dispDate(1);
}

function dispDate1W (h) {
  return dispDate1(h, 1);
}

function dispDate2W (n, h) {
  return dispDate2(n, h, 1);
}

function dispDate3W (n,h) {
  return dispDate3(n, h, 1);
}

function dispDate (w) {
  return dateFormat(myMonth,myDate,myDay,w);
}

function dispDate1 (h, w) {
  return dispDate2(0, h, w);
}

function dispDate2 (n, h, w) {
  var i = 0;
  while (i <= n) {
    thisDay.setTime(timeStamp + (1000*60*60*24 * i));
    myYear2  = thisDay.getFullYear();
    myMonth2 = thisDay.getMonth() + 1;
    myDate2  = thisDay.getDate();
    myDay2   = thisDay.getDay();
    if (isHoliday(myYear2,myMonth2,myDate2,myDay2) == 0 && i == 0 && h <= myHours) { n++; }  // 翌日扱い
    if (isHoliday(myYear2,myMonth2,myDate2,myDay2) >= 1){ n++; }  // 休日
    if (isHoliday(myYear2,myMonth2,myDate2,myDay2) == 1 && myDay2 == 0){ n++; }  // 振替休日
    i++;
  }
  return dateFormat(myMonth2,myDate2,myDay2,w);
}

function dispDate3 (n, h, w) {
  var i = 0;
  var j = 0;

/* 出荷日計算 (土日　振替休日）*/

  while (i <= n) {
    thisDay.setTime(timeStamp + (1000*60*60*24 * i));
    myYear2  = thisDay.getFullYear();
    myMonth2 = thisDay.getMonth()+1;
    myDate2  = thisDay.getDate();
    myDay2   = thisDay.getDay();

    if (isHoliday(myYear2,myMonth2,myDate2,myDay2) == 0 && i == 0 && h <= myHours) { n++; }  // 翌日扱い
    if (isHoliday(myYear2,myMonth2,myDate2,myDay2) >= 1){ n++; }  // 休日
    if (isHoliday(myYear2,myMonth2,myDate2,myDay2) == 1 && myDay2 == 0){ n++; }  // 振替休日

/*　
document.write(n);　//デバッグ用
document.write("\n");
document.write(myYear2);
document.write("\n");
document.write(myMonth2);
document.write("\n");
document.write(myDate2);
document.write("\n");
//document.write(myDay2);
//document.write("\n");
*/

   i++;
  }


 /* 到着日計算　（発送日＋2日）*/

 myMonth2 = myMonth2 - 1; //月　マイナス１　

 arrivalDay = new Date(myYear2,myMonth2,myDate2,myDay2);
 timeA = arrivalDay.getTime();

 while (j <= 2) {
    arrivalDay.setTime(timeA + (1000*60*60*24 * j));
    myYear3  = arrivalDay.getFullYear();
    myMonth3 = arrivalDay.getMonth() +1 ;
    myDate3  = arrivalDay.getDate();
    myDay3   = arrivalDay.getDay();


/*
document.write(myYear3);
document.write("  ");
document.write(myMonth3);
document.write("  ");
document.write(myDate3);
document.write("  ");
document.write(myDay3);
*/

    j++;
 }
  return dateFormat(myMonth3,myDate3,myDay3,w);
}

function dateFormat (month, date, week, w) {
  if (w == 1) { return month+"月"+date+"日（"+myWeekTbl[week]+"）"; }
  else { return month+"月"+date+"日"; }
}

