#!/usr/local/bin/perl

#
# 日記CGI nicky! Support Script
#

# 定義部
$Ver="2004/07/12";

$www=".";
$cgipath="./nicky.cgi";
$vDir=".";

sub InitialNicky
{
# 最新×日分の表示
$PrintDay=5;
$PageCnt=5;
# 最新×日分の表示(iMODE)
$PrintiDay=1;
$PageiCnt=3;
# 表示の順番
# Exp:日付順 $Age="r"
#     書込順 $Age="t"
$Age="r";
# 日記を表示させる時の画面幅
#   <table width=$NickyWidth>
$NickyWidth="80%";
$NickyLineWidth="1";
$NickyLineSpan="12";
# 年月日の表現
$Year='年';
$Month='月';
$Day='日';
# 曜日の表現
$WEEK=0;
# 日記本文の表示
$HonbunColor="#000000";
$HonbunSize="2";
# 日記本文の背景色(<tr bgcolor="$HonbunBgColor">
$HonbunBgColor="#ffffff";
# 日記タイトルの背景色
$TitleBgColor="#4386b1";
# タイトルの縦幅
$TSize="12";
# タイトル行の先頭に付加する文字列
$TitleHead="■";
# リンク用タグを出力する
$LinkTH="No";
# 日付の色
$DateFontColor="#FFFFFF";
# 日付のフォントサイズ
$DateSize="2";
# 日記タイトルの文字色
$TitleFontColor="#CCEDFF";
# 日記タイトルのフォントサイズ
$TitleSize="2";
# 本文をエフェクトする文字と色
$EffectSTR1="#";
$EffectSTR2=">";
$EffectSTR3="（";
$EffectSTR4="＃";
$EffectCOL1="#FF0000";
$EffectCOL2="#00FF00";
$EffectCOL3="#0000FF";
$EffectCOL4="#00FFFF";
$LinkOpen="No";
# コメント受付欄のデフォルト縦幅
$CommentRecv="1";
$CommentNameWidth="10";
$CommentMessageWidth="30";
$CommentStrSize="3 color=#000000";
$CommentNameStrSize="3 color=#000000";
# コメントの背景色
$CommentBgColor="#F1F5FA";
# コメントの名前フォント色
$CommentNameColor="#975580";
# コメントの名前フォントサイズ
$CommentNameSize="1";
# コメントのフォント色
$CommentFontColor="#3A75AF";
# コメントのフォントサイズ
$CommentFontSize="1";
# コメントの文字列
$CommentStr="コメント";
# コメント枠色
$CommentFlColor="#C5D6EB";
# URLを自動リンクする
#$UrlLink="Yes";
# 時刻の表示
$PutTimeDefault="Yes";
# 過去ログの単語
$MsgNew="<< NEW";
$MsgOld="OLD >>";
$MsgOldLog="過去ログ";
$MsgOldNEW="最新";
$MsgOldOLD="最古";
$MsgOldOBgCol="#FFFFFF";
$MsgOldCol="#000000";
$MsgOldSize="1";
$MsgOldYBgCol="#FFFFFF";
$MsgOldYFnCol="#000000";
$MsgOldMBgCol="#FFFFFF";
$MsgOldForm="0";
$MsgOld1st="0";
$MsgOldYear="年";
$MsgOldMonth="月";
$MonthSort="UP";
#お絵描き系JavaApplet
$image_width=300;
$image_height=300;
$ReplaySTR="Replay";
$ContinueSTR="Continue";
$JPEG_border="60";
$CompressL="15";
#TitleList
$MsgOldTG="・";
$TitleListSort="DOWN";
# その他
# 検索をCGIに吹かせる
$PutSerchTagFlag=0;
# 最新日記のファイルネーム
$NickyHtml="nicky.html";
@monday=('dummy','31','28','31','30','31','30','31','31','30','31','30','31');
#ユーザーカスタマイズモード
$UserN="No";
$UserL="No";
$UserR="No";
$UserU="No";
$UserD="No";
$UserLC="No";
$UserRC="No";
$UserUC="No";
$UserDC="No";
$UserCmnt="No";
}

# 日記HTML用ヘッダ／フッタファイル名
$NickyConf="./NickyConf.cgi";
$NickyHF="./NickyHF.cgi";
$NickyCustomText="./CustomText.cgi";
$NickyCustomCGI="./CustomCGI.cgi";
$NickyCustomCmntText="./CustomCmntText.cgi";
$NickyCustomCmntCGI="./CustomCmntCGI.cgi";
$TMN="\n#\n#----NickyTerminate----\n#\n";

#
# 日付の作成
#
sub MakeDateStr
{
	if( !$Date )
	{
		$week=@Week[&GetWeek($year, $month, $day)];
		$Date="$year$Year$month$Month$day$Day$week";
		if( ($hour >= 0) && ($PutTime eq "Yes") ){ $Date.="$hour:$min"; }
	}
}

#
# 指定されたファイルを出力する
#
sub PutFile
{
	local($ret);
	$ret=0;

	if( open(FILE, $_[0]) )
	{
		binmode(RDC);
		while(<FILE>)
		{
			print $_;
		}
		close(FILE);
		$ret=1;
	}
	$ret;
}

