#!/usr/bin/perl
#print "HTTP/1.1 200 OK\n";
########追加########
# IIS対策
if ($ENV{'SERVER_SOFTWARE'} =~ /IIS/i) {
	local($chdir) = $0;
	$chdir =~ s/[^\\]*$//;
	chdir($chdir);
}
########追加########

#######################################################################################################################
##### カレンダー付き月間スケジュール複数人登録／編集可能ＣＧＩ(spt-cal.pl)
##### 2003.08.07 ～ 新規作成
#######################################################################################################################

#######################################################################################################################
##### 定数セット #####
#######################################################################################################################
$script = '/cgi-bin/spt-cal/spt-cal.pl';
$base = './schedata';				#データ格納ディレクトリ
$opfile = "$base/option.txt";		#オプションファイル
$catmax = 24;						#最大文字色数X2
$style_file = "/ow-orange.css";	#スタイルシート
$backimg = "../../img/st07_bg.gif"; #背景画像ファイル
$titleimg = "../../img/ptitle-spt-cal.gif"; #ページタイトル画像ファイル
$subtitleimg = "../../img/ow-ptitle-o.gif"; #ページタイトル画像ファイル
$adminpass = "oyakata"; #管理用パスワード
$mainpage = 'http://www.okhotsk.or.jp/supprt.shtml';

# @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
@week = ('日','月','火','水','木','金','土');
@mdays = (31,28,31,30,31,30,31,31,30,31,30,31);
# @month = ('January','February','March','April','May','June','July','August','September','October','November','December');
@month = ('1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月');

@cat = ('サーバメンテナンス情報','#FF0066','お知らせ','#0066FF');

%holiday03 = ('0101','元日','0113','成人の日','0211','建国記念の日','0321','春分の日','0429','みどりの日','0503','憲法記念日','0505','こどもの日','0721','海の日','0915','敬老の日','0923','秋分の日','1013','体育の日','1103','文化の日','1123','勤労感謝の日','1124','振替休日','1223','天皇誕生日');

$nowtime = time;
($sec,$min,$hour,$nowday,$nowmon,$nowyear,$nowwday) = localtime;
$nowyear += 1900;
$nowmon++;

#######################################################################################################################
##### 設定ファイル作成（無い場合） #####
#######################################################################################################################
open IN,"$opfile";		$opdata = <IN>;		close IN;
if (!$opdata) {
	$pass = &crypt('cgi');
	chmod(0666,$opfile);
	open OUT,">$opfile";
	print OUT "Schedule,$pass,http://merlion.cool.ne.jp/cgi/,$base/wall.gif,#ffffff,#000000,#800000,#aaaaaa,#ffffff,#eeeeee,#c00000,#4169E1,#FEF5DA,#FFD700";
	close OUT;
}

#######################################################################################################################
##### 設定ファイル読み込み #####
#######################################################################################################################
open IN, "$opfile";
($title,$pass,$home,$bg_img,$bg_color,$text_color,$title_color,$frame_color,$combg_color,$subbg_color,$holi_color,$sat_color,$sche_color,$today_color) = split(/,/,<IN>);
close IN;
@wcolor = ($holi_color,$text_color,$text_color,$text_color,$text_color,$text_color,$sat_color);

#######################################################################################################################
##### データ取得 #####
#######################################################################################################################
if ($ENV{'REQUEST_METHOD'} eq "POST") {read(STDIN, $in, $ENV{'CONTENT_LENGTH'});} else {$in = $ENV{'QUERY_STRING'};}
@pair = split(/&/,$in);
foreach (@pair) {
	($n,$val) = split(/=/);
	$val =~ tr/+/ /;
	$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	if ($n eq 'com') {$val =~ s/\r\n|\r|\n/<br>/g;}
	$in{$n} = $val;
}

#######################################################################################################################
##### ヘッダ出力 #####
#######################################################################################################################
# print "Content-type: text/html\n\n";
# print "Content-Type: text/plain\n\n"; 
if ($in{'mode'} ne 'ssi' && $in{'mode'} ne '') {
	print "\n";
	print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
	print "<html><head>\n";
	print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html\; charset=UTF-8\">\n";
	print "<title>$title</title><link rel=\"stylesheet\" type=\"text/css\" href=\"$style_file\"></head>\n";
	print "<body background=\"$backimg\" bgcolor=\"$bg_color\" text=\"$text_color\"><center>\n";
}
else{
	print "<\/font>\n"; #←いんちき処理
}
#######################################################################################################################
##### 表示モード取得 #####
#######################################################################################################################
$mode = $in{'mode'};
# if ($mode eq 'admin') {&admin;} else {if($mode eq 'regin') {&regin;} else {&main;}}

if ($mode eq 'admin') {&admin;}
elsif ($mode eq 'regin') {&regin;} 
elsif ($mode eq 'main') {&main;}
elsif ($mode eq 'ssi') {&ssi;}
else {&ssi;}

print "</center></body></html>\n";
exit;


