回忌法要予定表をWEBアプリで作る!(農協関係者は、絶対に使用禁止!)

このプログラムを実行するにあたり、農協及び農協関係者の方は、使用できません。
絶対に使わないで下さい。発見次第、法的処置をとります。
もし寄付をしたい方は、連絡下さい。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta http-equiv="Content-Script-Type" content="text/javascript">
  <meta http-equiv="Content-Style-Type" content="text/css">

  <title>回忌法要表</title>

  <style type="text/css">

    body {
      width  : 195mm;
    }

    form, p {
      margin : 0;
    }

    table {
      width  : 100%;
      border : 2px #666 solid;
    }

    caption {
      font   : 36pt '楷書体マール(GT)';
      border : 2px #888 solid;
      text-align: center;
      padding :4mm 0mm 2mm 0mm;
      background-color : #ccc;
    }

    tr {
      background-color: #ddd;
    }

    th {
      font    : normal 28pt/33pt '楷書体マール(GT)';
      border  : 1px #888 solid;
    }

    td {
      font    : 28pt/33pt 'MS ゴシック';
      border  : 1px #888 solid;
      padding : 0 .5em;
      white-space: nowrap;
    }

    tfoot td {
      font-size  : 16pt;
      text-align : center;
      padding    : 2mm 0;
      width      : 100%;
    }

    .date input {
      text-align : cnter;
      ime-mode   : disabled;
    }

    @media print{
      form {
        display: none;
      }
    }

    .bk0 {
      background-color:#f8f8f8;
    }

  </style>
</head>