#
#日記ヘッダファイル抽出
#
sub NickyGetHead
{
	local($all);

	if( -e "./NickyHF.cgi" ){
		$all="";
		open(IN, $NickyHF);
		while(<IN>){
			$all.=$_;
		}
		close(IN);

		($head,$foot,$iHead,$iFoot,$efoot,$head2nd,$foot2nd,$Use2ndHD,$UseListHD,$UseSearchHD,$Use2ndFT,$UseListFT,$UseSearchFT)=split(/$TMN/, $all);
	}
}
#
# 画像ファイル一覧
#
sub PutIllust
{
	local($i, $j);
	local($mdstr, $cell);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($gfn, @pmonth, $moncol, $mday, $cell, $flag_1st);
	my($wid, $hei, $gpath, $pw, $ph, $pagecnt, $cnt, $flag_e, $flag_l);
	my($sizestr, $wnstr, $hnstr, $tg, $ushstr, $usfstr, $psstr);

	$TLyear=".";			#年の後ろに付加する文字
	$TLmonth=".";			#月の後ろに付加する文字
	$TLday=".";				#日の後ろに付加する文字
	$yearcolor="#708090";	#年の表示色
	$moncol="#708090";		#月の表示色

	if( $size ){
		$pw=$size;
		$ph=$size;
	}else{
		$pw=200;			#画像サムネイルの横幅(デフォルト)
		$ph=200;			#画像サムネイルの縦幅（デフォルト）
	}
	if( $wn ){
		$pagewid=$wn;
	}else{
		$pagewid=3;			#ページ内の横に並べる画像の数
	}
	if( $hn ){
		$pagehei=$hn;
	}else{
		$pagehei=3;			#ページ内の縦に並べる画像の数
	}
	if( $spacing ){
		$spc=$spacing;
	}else{
		$spc=12;
	}
	if( ($border == 0) || ($border) ){
		$bdr=$border;
	}else{
		$bdr=1;
	}
	if( $target ){
		$tg=" target=\"$target\"";
		$tgl="\?target=$target";
	}
	$pagecnt=$pagewid*$pagehei;
	#
	# ヘッダの表示。
	# nicky!のヘッダ／フッタの編集と切り離したい場合は
	# ここにヘッダを記述する。
	#
	&NickyGetHead();
	if( $usehead eq "first" ){
		print $head;
	}elsif( $usehead eq "second" ){
		print $head2nd;
	}elsif( $UseListHD eq "Yes" ){
		print $head2nd;
	}else{
		print $head;
	}
	print "<table border=$bdr cellpadding=0 cellspacing=$spc>";
	$cell=$flag_1st=0;
	for $gfn( &GetNickyList("r") )
	{
		$NickyFname="$$gfn[0]";
		&GetDateFromFname();
		&GetNickyFile("$vDir/$NickyFname");
		$gpath="$year/$GrpFileName";
		if( $GrpFileName )
		{
			($wid, $hei) = &GetImageSize("$vDir/$gpath");
			if( $wid && $hei )		#画像有り確定
			{
				$cnt++;
				if( $cnt >= (($pagecnt*($page+1)))+1 ){$flag_e=1;last;}
				#
				#指定ページまで読み飛ばす
				#
				if( $cnt < ($pagecnt * $page)+1 ){ next; }
				#
				#段(TR)判定
				#
				if( !($cell % $pagewid) )
				{
					$cell=0;
					if( $flag_1st )
					{
						print "</tr>";
						$flag_l=1;
					}
					print "<tr>";
					$flag_1st=1;
				}
				#サムネイルサイズ指定無し時は原寸で。
				#サムネイルサイズより原寸が小さい場合は原寸で。
				if( (!$pw || !ph) || ($pw >= $wid) && ($ph >= $hei) )
				{
					$pwid=$wid;
					$phei=$hei;
				}
				else
				{
					#サムネイルサイズ算出
					$putw=$pw/$wid;
					$puth=$ph/$hei;
					if( $putw > $puth )
					{
						$pwid=int($wid*$puth);
						$phei=int($hei*$puth);
					}
					else
					{
						$pwid=int($wid*$putw);
						$phei=int($hei*$putw);
					}
				}
				#
				# ここで画像を表示する
				#
				$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub#$year$month$day$daysub\"$tg>";
				print "<td width=\"$pw\px\" height=\"$phei\px\" align=center valign=top>";
				#日付を表示する
				if( $ps ne "OFF" ){
					print "$year.$month.$day($wid×$hei)<br>";
				}else{
					print "$year.$month.$day<br>";
				}
				print $mdstr;
				print "<img src=\"$www/$gpath\" width=\"$pwid\px\" height=\"$phei\px\" alt=\"$wid×$hei\" border=0></a>";
				$cell++;
				print "</td>";
			} #if( $wid && $hei )
		} # if( $GrpFileName )
	}

	if( $cell < $pagewid )
	{
		my($zan, $ii);
		$zan=$pagewid-$cell;
		if( $flag_l )
		{
			print "<td colspan=$zan>　</td>";
		}
		else
		{
			for($ii=0;$ii<$zan;$ii++)
			{
				print "<td width=$pw\px height=$phei\px>　</td>";
			}
		}
	}
	print "</tr></table>\n";

	#
	#ページの出力
	#
	$sizestr="\?size=$size" if( $size );
	$wnstr="\?wn=$wn" if( $wn );
	$hnstr="\?hn=$hn" if( $hn );
	$spcstr="\?spacing=$spacing" if( $spacing );
	$bdrstr="\?border=$border" if( ($border == 0) || $border );
	$ushstr="\?usehead=$usehead" if( $usehead );
	$usfstr="\?usefoot=$usefoot" if( $usefoot );
	$psstr="\?ps=$ps" if( $ps );
	if( ($flag_e) || ($page) ){
		print "<br><center>\n";
		if( $page ){
			$page--;
			print "<a href=\"./list.cgi$tgl$wnstr$hnstr$sizestr$spcstr$bdrstr$ushstr$usfstr$psstr\?page=$page\?Illust\">&lt;&lt;前</a>　　";
			$page++;

		}
		if( $flag_e ){
			$page++;
			print "<a href=\"./list.cgi$tgl$wnstr$hnstr$sizestr$spcstr$bdrstr$ushstr$usfstr$psstr\?page=$page\?Illust\">次>></a>";
		}
		print "</center>\n";
	}

	#
	# フッタの表示。
	# nicky!のヘッダ／フッタの編集と切り離したい場合は
	# ここにフッタを記述する。
	#
	if( $usefoot eq "first" ){
		print $foot;
	}elsif( $usefoot eq "second" ){
		print $foot2nd;
	}elsif( $UseListFT eq "Yes" ){
		print $foot2nd;
	}else{
		print $foot;
	}
}
sub PutIllustIdx
{
	local($i, $j);
	local($mdstr, $cell);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($gfn, @pmonth, $moncol, $mday, $cell, $flag_1st);
	my($wid, $hei, $gpath, $pw, $ph, $pagecnt, $cnt, $flag_e, $flag_l);
	my($sizestr, $wnstr, $hnstr, $tg, $ushstr, $usfstr, $psstr, $pt);

	$TLyear=".";			#年の後ろに付加する文字
	$TLmonth=".";			#月の後ろに付加する文字
	$TLday=".";				#日の後ろに付加する文字
	$yearcolor="#708090";	#年の表示色
	$moncol="#708090";		#月の表示色

	$flag_e=0;
	if( $size ){
		$pw=$size;
		$ph=$size;
	}else{
		$pw=200;			#画像サムネイルの横幅(デフォルト)
		$ph=200;			#画像サムネイルの縦幅（デフォルト）
	}
	if( $wn ){
		$pagewid=$wn;
	}else{
		$pagewid=3;			#ページ内の横に並べる画像の数
	}
	if( $hn ){
		$pagehei=$hn;
	}else{
		$pagehei=3;			#ページ内の縦に並べる画像の数
	}
	if( $spacing ){
		$spc=$spacing;
	}else{
		$spc=12;
	}
	if( ($border == 0) || ($border) ){
		$bdr=$border;
	}else{
		$bdr=1;
	}
	if( $target ){
		$tg=" target=\"$target\"";
		$tgl="\?target=$target";
	}
	$pagecnt=$pagewid*$pagehei;
	#
	# ヘッダの表示。
	# nicky!のヘッダ／フッタの編集と切り離したい場合は
	# ここにヘッダを記述する。
	#
	&NickyGetHead();
	if( $usehead eq "first" ){
		print $head;
	}elsif( $usehead eq "second" ){
		print $head2nd;
	}elsif( $UseListHD eq "Yes" ){
		print $head2nd;
	}else{
		print $head;
	}
	print "<table border=$bdr cellpadding=0 cellspacing=$spc>";
	$cell=$flag_1st=0;


	if( !@idxl )
	{
		@idxl=&GetIndexList();
		@lst = sort @idxl;
	}

	for $gfn( @lst ){
		$year=substr($gfn, 8, 4);
		$month=substr($gfn, 12,2);
		open(RDI, "$vDir/$gfn");
		binmode(RDI);
		while(<RDI>){
			$data=$_;
			($day, $daysub, $Title, $GrpFileName)=split(/\x01/, $data);
			&MakeNickyFname();

		$GrpFileName=~s/ |\r|\n//g;
		$gpath="$year/$GrpFileName";
		if( $GrpFileName )
		{
			($wid, $hei) = &GetImageSize("$vDir/$gpath");
			if( $wid && $hei )		#画像有り確定
			{
				$cnt++;
				if( $cnt >= (($pagecnt*($page+1)))+1 ){$flag_e=1;last;}
				#
				#指定ページまで読み飛ばす
				#
				if( $cnt < ($pagecnt * $page)+1 ){ next; }
				#
				#段(TR)判定
				#
				if( !($cell % $pagewid) )
				{
					$cell=0;
					if( $flag_1st )
					{
						print "</tr>";
						$flag_l=1;
					}
					print "<tr>";
					$flag_1st=1;
				}
				#サムネイルサイズ指定無し時は原寸で。
				#サムネイルサイズより原寸が小さい場合は原寸で。
				if( (!$pw || !ph) || ($pw >= $wid) && ($ph >= $hei) )
				{
					$pwid=$wid;
					$phei=$hei;
				}
				else
				{
					#サムネイルサイズ算出
					$putw=$pw/$wid;
					$puth=$ph/$hei;
					if( $putw > $puth )
					{
						$pwid=int($wid*$puth);
						$phei=int($hei*$puth);
					}
					else
					{
						$pwid=int($wid*$putw);
						$phei=int($hei*$putw);
					}
				}
				#
				# ここで画像を表示する
				#
#				$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub#$year$month$day$daysub\"$tg>";
				$pt=&MakeMonthFname($year, $month);
				$mdstr="<a href=\"$www/$pt#$year$month$day$daysub\"$tg>";
				print "<td width=\"$pw\px\" height=\"$phei\px\" align=center valign=top>";
				#日付を表示する
				if( $ps ne "OFF" ){
					print "$year.$month.$day($wid×$hei)<br>";
				}else{
					print "$year.$month.$day<br>";
				}
				print $mdstr;
				print "<img src=\"$www/$gpath\" width=\"$pwid\px\" height=\"$phei\px\" alt=\"$wid×$hei\" border=0></a>";
				$cell++;
				print "</td>";
			} #if( $wid && $hei )
		} # if( $GrpFileName )
	  }
	  close(RDI);
	  last if( $flag_e );
	}

	if( $cell < $pagewid )
	{
		my($zan, $ii);
		$zan=$pagewid-$cell;
		if( $flag_l )
		{
			print "<td colspan=$zan>　</td>";
		}
		else
		{
			for($ii=0;$ii<$zan;$ii++)
			{
				print "<td width=$pw\px height=$phei\px>　</td>";
			}
		}
	}
	print "</tr></table>\n";

	#
	#ページの出力
	#
	$sizestr="\?size=$size" if( $size );
	$wnstr="\?wn=$wn" if( $wn );
	$hnstr="\?hn=$hn" if( $hn );
	$spcstr="\?spacing=$spacing" if( $spacing );
	$bdrstr="\?border=$border" if( ($border == 0) || $border );
	$ushstr="\?usehead=$usehead" if( $usehead );
	$usfstr="\?usefoot=$usefoot" if( $usefoot );
	$psstr="\?ps=$ps" if( $ps );
	if( ($flag_e) || ($page) ){
		print "<br><center>\n";
		if( $page ){
			$page--;
			print "<a href=\"./list.cgi$tgl$wnstr$hnstr$sizestr$spcstr$bdrstr$ushstr$usfstr$psstr\?page=$page\?Illust\">&lt;&lt;前</a>　　";
			$page++;

		}
		if( $flag_e ){
			$page++;
			print "<a href=\"./list.cgi$tgl$wnstr$hnstr$sizestr$spcstr$bdrstr$ushstr$usfstr$psstr\?page=$page\?Illust\">次>></a>";
		}
		print "</center>\n";
	}

	#
	# フッタの表示。
	# nicky!のヘッダ／フッタの編集と切り離したい場合は
	# ここにフッタを記述する。
	#
	if( $usefoot eq "first" ){
		print $foot;
	}elsif( $usefoot eq "second" ){
		print $foot2nd;
	}elsif( $UseListFT eq "Yes" ){
		print $foot2nd;
	}else{
		print $foot;
	}
}

#checkStart
#
#タイトル一覧
#
sub PutTitleListSub
{
	local($tcnt)=@_[0];
	my($a, $yd, $i, $j);

	print "<td align=\"right\" valign=\"top\" NOWRAP>";
	print "<font size=$TLdaysz>";
	for $a(@grplist)
	{
		print "$a<BR>";
	}
	print "</font></td>";
	print "<td valign=\"top\" NOWRAP><font size=$TLdaysz>";
	for $a(@daylist)
	{
		print "$a<BR>";
		$yd=@ddlist[$j];
		$j++;
	}

	print "</font></td>";
	print "<td valign=\"top\" NOWRAP><font size=$TLdaysz>";
	for $a(@titlelist)
	{
		print "$a<BR>";
	}
	print "</font>";
	print "</td>";
	undef @daylist;
	undef @titlelist;
	undef @grplist;
	undef @ddlist;
	undef @gpl;
	undef @ddl;
	undef @dyl;
}