#######################################################################################################################
##### ＳＳＩ用表示（カレンダー／スケジュールタイトル表示）メイン #####
#######################################################################################################################
sub ssi {

	$mode = 'ssi';

	&dsp;

#	わからんからやめたわ。
#	本当は、SSIとして表示させるときのみ、埋め込みのまま、月変更出来るようにしたかった。
#	最初ssi表示→（月変更）→(一時変数に月情報退避)→ssi表示（一時変数より月情報取得して表示）
#	しかし、ssiからは環境変数が取得できないらしい。
#	よって、以下の流れに変更した。（挫折仕様）
#	最初ssi表示→（月変更）→cgi表示(月変更して)　※登録モード・詳細参照時の流れと同様。


#	#クッキー取得
#	if ($ENV{'HTTP_COOKIE'}) {
#		@pairs=split(/;/, $ENV{'HTTP_COOKIE'});
#		foreach $pair (@pairs)
#		{
#			($name, $value)=split(/=/, $pair);
#			$incookie{$name}=$value;
#		}
#	}else{$incookie{'log-bak'}=$in{'log'};}
#
#
#
#	if ($incookie{'log-bak'} eq '' && $in{'log'} ne ''){
#	if ($in{'log'} ne ''){
#		#日付をクッキーにセットして、ＴＯＰページへ戻す
#		print "Set-Cookie: log-bak=$in{'log'};\n";
#
#		&reload
#
#	}
#	else{
#		print "Set-Cookie: log-bak=$incookie{'log-bak'};\n";
#		print "Set-Cookie: log-bak='';\n";
#
#		print "HTTP_COOKIE $ENV{'HTTP_COOKIE'}<br>\n";
#		print "incookie $incookie{'log-bak'}<br>\n";
#		#トップページより呼び出されたとき、クッキーを呼び出して日付にセットして表示させる
#		$in{'log'} = $incookie{'log-bak'};
#		&dsp;
#	}
}


#######################################################################################################################
##### トップページ再表示 #####
#######################################################################################################################
#sub reload {
#		print "Content-type:text/html\n\n"; 
#		print "<html><head><META HTTP-EQUIV=\"refresh\" CONTENT=\"URL=1\;$home\"></head><body>\n\n";
#		print "<SCRIPT language=\"JavaScript\">\n";
#		print "location.href=\"$home\"\;\n";
#		print "</SCRIPT>\n";
#		print "HTTP_COOKIE $ENV{'HTTP_COOKIE'}<br>\n";
#		print "incookie $incookie{'log-bak'}<br>\n";
#		print "<font size=\"2\"><a href=\"$home\">ページが表示されない場合はこちらをクリック下さい。</a></font>\n";
#		print "</body></html>\n\n";
#		exit;
#}

#######################################################################################################################
##### 通常表示（カレンダー／スケジュールタイトル／スケジュール明細表示）メイン #####
#######################################################################################################################
sub main {

	print "<table width=\"760\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000033\"><tr>\n";
	print "<td align=\"center\" bgcolor=\"#FF6600\">\n";
	print "<table width=\"750\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n";
	print "<tr>\n";
	print "<td><img src=\"$titleimg\" width=\"350\" height=\"50\"></td>\n";
	print "<td>　</td>\n";
	print "<td valign=\"bottom\"><div align=\"right\"><img src=\"$subtitleimg\" width=\"193\" height=\"40\"></div></td>\n";
	print "</tr>\n";
	print "</table>\n";
	print "</td></tr><tr><td align=\"center\" bgcolor=\"#FFFFFF\">\n";
	print "<table width=100% bgcolor=\"#ffa500\" cellspacing=3 cellpadding=0><tr>\n";

	print "<td>　<a href=\"$mainpage\"><< ユーザーサポートTOPへ戻る</a></td>\n";
	print "<td align=\"right\"><a href=href=\"$home\">HOMEへ戻る >></a>　</td>\n";
	print "</tr></table></td></tr><tr><td align=\"center\" bgcolor=\"#FFF0D0\"><br>\n";

	&dsp;

	print "<br></td></tr><tr><td align=\"center\" bgcolor=\"#FF6600\"><font color=\"#FFFFFF\">Copyright &copy; 2003 System Supply Co.,Ltd All Rights Reserved.</font></td></tr>\n";
	print "</td></tr></table>\n";

}

