#! /usr/bin/perl

################################################################################
#
# 電子私書箱 ... Version 2.01 <FREESOFT>
# Copyright(c) 2004-2006 by CGI-RESCUE
#                      http://www.rescue.ne.jp/ 利用規定をご一読ください.
#
# [履歴] ( )内は更新があったファイル
# 2004/12/01 v2.00 リニューアルリリース (v1.**とのデータ互換はありません)
# 2006/05/11 v2.01 既読の送信済記事が２重に表示されるバグを修正
#                  更新したファイル：lib/io.pl lib/list.pl
#
# [構成] < >内はパーミッションの相当値
#
# --/任意/
#      |
#      |-- /lib/ <755> ... ライブラリ（そのまんまの内容と構成で設置）
#      |
#      |-- /tmp/ <777> ... 画像や作業ファイルを保存する場所（Ｗｅｂから見えること）
#      |-- /users/ <777> ... 電子私書箱データを保存する場所（Ｗｅｂから見えないことが望ましい）
#      |
#      |-- kitei.txt <644> ... あなたが運用する電子私書箱の利用規定
#      |-- pobox.cgi <755> ... このファイル（メインＣＧＩスクリプト）
#      |-- pobox.html <644> ... ログイン用のＨＴＭＬ
#      |-- syslog.cgi <666> ... システムログ（任意に保存や削除などしてください）
#
# [解説]
#
# ・マスターキーは全てのパスワードの代わりに使用できます。
# ・パスワードを忘れたユーザは、管理者がログインしてパスワード変更することにより再設定してください。
# ・管理者によるログインは、その電子私書箱の最終ログインには記録されません。
# ・マスターＩＤとマスターキーによりログインすると、オプション画面で利用者一覧を表示できます。
# ・マスターＩＤとなっている電子私書箱はＷｅｂ操作で閉鎖は出来ません。
# ・電子私書箱の閉鎖（ユーザの削除）は、$base_dir に設定したフォルダ配下のログインネームと同じフォルダを削除してもＯＫです。
# ・画像は７日を経過すると削除されます（本文は削除されない）。設定を変えたい場合は /lib/io.pl を参照してください。
# ・無操作が１０分続くと自動的にログアウトさせます。設定を変えたい場合は /lib/io.pl を参照してください。
#
# [初期設定]
#
# ・以下、説明に従って設定してください。

# マスターキー
#  このキーは全てのユーザのパスワードの代わりに使えるため、大変重要（削除や閉鎖等が可能）です。
#  必ず８文字以上の英数字で設定し、適切な間隔で変更をしてください。
#
$masterKey = 'salon555';

# マスターＩＤ
#  このＩＤでログインすると、オプション画面で利用者一覧を表示できます。
#
$masterID = 'lovebodys';

# 環境設定
#  上記構成で設置した場合はこのままで結構です。
#
$base_dir = './users/'; # Webから見えない場所が望ましい
$tmp_dir = './tmp/'; # Webからみえる場所にすること

# ブラウザのタイトルバーに記述する内容
#
$title = 'メッセージBOX';

# 運用規定を記述しておくファイル(URL)
#
$kitei_url = "./kitei.txt";

# このファイルのアドレスを設定
#
$URL = 'http://www.l-body.jp/mail_box/pobox.cgi';

# 各画面に適用するスタイルシート
#
$style = <<'EOF';
<style type=text/css>
*{ font-family:"ＭＳ Ｐゴシック",sans-serif;
   line-height:120%; }
</style>
EOF

# ログインネームに使えないＩＤの設定
#  マスターＩＤをログインネームに、パスワードにマスターキーを入力するとこの処理を行いません。
#  マスターＩＤをここに設定している場合は、登録後、パスワードをマスターキー以外に変更してください。
#
@denyId = ('admin','sysop','subop','webmaster','root','test');

# システムログ(PATH)
#  このファイルを設置しなかったり、パーミッションが適切でない場合は記録しません。
#
$syslog = './syslog.cgi';

#############################################################################################################################################

$sample = 0;
if ($sample) { $submit = 'button'; } else { $submit = 'submit'; }