#
#タイトルリスト
#
sub PutTitleList
{
	local($i, $yr, $mn, $flag_1st);
	local($mdstr, $clm, $tcnt);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($opt, $gfn, $cltg, $vct);

	#1ページ内に表示する件数
	if( !$num ){
		$num=20;
	}
	$pcnt=0;

	&NickyGetHead();
	if( $UseListHD eq "Yes" ){
		print $head2nd;
	}else{
		print $head;
	}
	$tg="target=\"$target\"" if( $target );

	&PutCalenderT() if( $clnum );

	print "<div align=\"$align\">" if( $align );

	if( $TitleListSort eq "UP" ){
		$opt="r";
	}else{
		$opt="tr";
	}
	if( $num >=0 ){
	  print "<table border=\"0\" width=\"-1\">";
	  for $gfn( &GetNickyList($opt) )
	  {
		$NickyFname=$$gfn[0];
		&GetDateFromFname();
		if( $MON )
		{
			if( ($MON != $month) || ($YR != $year) )
			{
				next;
			}
		}
		else
		{
			$pcnt++;
			if( $scnt >= $pcnt )
			{
				next;
			}
		}
		&GetNickyFile("$vDir/$NickyFname");
		if( !$Title && !$Message )
		{
			$pcnt--;
			next;
		}
		$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub#$year$month$day$daysub\" $tg>";
		if( $yr != $year )
		{
			if( $flag_1st )
			{
				&PutTitleListSub($tcnt);
				print "</tr>\n";
			}
			print "<tr><td align=\"right\" valign=\"top\" width=-1 nowrap>"; #check1
			print "$mdstr<Font Size=\"$TLyearsz\"><b>$year$TLyear</b></Font></a></td>";
			print "<td width=\"-1\" colspan=3></td>";
			print "</tr>\n";
			print "<tr><td align=\"right\" valign=\"top\" width=\"-1\" NOWRAP>$mdstr<Font Size=\"$TLmonthsz\"><b>$month$TLmonth</b></Font></a>";
			print "</td>";
			$yr=$year;
			$mn=$month;
			$flag_1st=1;
			$i=0;
			$clm=0;
			$tcnt=0;
		}
		elsif( $mn != $month )
		{
			&PutTitleListSub($tcnt);
			print "</tr>\n<tr>";
			print "<td align=\"right\" valign=\"top\" NOWRAP width=\"-1\">$mdstr<Font Size=$TLmonthsz><b>$month$TLmonth</b></Font></a>";
			$mn=$month;
			$i=0;
			$tcnt=0;
		}
		if( $GrpFileName )
		{
			@grplist[$i]=$MsgOldTG;
		}
		else
		{
			@grplist[$i]="";
		}
		@daylist[$i]="$mdstr$day$TLday</a>";
		@ddlist[$i]=$day;
		@titlelist[$i]="$mdstr$Title</a>";
		$tcnt++;
		$i++;

		if( $pcnt >= $num+$scnt )
		{
			last;
		}
	  }
	  &PutTitleListSub($tcnt);

	  print "</tr>";
	  print "</table><br>";
	}
	print "</div>\n" if( $align );
	$flag=0;
	$tg="\?target=$target" if( $target );
	$mtg="\?monthlist=OFF" if( $monthlist eq "OFF" );
	$algtg="\?align=$align" if( $align );
	$brntg="\?brnum=$brnum" if( $brnum );
	$cltg="\?clnum=$clnum" if( $clnum );
	$vct="\?vect=$vect" if( $vect );

	if( $scnt > 0 )
	{
		$ppage=$scnt-$num;
		print "<a href=\"./list.cgi$mtg$tg$cltg$vct$brntg$algtg\?scnt=$ppage\?num=$num\?TitleList\">\&lt\;前</a>";
		$flag=1;
	}

	if( ($num >=0 ) && ($lcnt > $num+$scnt ) && !$MON )
	{
		print " / " if( $scnt > 0 );
		print "<a href=\"./list.cgi$mtg$tg$cltg$vct$brntg$algtg\?scnt=$pcnt\?num=$num\?TitleList\">次&gt;</a>";
		$flag=1;
	}

	print "<br><br>" if( $flag );
	$brtg=("<br>")x$brnum;
	print $brtg;
	$brtag="\?brnum=$brnum" if( $brnum );

	&PutMonthTag("UP") if( $monthlist ne "OFF" );

	if( $UseListFT eq "Yes" )
	{
		print $foot2nd;
	}
	else
	{
		print $foot;
	}
}
#Kano3
sub MakeMonthFname{
my($y, $m)=@_;
my($str);
$str=sprintf("$LogFname%04d%02d.html", $y, $m);
$str;
}
sub MakeMonthIndexFname{
my($y, $m)=@_;
my($str);
$str=sprintf("nkyIndex%04d%02d.cgi", $y, $m);
$str;
}
sub PutTitleListIdx
{
	local($i, $yr, $mn, $flag_1st, $flag_last, $pt);
	local($mdstr, $clm, $tcnt);
	local(@daylist, @titlelist, @grplist, @ddlist, @idxl, @lst);
	my($opt, $gfn);

	#1ページ内に表示する件数
	if( !$num )
	{
		$num=20;
	}
	$pcnt=0;
	$flag_last=0;

	&NickyGetHead();
	if( $UseListHD eq "Yes" )
	{
		print $head2nd;
	}
	else
	{
		print $head;
	}
	$tg="target=\"$target\"" if( $target );

	&PutCalenderTidx() if( $clnum );

	print "<div align=\"$align\">" if( $align );

	if( !@idxl )
	{
		@idxl=&GetIndexList();
		@lst = sort @idxl;
		if( $TitleListSort eq "UP" ){
			@lst=reverse(@lst);
		}
	}

	if( $num >=0 ){
	  print "<table border=\"0\" width=\"-1\">";
	   for $gfn( @lst ){
		$idxcnt--;
		$year=substr($gfn, 8, 4);
		$month=substr($gfn, 12,2);
		open(RDI, "$vDir/$gfn");
		binmode(RDI);
		while(<RDI>){
			$data=$_;
			($day, $daysub, $Title, $GrpFileName)=split(/\x01/, $data);
			&MakeNickyFname();

			if( $MON )
			{
				if( ($MON != $month) || ($YR != $year) )
				{
					next;
				}
			}
			else
			{
				$pcnt++;
				if( $scnt >= $pcnt )
				{
					next;
				}
			}
#			&GetNickyFile("$vDir/$NickyFname");
			$pt=&MakeMonthFname($year, $month);
			$mdstr="<a href=\"$www/$pt#$year$month$day$daysub\" $tg>";
			if( $yr != $year )
			{
				if( $flag_1st )
				{
					&PutTitleListSub($tcnt);
					print "</tr>\n";
				}
				print "<tr><td align=\"right\" valign=\"top\" width=-1 nowrap>"; #check1
				print "$mdstr<Font Size=\"$TLyearsz\"><b>$year$TLyear</b></Font></a></td>";
				print "<td width=\"-1\" colspan=3></td>";
				print "</tr>\n";
				print "<tr><td align=\"right\" valign=\"top\" width=\"-1\" NOWRAP>$mdstr<Font Size=\"$TLmonthsz\"><b>$month$TLmonth</b></Font></a>";
				print "</td>";
				$yr=$year;
				$mn=$month;
				$flag_1st=1;
				$i=0;
				$clm=0;
				$tcnt=0;
			}
			elsif( $mn != $month )
			{
				&PutTitleListSub($tcnt);
				print "</tr>\n<tr>";
				print "<td align=\"right\" valign=\"top\" NOWRAP width=\"-1\">$mdstr<Font Size=$TLmonthsz><b>$month$TLmonth</b></Font></a>";
				$mn=$month;
				$i=0;
				$tcnt=0;
			}
			if( $GrpFileName )
			{
				@grplist[$i]=$MsgOldTG;
			}
			else
			{
				@grplist[$i]="";
			}
			@daylist[$i]="$mdstr$day$TLday</a>";
			@ddlist[$i]=$day;
			@titlelist[$i]="$mdstr$Title</a>";
			$tcnt++;
			$i++;

			if( $pcnt >= $num+$scnt )
			{
				$flag_last=1;
				last;
			}
		  }
		  close(RDI);
		  if( $flag_last ){
		  	last;
		  }
		}
		&PutTitleListSub($tcnt);

	  print "</tr>";
	  print "</table><br>";
	}
	print "</div>\n" if( $align );
	$flag=0;
	if( $target )
	{
		$tg="\?target=$target";
	}
	if( $monthlist eq "OFF" )
	{
		$mtg="\?monthlist=OFF";
	}
	$algtg="\?align=$align" if( $align );
	$brntg="\?brnum=$brnum" if( $brnum );
	$cltg="\?clnum=$clnum" if( $clnum );
	if( $scnt )
	{
		$ppage=$scnt-$num;
		print "<a href=\"./list.cgi$mtg$tg$cltg$brntg$algtg\?scnt=$ppage\?num=$num\?TitleList\">\&lt\;前</a>";
		$flag=1;
	}

	if( ($num >=0 ) && ($flag_last || $idxcnt) )
	{
		if( $scnt )
		{
			print "/";
		}
		print "<a href=\"./list.cgi$mtg$tg$cltg$brntg$algtg\?scnt=$pcnt\?num=$num\?TitleList\">次></a>";
		$flag=1;
	}

	if( $flag )
	{
		print "<br><br>";
	}
	$brtg=("<br>")x$brnum;
	print $brtg;
	$brtag="\?brnum=$brnum" if( $brnum );

	if( $monthlist ne "OFF" )
	{
		&PutMonthTag("UP");
	}

	if( $UseListFT eq "Yes" )
	{
		print $foot2nd;
	}
	else
	{
		print $foot;
	}
}