#######################################################################################################################
##### カレンダー部分（カレンダー／スケジュールタイトル／スケジュール明細表示）表示 #####
#######################################################################################################################
sub dsp {
	$log = $in{'log'};
	if (!$log) {$log = "$nowyear$nowmon";}
	$logyear = substr $log,0,4;
	$logmon = substr $log,4;

	$logfile = "$base/d$log.log";
	if (-e $logfile) {
		$logflag = 1;
		open IN,"$logfile";		@data = <IN>;	close IN;
		$top = shift(@data);
		foreach (@data) {
			($no,$regtime,$year,$mon,$day) = split(/<>/);
			if (!$logno[$day]) {$logno[$day] = $no;}
		}
	}
	$mdays = $mdays[$logmon - 1];
	if ($logmon == 2 && $logyear % 4 == 0) {$mdays = 29;}

###############################カレンダーのタイトル部分
#
	if ($mode ne 'ssi') {
		print "<table width=700 cellspacing=1 cellpadding=0><tr valign=top>\n";
	}else{
		print "<table width=320 cellspacing=1 cellpadding=0><tr valign=top>\n";
	}

#	print "<td width=260 align=center>\n";
	print "<td align=center>\n";
#	$mon = $logmon - 1;
#	if ($mon < 1) {$mon = 12; $year = $logyear - 1;} else {$year = $logyear;}
#
#	if ($mode ne 'ssi') {
#		print "<a href=\"$script?mode=$mode&log=$year$mon\">&lt;&lt; 前月</a>　　\n";
#	}else{
#		print "<a href=\"$script?mode=main&log=$year$mon\">&lt;&lt; 前月</a>　　\n";
#	}
#
#	print "<b><font size=\"+1\">$logyear年 $month[$logmon - 1]</font></b>\n";
#
#	$mon = $logmon + 1;
#	if (12 < $mon) {$mon = 1; $year = $logyear + 1;} else {$year = $logyear;}
#
#	if ($mode ne 'ssi') {
#		print "　　<a href=\"$script?mode=$mode&log=$year$mon\">翌月 &gt;&gt;</a>\n";
#	}else{
#		print "　　<a href=\"$script?mode=main&log=$year$mon\">翌月 &gt;&gt;</a>\n";
#	}

###############################カレンダー作成部分

#	print "<table bgcolor=\"$frame_color\" cellspacing=1 cellpadding=4><col span=7 align=center><tr bgcolor=\"$subbg_color\">\n";
#	for (0 .. 6) {print "<td width=26><font color=\"$wcolor[$_]\">$week[$_]</font></td>\n";}
#	print "</tr>\n";
#
#	&get_date($logyear,$logmon,1);
#	$w = 0;
#	$k = 1;
#	for ($i=0; $i<42; $i++) {
#		if (!$w) {print "<tr bgcolor=\"$combg_color\">";}
#		$bgcday = '';
#		if ($wday <= $i && $k <= $mdays) {
#			$wcolor = $wcolor[$w];
#			if ($logyear == 2003) {
#				$smd = sprintf("%02d%02d",$logmon,$k);
#				if ($holiday03{$smd}) {$wcolor = $holi_color;}
#			}
#			$dspday = "<font color=\"$wcolor\">$k</font>";
#			if ($logno[$k]) {
#				$bgcday = " bgcolor=\"$sche_color\"";
#
#
#				if ($mode ne 'ssi') {
#					$dspday = "<a href=\"\#$logno[$k]\"><b>$dspday</b></a>";
#				}else{
#					$dspday = "<a href=\"$script?mode=main&log=$year$mon\#$logno[$k]\"><b>$dspday</b></a>";
#				}
#
#
#			}
#			if ($logyear == $nowyear && $logmon == $nowmon && $k == $nowday) {$bgcday = " bgcolor=\"$today_color\"";}
#			print "<td$bgcday>$dspday</td>\n";
#			$k++;
#		} else {print "<td>　</td>\n";}
#		$w++;
#		if ($w == 7) {
#			print "</tr>";
#			if ($mdays < $k) {last;}
#			$w = 0;
#		}
#	}
#	print "</table>\n\n";

#	if ($mode ne 'regin') {
#		print "<table cellspacing=3 cellpadding=1><tr><td><a href=\"$script?mode=regin\">[スケジュールの登録／修正]</a></td></tr></table></td>\n";
#	}

##############################スケジュールタイトル部見出し
#	print "</td><td>\n";
	print "<table width=100% cellspacing=0 cellpadding=0 border=0><tr>\n";
#	print "<td><font color=\"#FF6600\" size=\"3\">▼</font><b><font color=\"$title_color\" size=\"+1\"> $month[$logmon - 1]のお知らせ</font></b></td>\n";
	print "<td><font color=\"#FF6600\" size=\"3\"><b>【$month[$logmon - 1]のお知らせ】</b></font></td>\n";
#	if ($mode ne 'ssi') {
#		print "<td> </td>\n";
#	}else{
#		print "<td><div align=\"right\"><a href=\"$script?mode=main&log=$nowyear$nowmon\">[全スケジュールを参照]</a></div></td>\n";
		print "<td><div align=\"right\">[ \n";
		$mon = $logmon - 1;
		if ($mon < 1) {$mon = 12; $year = $logyear - 1;} else {$year = $logyear;}
		if ($mode eq 'ssi') {print "<a href=\"$script?mode=main&log=$year$mon\">&lt;&lt; 前月</a>　/　\n";}
		elsif ($mode eq 'regin') {print "<a href=\"$script?mode=regin&log=$year$mon\">&lt;&lt; 前月</a>　/　\n";}
		else{ print "<a href=\"$script?mode=main&log=$year$mon\">&lt;&lt; 前月</a>　/　\n";}
		$mon = $logmon + 1;
		if (12 < $mon) {$mon = 1; $year = $logyear + 1;} else {$year = $logyear;}
		if ($mode eq 'ssi') {print "<a href=\"$script?mode=main&log=$year$mon\">翌月 &gt;&gt;</a>\n";}
		elsif ($mode eq 'regin') {print "<a href=\"$script?mode=regin&log=$year$mon\">翌月 &gt;&gt;</a>\n";}
		else{ print "<a href=\"$script?mode=main&log=$year$mon\">翌月 &gt;&gt;</a>\n";}
		print " ]</div></td>\n";
#	}
	print "</tr></table><br>\n";


##############################スケジュールタイトル一覧

	if ($logflag) {
#		print "<table width=100% bgcolor=\"$frame_color\" cellspacing=1 cellpadding=1>\n";
		print "<table width=100% cellspacing=5 cellpadding=0 border=0>\n";
		foreach (@data) {
			($no,$regtime,$year,$mon,$day,$youbi,$sub,$com,$color) = split(/<>/);

			if ($mode ne 'ssi') {
				print "<tr><td width=110  valign=\"top\">　<font color=\"$color\">■</font> $mon月$day日($youbi)</td><td>\n";
				print "<a href=\"\#$no\">$sub</a></td></tr>\n";
			}else{
#				if ($day >= $nowday) {
					print "<tr><td width=90  valign=\"top\">　<font color=\"$color\">■</font> $mon月$day日($youbi)</td><td>\n";
					print "<a href=\"$script?mode=main&log=$year$mon\#$no\">$sub</a></td></tr>\n";
#				}
			}

		}
		print "</table>\n";
	}

#	print "</td><td width=12%></td></tr></table><br>\n";
	print "</td></tr></table>\n";


	print "<br><table><tr><td valign=top>【記事区分】 ～ </td>\n";
	for ($i=0; $i<$catmax; $i+=2) {
		$catcolor = $cat[$i+1];
		if (!$catcolor) {next;}
		if ($cat[$i]) {print "<td><font color=\"$catcolor\">■ $cat[$i]</font></td>\n";}
		if ($cat[$i+2]) {print "<td> / </td>";}
	}
	print "</tr></table>\n";

###############################その月分のスケジュール内容表示
	if ($mode ne 'ssi') {
		if ($logflag) {
			foreach (@data) {
				($no,$regtime,$year,$mon,$day,$youbi,$sub,$com,$color,$url,$email) = split(/<>/);
				&dsp_log($_[0]);
			}
		}
	}
}

