#!/usr/bin/perl

#初期設定 ======================================================================

#ページタイトル
$MAIN_TITLE = "世の中には美味いものが多い";

#BODYタグ内容
$BODY = "<BODY bgcolor=\"#FFFFFF\" text=\"#990000\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" leftmargin=\"0\">";

#データファイル格納場所
$DATA = "./umai.dat";

#1ページに表示するデータ数
$DISPCNT = 30;

#曜日
@dispweek = ('日','月','火','水','木','金','土');

#前置き
$mae = 'いや〜世の中は美味いものだらけですね〜<BR>3度の食事が毎日楽しみで仕方がない、いっし〜の食べ物考察日記';

#あいさつ文格納
@aisatu = ('夜中っすね。まだ頑張ってますか？',  #0時
           '真夜中っすね。もしかして夜はこれからな感じっすか？',  #1時
           'とても真夜中っすね。寝不足には注意しましょう！',  #2時
           'そろそろおはようございますな時間ですか？それともこれから寝ますか？',  #3時
           'おはようございます。朝早くからおつかれさまっす〜',  #4時
           'おはようございます。朝早くからおつかれさまっす〜',  #5時
           'おはようございます。今日の朝食なんでしょう？',  #6時
           'おはようございます。今日の朝食なんでしょう？',  #7時
           'おはようございます。今日の朝食なんでしょう？',  #8時
           'おはようございます。朝食しっかり食べましたか？',  #9時
           'こんにちは、朝食しっかり食べとかないとお腹がすくっすよ',  #10時
           'こんにちは、そろそろ腹減りな時間っすね。昼が待ち遠しい・・・',  #11時
           'こんにちは、楽しいお昼ご飯っすね。今日のお昼は何でしょう？',  #12時
           'こんにちは、食後な時間っすね。寝てはいけませんよ(^^;',  #13時
           'こんにちは、お仕事はかどってますか？',  #14時
           'こんにちは、お仕事でしょうか？それともおやつな時間っすか？',  #15時
           'こんにちは、そろそろ夕方っすね。お腹がやばくなってくるかも・・・',  #16時
           'こんばんは、そろそろお腹が減ってきそうな感じっす',  #17時
           'こんばんは、まだお仕事中でしょうか？というよりもますます腹減りな時間〜',  #18時
           'こんばんは、まだお仕事頑張ってますか？それとも夕食な時間っすか？',  #19時
           'こんばんは、今日の夕食は何でしょう？',  #20時
           'こんばんは、まだお仕事中の方お疲れさまっす。でも無理は禁物っす',  #21時
           'こんばんは、そろそろお休みの方もいますか？',  #22時
           'こんばんは、今日も一日おつかれさまっす。え？まだまだっすか？'); #23時

#初期設定ここまで ==============================================================

  #各種データ読み込み
  &data_read;

  #HTMLヘッダ書き出し
  print "Content-type: text/html\n\n";
  print "<HTML><HEAD><TITLE>$MAIN_TITLE</TITLE></HEAD>\n";
  print "$BODY\n";

  #ページのタイトル部分書き出し
  print "<TABLE width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\">\n";
  print "  <TR>\n";
  print "    <TD bgcolor=\"#996600\" width=\"100%\" align=\"center\">\n";
  print "      <FONT color=\"yellow\" size=\"6\">★　</FONT><FONT color=\"yellow\" size=\"5\">- 食べ物考察日記 -</FONT>　<FONT size=\"6\" color=\"yellow\">世の中には美味いものが多い　★</FONT>\n";
  print "    </TD>\n";
  print "  </TR>\n";
  print "</TABLE><BR><BR>\n";