#checkEnd
#
#タイトルリスト(iMODE用)
#
sub PutTitleListIMODE
{
	local($str);
	my($yr, $mn, $pcnt, $flag);
	my($opt, $gfn, $sts, $mdstr, $ppage);

#	$TLyear=".";			#年の後ろに付加する文字
#	$TLmonth=".";			#月の後ろに付加する文字
#	$TLday=".";				#日の後ろに付加する文字

	#1ページ内に表示する件数
	if( !$num )
	{
		$num=16;
	}
	$pcnt=0;
	$sts=&ReqJcode();
# nicky.cgiで設定したiMODE用ヘッダを有効にしたい場合を以下を有効にする
#	&NickyGetHead();
#	if( $sts )
#	{
#		&jcode'euc2sjis(\$iHead);
#	}
#	print $iHead;
	&PutHTMLheaderSJIS();
	print "</head><body>";
	if( $TitleListSort eq "UP" )
	{
		$opt="r";
	} else{
		$opt="tr";
	}
	for $gfn( &GetNickyList($opt) )
	{
		$pcnt++;
		if( $scnt >= $pcnt )
		{
			next;
		}
		$NickyFname=$$gfn[0];
		&GetDateFromFname();
		&GetNickyFile("$vDir/$NickyFname");
		$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub\#$year$month$day$daysub\">";
#		if( $yr != $year )
#		{
#			$str="$year$TLyear<br>";
#			&zenkakuhankaku();
#			print $str;
#			$yr=$year;
#		}
		if( $mn != $month )
		{
			$str="$year$TLyear$month$TLmonth<br>";
			&zenkakuhankaku();
			print $str;
			$mn=$month;
		}
#画像有りの印（iMODEでの表示は考えていません）
#		if( $GrpFileName )
#		{
#			$str=$MsgOldTG;
#			&zenkakuhankaku();
#			print $MsgOldTG;
#		}
#		else
#		{
#			print "　";
#		}
		$str="$mdstr$day$TLday</a>$Title<BR>";
		&zenkakuhankaku();
		print $str;
		if( $pcnt >= $num+$scnt )
		{
			last;
		}
	}

	if( $num != 16 )
	{
		$numstr="\?num=$num";
	}

	if( $scnt )
	{
		$ppage=$scnt-$num;
		print "<a href=\"./list.cgi$numstr\?scnt=$ppage\?TLi\">\&lt\;前</a>";
	}
	if( $pcnt >= $num+$scnt )
	{
		if( $scnt )
		{
			print "/";
		}
		print "<a href=\"./list.cgi$numstr\?scnt=$pcnt\?TLi\">next></a>";
	}

#	print $iFoot;
	print "</body></html>\n";
}
sub PutTitleListIMODEidx
{
	local($str);
	my($yr, $mn, $pcnt, $flag);
	my($opt, $gfn, $sts, $mdstr, $ppage);

#	$TLyear=".";			#年の後ろに付加する文字
#	$TLmonth=".";			#月の後ろに付加する文字
#	$TLday=".";				#日の後ろに付加する文字

	#1ページ内に表示する件数
	if( !$num )
	{
		$num=16;
	}
	$pcnt=0;
	$sts=&ReqJcode();
# nicky.cgiで設定したiMODE用ヘッダを有効にしたい場合を以下を有効にする
#	&NickyGetHead();
#	if( $sts )
#	{
#		&jcode'euc2sjis(\$iHead);
#	}
#	print $iHead;
	&PutHTMLheaderSJIS();
	print "</head><body>";
	if( $TitleListSort eq "UP" )
	{
		$opt="r";
	} else{
		$opt="tr";
	}

	if( !@idxl )
	{
		@idxl=&GetIndexList();
		@lst = sort @idxl;
		if( $TitleListSort eq "UP" ){
			@lst=reverse(@lst);
		}
	}

	for $gfn( @lst ){
	  $year=substr($gfn, 8, 4);
	  $month=substr($gfn, 12,2);
	  open(RDI, "$vDir/$gfn");
	  binmode(RDI);
	  while(<RDI>){
		$data=$_;

		$pcnt++;
		if( $scnt >= $pcnt )
		{
			next;
		}

		($day, $daysub, $Title, $GrpFileName)=split(/\x01/, $data);
		&MakeNickyFname();

		$NickyFname=$$gfn[0];
#		&GetDateFromFname();
#		&GetNickyFile("$vDir/$NickyFname");
#		$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub\#$year$month$day$daysub\">";
		$pt=&MakeMonthFname($year, $month);
		$mdstr="<a href=\"$www/$pt#$year$month$day$daysub\">";
		if( $mn != $month )
		{
			$str="$year$TLyear$month$TLmonth<br>";
			&zenkakuhankaku();
			print $str;
			$mn=$month;
		}
		$str="$mdstr$day$TLday</a>$Title<BR>";
		&zenkakuhankaku();
		print $str;
		if( $pcnt >= $num+$scnt )
		{
			last;
		}
	  }
	  close(RDI);
	  if( $pcnt >= $num+$scnt )
	  {
		last;
	  }
	}

	if( $num != 16 )
	{
		$numstr="\?num=$num";
	}

	if( $scnt )
	{
		$ppage=$scnt-$num;
		print "<a href=\"./list.cgi$numstr\?scnt=$ppage\?TLi\">\&lt\;前</a>";
	}
	if( $pcnt >= $num+$scnt )
	{
		if( $scnt )
		{
			print "/";
		}
		print "<a href=\"./list.cgi$numstr\?scnt=$pcnt\?TLi\">次></a>";
	}

#	print $iFoot;
	print "</body></html>\n";
}

#
# DayList(月単位表示)
#
sub PutDayListSub
{
	local($tcnt)=@_[0];
	my($a, $yd, $i, $j);

	print "<td align=\"right\" valign=\"top\" NOWRAP>";
	my(@gpl, @ddl, @dyl);

	$yd=$j=0;
	if( $TitleListSort eq "UP" )
	{
		@gpl=reverse(@grplist);
		@ddl=reverse(@ddlist);
		@dyl=reverse(@daylist);
	}
	else
	{
		@gpl=@grplist;
		@ddl=@ddlist;
		@dyl=@daylist;
	}
	for $a(@gpl)
	{
		if( @ddl[$j] != $yd )
		{
			for($i=0; $i<(@ddl[$j]-$yd-1); $i++)
			{
				print "<BR>";
			}
			print "$a @dyl[$j]<BR>";
		}
		$yd=@ddl[$j++];
	}
	print "</td>";

	print "</td>";
	undef @daylist;
	undef @titlelist;
	undef @grplist;
	undef @ddlist;
	undef @gpl;
	undef @ddl;
	undef @dyl;
}