#######################################################################################################################
##### スケジュール内容表示 #####
#######################################################################################################################
sub dsp_log {

	print "<a name=\"$no\"></a><br><table width=700 bgcolor=\"#000033\" cellspacing=1 cellpadding=0>\n";
	print "<tr><td bgcolor=\"$combg_color\" align=center><table width=100% bgcolor=\"#ffa500\"><tr>\n";
	print "<td>　<font color=\"$color\">■</font> $year年$mon月$day日（$youbi） 　　<b><font color=\"FFFFFF\">$sub</font></b></td><td align=right>\n";
#	if ($_[0] eq 'edt') {print "<a href=\"$script?mode=regin&act=edtin&pass=$inpass&no=$no&log=$log\">[修正／削除]</a>\n";}
	if ($_[0] eq 'edt') {print "<a href=\"$script?mode=$mode&act=edtin&pass=$inpass&no=$no&log=$log\">[修正／削除]</a>\n";}
	print "</td></tr></table>\n";
	print "<table width=95% cellspacing=8 cellpadding=0><tr><td>$com</td></tr></table>\n";

	if ($url ne '' || $email ne '') {
		print "<table width=100% bgcolor=\"$subbg_color\"><tr><td>関連URL：<a href=\"$url\">$url</a></td>\n";
		print "<td align=right>E-mail：<a href=\"mailto:$email\">$email</a></td></tr></table>\n";
	}


	print "</td></tr></table>\n";

	print "<table width=660 cellspacing=0 cellpadding=0><tr><td align=right><a href=\"\#top\">top▲</a></td></tr></table>\n";
}

#######################################################################################################################
##### 日付取得 #####
#######################################################################################################################
sub get_date {
	($year,$mon,$day) = @_;
	$y = $year;
	$m = $mon;
	if( $m < 3 ){$y--; $m+=12;}
	$wday = ($y+int($y/4)-int($y/100)+int($y/400)+int((13*$m+8)/5)+$day)%7;

	$wcolor = $wcolor[$wday];
	$smd = sprintf("%02d%02d",$mon,$day);
	if ($year eq '2003') {$holiday = $holiday03{$smd};}
	if ($holiday) {$wcolor = $holi_color;}
	$youbi = "<font color=\"$wcolor\">$week[$wday]</font>";
}

#######################################################################################################################
##### 管理者メニュー #####
sub admin {

	$inpass = $in{'pass'};
	if ($inpass eq '') {
		print "<br><br><br><br><h4>パスワードを入力して下さい！</h4>\n";
		print "<form action=\"$script\" method=\"POST\">\n";
		print "<input type=hidden name=mode value=\"admin\">\n";
		print "<input type=password name=pass size=10 maxlength=8>\n";
		print "<input type=submit value=\"認証\"></form>\n";
		print "</center></body></html>\n";
		exit;
	}
	if ($inpass ne $adminpass) {&error("パスワードが違います");}

	print "<table width=\"760\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000033\"><tr>\n";
	print "<td align=\"center\" bgcolor=\"#FF6600\">\n";
	print "<table width=\"750\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n";
	print "<tr>\n";
	print "<td><img src=\"$titleimg\" width=\"350\" height=\"50\"></td>\n";
	print "<td>　</td>\n";
	print "<td valign=\"bottom\"><div align=\"right\"><img src=\"$subtitleimg\" width=\"193\" height=\"40\"></div></td>\n";
	print "</tr>\n";
	print "</table>\n";
	print "</td></tr><tr><td align=\"center\" bgcolor=\"#FFFFFF\">\n";

	print "<table width=100% bgcolor=\"#ffa500\" cellspacing=3 cellpadding=0><tr>\n";
	print "<td>　<a href=\"$script?mode=main\"><< 「管理者モード」を終了する</a></td>\n";
	print "<td align=\"right\"><a href=\"$home\">HOMEへ戻る >></a>　</td>\n";
	print "</tr></table>\n";

	print "</td></tr>\n";

	print "<tr><td align=\"center\" bgcolor=\"#FFFFFF\"><br>\n";

	print "<font size=\"3\" color=\"#FF6600\">【管理者モード】</font><br><br>\n";

	$act = $in{'act'};
	if ($act eq 'newwrt') {&newwrt;}
	elsif ($act eq 'edtin') {&edtin;}
	elsif ($act eq 'edtwrt') {&edtwrt; &edtin;}
	elsif ($act eq 'delwrt') {&delwrt;}
	elsif ($act eq 'setup') {&setup;}

	if ($in{'act'} eq "newwrt") {print "<font color=\"#FF0000\">※ご入力された内容はスケジュールに新規追加されました。ご確認ください。</font><br><br>\n";}
	elsif ($in{'act'} eq "delwrt") {print "<font color=\"#FF0000\">※指定された記事はスケジュールより削除されました。ご確認ください。</font><br><br>\n";}
	else{ print "<font color=\"#000066\">※以下の登録フォームに必要事項を入力後、「新規登録」ボタンで記事が書き込めます。</font><br><br>\n";}

	&in_form('reg',$nowyear,$nowmon,$nowday);

	print "<br><hr width=660>\n";
	print "<br><font color=\"#000066\">※記事を修正／削除する場合は、詳細ごとの[修正／削除]をクリックしてください。</font><br><br>\n";

	print "<a name=\"top\"></a>\n";

	&dsp('edt');

	print "<br></td></tr><tr><td align=\"center\" bgcolor=\"#FF6600\"><font color=\"#FFFFFF\">Copyright &copy; 2003 System Supply Co.,Ltd All Rights Reserved.</font></td></tr>\n";
	print "</td></tr></table>\n";
}