require "./lib/jcode.pl";
require "./lib/cgi-lib.pl";
require "./lib/cookie.pl";
require "./lib/crypt.pl";
require "./lib/new.pl";
require "./lib/date.pl";
require "./lib/io.pl";
require "./lib/checksum.pl";
require "./lib/send.pl";
require "./lib/list.pl";
require "./lib/forgot.pl";

if ($masterKey eq "") { push(@ERR,"【重要】マスターキーが設定されていません。"); }
if (length($masterKey) < 8) { push(@ERR,"【重要】マスターキーは最低８文字以上で設定してください。"); }

if ($ENV{'CONTENT_LENGTH'} > 130000) { push(@ERR,"送信データが大き過ぎます。( $ENV{'CONTENT_LENGTH'} bytes )"); }
else { &ReadParse; }

while (($name,$value) = each %in) {

	if ($name eq "file") { next; }

	&jcode'convert(*name,'sjis');
	&jcode'convert(*value,'sjis');

	$value =~ s/&/&amp;/g;
	$value =~ s/"/&quot;/g;
	$value =~ s/</&lt;/g;
	$value =~ s/>/&gt;/g;

	$value =~ s/\r\n/\0/g;
	$value =~ s/\r/\0/g;
	$value =~ s/\f//g;
	$value =~ s/\t//g;

	if ($name eq "upimgdel") { $upimgdel = 1; }
	else { $in{$name} = $value; }
}

$LOGIN = 0;
$in{'ID'} =~ tr/A-Z/a-z/;
$in{'view'} =~ s/\.|\///g;
$in{'img'} =~ s/\.|\///g;
$in{'mode'} =~ s/\.|\///g;
$in{'del'} =~ s/\.|\///g;

if ($in{'action'} eq "new") {

	&setCookie("set", "cookie", "hello", "", "", "");
	print "Location: $URL?action=hello\n\n";
	exit;
}
elsif ($in{'action'} eq "hello") {

	$check = &getCookie("cookie");
	if ($check eq "") { push(@ERR,"クッキーが遮断されているためご利用できません。"); }
	if ($LOGIN) { &setCookie("clear", $in{'ID'}, "", "", "", ""); }
	&newForm;
	exit;
}
elsif ($in{'action'} eq "new2") {

	if ($LOGIN) { &setCookie("clear", $in{'ID'}, "", "", "", ""); }
	&newReg;
	exit;
}
elsif ($in{'action'} eq "forgot") {

	&forgotForm;
	exit;
}
elsif ($in{'action'} eq "forgot2") {

	&forgotView;
	exit;
}
elsif ($in{'action'} eq "logout") { unlink("$tmp_dir$in{'ID'}"); &setCookie("clear", $in{'ID'}, "", "", "", ""); $LoginCode = ""; &syslog("ログアウト - $in{'ID'} - $hosts"); error("ログアウトしました"); }
elsif ($in{'action'} =~ /^list/) { ; }
elsif ($in{'action'} eq "checksum") { $in{'checkID'} =~ tr/A-Z/a-z/; &getChecksum($in{'checkID'}); }
elsif ($in{'action'} eq "") { push(@ERR,"処理手順に矛盾が生じました。"); error(); }

if ($in{'ID'} ne "") { &readFile("index.cgi"); $LoginCode = &getCookie($in{'ID'}); }

if ($in{'action'} ne "login" && $LoginCode ne "") {

	if ($FILE{'PW'} eq "") { push(@ERR,"登録データに異常があります。管理者にお問い合わせください。ERR=6"); error(); }
	elsif (crypt($masterKey,$LoginCode) eq $LoginCode) { $LOGIN = 1; $ADMIN = 1; }
	elsif (crypt($FILE{'PW'},$LoginCode) eq $LoginCode) { $LOGIN = 1; }
	else { unlink("$tmp_dir$in{'ID'}"); push(@ERR,"ログインし直してください。"); error(); }
}