sub PutDayList
{
	local($i, $j, $yr, $mn, $flag_1st);
	local($mdstr, $clm, $tcnt);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($opt, $gfn);

	&NickyGetHead();
	if( $UseListHD eq "Yes" )
	{
		print $head2nd;
	}
	else
	{
		print $head;
	}
	print "<table border=\"0\" width=\"$NickyWidth\">";

	if( $TitleListSort eq "UP" )
	{
		$opt="r";
	} else{
		$opt="tr";
	}
	for $gfn( &GetNickyList($opt) )
	{
		$NickyFname=$$gfn[0];
		&GetDateFromFname();
		&GetNickyFile($NickyFname);
		$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub#$year$month$day$daysub\">";
		if( $yr != $year )
		{
			if( $flag_1st )
			{
				&PutTitleListSub($tcnt);
				print "</tr>\n";
			}
			print "<tr><td align=\"right\" valign=\"top\" NOWRAP>";
			print "$mdstr<Font Size=\"5\"><b>$year年</b></Font></a></td>";
			print "<td></td><td></td><td></td><td></td>";
			print "<td></td><td></td><td></td><td></td>";
			print "<td></td><td></td><td></td>";
			print "</tr>\n";
			print "<tr><td align=\"right\" valign=\"top\" NOWRAP>$mdstr<Font Size=\"4\"><b>$month月</b></Font></a>";
			print "</td>";
			$yr=$year;
			$mn=$month;
			$flag_1st=1;
			$i=$j=0;
			$clm=0;
			$tcnt=0;
		}
		elsif( $mn != $month )
		{
			&PutTitleListSub($tcnt);
			if($clm++ > 4){
				print "</tr>\n<tr>";
				$clm=0;
			}
			print "<td align=\"right\" valign=\"top\" NOWRAP>$mdstr<Font Size=\"4\"><b>$month月</b></Font></a>";
			$mn=$month;
			$i=$j=0;
			$tcnt=0;
		}
		if( $GrpFileName )
		{
			@grplist[$i]=$MsgOldTG;
		}
		else
		{
			@grplist[$i]="";
		}
		@daylist[$i]="$mdstr$day日</a>";
		@ddlist[$i]=$day;
		$i++;
	}
	&PutTitleListSub($tcnt);
	print "</tr>";
	print "</table>";
	if( $UseListFT eq "Yes" )
	{
		print $foot2nd;
	}
	else
	{
		print $foot;
	}
}
#
#タイトル一覧（カレンダー型:日の表示[月単位]）
#
sub PutCalenderSub
{
	my($mday, $wcnt, $str)=@_;
	my($a, $yd, $i, $j, $wk, $ii);
	my(@gpl, @ddl, @dyl, @pmonth, $per, $moncol, $strm);
	my(@comment,$wkcols,$wkcole);

	#月の表示色
	if( $monthcolor )
	{
		$moncol="\#$monthcolor";
	}
	else
	{
		$moncol="#708090";
	}

	if( $lang & 1 )
	{
		@pmonth=("dummy","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	}
	else
	{
		@pmonth=("dummy","１月","２月","３月","４月","５月","６月","７月","８月","９月","１０月","１１月","１２月");
	}
	$yd=$j=0;
	@gpl=@grplist;
	@ddl=@ddlist;
	@dyl=@daylist;

	$per=int($wcnt/$mday*100);
	#
	# 月の表示
	#
	print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"1\"><tr><td NOWRAP colspan=\"7\" align=\"right\"><Font Size=$TLmonthsz color=\"$moncol\"><b>";
	$strm=@pmonth[$mn];
	if( $lang & 1 ){
		print $strm;
		if( $lang & 2 ){
			print " / $YR";
		}
	}else{
#		if( $lang & 2 ){
#			print "$YR年 ";
#		}
		print "$strm";
	}
	print "</b></Font>";
	if( $monthform eq "day" )		# 月の表示（書き込み数／日数）
	{
		print "($wcnt/$mday:$per\%)";
	}
	elsif( $monthform eq "per" )	# 月の表示（書き込み率）
	{
		print "($per\%)";
	}
#	else
#	{
#		print "@pmonth[$mn]$TLmonth</b></Font>";
#	}
	print "<hr size=\"1\" noshade></td></tr>";

	&SetWeekStr($lang&1);
	#曜日の表示
	print "<tr>";

	if( $weekcolor )
	{
		$wkcols="<font color=\"\#$weekcolor\">";
		$wkcole="</font>";
	}
	for($i=0;$i<7;$i++)
	{
		print "<td nowrap>$wkcols　@Week[$i]$wkcole</td>";
	}

	print "</tr>\n<tr align=right>";
#	print "<tr align=right>";
	#最初の週
	$wk=&GetWeek($yr, $mn, 0);
	$wk++;
	$wk %= 7;
	for($i=0;$i<$wk;$i++)
	{
		print "<td>　</td>";
	}
	$j=1;	#日付カウンタ
	$yd=0;	#@ddlカウンタ
	for(;$i<7;$i++,$j++)
	{
		if( @ddl[$yd] == $j )
		{
			print "<td>@gpl[$yd]@dyl[$yd]</td>";
			$yd++;
		}
		else
		{
			print "<td>$j$TLday</td>";
		}
	}
	print "</tr><tr align=right>";
	#最初の週以降
	for(;$j<=$mday;$j++)
	{
		if( @ddl[$yd] == $j )
		{
			print "<td nowrap>@gpl[$yd]@dyl[$yd]</td>";
			$yd++;
		}
		else
		{
			print "<td>$j$TLday</td>";
		}
		if( ((($j+$wk) % 7) == 0) && (($j+1)<=$mday) )
		{
			print "</tr><tr align=right>";
		}
	}
	#最後の週
	if( ($j+$wk-1)%7 ){
		for(;($j+$wk-1)%7;$j++)
		{
			print "<td>　</td>";
		}
	}
	print "</tr>";

	if( $str ){
		print "<tr><td colspan=\"7\" align=\"center\"><br>$str</td></tr>";
	}
#
#   その月のコメントを表示する
#
#	print "<tr><td colspan=7>";
#	print "<font color=#808080 size=2>";
#	if( $year == 2003 ){				#年判定
#		if( $mn == 3 )					#月判定
#		{
#			print "眠い月だった";
#		}
#		elsif( $mn == 4 )				#月判定
#		{
#			print "<br>席替えがあった";
#		}
#	}
#	print "</font>";
#	print "</td></tr>";
	print "</table>\n";

	undef @daylist;
	undef @titlelist;
	undef @grplist;
	undef @ddlist;
	undef @gpl;
	undef @ddl;
	undef @dyl;
}

#カレンダー
sub PutCalender
{
	local($i, $j, $yr, $mn, $flag_1st);
	local($mdstr, $mnl, $clm);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($opt, $mday, $wcnt, @ydl);

	$wn=3 if( !$wn );
	#
	# ヘッダの表示。
	# nicky!のヘッダ／フッタの編集と切り離したい場合は
	# ここにヘッダを記述する。
	#
	if( $headder )
	{
		print<<CALENDER_HEAD_EOF
<html>
<head>
<title>Calendar</title>
<meta http-equiv="Content-type" content="text/html; charset=euc-jp">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
<!--
body{font-size:24pix; margin-top:0 ; margin-left:0 ; margin-right:0 ;margin-bottom:0 ;}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#999999" link="#009999" vlink="#708090">
<center>
CALENDER_HEAD_EOF
;
	}
	else
	{
		&NickyGetHead();
		if( $UseListHD eq "Yes" )
		{
			print $head2nd;
		}
		else
		{
			print $head;
		}
	}
	if( $spacing )
	{
		$spc=$spacing;
	}
	else
	{
		$spc=32;
	}
	$TLyearsz="6 face=\"Times New Roman Bold\"";
	$TLmonthsz="5 face=\"Times New Roman Bold\"";
	undef $TLmonth;
	undef $TLday;

	$yearcolor="#708090" if( !$yearcolor );	#年の表示色

	print "\n<table border=0 width=$NickyWidth cellpadding=0 cellspacing=$spc>\n";

#	if( $SaveHTML eq "ON" ){
#		&PutCalenderIdx();
#	}else{
	for $NickyFname( &GetNickyListDay() )
	{
		&GetDateFromFname();

		&GetNickyFile("$vDir/$NickyFname");
		$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub#$year$month$day$daysub\">";
		if( $yr != $year )
		{
			if( $flag_1st )
			{
				$mday=&GetMonthDay($yr, $mn);
				&PutCalenderSub($mday, $wcnt, "");
				for(;$clm<$wn;$clm++)
				{
					print "</td><td>";
				}
				print "</td></tr>";
			}
			print "\n<tr><td align=center valign=top colspan=3 NOWRAP><BR>";
			#
			# 年の表示（リンクする場合は上を有効に、下をコメントアウトに）
			#
#			print "\n$mdstr<Font Size=$TLyearsz color=\"#$yearcolor\"><b>$year$TLyear</b></Font></a></td></tr>\n";
			print "\n<Font Size=$TLyearsz color=\"#$yearcolor\"><strong>$year$TLyear</strong></Font></td></tr>\n";
			print "\n<tr><td align=right valign=top NOWRAP>";
			$mnl=$mdstr;
			$yr=$year;
			$mn=$month;
			$flag_1st=1;
			$i=$j=0;
			$clm=0;
			$wcnt=0;
		}
		elsif( $mn != $month )
		{
			$mday=&GetMonthDay($yr, $mn);
			&PutCalenderSub($mday, $wcnt, "");

			$clm++;
			if( $clm >= $wn )
			{
				print "</td></tr>";
				print "\n<tr><td align=right valign=top NOWRAP>";
				$clm=0;
			}
			else
			{
				print "</td><td align=right valign=top NOWRAP>";
			}

			$mn=$month;
			$mnl=$mdstr;
			$i=$j=0;
			$wcnt=0;
		}
		if( $GrpFileName && $grp)
		{
			#画像有りの印を表示しない場合は↓をコメントにする
			@grplist[$i]=$MsgOldTG;
		}
		else
		{
			@grplist[$i]="";
		}
		$day1=sprintf("%d", $day);
		@daylist[$i]="$mdstr$day1</a>$TLday";
		@ddlist[$i]=$day1;
		$i++;
		$wcnt++;
	}
	$mday=&GetMonthDay($yr, $mn);
	&PutCalenderSub($mday, $wcnt, "");
#	}
	for(;$clm<$wn;$clm++)
	{
		print "</td><td>";
	}
	print "</td></tr></table>";
	#
	# フッタの表示。
	# nicky!のヘッダ／フッタの編集と切り離したい場合は
	# ここにフッタを記述する。
	#
	if( $headder )
	{
		print "<a href=\"./$NickyHtml\">-- back --</a><br><br></body></html>\n";
	}
	else
	{
		if( $UseListFT eq "Yes" )
		{
			print $foot2nd;
		}
		else
		{
			print $foot;
		}
	}
}

sub PutCalenderIdx
{
	my($oday, $pt);

	$oday=$i=0;
	@idxl=&GetIndexList() if( !@idxl );
	@lst = sort @idxl;
	if( $TitleListSort eq "UP" ){
		@lst=reverse(@lst);
	}

	for $gfn( @lst ){
	  $year=substr($gfn, 8, 4);
	  $month=substr($gfn, 12,2);
	  open(RDI, "$vDir/$gfn");
	  binmode(RDI);
	  while(<RDI>){
		$data=$_;
		($day, $daysub, $Title, $GrpFileName)=split(/\x01/, $data);
		next if( $day == $oday );
		$oday=$day;
		$pt=&MakeMonthFname($year, $month);
		$mdstr="<a href=\"$www/$pt#$year$month$day$daysub\">";
		if( $yr != $year )
		{
			$mday=&GetMonthDay($year, $month);
			if( $flag_1st )
			{
				&PutCalenderSub($mday, $wcnt, "");
				for(;$clm<$wn;$clm++)
				{
					print "</td><td>";
				}
			}
			print "<tr><td align=center valign=top colspan=3 NOWRAP><BR>";
			#
			# 年の表示（リンクする場合は上を有効に、下をコメントアウトに）
			#
			print "<Font Size=$TLyearsz color=\"#$yearcolor\"><strong>$year$TLyear</strong></Font></td></tr>";
			print "<tr><td align=right valign=top NOWRAP>";
			$mnl=$mdstr;
			$yr=$year;
			$mn=$month;
			$flag_1st=1;
			$i=$j=0;
			$clm=0;
			$wcnt=0;
		}
		elsif( $mn != $month )
		{
			&PutCalenderSub($mday, $wcnt, "");
			$mday=&GetMonthDay($year, $month);

			$clm++;
			if( $clm >= $wn )
			{
				print "</td></tr>";
				print "<tr><td align=right valign=top NOWRAP>";
				$clm=0;
			}
			else
			{
				print "</td><td align=right valign=top NOWRAP>";
			}

			$mn=$month;
			$mnl=$mdstr;
			$i=$j=0;
			$wcnt=0;
		}
		if( $GrpFileName && $grp)
		{
			#画像有りの印を表示しない場合は↓をコメントにする
			@grplist[$i]=$MsgOldTG;
		}
		else
		{
			@grplist[$i]="";
		}
		$day1=sprintf("%d", $day);
		@daylist[$i]="$mdstr$day1</a>$TLday";
		@ddlist[$i]=$day1;
		$i++;
		$wcnt++;
	  }
	  close(RDI);
	}
	&PutCalenderSub($mday, $wcnt, "");
}

#カレンダー/from TitleList
sub PutCalenderT
{
	local($i, $j, $yr, $mn, $flag_1st);
	local($mdstr, $mnl, $clm);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($opt, $mday, $wcnt, @ydl, $TLys, $TLms, $TLm, $TLd, $pfag);
	my($flag_b, $yr_b, $m_b, $flag_n, $yr_n, $m_n, $flag_c, $str);

	$flag_b=$flag_n=$flag_c=0;
	$wn=3 if( !$wn );
	if( $spacing ){
		$spc=$spacing;
	}else{
		$spc=32;
	}
	$spc=0;
	$TLys=$TLyearsz;
	$TLms=$TLmonthsz;
	$TLm=$TLmonth;
	$TLd=$TLday;
	$TLyearsz="6 face=\"Times New Roman Bold\"";
	$TLmonthsz="5 face=\"Times New Roman Bold\"";
	undef $TLmonth;
	undef $TLday;

	$yearcolor="#708090" if( !$yearcolor );	#年の表示色

	print "<BR>";
	undef @grplist;
	undef @ddlist;
	undef @daylist;

	@ydl=&GetNickyListDay();
	@ydl=sort @ydl;
	if( !$YR || !$MON ){
		$YR=$last_year; $MON=$last_month;
	}
	for $NickyFname( @ydl )
	{
	  &GetDateFromFname();
	  if( ($year == $YR) && ($month == $MON) ){
		$flag_c=1;
		&GetNickyFile("$vDir/$NickyFname");
		next if( !$Title && !$Message );
		$mdstr="<a href=\"$cgipath?DT=$year$month$day$daysub#$year$month$day$daysub\"$tg>";

		if( $GrpFileName && $grp)
		{
			#画像有りの印を表示しない場合は↓をコメントにする
			@grplist[$i]=$MsgOldTG;
		}
		else
		{
			@grplist[$i]="";
		}
		$day1=sprintf("%d", $day);
		@daylist[$i]="$mdstr$day1</a>$TLday";
		@ddlist[$i]=$day1;
		$i++;
		$wcnt++;
	  }else{
	  	if( $flag_c ){
	  		$flag_n=1;
			$yr_n=$year;
			$m_n=$month;
			last;
	  	}else{
	  		$flag_b=1;
			$yr_b=$year;
			$m_b=$month;
	  	}
	  }
	}

	$mn=$MON;
	$mday=&GetMonthDay($YR, $MON);
	$yr=$YR;
	$str="";
	if( $vect eq "ON" ){
	 my($tg,$mtg,$algtg,$brntg,$cltg,$nm,$lng,$str2,$vct);
	 $vct="\?vect=ON"		if( $vect );
	 $tg="\?target=$target"	if( $target );
	 $mtg="\?monthlist=OFF"	if( $monthlist eq "OFF" );
	 $lng="\?lang=$lang"		if( $lang );
	 $algtg="\?align=$align"	if( $align );
	 $brntg="\?brnum=$brnum"	if( $brnum );
	 $nm="\?num=$num"		if( $num );
	 $cltg="\?clnum=$clnum"	if( $clnum );
	 $str2="$cltg$vct$nm$brntg$algtg$mtg$lng$tg";
	 if( $flag_n ){
		$str="$str<a href=\"./list.cgi$str2?YR=$yr_n?MON=$m_n?TitleList\">&lt;</a>";
		$str="$str / " if( $flag_b );	#Takamura1
	 }
	 if( $flag_b ){
		$str="$str<a href=\"./list.cgi$str2?YR=$yr_b?MON=$m_b?TitleList\">&gt;</a>";
	 }
	}
	&PutCalenderSub($mday, $wcnt, $str);

	$TLmonth=$TLm;
	$TLday=$TLd;
	$TLyearsz=$TLys;
	$TLmonthsz=$TLms;
	print "<br>";
}
sub PutCalenderTidx
{
	local($i, $j, $yr, $mn, $flag_1st, $pt);
	local($mdstr, $mnl, $clm);
	local(@daylist, @titlelist, @grplist, @ddlist);
	my($opt, $mday, $wcnt, @ydl, $TLys, $TLms, $pfag, $oday);

	$i=$oday=0;
	$wn=3 if( !$wn );
	if( $spacing ){
		$spc=$spacing;
	}else{
		$spc=32;
	}
	$spc=0;
	$TLys=$TLyearsz;
	$TLms=$TLmonthsz;
	$TLyearsz="6 face=\"Times New Roman Bold\"";
	$TLmonthsz="5 face=\"Times New Roman Bold\"";
	undef $TLmonth;
	undef $TLday;

	$yearcolor="#708090" if( !$yearcolor );	#年の表示色

	print "<BR>";

	@idxl=&GetIndexList() if( !@idxl );
	@lst = sort @idxl;
	if( $TitleListSort eq "UP" ){
		@lst=reverse(@lst);
	}

	for $gfn( @lst ){
	  $year=substr($gfn, 8, 4);
	  $month=substr($gfn, 12,2);
	  open(RDI, "$vDir/$gfn");
	  binmode(RDI);
	  while(<RDI>){
		$data=$_;
		($day, $daysub, $Title, $GrpFileName)=split(/\x01/, $data);
		next if( $day == $oday );
		$oday=$day;
		&MakeNickyFname();

#		&GetNickyFile("$vDir/$NickyFname");
		$pt=&MakeMonthFname($year, $month);
		$mdstr="<a href=\"$www/$pt#$year$month$day$daysub\"$tg>";
		if( $yr != $year )
		{
			$mday=&GetMonthDay($year, $month);
			if( $flag_1st )
			{
				if( (!$MON) || (($mn) == $MON) && (($year+1) == $YR)){
					&PutCalenderSub($mday, $wcnt, "");
					$pflag=1;
					last;
				}
				for(;$clm<$wn;$clm++)
				{
#					print "</td><td>";
				}
			}
			$mnl=$mdstr;
			$yr=$year;
			$mn=$month;
			$flag_1st=1;
			$i=$j=0;
			$clm=0;
			$wcnt=0;
		}
		elsif( $mn != $month )
		{
			if( (($MON) && ($mn == $MON) && ($year == $YR)) ){
				&PutCalenderSub($mday, $wcnt, "");
				$pflag=1;
				last;
			}
			undef @grplist;
			undef @ddlist;
			undef @daylist;
			$mday=&GetMonthDay($year, $month);

			$clm++;
			if( $clm >= $wn )
			{
				$clm=0;
			}

			$mn=$month;
			$mnl=$mdstr;
			$i=$j=0;
			$wcnt=0;
		}
		if( $GrpFileName && $grp)
		{
			#画像有りの印を表示しない場合は↓をコメントにする
			@grplist[$i]=$MsgOldTG;
		}
		else
		{
			@grplist[$i]="";
		}
		$day1=sprintf("%d", $day);
		@daylist[$i]="$mdstr$day1</a>$TLday";
		@ddlist[$i]=$day1;
		$i++;
		$wcnt++;
	  }
	  close(RDI);
	  last if( $pflag );
	}
	if( !$pflag ){
		&PutCalenderSub($mday, $wcnt, "");
	}

	$TLyearsz=$TLys;
	$TLmonthsz=$TLms;
	print "<BR>";
}
#
# 月単位のリンクタグを出力
# para="DOWN":下
sub PutMonthTag
{
	my($para, $lnk)=@_;
	my($gfn);
	local($gomi, $fname, $oyear, $omon, $mon, $numtg);

	$oyear=$omon=0;
	$numtg="\?num=$num" if( $num < 0 );

	print "<table border=\"0\" bgcolor=\"$MsgOldOBgCol\" cellpadding=\"0\" cellspacing=\"0\"><tr><td>";
	print "<table class=\"mlist\">\n";
if( $SaveHTML eq "ON-DUMMY" ){
	@idxl=&GetIndexList();
	for $gfn( sort @idxl ){ #nkyIndex200402.cgi
		$year=substr($gfn, 8, 4);
		$mon=substr($gfn, 12,2);

		if( ($oyear != $year) || ($omon != $mon) ){
			if( $oyear != $year ){
				if( $oyear ){ print "</font></td></tr>\n"; }
				print "<tr><td bgcolor=\"$MsgOldYBgCol\"><font color=\"$MsgOldYFnCol\" size=$MsgOldSize>$year$MsgOldYear</font></td><td bgcolor=\"$MsgOldMBgCol\"><font size=$MsgOldSize>";
				$oyear=$year;
				$omon=0;
			}
			if( $mkHTML )
			{
				$fn=&MakeMonthFname($year, $mon);
				if( $mkHTML ){
					print "<a href=\"$fn\">$mon$MsgOldMonth</a>　";
				}else{
					print "<a href=\"$www/$fn\">$mon$MsgOldMonth</a>　";
				}
			}else{
				print "<a href=\"$cgipath\?DATE=$year$mon\?MODE=MONTH\">$mon$MsgOldMonth</a>　";
			}
			$omon=$mon;
		}
	}
}else{
	for $gfn( &GetNickyList("tr") )
	{
		($gomi, $year, $fname)=split(/\//, $$gfn[0]);

		$mon=substr($fname, 0, 2);
		if( ($oyear != $year) || ($omon != $mon) )
		{
			if( $oyear != $year )
			{
				if( $oyear ){ print "</font></td></tr>\n"; }
				print "<tr><td bgcolor=\"$MsgOldYBgCol\" nowrap><font color=\"$MsgOldYFnCol\" size=$MsgOldSize>$year$MsgOldYear</font></td><td bgcolor=\"$MsgOldMBgCol\"><font size=$MsgOldSize>";
				$oyear=$year;
				$omon=0;
			}
			print "<a href=\"./list.cgi$tg$cltg$numtg$brntg$algtg\?YR=$year\?MON=$mon\?TitleList\">$mon$MsgOldMonth</a>　"; #check2
			$omon=$mon;
		}
	}
}
	print "</font></td></tr>\n</table>"; #check3
	print "</td>\n";
	print "</tr>\n</table>\n";
}

# いわゆる basename。
# BaseNameをreqすりゃいいんだけど。
sub BaseName
{
local($c);

split(/\/|\\|\:/, $_[0]);
for (@_)
{
	$c = $_;
}

$c;
}

# 拡張子を取得
sub GetExt
{
local($p1, $n);

$p1="";
$n=rindex(@_[0], "\.");
if( ($n > 0) && (length(@_[0]) > $n) )
{
	$p1=substr(@_[0], $n+1);
}
$p1;
}

#年月よりその月の日数を取得
sub GetMonthDay
{
	my($my, $mm)=@_;

	if( $mm == 2 )
	{
		if ((($my % 4 == 0) && ($my % 100 != 0)) || ($my % 400 == 0))
		{
			@monday[2] = 29;
		}
		else
		{
			@monday[2] = 28;
		}
	}
	@monday[$mm];
}

sub zenkakuhankaku
{
&jcode'z2h_euc(\$str);

&jcode'tr(\$str, "０１２３４５６７８９（", "0123456789(");
&jcode'tr(\$str, "ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
&jcode'tr(\$str, "ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ", "abcdefghijklmnopqrstuvwxyz");
&jcode'tr(\$str, "！＃＄％＆（）＝｜−＾￥‘｛＋＊｝＜＞？＿＠；：，［］／", "!#\$%&()\=|-^\\`{+*}<>\?_@;:,[]\/");
&jcode'euc2sjis(\$str);
}

sub SetWeekStr
{
	my($wk)=@_;
	#
	# ゆくゆくは文字列の選択もサポートするのでここに記述
	#
	if( $wk == 1 )
	{
#		@Week=('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
		@Week=('Su','Mo','Tu','We','Th','Fr','Sa');
	}
	else
	{
		@Week=('日','月','火','水','木','金','土');
	}
}
#
# Setup関連
#
sub ReadSetup
{
	&InitialNicky();    #ファイルに設定項目が落ちている場合を
						#想定して読む前に一通り設定する。
	if( open(RD, "./NickyConf.cgi") )
	{
		binmode(RD);
		while(<RD>)
		{
			chop;
			($arg,$val)=split(/=/,$_,2);
			${$arg}=$val;
		}
		close(RD);
	}

	&SetWeekStr($WEEK);
}

sub ConvertHtmlCode
{
my($str)=@_[0];
$str=~s/</&lt;/g;
$str=~s/>/&gt;/g;
$str=~s/\"/&quot;/g;
$str;
}

#
# 日記用ファイルネーム作成
# ディレクトリ:$NickyDir
# ファイルネーム：$NickyFname
# サーチ用パス：$NickySPath
#
sub MakeNickyDir
{
	$NickyDir="\./$year";
}
sub MakeNickyFname
{
local($fname);
my($i, $fn, @flist);

&MakeNickyDir();
$fname=sprintf("%02d%02d", $month, $day);
if( !$daysub )
{
	$i=0;
	$fn="^$NickyDir/$fname.\\.nky\$";
	@flist=&GetFileList($fn);
	$i=$#flist;
	$i++;
	$daysub=sprintf("%c", 0x41+$i);
}

$NickyFname=sprintf("%s/%s%s.nky", $NickyDir, $fname, $daysub);
$NickySPath=sprintf("%s/%s.\\.nky", $NickyDir, $fname);
$NickyComment=sprintf("%s/%s%s.cmnt", $NickyDir, $fname, $daysub);
}

#
# ファイルからグローバル変数に取り込む
#
sub GetNickyFile
{
	local($str);

	open(RRDD, $_[0]);
	binmode(RRDD);
	while(<RRDD>)
	{
		$str .= $_;
	}
	close(RRDD);

	($Date, $Title, $Message, $GrpFileName, $Layout, $CommentRecv) = split(/\x01/, $str);

	if( substr($Date,-5) =~ /[0-9][0-9]:[0-9][0-9]/ )
	{
		$hour=substr($Date,-5,2);
		$min=substr($Date,-2,2);
	}
	else
	{
		$hour=$min=-1;
	}
}
sub ReqJcode
{
	local($ret);

	$ret = 0;
	if( !$flag_jcode )
	{
		if( eval("require './jcode.pl'") )
		{
			$flag_jcode=1;
			$ret=1;
		}
		else
		{
			$flag_jcode=2;
		}
	}
	elsif( $flag_jcode == 1 )
	{
		$ret=1;
	}

	$ret;
}

#
# $NickyFnameより日付を取得
#
sub GetDateFromFname
{
	local($gomi, $fname);

	($gomi, $year, $fname)=split(/\//, $NickyFname);
	$month=substr($fname,0,2);
	$day=substr($fname,2,2);
	$daysub=substr($fname,4,1);
}

#
# GetFileList:ls の代わりに働いていただく
#
sub GetFileList
{
my($opt)=@_[0];
my($i, @pt, $kdir, $ydir, $dirname, $fname, $f, $p1, $p2);

$p1=rindex($opt,"\/");
$p2=rindex($opt,"\/", $p1-1);
$opt=substr($opt, $p2);
$i=0;
undef @pt;
$kdir=opendir(RD, "$vDir/");
{
	for $dirname( readdir(RD) )
	{
		if( $dirname =~ /^[1-9][0-9][0-9][0-9]$/ )
		{
			$ydir=opendir(RDD, "$vDir/$dirname");
			for $fname( readdir(RDD) )
			{
				$f="./$dirname/$fname";
				if( $f =~ /$opt/ )
				{
					@pt[$i++]=$f;
				}
			}
			close(RDD);
		}
	}
}
close(RD);

@pt;
}

sub GetNickyList
{
my($opt)=@_[0];
my($tmp, @pt);

if( ($opt eq "r") || ($opt eq "t") || ($opt eq "tr") )
{
	$tmp="[0-2][0-9][0-3][0-9][A-Za-z]\\.nky\$";
}
else
{
	$tmp="[0-2][0-9][0-3][0-9][A-Za-z]\\.nky\$|^[0-2][0-9][0-3][0-9][A-Za-z]\\.cmnt\$";
}

$lcnt=0;
undef @pt;
$kdir=opendir(RD, "$vDir/");
{
	for $dirname( readdir(RD) )
	{
		if( $dirname =~ /^[1-9][0-9][0-9][0-9]$/ )
		{
			$ydir=opendir(RDD, "$vDir/$dirname");
			for $fname( readdir(RDD) )
			{
				my(@fn, $f);

				if( $fname =~ /$tmp/ )
				{
					$f="./$dirname/$fname";
					@fn=($f, (stat($f))[10]);
					@pt[$lcnt]=\@fn;
					$lcnt++;
				}
			}
			close(RDD);
		}
	}
}
close(RD);

if( ($opt eq "t") || ($opt eq "tc") )
{
	return sort{$$b[1] cmp $$a[1]} @pt;
}
if( $opt eq "tr" )
{
	return reverse(sort{$$b[0] cmp $$a[0]} @pt);
}
else
{
	return sort{$$b[0] cmp $$a[0]} @pt;
}
}

sub GetNickyListDay
{
my($i, $tmp, @pt, @ylist, @jlist, @yone, $junk, $dcnt, $num);
$last_year = $last_month = 0;
$tmp="^[0-2][0-9][0-3][0-9]A\\.nky\$";

$dcnt=0;
opendir(RD, "$vDir/");
for $junk( readdir(RD) )
{
	if( $junk =~ /^[1-9][0-9][0-9][0-9]$/ )
	{
		@jlist[$dcnt]=$junk;
		$dcnt++;
	}
}

@ylist=reverse(sort(@jlist));

for $dirname( @ylist )
{
	$i=0;
	undef @jlist;
	$ydir=opendir(RDD, "$vDir/$dirname");
	for $fname( readdir(RDD) )
	{
		my(@fn, $f);

		if( $fname =~ /$tmp/ )
		{
			$f="./$dirname/$fname";
			@jlist[$i]=$f;
			$i++;
		}
	}
	close(RDD);
	@yone=sort @jlist;

	if( !$last_year || !$last_month ){
		$num=$#jlist;
		$last_year=substr(@yone[$num], 2, 4);
		$last_month=substr(@yone[$num], 7, 2);
	}

	@pt=(@pt, @yone);
}
close(RD);

return @pt;
}
#Kano3
sub MakeMonthIndexFname{
my($y, $m)=@_;
my($str);
$str=sprintf("nkyIndex%04d%02d.cgi", $y, $m);
$str;
}

sub GetIndexList
{
my($i, @pt, $fname, $kdir);

undef @pt;
$idxcnt=0;
$kdir=opendir(RD, "$vDir/");
{
	for $fname( readdir(RD) ){
		if( $fname =~ /^nkyIndex[1-9][0-9][0-9][0-9][0-1][0-9]\.cgi$/ ){
			@pt[$i]=$fname;
			$i++;
			$idxcnt++;
		}
	}
}
close(RD);

@pt;
}


sub GetJpegWHSub
{
local($c1,$c2,$ch,$s,$length, $dummy);
local($a,$b,$c,$d);

if( read(RD, $c1, 1) && read(RD, $c2, 1) && (ord($c1) == 0xFF) && (ord($c2) == 0xD8) )
{
	while( ord($ch) != 0xDA )
	{
		while(ord($ch) != 0xFF) { return(0,0) unless read(RD, $ch, 1); }
		while(ord($ch) == 0xFF) { return(0,0) unless read(RD, $ch, 1); }
		if ((ord($ch) >= 0xC0) && (ord($ch) <= 0xC3))
		{
			return(0,0) unless read (RD, $dummy, 3);
			return(0,0) unless read(RD, $s, 4);
			($a,$b,$c,$d)=unpack("C"x4,$s);
			return ($c<<8|$d, $a<<8|$b );
		}
		else
		{
			return(0,0) unless read (RD, $s, 2);
			($c1, $c2) = unpack("C"x2,$s);
			$length = $c1<<8|$c2;
			last if (!defined($length) || $length < 2);
			read(RD, $dummy, $length-2);
		}
	}
}
return (0,0);
}

sub GetJpegWH
{
	local($x, $y);

	if(open(RD, @_[0]))
	{
		binmode(RD);
		($x, $y)=GetJpegWHSub();
		close(RD);
	}
	return($x, $y);
}

sub GetGiffWH
{
	local($type,$a,$b,$c,$d,$s);

	if(open(RD, @_[0]))
	{
		binmode(RD);
		if( read(RD, $type, 6) && $type =~ /GIF8[7,9]a/ && read(RD, $s, 4) == 4 )
		{
			($a,$b,$c,$d)=unpack("C"x4,$s);
			close(RD);
			return ($b<<8|$a,$d<<8|$c);
		}
		close(RD);
	}
	return (0,0);
}

#
#日付から曜日を取得
#
sub GetWeek{
	local($y,$m,$d)=@_;
	local($hour,$min,$sec, $i,$j,$dday, @monday, $gmt,$mm,$h,$s,$hg);

	@monday=('dummy','31','28','31','30','31','30','31','31','30','31','30','31');
	$gmt = 1970;
	$mm = 1;
	$hg = 0;

	$hour=12;$min=0;$sec=0;

	for($i=$gmt;$i<$y;$i=$i+1){
		if ((($i % 4 == 0) && ($i % 100 != 0)) || ($i % 400 == 0)){
			$monday[2] = 29;
		}else{
			$monday[2] = 28;
		}

		# 年を計算
		if($i == $gmt){
			for($j=$mm;$j<13;$j=$j+1){
				if($mm == $j){
					$dday = $dday + $monday[$j]-1;
				}else{
					$dday = $dday +$monday[$j];
				}
			}
		}else{
			for($j=1;$j<13;$j=$j+1){
				$dday = $dday +$monday[$j];
			}
		}
	}
	if ((($y % 4 == 0) && ($y % 100 != 0)) || ($y % 400 == 0)){
		$monday[2] = 29;
	}else{
		$monday[2] = 28;
	}

	# 月の計算
	for($i=1;$i<$m;$i++){
		$dday += $monday[$i];
	}

	$gh = $hour+$hg;

	$dday=$dday+$d;
	($dday-3)%7;
}

#
# 縦幅と横幅を$image_heightと$image_widthに格納
#
sub GetImageSize
{
	local($fname)=@_[0];

	if( $fname =~ /\.png$/i )
	{
		if( open(RD, $fname) )
		{
			local($w, $fn, $k, $w1, $w2, $w3, $w4);
			local($h, $h1, $h2, $h3, $h4, $str);
			binmode(RD);
			read(RD,$str,0x18);
			close(RD);
			($k,$w1,$w2,$w3,$w4, $h1,$h2,$h3,$h4)=unpack("H32 C8",$str);
			$w=$w1*0x1000000+$w2*0x10000+$w3*0x100+$w4;
			$h=$h1*0x1000000+$h2*0x10000+$h3*0x100+$h4;
			($w, $h);
		}
	}
	elsif( $fname =~ /\.jpeg$|\.jpg$/i )
	{
		&GetJpegWH($fname);
	}
	elsif( $fname =~ /\.giff$|\.gif$/i )
	{
		&GetGiffWH($fname);
	}
}
sub GetImageSizePch
{
if( $Pch_File )
{
	if( $Pch_File =~ /\.pch$/ )
	{
		local($fn);
		$fn=$Pch_File;
		$fn=~s/\.pch$/\.png/;
		if( (stat($fn))[7] > 0 )
		{
			($image_width, $image_height)=&GetImageSize($fn);
		}
		else
		{
			$fn=$Pch_File;
			$fn=~s/\.pch$/\.jpg/;
			if( (stat($fn))[7] > 0 )
			{
				($image_width, $image_height)=&GetJpegWH($fn);
			}
			else
			{
			$fn=$Pch_File;
			$fn=~s/\.pch$/\.jpeg/;
			if( (stat($fn))[7] > 0 )
			{
				($image_width, $image_height)=&GetJpegWH($fn);
			}
			else
			{
				$fn=$Pch_File;
				$fn=~s/\.pch$/\.gif/;
				if( (stat($fn))[7] > 0 )
				{
					($image_width, $image_height)=&GetGiffWH($fn);
				}
			}
			}
		}
	}
	elsif( $Pch_File =~ /\.jpeg$|\.jpg$/i )
	{
		($image_width, $image_height)=&GetJpegWH($Pch_File);
	}
	elsif( $Pch_File =~ /\.giff$|\.gif$/i )
	{
		($image_width, $image_height)=&GetGiffWH($Pch_File);
	}
}
}

#
# HTMLヘッダを吹く
#
sub PutHTMLheaderSJIS
{
	print "<HTML>\n<HEAD>\n";
	print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=x-sjis\">\n";
}

#
# 現在日時取得
#
sub GetDateLocaltime
{
	($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst) = localtime;

	$year+=1900;
	$month+=1;
	$week=@Week[$wday];
	$first="Yes";
}
#
# POSTで渡されたデータを各グローバル変数にセット
#
sub NickySetValue
{
	local($gomi, $cnt);

	if( $arg eq "MODE" )
	{
		$Mode=$val;
	}
	elsif( $arg eq "month" )
	{
		$month=sprintf("%02d", $val);
	}
	elsif( $arg eq "day" )
	{
		$day=sprintf("%02d", $val);
	}
	elsif( $arg eq "hour" )
	{
		$hour=sprintf("%02d", $val);
	}
	elsif( $arg eq "min" )
	{
		$min=sprintf("%02d", $val);
	}
	elsif( $arg eq "HEADDER" )
	{
		$head=$val;
	}
	elsif( $arg eq "GrpFile" )
	{
		if( $val !~ /^$/ )
		{
			$GrpData=$val;
		}
	}
	elsif( $arg eq "EventFile" )
	{
		if( $val !~ /^$/ )
		{
			$EventData=$val;
		}
	}
	elsif( $arg =~ /^CmntName/ )
	{
		($gomi, $cnt)=split(/ZZZ/, $arg, 2);
		@CmntName[$cnt]=$val;
		if( $CmntCnt < $cnt )
		{
			$CmntCnt=$cnt;
		}
	}
	elsif( $arg =~ /^CmntTime/ )
	{
		($gomi, $cnt)=split(/ZZZ/, $arg, 2);
		@CmntTime[$cnt]=$val;
	}
	elsif( $arg =~ /^CmntMsg/ )
	{
		($gomi, $cnt)=split(/ZZZ/, $arg, 2);
		@CmntMsg[$cnt]=$val;
	}
	elsif( ($arg eq "DATE") || ($arg eq "DT") )
	{
		$year=substr($val,0,4);
		$month=substr($val,4,2);
		$day=substr($val,6,2);
		$daysub=substr($val,8,1);
		$hour=substr($val,9,2);
		$min=substr($val,11,2);
		$DT=$val;
	}
	elsif( ($arg !~/^$/) && ($arg ne "Admin") )
	{
		${$arg}=$val if( $arg ne /vDir|cgipath|www/ );
	}
}

#
# iMODE判定
#
sub IsIMODE
{
local($ret);

$ret=0;
if( ($ENV{HTTP_USER_AGENT} =~ /DoCoMo|J-PHONE|DDIPOCKET|UP\.Browser/ ) )
{
	$ret=1;
}
$ret;
}
#
# Modeによって何がしたいのかを判定＆実行
#
sub NickyExec
{
	return 0;
}
#
# HTMLヘッダを吹く
#
sub PutHTMLheader
{
	print "<HTML>\n<HEAD>\n";
	print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=EUC-JP\">\n";
	print "<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n";
}
#
# S.Kano
#
local($str, $arg, $val);
my($newline, $a);
binmode(STDIN);
binmode(STDOUT);
&ReadSetup();
$flag=0;
$Admin=0;

split(/\?/, $ENV{'QUERY_STRING'});
for $str(@_)
{
	($arg, $val)=split(/=/, $str);
	$val =~ s/\+/ /g;
	$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego;
	&NickySetValue();
}

{
	print "Content-type: text/html\n\n";
	$flag_type=1;
	if( $arg eq "page" )
	{
		if( !$val ){ $val=0 };
		$PageNo=$val;
#		if( &IsIMODE() )
#		{
#			&NickyPageOutIMODE($PageNo, $PrintDay);
#		}
#		else
#		{
#			&NickyPageOut($PageNo, $PrintDay);
#		}
	}
	elsif( $arg =~ /^SetSerch$|^SetSearch$/ )
	{
		&NickySetSearch();
	}
	elsif( $arg eq "TitleList" )
	{
#		if( $SaveHTML ne "ON" ){
			&PutTitleList();
#		}else{
#			&PutTitleListIdx();
#		}
	}
	elsif( $arg eq "DayList" )
	{
		&PutDayList();
	}
	elsif( $arg =~ /^Calender$|^Calendar$/ )
	{
		&PutCalender();
	}
	elsif( $arg eq "Illust" )
	{
#		if( $SaveHTML ne "ON" ){
			&PutIllust();
#		}else{
#			&PutIllustIdx();
#		}
	}
	elsif( $arg eq "TLi" )
	{
#		if( $SaveHTML ne "ON" ){
			&PutTitleListIMODE();
#		}else{
#			&PutTitleListIMODEidx();
#		}
	}
	elsif( $arg eq "ver" )
	{
		print "$Ver\n";
	}
	else
	{
		if( &NickyExec() == 0 )
		{
			if( &IsIMODE() )
			{
				if( $SaveHTML ne "ON" ){
					&PutTitleListIMODE();
				}else{
					&PutTitleListIMODEidx();
				}
			}
			else
			{
#				if( $SaveHTML ne "ON" ){
					&PutTitleList();
#				}else{
#					&PutTitleListIdx();
#				}
			}
		}
	}
}

#end of script