#######################################################################################################################
##### 書込／編集処理メイン #####
#######################################################################################################################
sub regin {

	print "<table width=\"760\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000033\"><tr>\n";
	print "<td align=\"center\" bgcolor=\"#FF6600\">\n";
	print "<table width=\"750\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n";
	print "<tr>\n";
	print "<td><img src=\"$titleimg\" width=\"350\" height=\"50\"></td>\n";
	print "<td>　</td>\n";
	print "<td valign=\"bottom\"><div align=\"right\"><img src=\"$subtitleimg\" width=\"193\" height=\"40\"></div></td>\n";
	print "</tr>\n";
	print "</table>\n";
	print "</td></tr><tr><td align=\"center\" bgcolor=\"#FFFFFF\">\n";

	print "<table width=100% bgcolor=\"#ffa500\" cellspacing=3 cellpadding=0><tr>\n";
#	print "<td>　<a href=\"$script?mode=main\"><< 「登録／修正モード」を終了する</a></td>\n";
#	print "<td align=\"right\"><a href=\"$home\">HOMEへ戻る >></a>　</td>\n";
	print "<td align=\"center\"><font color=\"#FFFFFF\"> 理 者 専 用 画 面</td>\n";
	print "</tr></table>\n";

#	print "</td></tr><tr><td align=\"center\" bgcolor=\"#fef5da\">\n";

#	print "<table width=\"700\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\">\n";
##	print "<tr><td><div align=\"center\"><font size=\"3\" color=\"#FF6600\">【登録／修正モード】</font></div></td></tr>\n";
#	print "<tr><td align=\"center\"><font size=\"3\" color=\"#FF0000\">【オホーツクカレンダーご利用について】</font></td></tr>\n";
#	print "<tr><td>オホーツクカレンダーは、本サイトご利用の方ならどなたでも書き込むことができる、カレンダー型の告知専用掲示板です。<br>\n";
#	print "個人・企業にとらわれず、ご自由にご利用ください。\n";
#	print "なお、公序良俗に反する内容、本カレンダーの主旨にあわない内容の場合につきましては、勝手ながら削除させて頂く事がございます。あらかじめご了承お願い致します。</td></tr>\n";
#	print "<tr><td><div align=\"center\"><a href=\"../../$kiyaku\">[ オホーツクカレンダー利用規約 ～ ご利用の前に必ずお読み下さい ]</a></div></td></tr></table>\n";

	print "</td></tr>\n";
	print "<tr><td align=\"center\" bgcolor=\"#FFFFFF\"><br>\n";

	print "<font size=\"3\" color=\"#FF6600\">【登録／修正モード】</font><br><br>\n";


	$act = $in{'act'};
	if ($act eq 'newwrt') {&newwrt;}
	elsif ($act eq 'edtin') {&edtin;}
	elsif ($act eq 'edtwrt') {&edtwrt; &edtin;}
	elsif ($act eq 'delwrt') {&delwrt;}
	elsif ($act eq 'setup') {&setup;}

	if ($in{'act'} eq "newwrt") {print "<font color=\"#FF0000\">※ご入力された内容はスケジュールに新規追加されました。ご確認ください。</font><br><br>\n";}
	elsif ($in{'act'} eq "delwrt") {print "<font color=\"#FF0000\">※指定された記事はスケジュールより削除されました。ご確認ください。</font><br><br>\n";}
	else{ print "<font color=\"#000066\">※以下の登録フォームに必要事項を入力後、「新規登録」ボタンで記事が書き込めます。</font><br><br>\n";}

	&in_form('reg',$nowyear,$nowmon,$nowday);

	print "<br><hr width=660>\n";
	print "<br><font color=\"#000066\">※記事を修正／削除する場合は、詳細ごとの[修正／削除]をクリックしてください。</font><br><br>\n";

	print "<a name=\"top\"></a>\n";

	&dsp('edt');

	print "<br></td></tr><tr><td align=\"center\" bgcolor=\"#FF6600\"><font color=\"#FFFFFF\">Copyright &copy; 2003 System Supply Co.,Ltd All Rights Reserved.</font></td></tr>\n";
	print "</td></tr></table>\n";

}

