//インシデントメッセージ生成
//発生時刻、復旧時刻、影響サービス、障害ステータスの配列
incident=[[],[],[],[]];
//発生時刻
incident[0]=new Array(
 new Date("2009/1/9 0:10:00")
);
//復旧時刻
incident[1]=new Array(
 new Date("2009/1/9 7:30:00")
);
//影響範囲
incident[2]=new Array(
 ""
);
//障害ステータス（0：復旧、1：障害発生中）
incident[3]=new Array(
 "0"
);
//現在時刻
now=new Date();
//各インシデントタイトル
incidentTitleText=new Array();
incidentTitleText.push(new String("【障害によるサービス停止について】"));
incidentTitleText.push(new String("【システム復旧のお知らせ】"));
incidentTitleText.push(new String("【障害によるサービス停止のお詫び】"));
//各インシデント文章
incidentText=new Array();
incidentText.push(new String("ご迷惑をおかけして申し訳ございません。<br />現在、障害により、サービスがご利用いただけません。<br />ただ今復旧作業中ですので、しばらくお待ちください。"));
incidentText.push(new String("にサービスが復旧いたしました。<br />現在は正常に動作しております。<br />ご迷惑をおかけして、申し訳ございませんでした。"));
incidentText.push(new String("以下の時間帯にて、障害によりサービスが停止しておりました。"));
incidentText.push(new String("以下の時間帯にて、障害により一部サービスが停止しておりました。"));
incidentText.push(new String("お客様には多大なご迷惑をお掛けしましたことを、深くお詫び申し上げます。"));

//インシデント本文
incidentContent=new Array();
//インシデントタイトル
incidentTitle=new Array();
//インシデント発生時間帯
incidentTime=new Array();

//前日に発生した障害の数
incidentTimesArray=new Array();
for(i=0;i<incident[0].length;i++){
 if(incident[3][i]=="0" && now.getTime()-incident[1][i].getTime()<1*24*60*60*1000 && now.getTime()-incident[1][i].getTime()>3*60*60*1000){
  incidentTimesArray.push(i);
 }
}

//インシデントメッセージ表示ロジック
for(i=0;i<incident[0].length;i++){
 //発生時刻から1日以内の判定
 if(now.getTime()-incident[1][i].getTime()<1*24*60*60*1000){//1週間以内
  //障害発生中の場合
  if(incident[3][i]==1){//障害発生中
   //影響範囲のチェック
   if(incident[2][i]==""){//影響範囲なし
    incidentTitle.push(incidentTitleText[0]);
    incidentContent.push(incidentText[0]);
   }else{//影響範囲あり
    incidentTitle.push(incidentTitleText[0]);
    incidentContent.push(incidentText[0]+'<div style="margin-left:7em; color:#cc0000; text-indent:-6em;">影響サービス：'+incident[2][i]+'</div>');
   }
  //復旧の場合
  }else{
   //復旧から3時間以内か判定
   if(now.getTime()-incident[1][i].getTime()<3*60*60*1000){//3時間以内
    incidentTitle.push(incidentTitleText[1]);
    incidentContent.push(incident[1][i].toLocaleDateString()+' '+incident[1][i].getHours()+'時'+incident[1][i].getMinutes()+'分'+incidentText[1]);
   }else{//3時間以後
    incidentTitle.push(incidentTitleText[2]);
    incidentTime.push('<div style="color:#cc0000; margin-left:1em;">'+incident[0][i].toLocaleDateString()+' '+incident[0][i].getHours()+'時'+incident[0][i].getMinutes()+'分～'+incident[1][i].toLocaleDateString()+' '+incident[1][i].getHours()+'時'+incident[0][i].getMinutes()+'分</div>');
   }
  }
 }
}

//前日の障害発生数を元にコメントを調整
incidentTimeContent=new String()
for(i=0;i<incidentTime.length;i++){
 incidentTimeContent+=incidentTime[i];
}
if(incidentTime.length!=0){
 incidentContent.push(incidentText[2]+incidentTimeContent+incidentText[4]);
}

//インシデントメッセージオブジェクト
incidentMessage=new String();
if(incidentContent.length!=0){
 incidentMessage+='<table width="564" bgcolor="#ff6666" cellpadding="2" cellspacing="1" style="margin-bottom:3px">'+
                  '<tr>'+
                  '<td bgcolor="#ffffff" style="padding:10px;">';
 for(i=0;i<incidentContent.length;i++){
  if(i!=0){
   incidentMessage+='<div style="color:#cc0000; margin-top:1em;">'+incidentTitle[i]+'</div>'+incidentContent[i];
  }else{
   incidentMessage+='<div style="color:#cc0000;">'+incidentTitle[i]+'</div>'+incidentContent[i];
  }
 }
 incidentMessage+='</td>'+
                  '</tr>'+
                  '</table>';
}else{
 incidentMessage+="";
}



//メンテナンス告知
maintenanceDate=new Array(
 new Date("2010/1/20 8:00:00"),
 new Date("2010/2/17 8:00:00"),
 new Date("2010/3/17 8:00:00"),
 new Date("2010/4/21 8:00:00"),
 new Date("2010/5/19 8:00:00"),
 new Date("2010/6/16 8:00:00"),
 new Date("2010/7/21 8:00:00"),
 new Date("2010/8/18 8:00:00"),
 new Date("2010/9/22 8:00:00"),
 new Date("2010/10/20 8:00:00"),
 new Date("2010/11/17 8:00:00"),
 new Date("2010/12/22 8:00:00")
);

for(i=0;i<maintenanceDate.length;i++){
 if(String(maintenanceDate[i].getFullYear().toString())+String(maintenanceDate[i].getMonth())==String(new Date().getFullYear())+String(new Date().getMonth())){
  if(new Date()-new Date(maintenanceDate[i].getTime()-1000*60*60*24*7)<0){
   noticeMessage="";
  }else if(new Date()-maintenanceDate[i]<0){
   noticeMessage='<table width="564" bgcolor="#ff6666" cellpadding="2" cellspacing="1" style="margin-bottom:3px">'
                +'<tr>'
                +'<td bgcolor="#ffffff" style="padding:10px;">'
                +'<span style="color:#cc0000;">【サービス停止のお知らせ】</span><br />'
                +'メンテナンスのため、Webサービスを停止させていただきます。<br />下記時間帯において、当Webサイトがご利用できませんのでご了承ください。'
                +'<div style="text-align:center; color:#cc0000;">サービス停止時間：'
                +maintenanceDate[i].getFullYear()+'年'
                +(maintenanceDate[i].getMonth()+1)+'月'
                +maintenanceDate[i].getDate()+'日 ';
   switch(maintenanceDate[i].getDay()){
    case 0:
     noticeMessage+='日';
    break;
    case 1:
     noticeMessage+='月';
    break;
    case 2:
     noticeMessage+='火';
    break;
    case 3:
     noticeMessage+='水';
    break;
    case 4:
     noticeMessage+='木';
    break;
    case 5:
     noticeMessage+='金';
    break;
    case 6:
     noticeMessage+='土';
    break;
   }
   noticeMessage+='曜日 0時～'+maintenanceDate[i].getHours()+'時</div>'
                +'</td>'
                +'</tr>'
                +'</table>';
  }else{
   noticeMessage="";
  }
 }
}