<body>
  <form id="inp">
    <p>
      名前<input type="text" id="namae" value="" size="20" maxlength="16" tabindex="1">

      死亡日
      <select id="nengo">
        <option value="0" selected>西暦</option>
        <option value="1988">平成</option>
        <option value="1925">昭和</option>
        <option value="1910">大正</option>
        <option value="1867">明治</option>
      </select>

      <span class="date">
        <input type="text" name="sdate" value="" size="4" maxlength="4">年
        <input type="text" name="sdate" value="" size="2" maxlength="2">月
        <input type="text" name="sdate" value="" size="2" maxlength="2">日
      </span>
      <input type="button" id="btn_reload" value="更新">
      <input type="button" id="btn_print" value="印刷" tabindex="0">
      <input type="button" id="btn_reset" value="消去" tabindex="0">
      <input type="button" id="btn_mode" value="仏/神" tabindex="0">
      <input type="hidden" id="mode" value="butu">
    </p>
  </form>

  <hr>

  <table border="1" summary="回忌法要表・霊祭表" id="hyo">
    <caption id="title">回忌法要予定表</caption>
    <tbody>
      <tr>
        <th>死亡年月日
        <td>&nbsp;
      <tr class="bk0">
        <th>初七日法要
        <td>&nbsp;
      <tr>
        <th>二・七日法要
        <td>&nbsp;
      <tr class="bk0">
        <th>三・七日法要
        <td>&nbsp;
      <tr>
        <th>四・七日法要
        <td>&nbsp;
      <tr class="bk0">
        <th>五・七日法要
        <td>&nbsp;
      <tr>
        <th>六・七日法要
        <td>&nbsp;
      <tr class="bk0">
        <th>四十九日法要
        <td>&nbsp;
      <tr>
        <th>百か日法要
        <td>&nbsp;
      <tr class="bk0">
        <th>一周忌法要
        <td>&nbsp;
      <tr>
        <th>三回忌法要
        <td>&nbsp;
      <tr class="bk0">
        <th>七回忌法要
        <td>&nbsp;
      <tr>
        <th>十三回忌法要
        <td>&nbsp;
      <tr class="bk0">
        <th>十七回忌法要
        <td>&nbsp;
      <tr>
        <th>二十三回忌法要
        <td>&nbsp;
      <tr class="bk0">
        <th>二十七回忌法要
        <td>&nbsp;
      <tr>
        <th>三十三回忌法要
        <td>&nbsp;
      <tr class="bk0">
        <th>五十回忌法要
        <td>&nbsp;
      <tr>
        <th>百回忌法要
        <td>&nbsp;
    </tbody>
    <tfoot>
      <tr>
        <td colspan="2">ここにCMを書こう
    </tfoot>
        
  </table>

  <script type="text/javascript">
    //@cc_on

    Date.prototype.getHizuke = function( ) {
      var z = function ( n ) { return (n < 10 ? '0': '') + n; };
      var a = [ '日', '月', '火', '水', '木', '金', '土' ];
      return this.getFullYear() + '年' + z( this.getMonth() + 1 ) + '月' + z( this.getDate() ) + '日(' + a[ this.getDay() ] + '曜)';
    };


    var addEvent = function ( element, evt, eventHandler, flag ) {
      element./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/
          evt, eventHandler, flag );
    };


    //_______________
    //仏・神用の切り替え
    var Mode = function () {
      var e = document.getElementById( 'mode' );
      e.value = 'butu' == e.value ? 'kami': 'butu';
      Update( );
    };


    //フォームの初期化
    var Reset = function ( ) {
      var day = new Date;
      var form = document.getElementById('inp');
      var inp = form.elements[ 'sdate' ];
      
      form.reset( );
      inp[ 0 ].value = day.getFullYear( );
      inp[ 1 ].value = day.getMonth( ) + 1;
      inp[ 2 ].value = day.getDate( );
      Update( );
      form.elements[ 'namae' ].focus( );
    };


    //処理分岐
    var Jumper = function ( evt ) {
      var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
      switch( e.id ){
        case 'btn_mode':   Mode( );  break;
        case 'btn_print':  Print( ); break;
    //    case 'btn_reset':  Reset( ); break;
        case 'btn_reload': Update( );break;
      }
    };


    //表の更新
    var Update = function ( ) {
      var table = {
        'butu': [
          { 'title': '回忌法要表' },
          { 'item': '死亡年月日',     'year':   0, 'day':   0 },
          { 'item': '初七日法要',     'year':   0, 'day':   6 },
          { 'item': '二・七日法要',   'year':   0, 'day':  13 },
          { 'item': '三・七日法要',   'year':   0, 'day':  20 },
          { 'item': '四・七日法要',   'year':   0, 'day':  27 },
          { 'item': '五・七日法要',   'year':   0, 'day':  34 },
          { 'item': '六・七日法要',   'year':   0, 'day':  41 },
          { 'item': '七・七日法要',   'year':   0, 'day':  48 },
          { 'item': '百か日法要',     'year':   0, 'day':  99 },
          { 'item': '一周忌法要',     'year':   1, 'day':   0 },
          { 'item': '三回忌法要',     'year':   2, 'day':   0 },
          { 'item': '七回忌法要',     'year':   6, 'day':   0 },
          { 'item': '十三回忌法要',   'year':  12, 'day':   0 },
          { 'item': '十七回忌法要',   'year':  16, 'day':   0 },
          { 'item': '二十三回忌法要', 'year':  22, 'day':   0 },
          { 'item': '二十七回忌法要', 'year':  26, 'day':   0 },
          { 'item': '三十三回忌法要', 'year':  32, 'day':   0 },
          { 'item': '五十回忌法要',   'year':  49, 'day':   0 },
          { 'item': '百回忌法要',     'year':  99, 'day':   0 }
        ],
        'kami': [
          { 'title': '霊祭表' },
          { 'item': '死亡年月日',     'year':   0, 'day':   0 },
          { 'item': '十 日 祭',       'year':   0, 'day':   9 },
          { 'item': '二十日祭',       'year':   0, 'day':  19 },
          { 'item': '三十日祭',       'year':   0, 'day':  29 },
          { 'item': '四十日祭',       'year':   0, 'day':  39 },
          { 'item': '五十日祭',       'year':   0, 'day':  49 },
          { 'item': '百十日祭',       'year':   0, 'day':  99 },
          { 'item': '壱 年 祭',       'year':   1, 'day':   0 },
          { 'item': '三 年 祭',       'year':   3, 'day':   0 },
          { 'item': '五 年 祭',       'year':   5, 'day':   0 },
          { 'item': '十 年 祭',       'year':  10, 'day':   0 },
          { 'item': '十五年祭',       'year':  15, 'day':   0 },
          { 'item': '二十年祭',       'year':  20, 'day':   0 },
          { 'item': '二十五年祭',     'year':  25, 'day':   0 },
          { 'item': '三十年祭',       'year':  30, 'day':   0 },
          { 'item': '三十五年祭',     'year':  35, 'day':   0 },
          { 'item': '四十年祭',       'year':  40, 'day':   0 },
          { 'item': '四十五年祭',     'year':  45, 'day':   0 },
          { 'item': '五十年祭',       'year':  50, 'day':   0 }
        ]
      };
      
      var hyoMax = 19;
      var elements = document.getElementById( 'inp' ).elements;
      var mode = elements[ 'mode' ].value;
      var namae = elements[ 'namae' ].value;
      var hyo = document.getElementById( 'hyo' );
      var inp = elements[ 'sdate' ];
      var cell, row;
      var cnt = 0;
      
      hyo.caption./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/ =
        ( namae ? '故 ' + namae + ' 儀 ': '' ) + table[ mode ][0].title;

      while( cnt < hyoMax ) {
        cell = hyo.rows[ cnt ].cells;
        row = table[ mode ][ ++cnt ];
        cell[ 0 ]./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/ = row.item;
        cell[ 1 ]./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/ =
          (new Date( +inp[0].value + (+elements[ 'nengo' ].value) + row.year,
            inp[1].value - 1, +inp[2].value + row.day )).getHizuke();
      }
    }


    //_______________

    addEvent( document, 'click', Jumper );
    Reset();
  
  </script>
</body>
</html>