#######################################################################################################################
##### 入力フォーム作成 #####
#######################################################################################################################
sub in_form {
	($type,$year,$mon,$day) = @_;

	print "<table cellspacing=4 cellpadding=0>\n";
	print "<form action=\"$script\" method=\"POST\">\n";
#	print "<input type=hidden name=mode value=\"regin\">\n";
	print "<input type=hidden name=mode value=\"$mode\">\n";

	if ($type eq 'reg') {
		print "<input type=hidden name=act value=\"newwrt\">\n";
		print "<tr><td>日付</td><td>\n";
		print "<select name=year>\n";
		for ($i=2003; $i<=$nowyear+1; $i++) {
			if ($i == $year) {$sel = ' selected';} else {$sel = '';}
			print "<option value=\"$i\"$sel>$i\n";
		}
		print "</select>年\n";

		print " <select name=mon>\n";
		for ($i=1; $i<13; $i++) {
			if ($i == $mon) {$sel = ' selected';} else {$sel = '';}
			print "<option value=\"$i\"$sel>$i\n";
		}
		print "</select>月\n";

		print " <select name=day>\n";
		for ($i=1; $i<32; $i++) {
			if ( $i == $day) {$sel = ' selected';} else {$sel = '';}
			print "<option value=\"$i\"$sel>$i\n";
		}
		print "</select>日</td></tr>\n";
		$sub = $com = '';
		$submit = '新規登録';
	} else {

		print "<input type=hidden name=act value=\"edtwrt\">\n";
		print "<input type=hidden name=no value=\"$in{'no'}\">\n";
		print "<input type=hidden name=log value=\"$log\">\n";
		print "<input type=hidden name=inpwd value=\"$in{'inpwd'}\">\n";
		print "<input type=hidden name=pass value=\"$inpass\">\n";
		$submit = '修　正';
	}

	print "<tr><td>件　名</td><td><input type=text name=sub size=60 value=\"$sub\"></td></tr>\n";
	print "<tr><td valign=top><br>本　文</td><td><textarea cols=80 rows=10 name=com wrap=\"soft\">$com</textarea></td></tr>\n";

	print "<tr><td valign=top>記事区分</td><td><table cellspacing=1 cellpadding=0>\n";
	if (!$color) {$color = $cat[1];}
	$k = 0;
	for ($i=0; $i<$catmax; $i+=2) {
		$catcolor = $cat[$i+1];
		if (!$catcolor) {next;}
		if (!$k) {print "<tr>";}
		if ($color eq $catcolor) {$chk = ' checked';} else {$chk = '';}
		print "<td width=30 align=center><input type=radio name=color value=\"$catcolor\"$chk></td>\n";
		if ($cat[$i]) {print "<td><font color=\"$catcolor\">■ $cat[$i]</font></td><td width=5></td>\n";}
		$k++;
		if ($k == $catcols) {print "</tr>"; $k = 0;}
	}
	if ($k) {print "</tr>";}
	print "</table></td></tr>\n";

	print "<tr><td>関連URL</td><td><input type=text name=url size=60 value=\"$url\"></td></tr>\n";
	print "<tr><td>E-mail</td><td><input type=text name=email size=30 value=\"$email\"></td></tr>\n";

	print "<tr><td>修正パスワード</td><td><input class=text type=password name=pwd size=10 maxlength=8 value=\"$pwd\"><font color=\"#FF0000\"> （英数8文字以内）</td></tr>\n";

	print "<tr><td></td><td><table width=100% cellspacing=0 cellpadding=2><tr><td><input type=submit value=\"$submit\"></td></form>\n";
	if ($type ne 'reg') {
#		print "<td width=80 bgcolor=red align=center>\n";
		print "<td width=80 align=center>\n";
		print "<form action=\"$script\" method=\"POST\">\n";

#		print "<input type=hidden name=mode value=\"regin\">\n";
		print "<input type=hidden name=mode value=\"$mode\">\n";

		print "<input type=hidden name=act value=\"delwrt\">\n";
		print "<input type=hidden name=pass value=\"$inpass\">\n";
		print "<input type=hidden name=no value=\"$in{'no'}\">\n";
		print "<input type=hidden name=log value=\"$log\">\n";
		print "<input type=submit value=\"削除する\"></td></form>\n";
	}
	print "</tr></table></td></tr></table>\n";
}

