package SWHtmlIndex;

#----------------------------------------
# トップページのHTML出力
#----------------------------------------
sub OutHTMLIndex {
	my $sow = $_[0];
	my $cfg = $sow->{'cfg'};
	require "$cfg->{'DIR_LIB'}/file_vindex.pl";
	require "$cfg->{'DIR_LIB'}/file_vil.pl";
	require "$cfg->{'DIR_HTML'}/html.pl";
	require "$cfg->{'DIR_HTML'}/html_vindex.pl";

	# 村一覧データ読み込み
	my $vindex = SWFileVIndex->new($sow);
	$vindex->openvindex();

	my $linkvalue;
	my $reqvals = &SWBase::GetRequestValues($sow);
	my $urlsow = "$cfg->{'BASEDIR_CGI'}/$cfg->{'FILE_SOW'}";

	my $infodt = 0;
	$infodt = (stat("./_info.pl"))[9] if (-e "./_info.pl"); 
	my $changelogdt = (stat("./$cfg->{'DIR_LIB'}/doc_changelog.pl"))[9];
	$infodt = $changelogdt if ($changelogdt > $infodt);
	&SetHTTPUpdateIndex($sow, $infodt, $vindex->getupdatedt());

	$sow->{'http'}->setnotmodified(); # 最終更新日時

	# HTTP/HTMLの出力
	$sow->{'html'} = SWHtml->new($sow); # HTMLモードの初期化
	my $outhttp = $sow->{'http'}->outheader(); # HTTPヘッダの出力
	return if ($outhttp == 0); # ヘッダ出力のみ
	$sow->{'html'}->{'rss'} = "$urlsow?cmd=rss"; # 村の一覧のRSS
	$sow->{'html'}->outheader('トップページ'); # HTMLヘッダの出力
	$sow->{'html'}->outcontentheader();

	&SWHtmlPC::OutHTMLLogin($sow); # ログイン欄の出力
	my $net = $sow->{'html'}->{'net'}; # Null End Tag

	# 管理人からのお知らせ
	if (-e "./_info.pl") {
		require "./_info.pl";
		&SWAdminInfo::OutHTMLAdminInfo($sow);
	}
	# 概略
	$reqvals->{'cmd'} = 'about';
	$linkvalue = &SWBase::GetLinkValues($sow, $reqvals);

	print <<"_HTML_";
<h2>はじめに</h2>
<p class="paragraph">
<a href="$urlsow?$linkvalue">$sow->{'cfg'}->{'NAME_SW'}とは？</a>
</p>
<hr class="invisible_hr"$net>
_HTML_

	# 遊び方と仕様FAQ
	$reqvals->{'cmd'} = 'howto';
	$linkvalue = &SWBase::GetLinkValues($sow, $reqvals);
	$reqvals->{'cmd'} = 'operate';
	my $linkoperate = &SWBase::GetLinkValues($sow, $reqvals);
	$reqvals->{'cmd'} = 'spec';
	my $linkspec = &SWBase::GetLinkValues($sow, $reqvals);
	$reqvals->{'cmd'} = 'rolematrix';
	my $linkrolematrix = &SWBase::GetLinkValues($sow, $reqvals);
	$reqvals->{'cmd'} = 'rolelist';
	my $linkrolelist = &SWBase::GetLinkValues($sow, $reqvals);

	print <<"_HTML_";
<h2>遊び方</h2>
<p class="paragraph">
初めての方は、まず<a href="$urlsow?$linkvalue">遊び方</a>、<a href="$urlsow?$linkoperate">操作方法</a>、<a href="#prohibit">禁止行為</a>をよく読んでから参加しましょう。<br$net>
他の人狼クローンを遊んだ事のある方は、まず<a href="$urlsow?$linkspec">他の人狼クローンとの違い（仕様FAQ）</a>を読むとよいでしょう。<br$net>
</p>

<p class="paragraph">
役職配分の内訳を知りたい場合は<a href="$urlsow?$linkrolematrix">役職配分一覧表\</a>を見て下さい。<br$net>
能\力者の能\力欄や結果表\示を知りたい場合は<a href="$urlsow?$linkrolelist">役職とインターフェイス\</a>を見て下さい。
</p>
<hr class="invisible_hr"$net>

_HTML_

	$reqvals->{'cmd'} = 'makevilform';
	$linkvalue = &SWBase::GetLinkValues($sow, $reqvals);
	my $linkvmake = "<a href=\"$urlsow?$linkvalue\">村の作成</a>";
	my $caution_vmake = '';

	$caution_vmake = ' <span class="infotext">村を作成する場合はログインして下さい。</span>' if ($sow->{'user'}->logined() <= 0);
	my $vcnt = $vindex->getactivevcnt();
	if ($vcnt >= $sow->{'cfg'}->{'MAX_VILLAGES'}) {
		$linkvmake = "";
		$caution_vmake = ' <span class="infotext">現在稼働中の村の数が上限に達しているので、村を作成できません。</span>';
	}

	if ($sow->{'cfg'}->{'ENABLED_VMAKE'} > 0) {
		print <<"_HTML_";
<h2>村の作成</h2>
<p class="paragraph">
$linkvmake$caution_vmake
</p>
<hr class="invisible_hr"$net>

_HTML_
	}

	my $imgrating = '';
	my $rating = $cfg->{'RATING'};
	my $ratingorder = $rating->{'ORDER'};
	foreach (@$ratingorder) {
		$imgrating .= "<img src=\"$cfg->{'DIR_IMG'}/$rating->{$_}->{'FILE'}\" width=\"$rating->{$_}->{'WIDTH'}\" height=\"$rating->{$_}->{'HEIGHT'}\" alt=\"[$rating->{$_}->{'ALT'}]\" title=\"$rating->{$_}->{'CAPTION'}\"$net> " if ($rating->{$_}->{'FILE'} ne '');
	}

	my $linkrss = " <a href=\"$urlsow?cmd=rss\">RSS</a>";
	$linkrss = '' if ($cfg->{'ENABLED_RSS'} == 0);

	print <<"_HTML_";
<h2>村の一覧</h2>

<p class="paragraph">
名前欄に<img src="$cfg->{'DIR_IMG'}/key.png" width="16" height="16" alt="[鍵]"$net>マークの付いた村は参加時に参加パスワードが必要です。<br$net>
$imgratingマークの付いた村は閲覧制限が付いているか、閲覧時に注意が必要とされている村です。まず村の情報欄を開いて内容を確認しましょう。
</p>

<h3>募集中／開始待ち$linkrss</h3>

_HTML_

	# 募集中／開始待ち村の表示
	&SWHtmlVIndex::OutHTMLVIndex($sow, $vindex, 'prologue');

	print <<"_HTML_";
<h3>進行中</h3>

_HTML_

	# 進行中の村の表示
	&SWHtmlVIndex::OutHTMLVIndex($sow, $vindex, 'playing');

	$reqvals->{'cmd'} = 'oldlog';
	$linkvalue = &SWBase::GetLinkValues($sow, $reqvals);
	print <<"_HTML_";
<h3>終了済み</h3>

<p class="paragraph">
<a href="$urlsow?$linkvalue">終了済みの村</a>
</p>
<hr class="invisible_hr"$net>

_HTML_

	# 禁止行為（簡略）の表示
	require "$cfg->{'DIR_RS'}/doc_prohibit.pl";
	my $docprohibit = SWDocProhibit->new($sow);
	$docprohibit->outhtmlsimple();

	print <<"_HTML_";
<h2>キャラクター画像一覧</h2>

<ul>
_HTML_

	my $csidlist = $cfg->{'CSIDLIST'};
	foreach (@$csidlist) {
		next if (index($_, '/') >= 0);
		$reqvals->{'cmd'}  = 'chrlist';
		$reqvals->{'csid'} = $_;
		$sow->{'charsets'}->loadchrrs($_);
		$linkvalue = &SWBase::GetLinkValues($sow, $reqvals);
		print "<li><a href=\"$urlsow?$linkvalue\">$sow->{'charsets'}->{'csid'}->{$_}->{'CAPTION'}</a></li>\n";
	}

	print <<"_HTML_";
</ul>
<hr class="invisible_hr"$net>

<h2>更新情報</h2>

_HTML_

	# 更新情報
	require "$cfg->{'DIR_LIB'}/doc_changelog.pl";
	my $docchangelog = SWDocChangeLog->new($sow);
	$docchangelog->outhtmlnew();

	$reqvals->{'cmd'} = 'changelog';
	$reqvals->{'csid'} = '';
	$linkvalue = &SWBase::GetLinkValues($sow, $reqvals);

	print <<"_HTML_";
<hr class="invisible_hr"$net>

<p class="paragraph">
<a href="$urlsow?$linkvalue">更新情報を全て表\示</a>
</p>
<hr class="invisible_hr"$net>

<h2>謝辞</h2>
<p class="paragraph">
このCGIを作成するに辺り、以下のサイトを参考にさせて頂きました。ありがとうございます。
</p>

<ul>
  <li><a href="http://homepage2.nifty.com/ninjinia/">人狼BBS</a></li>
  <li><a href="http://wolfbbs.jp/">人狼BBS まとめサイト</a></li>
  <li><a href="http://www.juna.net/game/wolf/">人狼審問 - Neighbour Wolves -</a> (終了)</li>
  <li><a href="http://mshe.skr.jp/">人狼BBQ 四国</a></li>
  <li><a href="http://shadow.s63.xrea.com/jinro2/index.cgi">汝は人狼なりや？Shadow Gallery Ver 2.0</a></li>
  <li><!-- a href="http://nekorin.minidns.net/headless/" -->The Village of Headless Knight<!-- /a --> (一時休止中)</li>
  <li><a href="http://www.bonstato.com/werewolves/">人狼(oikosバージョン)</a></li>
  <li><!-- a href="http://werewolves.jp/" -->人狼の悪夢 (閉鎖)<!-- /a --></li>
  <li>おとぎの国の人狼（欧州） <a href="http://euros.x0.com/">短期</a> / <a href="http://euros.sakura.ne.jp/wolf/">長期</a></li>
</ul>
<hr class="invisible_hr"$net>

_HTML_

	$vindex->closevindex();
	$sow->{'html'}->outcontentfooter();
	$sow->{'html'}->outfooter(); # HTMLフッタの出力
	$sow->{'http'}->outfooter();

	return;
}

#----------------------------------------
# エンティティタグの生成
#----------------------------------------
sub SetHTTPUpdateIndex {
	my ($sow, $infodt, $vindexdt) = @_;

	my $etag = '';
	my $user = $sow->{'user'};
	if ($user->logined() > 0) {
		my $uid = &SWBase::EncodeURL($sow->{'uid'});
		$etag .= sprintf("%s-", $uid);
	}
	$etag .= sprintf("index-%x-%x", $infodt, $vindexdt);

	$sow->{'http'}->{'etag'} = $etag;
	$sow->{'http'}->{'lastmodified'} = $vindexdt;
	$sow->{'http'}->{'lastmodified'} = $infodt if ($infodt > $vindexdt);

	return;
}

1;