if (!$LOGIN) {

	if ($in{'action'} ne "login") { error("異常終了またはログアウト"); }
	elsif ($in{'ID'} eq "" || $in{'PW'} eq "") { push(@ERR,"ログインネームとパスワードを入力してください。"); }
	elsif ($in{'action'} eq "login") {

		if ($in{'PW'} eq $masterKey || $in{'PW'} eq $FILE{'PW'}) {

			$LOGIN = 1;
			$cPassword = &setCrypt($in{'PW'},"");
			&setCookie("set", $in{'ID'}, $cPassword, "", "", "");
			&sessionOpen; # セッション開始

			if ($in{'PW'} eq $masterKey) { $ADMIN = 1; &syslog("管理者によるログイン - $in{'ID'} - $hosts"); }
			else {
				&syslog("ログイン - $in{'ID'} - $hosts");
				&loginUpdate; # ログインアップデート
			}

			&session; # セッション更新
		&mainWindow; exit;
		}
		else { push(@ERR,"パスワードが合いません。"); &syslog("ログイン失敗 - $in{'ID'} - パスワードが合わない - $hosts"); }
	}
	else { push(@ERR,"不明なエラー。"); }

	&error();
}
else {
	&session; # セッション更新

	if ($in{'action'} eq "list_option") { &option; } # new.pl
	elsif ($in{'action'} eq "list_remove") { &remove; } # new.pl
	elsif ($in{'action'} eq "list_send") { &send; }
	elsif ($in{'action'} eq "list_del") { &del; }
	elsif ($in{'action'} eq "list_view") { &view; exit; }

	&mainWindow;
}

exit;

#############################################################################################################################################

#############################################################################################################################################