#######################################################################################################################
##### 新規保存 #####
#######################################################################################################################
sub newwrt {

	&in_chk;

	&get_date($in{'year'},$in{'mon'},$in{'day'});
	$logfile = "$base/d$in{'year'}$in{'mon'}.log";

	$pwd = &crypt($in{'pwd'});
	$newdata = "$nowtime<>$in{'year'}<>$in{'mon'}<>$in{'day'}<>$youbi<>$in{'sub'}<>$in{'com'}<>$in{'color'}<>$in{'url'}<>$in{'email'}<>$pwd<>\n";
#	$newdata = "$nowtime<>$in{'year'}<>$in{'mon'}<>$in{'day'}<>$youbi<>$in{'sub'}<>$in{'com'}<>$in{'color'}<>$in{'url'}<>$in{'email'}<>$in{'pwd'}<>\n";

	if (-e $logfile) {
		open IN,"$logfile";		@data = <IN>;			close IN;
		$top = shift(@data);
		($no,$lasttime) = split(/<>/, $top);
		$no++;
		$newdata = "$no<>$newdata";
		$flag = 0;
		foreach (@data) {
			($n,$regtime,$year,$mon,$day) = split(/<>/);
			if ($in{'day'} < $day && !$flag) {push(@new,$newdata); $flag = 1;}
#			if ($in{'day'} >= $day && !$flag) {push(@new,$newdata); $flag = 1;}
			push(@new,$_);
		}
		if (!$flag) {push(@new,$newdata);}
		unshift(@new,"$no<>$nowtime<>\n");
		open OUT,">$logfile";	print OUT @new;			close OUT;
	} else {
		$newdata = "1<>$nowtime<>\n1<>$newdata";
		open OUT,">$logfile";	print OUT $newdata;		close OUT;		chmod(0666,$logfile);
	}
}

#######################################################################################################################
##### 既存データ読込 #####
#######################################################################################################################
sub edtin {
	$log = $in{'log'};
	$logfile = "$base/d$log.log";
	open IN,"$logfile";		@data = <IN>;		close IN;

	$top = shift(@data);
	foreach (@data) {
		($no,$regtime,$year,$mon,$day,$youbi,$sub,$com,$color,$url,$email,$pwd) = split(/<>/);
		if ($in{'no'} eq $no) {last;}
	}

	if ($mode ne 'admin'){
		if ($regaddr ne $ENV{'REMOTE_ADDR'}) {
			if ($in{'inpwd'} eq '') {

				&dsp_log;

				print "<br><font color=\"#000066\">※この記事の「修正パスワード」を入力して下さい。</font><br>\n";
				print "<form action=\"$script\" method=POST>\n";
#				print "<input type=hidden name=mode value=\"regin\">\n";
				print "<input type=hidden name=mode value=\"$mode\">\n";
				print "<input type=hidden name=act value=\"edtin\">\n";
				print "<input type=hidden name=no value=\"$in{'no'}\">\n";
				print "<input type=hidden name=log value=\"$log\">\n";
				print "<input type=password name=inpwd size=10 maxlength=8>\n";
				print "<input type=submit value=\"実行\"></form>\n";

				print "<br></td></tr><tr><td align=\"center\" bgcolor=\"#FF6600\"><font color=\"#FFFFFF\">Copyright &copy; 2003 System Supply Co.,Ltd All Rights Reserved.</font></td></tr>\n";
				print "</td></tr></table>\n";

				print "</center></body></html>\n";
				exit;
			}
			$mat = &decrypt($in{'inpwd'},$pwd);
			if (!$mat) {
				if ($pwd eq "") {&error("該当の登録データに修正パスワードが設定されていません。");}
				$mat = &decrypt($in{'inpwd'},$pwd);
				if (!$mat) {&error("修正パスワードの入力に誤りがあります。");}
			}
		}

		$pwd = $in{'inpwd'};
	}else{
		$pwd = $adminpass ;
		$inpass= $adminpass ;
	}

#	print "<br><center><b>***** 修正・削除フォーム　*****</b><br>\n";

	if ($in{'act'} eq "edtwrt") {print "<font color=\"#FF0000\">※更新完了しました。修正内容をご確認ください。</font><br>\n";}
	else {print "<font color=\"#000066\">※修正部分を編集後、「修正」ボタンで更新します。削除する場合は「削除」ボタンを押して下さい。</font><br>\n";}


	&dsp_log;
#	print "<br><hr width=90%>\n";

	$com =~ s/<br>/\r/g;
	&in_form('edt',$year,$mon,$day);

	print "<br></td></tr><tr><td align=\"center\" bgcolor=\"#FF6600\"><font color=\"#FFFFFF\">Copyright &copy; 2003 System Supply Co.,Ltd All Rights Reserved.</font></td></tr>\n";
	print "</td></tr></table>\n";
	print "<br><br></center></body></html>\n";
	exit;
}

#######################################################################################################################
##### 既存データ書込 #####
#######################################################################################################################
sub edtwrt {

	&in_chk;

	$log = $in{'log'};
	$logfile = "$base/d$log.log";
	open IN,"$logfile";		@data = <IN>;		close IN;

	$top = shift(@data);
	foreach (@data) {
		($no,$regtime,$year,$mon,$day,$youbi) = split(/<>/);

		$pwd = &crypt($in{'pwd'});
		if ($in{'no'} eq $no) {push(@new,"$no<>$regtime<>$year<>$mon<>$day<>$youbi<>$in{'sub'}<>$in{'com'}<>$in{'color'}<>$in{'url'}<>$in{'email'}<>$pwd<>\n");}
#		if ($in{'no'} eq $no) {push(@new,"$no<>$regtime<>$year<>$mon<>$day<>$youbi<>$in{'sub'}<>$in{'com'}<>$in{'color'}<>$in{'url'}<>$in{'email'}<>$in{'pwd'}<>\n");}
		else {push(@new,$_);}
	}
	unshift(@new,$top);
	open OUT,">$logfile";	print OUT @new;		close OUT;
}

