#!/usr/bin/perl
#
# JCsearch.pl
#
# 日本語講座データを検索し、結果の一覧を表示する
# 英語


use strict;
use myCGI;

my ($PATH_DATA) = "./JC.dat";
my ($PATH_RESULT_HTML) = "./JClist.html";

my ($WORDS, $AREA);
my (@ITEM);


&get_cgi_param;
&show_result;


exit;




# CGI パラメタの取得
sub get_cgi_param () {
    my ($parse);

    $parse = new myCGI();

    $AREA = $parse->form("AREA");
    $WORDS = $parse->form("WORDS");
    $WORDS =~ s/　/ /g;       # 全角スペースを全て半角スペースに
    $WORDS =~ s/\s+/ /g;      # 連続する空白文字を半角スペース 1 個に
    $WORDS =~ s/^\s*//;       # 行頭に空白文字があれば削除
    $WORDS =~ s/\s*$//;       # 行末に空白文字があれば削除
}




# 結果表示
sub show_result () {
    print "Content-type: text/html\n\n";    # MIME ヘッダの出力

    if (! (-r $PATH_RESULT_HTML)) {
        print <<EndOfMessage1;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML lang="ja">
<HEAD>
  <TITLE>Japanese Classes</TITLE>
  <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
  <META http-equiv="refresh" content="600; URL=auth.html">
</HEAD>
<BODY>
  <H1> error.  エラーが発生しました</H1>
  ファイル $PATH_RESULT_HTML が読めません。<BR>
</BODY>
</HTML>
EndOfMessage1
        return;
    }
    open (HTML, $PATH_RESULT_HTML);
    while (<HTML>) {
        if (/<!- ::RESULT:: -->/) {
            if ($WORDS ne "") {
                &show_words_result;
            }
            else {
                &show_area_result;
            }
        }
        else {
            print $_;
	}
    }
    close (HTML);
}




# 文字列検索の結果表示
sub show_words_result () {
    my (@word_list, $word);
    my ($match);
    my ($match_number) = 0;

    @word_list = split (/ /, $WORDS);
    if (! (-r $PATH_DATA)) {
        print "<LI>エラー: ファイル $PATH_DATA が読めません。</LI>\n";
        return;
    }
    open (DATA, $PATH_DATA);
    while (<DATA>) {
        chomp;
        @ITEM = split (/\t/);
        $match = 1;
        foreach $word (@word_list) {
            if (! /$word/) {
                $match = 0;
                last;
            }
        }
        if ($match) {
            &print_result_line;
            $match_number++;
        }
    }
    close (DATA);


    if ($match_number == 0) {
        print "<LI>Corresponding information was not found. </LI>\n";
#該当する情報は見つかりませんでした。
    }
}




# 地域別検索の結果リストの出力
sub show_area_result () {
    my ($match_number) = 0;

    if (! (-r $PATH_DATA)) {
        print "<LI>エラー: ファイル $PATH_DATA が読めません。</LI>\n";
        return;
    }
    open (DATA, $PATH_DATA);
    while (<DATA>) {
        chomp;
        @ITEM = split (/\t/);
        if ($ITEM[9] == $AREA) {
            &print_result_line;
            $match_number++;
        }
    }
    close (DATA);

    if ($match_number == 0) {
        print "<LI>Corresponding information was not found. </LI>\n";
#該当する情報は見つかりませんでした。
}
}




# 結果リストの 1 行を出力する
sub print_result_line () {
    print "    <LI><A href=\"./JCcontent.pl?SEQ=$ITEM[0]\">$ITEM[1]</A></LI>\n";
}