sub mainWindow
{

$checksum = &checksum($in{'ID'});

print <<"EOF";
Content-type: text/html\n
<HTML>
<HEAD>
<TITLE>$title</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
$style
</HEAD>

<body link=#ffffff vlink=#ffffff alink=#ffffff $onLoad>
<table border=0 cellpadding=3 cellspacing=0 width=100%>
<tr>
<td height="40" background="http://www.l-body.jp/images/bg_menubg51.gif" style="background-repeat : no-repeat;"><font color=#ffffff>　　　　　&nbsp;<b>$in{'ID'}</b></font></td>
<td bgcolor=#FE617C width=35% align=center><b><a href="pobox.cgi?ID=$in{'ID'}&action=logout"><font size=1>ログアウト</font></a></b></td>
</tr>
<tr><td colspan=2></td></tr>
</table>
EOF

# ---------------- エラーメッセージ
if (@ERR) {

	print "<table border=1 cellpadding=5 cellspacing=0 bordercolor=#ffaa88 width=100%><tr><td>";
	foreach (@ERR) { print "† $_<br>\n"; }
	print "</td></tr></table>\n";
}

# ---------------- 受信箱
if ($in{'mode'} eq "") {

&List("r");

print <<"EOF";
<p>
<table border=0 cellpadding=3 cellspacing=1><tr>
<td bgcolor=#FE617C><font><b><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=&reload=$time" title="更新"> 受信箱 </a></b></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=write"> お問合せ </a></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=sended"> 送信履歴 </a></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=option"> オプション </a></font></td>
</tr></table>

<table border=0 cellpadding=3 cellspacing=1 width=100%>
<tr>
<td bgcolor=#E2585B align=center nowrap><font color=#ffffff>日付</font></td>
<td bgcolor=#E2585B align=center width=80%><font color=#ffffff>クリックで\表\示</font></font></td>

</tr>
EOF

foreach (@BASE) {

	($n,$date,$subject,$from,$readed,$img) = split(/\t/,$_,6);

	$color++;
	if ($color % 2) { $bgcolor = "#456075"; }
	else { $bgcolor = "#617073"; }

	if ($readed eq "") { $b1 = "<b>"; $b2 = "</b>"; }
	else { $b1 = $b2 = ""; }

	$checksum = &checksum($from);
	if ($img ne "" && -e "$tmp_dir$img") { $img = " &lt;画像&gt;"; }
	else { $img = ""; }

	$date =~ s/\s/<br>/;

	print "<tr>\n";
	print "<td bgcolor=$bgcolor align=center nowrap><font color=#cccccc>$date</font></td>\n";
	print "<td bgcolor=$bgcolor><font color=#cccccc>$b1<a href=\"pobox.cgi?ID=$in{'ID'}&action=list_view&mode=&view=$n\">$subject</a>$b2$img </font></td>\n";

	print "</tr>\n";
}

if (!@BASE) { print "<tr><td bgcolor=#ffffff align=center colspan=3><font color=#000000>(メッセージはありません)</font></td></tr>\n"; }

print <<"EOF";
<tr>
<td colspan=3><hr size=1></td>
</tr>
<tr>
<td colspan=2>
<font size=-1 color=#456075><b>****メッセージボックスのご説明****<b><br>
■メールを使用せずに、ラブボディとの連絡のやり取りができます。</b><br>
・<a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=&reload=$time" title="更新"><font color=#BA4597>受信箱</font></a>　　ラブボディからのメッセージの一覧が見れます。<br>
・<a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=write"><font color=#BA4597>お問合せ</font></a>　ラブボディへのメッセージを作成します。<br>
・<a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=sended"><font color=#BA4597>送信履歴</font></a>　ラブボディへ送ったメッセージの履歴が見れます。<br>
・<a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=option"><font color=#BA4597>オプション</font></a>　パスワードの変更、メッセージボックスの消去ができます。<br>
</font>
</td>

<td align=center bgcolor=#CCCCAA><font size=-2><a href="http://www.rescue.ne.jp/" target=_blank title="製作/著作">電子私書箱</a></font></td>
</tr>
</table>
EOF
                                      ############## 著作リンクを削除または改ざんすると利用規定違反となります #####################
}

# ---------------- 送信履歴
elsif ($in{'mode'} eq "sended") {

&List("s");

print <<"EOF";
<p>
<table border=0 cellpadding=3 cellspacing=1><tr>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode="> 受信箱 </a></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=write"> お問合せ </a></font></td>
<td bgcolor=#FE617C><font><b><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=sended&reload=$time" title="更新"> 送信履歴 </a></b></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=option"> オプション </a></font></td>
</tr></table>

<table border=0 cellpadding=3 cellspacing=1 width=100%>
<tr>
<td bgcolor=#E2585B align=center nowrap width=15%><font color=#ffffff>日付</font></td>
<td bgcolor=#E2585B align=center><font color=#ffffff>お問合せ内容</font></td>
</tr>
EOF

foreach (@BASE) {

	($n,$date,$subject,$to,$readed,$img) = split(/\t/,$_,6);

	$color++;
	if ($color % 2) { $bgcolor = "#456075"; }
	else { $bgcolor = "#506580"; }

	$checksum = &checksum($to);
	if ($img ne "" && -e "$tmp_dir$img") { $img = " &lt;画像&gt;"; }
	else { $img = ""; }

	$date =~ s/\s/<br>/;
	$readed =~ s/\s/<br>/;

	print "<tr>\n";
	print "<td bgcolor=$bgcolor align=center nowrap><font color=#cccccc>$date</font></td>\n";
	print "<td bgcolor=$bgcolor><font color=#cccccc><a href=\"pobox.cgi?ID=$in{'ID'}&action=list_view&mode=sended&view=$n\">$subject</a>$img </font></td>\n";
	print "</tr>\n";
}

if (!@BASE) { print "<tr><td bgcolor=#ffffff align=center colspan=3><font color=#000000>(メッセージはありません)</font></td></tr>\n"; }

print <<"EOF";
<tr>
<td colspan=4><hr size=1></td>
</tr>
</table>
EOF

}

# ---------------- 送る
elsif ($in{'mode'} eq "write") {

print <<"EOF";
<p>
<table border=0 cellpadding=3 cellspacing=1><tr>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode="> 受信箱 </a></font></td>
<td bgcolor=#FE617C><font color=#ffffff><b><u> お問合せ </u></b></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=sended"> 送信履歴 </a></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=option"> オプション </a></font></td>
</tr></table>

<table border=0 cellpadding=3 cellspacing=1 width=100%>
<form action=pobox.cgi method=post name=mainForm ENCTYPE="multipart/form-data">
<input type=hidden name=action value="list_send">
<input type=hidden name=ID value=$in{'ID'}>
<input type=hidden name=img value="$in{'img'}">
<tr>
<td bgcolor=#E2585B align=center nowrap><font color=#ffffff></font></td>
<td bgcolor=#E2585B align=center><font color=#ffffff><B>お問合せ・返信</B></font></td>
</tr>
<tr>
<td bgcolor=#ffffff nowrap align=center><input type="hidden" name=TO tabindex=1  value="lovebodys" readonly"><input type="hidden" name=checksum value="1" tabindex=2 readonly></td>
<td bgcolor=#ffffff align=center>

<!-- <input type=text name=subject value="$in{'subject'}" size=70 maxlength=100 tabindex=3></td> -->
<font size=-1><b>■送信内容を選択してください。</b></font><br>
<select name="subject">
   <option value="受注確認メールが届かない">ラブボディからの受注確認のメールが届かない。
   <option value="注文内容の変更">注文内容の変更・訂正をしたい。
   <option value="その他">ラブボディへの返信・その他
  </select>

</tr>
<tr>
<td bgcolor=#ffffff colspan=2 align=center><font size=-1><br><b>■内容</b>　※<font color=blue><b>『お客様のお名前』</b></font>と<font color=blue><b>『ご注文日時』</b></font>を必ずご入力ください。</font><br><textarea name=body cols=80 rows=12 tabindex=4 wrap=hard>$in{'body'}</textarea></td>
</tr>
EOF

if ($in{'img'} ne "" && -e "$tmp_dir$in{'img'}") {

print <<"EOF";
<tr>
<td bgcolor=#ffffff colspan=2 align=center>
<a href="$tmp_dir$in{'img'}" target=_blank><img src="$tmp_dir$in{'img'}" border=0 width=100></a>
<input name="upimgdel" type=submit value="削除">
</td>
</tr>
EOF

}
else {

print <<"EOF";
<tr>
<!-- <td bgcolor=#ffffff colspan=2 align=center>画像 <input type=file name=file size=50> (約0.1MB以内のJPEGまたはGIF)</td> -->
</tr>
EOF

}

print <<"EOF";
<tr>
<td bgcolor=#ffffff colspan=2 align=center><input type=$submit value="  送    信  " onClick="message(); return f" tabindex=5></td>
</tr>
</table>
</form>

<form>
<font size=-1 color=#456075>
<ul>
<li><b>お問合わせについての返信は、<br><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode="><font color=#BA4597>受信箱&gt;&gt;</font></a>で確認ができます。<br><font size=-1>※24時間以内にご返信します。<br>（休日を除く）</b></font></li>
</ul>
</font>
</form>
EOF

}

# ---------------- 設定
elsif ($in{'mode'} eq "option") {

print <<"EOF";
<p>
<table border=0 cellpadding=3 cellspacing=1><tr>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode="> 受信箱 </a></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=write"> お問合せ </a></font></td>
<td bgcolor=#968CB9><font><a href="pobox.cgi?ID=$in{'ID'}&action=list&mode=sended"> 送信履歴 </a></font></td>
<td bgcolor=#FE617C><font color=#ffffff><b><u> オプション </u></b></font></td>
</tr></table>
<p>

<table border=1 cellpadding=4 cellspacing=0 width=100%>
<form action=pobox.cgi method=post name=mainForm>
<input type=hidden name=action value="list_option">
<input type=hidden name=ID value=$in{'ID'}>
<tr>
<td bgcolor=#ffffff nowrap>
<br>

<font><b>パスワードの変更</b></font><br>
<table>
<tr>
<td></td>
<td nowrap>現在のパスワード<br><input type=password name=PASSWORD size=15></td>
</tr>
<tr>
<td></td>
<td nowrap>新パスワード<br><input type=password name=PW size=15> 英数字6〜12文字で</td>
</tr>
<tr>
<td></td>
<td nowrap>新パスワード<br><input type=password name=PW2 size=15> もう一度</td>
</tr>
<tr>
<td></td>
<td nowrap align=right><input type=$submit value=" 変 更 " onClick="message(); return f"></td>
</tr>
</table>

</td>
</tr>
</table>
</form>
<p>
EOF

if ($masterID ne $in{'ID'}) {

print <<"EOF";
<table border=1 cellpadding=4 cellspacing=0 width=100%>
<form action=pobox.cgi method=post name=mainForm>
<input type=hidden name=action value="list_remove">
<input type=hidden name=ID value=$in{'ID'}>
<tr>
<td bgcolor=#ffffff nowrap>
<br>

<font><b>メールボックスの消去</b></font><br>
<table>
<tr>
<td>パスワード</td>
<td nowrap><input type=password name=PASSWORD size=15>
<input type=$submit value=" ご登録のメールボックスを消去します " onClick="message(); return f"></td>
</tr>
<tr>
<td nowrap colspan=2>
<font color=red>※ 一度消去すると今までのメッセージはすべて削除され、復活することは出来ません。</font>
</td>
</tr>
</table>

</td>
</tr>
</table>
</form>
EOF

}

if ($masterID eq $in{'ID'} && $ADMIN) {

$all = &List2;

print <<"EOF";
<table border=1 cellpadding=4 cellspacing=0 width=100%>
<form action=pobox.cgi method=post name=mainForm>
<input type=hidden name=action value="list_remove">
<input type=hidden name=ID value=$in{'ID'}>
<tr>
<td bgcolor=#ffffff nowrap>
<br>

<font size=+2><b>一覧</b> ($all)</font><br>
<table width=100%>
<tr>
<td bgcolor=#E2585B align=center nowrap width=15%><font color=#ffffff>登録日</font></td>
<td bgcolor=#E2585B align=center><font color=#ffffff>ログインネーム</font></td>
<td bgcolor=#E2585B align=center nowrap width=15%><font color=#ffffff>最終ログイン</font></td>
<td bgcolor=#E2585B align=center nowrap width=15%><font color=#ffffff>未使用日数</font></td>
</tr>
EOF

foreach (@BASE) {

	($n,$new,$id,$update,$keika) = split(/\t/,$_,5);

	$color++;
	if ($color % 2) { $bgcolor = "#cccccc"; }
	else { $bgcolor = "#333333"; }

	if ($new =~ /(.+)\s(.+)\s(.+)\s(.+)\s(.+)/) { $new = "$1 $2 $3 $4"; }
	if ($update =~ /(.+)\s(.+)\s(.+)\s(.+)\s(.+)/) { $update = "$1 $2 $3 $4"; }

	print "<tr>\n";
	print "<td bgcolor=$bgcolor align=center nowrap><font color=#ffffff>$new</font></td>\n";
	print "<td bgcolor=$bgcolor align=left nowrap><font color=#ffffff>$id</font></td>\n";
	print "<td bgcolor=$bgcolor align=center nowrap><font color=#ffffff>$update</font></td>\n";
	print "<td bgcolor=$bgcolor align=right nowrap><font color=#ffffff>$keika</font></td>\n";
	print "</tr>\n";
}

print <<"EOF";
</table>

</td>
</tr>
</table>
</form>
EOF

}
}

print <<"EOF";
<p>

<SCRIPT language="JavaScript">
<!--
function message(m)
{ f = confirm('実行していいですか？');
  return f; }
function checkSum()
{ document.checksum.checkID.value = document.mainForm.TO.value;
  win = window.open("","checksum","location=no,status=no,toolbar=no,menubar=no,scrollbars=no,resizable=yes,width=200,height=150");
  document.checksum.submit(); }
function setChecksum(Code)
{ document.mainForm.checksum.value = Code; }
function panelOpen(loc)
{ Opt = "location=no,status=yes,toolbar=no,menubar=yes,scrollbars=yes,resizable=yes,width=700,height=500"; // 内容表示の画面サイズ
  win = window.open("",loc,Opt); }
//-->
</SCRIPT>

<form action="pobox.cgi" method="post" name="checksum" target="checksum">
<input type=hidden name=action value=checksum>
<input type=hidden name=checkID>
</form>

</body>
</html>
EOF

}

#############################################################################################################################################

sub error
{

print <<"EOF";
Content-type: text/html\n
<HTML>
<HEAD>
<TITLE>$title</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
$style
</HEAD>

<body $onLoad>
<center>
<br>
EOF

if ($_[0] ne "") { print "<h1>$_[0]</h1>\n"; }

if (@ERR) {

	print "<table border=1 cellpadding=5 cellspacing=0 bordercolor=#ffaa88 width=100%><tr><td>";
	foreach (@ERR) { print "† $_<br>\n"; }
	print "</td></tr></table>\n";
}

print <<"EOF";
<p>
<div align=right><a href="JavaScript:self.window.close()">閉じる</a></div>
</center>
</body>
</html>
EOF

exit;

}