#######################################################################################################################
##### データ削除 #####
#######################################################################################################################
sub delwrt {
	$log = $in{'log'};
	$logfile = "$base/d$log.log";
	open IN,"$logfile";		@data = <IN>;		close IN;

	$top = shift(@data);
	foreach (@data) {
		($no,$regtime) = split(/<>/);
		if ($in{'no'} ne $no) {push(@new,$_);}
	}
	unshift(@new,$top);
	open OUT,">$logfile";	print OUT @new;		close OUT;
}

###################################################################################################################
##### 入力チェック #####
###################################################################################################################
sub in_chk {
	if (!$in{'sub'}) {&error("件名を入力して下さい。");}
	if (!$in{'com'}) {&error("内容を入力して下さい。");}
	if (!$in{'pwd'}) {&error("修正パスワードを入力して下さい。");}
	$in{'com'} =~ s/\r\n|\n|\r/<br>/g;
}

###################################################################################################################
##### 設定画面／設定更新（未使用）#####
#sub setup {
#	if ($in{'wrt'} eq 'on') {
#		if ($in{'newpass'} ne '') {$pass = &crypt($in{'newpass'});}
#		$title = $in{'title'};
#		$home = $in{'home'};
#		$bg_img = $in{'bg_img'};
#
#		$bg_color = $in{'color0'};
#		$text_color = $in{'color1'};
#		$title_color = $in{'color2'};
#		$frame_color = $in{'color3'};
#		$combg_color = $in{'color4'};
#		$subbg_color = $in{'color5'};
#		$holi_color = $in{'color6'};
#		$sat_color = $in{'color7'};
#		$sche_color = $in{'color8'};
#		$today_color = $in{'color9'};
#
#		open OUT,">$opfile";
#		print OUT "$title,$pass,$home,$bg_img,$bg_color,$text_color,$title_color,$frame_color,$combg_color,$subbg_color,$holi_color,$sat_color,$sche_color,$today_color";
#		close OUT;
#	}
#
#	print "<center><form action=\"$script\" method=\"POST\">\n";
#	print "<input type=hidden name=mode value=\"admin\">\n";
#	print "<input type=hidden name=act value=\"setup\">\n";
#	print "<input type=hidden name=wrt value=\"on\">\n";
#	print "<input type=hidden name=pass value=\"$inpass\">\n";
#	print "<b>下記について設定した後、「送信する」を押して下さい。</b><br><br>\n";
#	print "<input type=submit value=\"送信する\"><br><br>\n";
#
#	print "<table cellspacing=2 cellpadding=0>\n";
#	print "<tr><td><b>タイトル</b></td><td><input type=text name=title size=40 value=\"$title\"></td></tr>\n";
#	print "<tr><td><b>ホームURL</b></td><td><input type=text size=60 name=home value=\"$home\"></td></tr>\n";
#	print "<tr><td><b>壁紙</b></td><td><input type=text size=60 name=bg_img value=\"$bg_img\"></td></tr>\n";
#
#	print "<tr><td></td><td><a href=\"$base/color.htm\" target=\"_blank\">カラーコード</a></td></tr>\n";
#	@name = ('基本背景色','基本文字色','タイトル色','枠色','記事背景色','項目背景色','休日','土曜日','スケジュール日','本日');
#	@data = ($bg_color,$text_color,$title_color,$frame_color,$combg_color,$subbg_color,$holi_color,$sat_color,$sche_color,$today_color);
#	for ($i=0; $i<@name; $i++) {
#		print "<tr><td><b>$name[$i]</b></td><td><table cellspacing=0 cellpadding=0><tr>\n";
#		print "<td><input type=text name=color$i size=10 value=\"$data[$i]\"></td>\n";
#		print "<td width=5></td><td width=80 bgcolor=\"$data[$i]\"></td></tr></table></td></tr>\n";
#	}
#	print "<tr><td><b>パスワード変更</b></td><td><input type=password name=newpass size=10 maxlength=8> （英数8文字以内）</td></tr>\n";
#	print "</table></form></center></body></html>\n";
#	exit;
#}

###################################################################################################################
##### 暗号化 #####
###################################################################################################################
sub crypt {
	@salt = ('a' .. 'z','A' .. 'Z','0' .. '9');
	srand;
	$salt = "$salt[int(rand($#salt))]$salt[int(rand($#salt))]";
	return crypt($_[0],$salt);
}

###################################################################################################################
##### 暗号化文字列との比較 #####
###################################################################################################################
sub decrypt {
	$salt = $_[1] =~ /^\$1\$(.*)\$/ && $1 || substr($_[1],0,2);
	if (crypt($_[0],$salt) eq $_[1] || crypt($_[0],'$1$' . $salt) eq $_[1]) {return 1;}
	return 0;
}

###################################################################################################################
##### エラー表示 #####
###################################################################################################################
sub error {
	print "<br><font color=\"#FF0000\">※エラーです。下記の点をご確認下さい。</font><br><br>\n";

	print "<br><font color=\"#FF0000\">・$_[0]</font><br><br>\n";

	print "<br><a href=\"javascript:history.go(-1)\">[前のページへ戻る]</a><br><br>\n";

	print "<br></td></tr><tr><td align=\"center\" bgcolor=\"#FF6600\"><font color=\"#FFFFFF\">Copyright &copy; 2003 System Supply Co.,Ltd All Rights Reserved.</font></td></tr>\n";
	print "</td></tr></table>\n";
	print "</center></body></html>\n";
	exit;
}
###################################################################################################################