if ($ARGV[0] eq "disp"){

  #中心揃えのためのテーブル
  print "<TABLE width=\"100%\" border=\"0\">\n";
  print "<TR>\n<TD align=\"center\">\n";

  #前置きを表示するテーブル書き出し
  print "<TABLE width=\"60%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
  print "  <TR>\n";
  print "    <TD align=\"center\">\n";
  print "      $mae\n";
  print "    </TD>\n";
  print "  </TR>\n";
  print "</TABLE>\n\n";  
  
  #現在の時間を取得
  $ENV{'TZ'} = "JST-9";
  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  
  #日付等を表示するテーブル書き出し
  print "<TABLE width=\"60%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
  print "  <TR>\n";
  print "    <TD align=\"center\">\n";
  print "      <HR noshade>";
  print "      <B><FONT size=\"4\" color=\"#339900\">ただ今</FONT><FONT size=\"5\" color=\"red\">$hour時</FONT><FONT size=\"4\" color=\"#339900\">っす</FONT></B><BR>@aisatu[$hour]\n";
  print "      <HR noshade>\n";
  print "    </TD>\n";
  print "  </TR>\n";
  print "</TABLE>\n";
  
  #データを書き出すテーブルのヘッダ書き出し
  print "<TABLE width=\"60%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n";
  print "  <TR>\n";
#  print "    <TH bgcolor=\"#FFCC00\" height=\"10\" width=\"30\"><FONT color=\"#ffffff\">No.</FONT></TH>\n";
  print "    <TH bgcolor=\"#996600\" height=\"10\" width=\"30%\"><FONT color=\"#ffffff\">日付</FONT></TH>\n";
  print "    <TH bgcolor=\"#996600\" width=\"80%\"><FONT color=\"#ffffff\">本日の美味いもの</FONT></TH>\n";
  print "  </TR>\n";


  
  #データ表示開始行設定
  $disp_start = 0;
  read(STDIN, $query_data, $ENV{'CONTENT_LENGTH'});
  @disp = split(/&/, $query_data); #&で区切ってある文字列を分割し配列に格納
  #前のページボタンが押された場合
  if ($query_data =~ /btn_p=/) {
    foreach $line(@disp) {
      if ($line =~ /disp_p=/){
        $line =~ s/disp_p=//;
        $disp_start = $line;
        last;
      }
    }
  }
  #次のページボタンが押された場合
  elsif ($query_data =~ /btn_n=/) {
    foreach $line(@disp) {
      if ($line =~ /disp_n=/){
        $line =~ s/disp_n=//;
        $disp_start = $line;
        last;
      }
    }
  }
  
  #print @disp;
  
  #print "disp_start=$disp_start<BR><BR>";
  
  if (!$disp_start) {
    $disp_start = 0;
  }
    
  #データ表示終了行設定
  $disp_end = $disp_start + $DISPCNT - 1;
  if ($disp_end >= $data_cnt) {
    $disp_end = $data_cnt - 1;
  }
  
  # データ書き出し
  foreach ($disp_start .. $disp_end) {

    ($no, $year, $month, $day, $week, $title, $text) = split(/\t/, $DATA[$_]);
    $no =~ s/no=//;
    $year =~ s/year=//;
    $month =~ s/mon=//;
    $day =~ s/day=//;
    $week =~ s/week=//;
    $title =~ s/title=//;
    $text =~ s/text=//;

    #日付表示の設定
    $dispday = "$month月$day日（$dispweek[$week]）";
    
    # 行の色設定
    if (($_ % 2) == 0){
      $tbl_color = "#FFFFCC";
    }
    else{
      $tbl_color = "#FFCC66";
    }
    
    print "  <TR>\n";  

#    if (($_ == $disp_start) && ($disp_start == 0)) {
#      print "    <TD bgcolor=\"$tbl_color\"><A href=\"./umai.cgi?$no\"><FONT size=\"5\"><B>$dispday</B></FONT></A><FONT color=\"red\"><B>New!</B></FONT></TD>\n";
#      print "    <TD bgcolor=\"$tbl_color\"><FONT size=\"5\">$title</FONT></TD>\n";
#    }
#    else {
      print "    <TD bgcolor=\"$tbl_color\"><A href=\"./umai.cgi?$no\">$dispday</A></TD>\n";
      print "    <TD bgcolor=\"$tbl_color\">$title</TD>\n";    
#    }
    print "  </TR>\n";

  }
  #データテーブル終了タグ
  print "</TABLE>\n\n";

  #20件以上あったら先頭に戻るを表示
#  print "<TABLE width=\"60%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
#  print "  <TR>\n";
#  print "    <TD align=\"center\">\n";
#  print "      <HR>\n<A href=\"#top\">↑先頭に戻る</A>\n";
#  print "    </TD>\n";
#  print "  </TR>\n";
#  print "</TABLE>\n"; 
  
  #次のページボタン制御
  if ($data_cnt > $DISPCNT) {
    print "<TABLE width=\"60%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
    print "  <TR>\n";
    print "    <TD align=\"center\">\n";
    print "      <HR noshade>\n";
    print "      <FORM name=\"frm_page\" method=\"post\" action=\"./umai.cgi?disp\">\n";
    #前のページボタン
    $next_disp = $disp_start - $DISPCNT;
    if ($disp_start > 0) {
      print "        <INPUT type=\"hidden\" name=\"disp_p\" value=\"$next_disp\">\n";
      print "        <INPUT type=\"submit\" name=\"btn_p\" value=\"前のページ\">\n";      
    }
    
#    print "data_cnt=$data_cnt<BR><BR>";
#    print "disp_end=$disp_end<BR><BR>";
#    print "";
    #次のページボタン
    if (($data_cnt-1) > $disp_end) {
      $next_disp = $disp_end + 1;
      print "        <INPUT type=\"hidden\" name=\"disp_n\" value=\"$next_disp\">\n";
      print "        <INPUT type=\"submit\" name=\"btn_n\" value=\"次のページ\">\n";
    }
    print "      </FORM>\n";
    print "    </TD>\n";
    print "  </TR>\n";
    print "</TABLE>\n";
  }
  
  #中心揃えのためのテーブル終了
  print "</TD></TR>\n";
  print "</TABLE>\n";
  print "</BODY></HTML>\n";

}
else {

  #配列初期化
  @MATCH = ();
  @MATCH_M = ();
  
  #検索文字列作成
  $search = "no=$ARGV[0]";

  #データNoで検索
  @MATCH = grep(/$search/, @DATA);

  #HTMLヘッダ書き出し
#  print "Content-type: text/html\n\n";
#  print "<HTML><HEAD><TITLE>$MAIN_TITLE</TITLE></HEAD>\n";
#  print "$BODY";
  
  if (@MATCH == 0) {
    print "データがないっす〜\n";
    print "<A href=\"umai.cgi?disp\">→一覧へ戻る</A>\n";
  }
  else {
    
    foreach $LINE (@MATCH) {
      #マッチしたデータを変数に格納
      ($no, $year, $month, $day, $week, $title, $text) = split(/\t/, $LINE);
      $no =~ s/no=//;
      $year =~ s/year=//;
      $month =~ s/mon=//;
      $day =~ s/day=//;
      $week =~ s/week=//;
      $title =~ s/title=//;
      $text =~ s/text=//;

      #日付表示の設定
      $dispday = "$month月$day日（$dispweek[$week]）";
      $dispday = $dispday . '　' . $title;

      #マッチしたデータの表示
      print "<TABLE width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\">\n";
      print "  <TR>\n";
      print "    <TD align=\"center\">\n";
      print "      <TABLE width=\"80%\" border=\"0\" cellspacing=\"5\" cellpadding=\"5\">\n";
#      print "        <TR>\n";
#      print "          <TD><FONT size=\"4\" color=\"#339900\"><B>$dispday</B></FONT></TD>\n";
#      print "        </TR>\n";
      print "        <TR>\n";
      print "          <TD bgcolor=\"#FFCC00\">\n";
      print "            <FONT color=\"FFFFFF\" size=\"4\">● $dispday</FONT>\n";
      print "          </TD>\n";
      print "        </TR>\n";
      print "        <TR>\n";
      print "          <TD bgcolor=\"#FFFFCC\">$text\n";
      print "        </TR>\n";
      print "        <TR>\n";
      print "          <TD align=\"center\">";
      print "            <HR noshade>\n";
      print "              <A href=\"./umai.cgi?disp\">一覧に戻る</A>\n";
      print "            <HR noshade>\n";
      print "          </TD>\n";
      print "        </TR>\n";
      print "      </TABLE>\n";
      print "    </TD>\n";
      print "  </TR>\n";
      print "</TABLE>\n";
    }
  }
  print "</BODY></HTML>\n";

}

exit;

#===============================================================================
#  サブルーチン：data_read
#  機能：各種データを読み込み配列に保管する
#===============================================================================
sub data_read
{
    #内容格納
    if (open(DAT, $DATA)) {
      @DATA = <DAT>;
      close(DAT);
      $data_cnt = 0; #カウンタ初期化
       foreach $line (@DATA) {
         $line =~ s/\n//; #行末の改行コードや空白を取り去る
        # 空行だったら削除
         if ($line eq '') {
           splice(@DATA, $data_cnt, 1);
         }
         $data_cnt++; #カウンタインクリメント
       }
    }
}

