<?xml version="1.0" encoding="UTF-8"?>

<!-- リンクページ用 -->

<xsl:stylesheet version="1.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://www.w3.org/1999/xhtml"
	xmlns:s="http://www.remus.dti.ne.jp/~a-satomi/"
	xmlns:js="http://www.remus.dti.ne.jp/~a-satomi/jsfunc"
	xmlns:xalan="http://xml.apache.org/xalan"
	xmlns:redirect="http://xml.apache.org/xalan/redirect"
	extension-element-prefixes="redirect"
	exclude-result-prefixes="h s js xalan">

<xsl:import href="common.xsl"/>

<!-- ================ 出力設定 ================  -->

<xsl:output method="xml"
	encoding="Shift_JIS"
	omit-xml-declaration="no"
	doctype-public="-//W3C//DTD XHTML 1.1//EN"
	doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
	indent="yes"
	xalan:indent-amount="2"
	media-type="application/xhtml+xml"/>

<!-- ================ 各種設定 ================  -->

<!-- CSS ファイル名 -->
<xsl:param name="cssFile">link.css</xsl:param>

<!-- 全リンクページ出力ファイル名接頭辞 -->
<xsl:param name="fileNamePrefix">illust</xsl:param>

<!-- お絵描き系新着リンクページ出力ファイル名 -->
<xsl:param name="newIllustSitesPageFileName" select="concat($fileNamePrefix, '_new.html')"/>

<!-- リンク集サイトリンクページ出力ファイル名 -->
<xsl:param name="linkSitesPageFileName" select="concat($fileNamePrefix, 'Linker.html')"/>

<!-- お絵描き系リンクページタイトル接頭辞 -->
<xsl:param name="pageTitlePrefix">お絵描きさんリンク</xsl:param>

<!-- 1ページあたりに出力する項目数 -->
<xsl:param name="unit" select="10"/>

<!-- リンク先サイトリスト XML ファイルフルパス -->
<xsl:param name="sitesList" select="concat($baseDir, '/common/xml/﻿link_sites.xml')"/>

<!-- 新着お絵描き系サイトエントリ -->
<xsl:param name="newIllustSites" select="document($sitesList)/s:sites/s:newIllustSites/s:site"/>

<!-- 既存お絵描き系サイトエントリ -->
<xsl:param name="existIllustSites" select="document($sitesList)/s:sites/s:existIllustSites/s:site"/>

<!-- リンク集サイトエントリ -->
<xsl:param name="linkSites" select="document($sitesList)/s:sites/s:linkSites/s:site"/>

<!-- 出力されるお絵描き系既存リンクページの数 -->
<xsl:param name="existIllustSitesPages" select="ceiling(count($existIllustSites) div $unit)"/>

<!-- 各リンクページが使う「リンクINDEX へ戻る」ナビリンクのアンカーテキスト -->
<xsl:param name="contentsTitle_">
	<xsl:call-template name="searchFile">
		<xsl:with-param name="path" select="concat('/', $curDirName, '/linkpages')"/>
		<xsl:with-param name="rel">contents</xsl:with-param>
		<xsl:with-param name="data">title</xsl:with-param>
	</xsl:call-template>
</xsl:param>

<!-- ================ メインテンプレ ================  -->

<xsl:template match="/h:html">
	<html xml:lang="ja">
		<xsl:apply-templates select="h:head"/>
	<body>
		<xsl:apply-templates select="h:h1/@*"/>
		<xsl:call-template name="navi"/>
		<xsl:apply-templates select="h:h1"/>
		<xsl:call-template name="navi"/>
		<xsl:call-template name="footer"/>
	</body>
	</html>
</xsl:template>

<!-- ================ s:illustsites (お絵描き系リンク各ページへのリンク生成) ================  -->

<xsl:template match="s:illustsites">
	<ul>
		<xsl:if test="$newIllustSites">
			<li class="new">
				<a title="{concat($pageTitlePrefix, ' (新着 Page)')}" href="{$newIllustSitesPageFileName}">新着</a>
			</li>
		</xsl:if>
		<xsl:call-template name="MakeExistIllustSitesList"/>
	</ul>

	<!-- 各リンクページファイル出力 -->
	<xsl:call-template name="makeNewIllustSitesPage"/>
	<xsl:call-template name="makeExistIllustSitesPage"/>

</xsl:template>

<xsl:template name="MakeExistIllustSitesList">
	<xsl:param name="pageNum" select="1"/>
	<li>
		<a title="{$pageTitlePrefix} (Page {format-number($pageNum, '00')})" href="{$fileNamePrefix}{format-number($pageNum, '00')}.html">
			<xsl:value-of select="format-number($pageNum, '00')"/>
		</a>
	</li>
	<xsl:if test="$pageNum &lt; $existIllustSitesPages">
		<xsl:call-template name="MakeExistIllustSitesList">
			<xsl:with-param name="pageNum" select="$pageNum + 1"/>
		</xsl:call-template>
	</xsl:if>
</xsl:template>

<!-- ================ s:linksites (リンク集サイトページへのリンク生成) ================  -->

<xsl:template match="s:linksites">
	<ul>
		<li><a title="{concat($pageTitlePrefix, ' (リンク集サイト)')}" href="{$linkSitesPageFileName}">01</a></li>
	</ul>

	<!-- 各リンクページファイル出力 -->
	<xsl:call-template name="makeLinkSitesPage"/>
</xsl:template>

<!-- ================ お絵描き系新着リンクページファイル出力 ================  -->

<xsl:template name="makeNewIllustSitesPage">
	<xsl:param name="pageTitle" select="concat($pageTitlePrefix, ' (新着 Page)')"/>

	<xsl:if test="boolean($newIllustSites)">
		<redirect:write select="concat($baseDir, '/', $curDirName, '/', $newIllustSitesPageFileName)">
			<html xml:lang="ja">
				<xsl:call-template name="head">
					<xsl:with-param name="pageTitle" select="$pageTitle"/>
					<xsl:with-param name="pageNum" select="0"/>
				</xsl:call-template>
				<body>
					<xsl:call-template name="navi_">
						<xsl:with-param name="pageTitle" select="$pageTitle"/>
						<xsl:with-param name="pageNum" select="0"/>
					</xsl:call-template>

					<div class="section">
						<h1><xsl:value-of select="$pageTitle"/></h1>
						<xsl:apply-templates select="$newIllustSites"/>
					</div>

					<xsl:call-template name="navi_">
						<xsl:with-param name="pageTitle" select="$pageTitle"/>
						<xsl:with-param name="pageNum" select="0"/>
					</xsl:call-template>

					<xsl:call-template name="footer"/>
				</body>
			</html>
		</redirect:write>
	</xsl:if>
</xsl:template>

<!-- ================ お絵描き系既存リンク各ページファイル出力 ================  -->

<xsl:template name="makeExistIllustSitesPage">
	<xsl:param name="pageNum" select="1"/><!-- 出力するページ番号 (初期値1) -->
	<xsl:param name="curPos" select="($pageNum - 1) * $unit"/>
	<xsl:param name="nextPos" select="$pageNum * $unit + 1"/>
	<xsl:param name="pageTitle" select="concat($pageTitlePrefix, ' (Page ', format-number($pageNum, '00'), ')')"/>

	<redirect:write select="concat($baseDir, '/', $curDirName, '/', $fileNamePrefix, format-number($pageNum, '00'), '.html')">
		<html xml:lang="ja">
			<xsl:call-template name="head">
				<xsl:with-param name="pageTitle" select="$pageTitle"/>
				<xsl:with-param name="pageNum" select="$pageNum"/>
				<xsl:with-param name="totalPages" select="$existIllustSitesPages"/>
				<xsl:with-param name="existNewPage" select="boolean($newIllustSites)"/>
			</xsl:call-template>

			<body>
				<xsl:call-template name="navi_">
					<xsl:with-param name="pageTitle" select="$pageTitle"/>
					<xsl:with-param name="pageNum" select="$pageNum"/>
					<xsl:with-param name="totalPages" select="$existIllustSitesPages"/>
					<xsl:with-param name="existNewPage" select="boolean($newIllustSites)"/>
				</xsl:call-template>

				<div class="section">
					<h1><xsl:value-of select="$pageTitle"/></h1>
					<xsl:apply-templates select="$existIllustSites[$curPos &lt; position() and position() &lt; $nextPos ]"/>
				</div>

				<xsl:call-template name="navi_">
					<xsl:with-param name="pageTitle" select="$pageTitle"/>
					<xsl:with-param name="pageNum" select="$pageNum"/>
					<xsl:with-param name="totalPages" select="$existIllustSitesPages"/>
					<xsl:with-param name="existNewPage" select="boolean($newIllustSites)"/>
				</xsl:call-template>

				<xsl:call-template name="footer"/>
			</body>
		</html>
	</redirect:write>

	<!-- 再帰 -->
	<xsl:if test="$nextPos &lt;= count($existIllustSites)">
		<xsl:call-template name="makeExistIllustSitesPage">
			<xsl:with-param name="pageNum" select="$pageNum + 1"/>
			<xsl:with-param name="curPos" select="$nextPos - 1"/>
		</xsl:call-template>
	</xsl:if>
</xsl:template>

<!-- ================ リンク集サイトページファイル出力 ================  -->

<xsl:template name="makeLinkSitesPage">
	<xsl:param name="pageTitle" select="concat($pageTitlePrefix, ' (リンク集サイト)')"/>

	<redirect:write select="concat($baseDir, '/', $curDirName, '/', $linkSitesPageFileName)">
		<html xml:lang="ja">
			<xsl:call-template name="head">
				<xsl:with-param name="pageTitle" select="$pageTitle"/>
			</xsl:call-template>
			<body>
				<xsl:call-template name="navi_">
					<xsl:with-param name="pageTitle" select="$pageTitle"/>
				</xsl:call-template>

				<div class="section">
					<h1><xsl:value-of select="$pageTitle"/></h1>
					<xsl:apply-templates select="$linkSites"/>
				</div>

				<xsl:call-template name="navi_">
					<xsl:with-param name="pageTitle" select="$pageTitle"/>
				</xsl:call-template>

				<xsl:call-template name="footer"/>
			</body>
		</html>
	</redirect:write>
</xsl:template>

<!-- ================ 各項目 div.section 生成 ================  -->

<xsl:template match="s:site">
	<div class="section">
		<h2>
			<a title="{h:title}" href="{@href}">
				<xsl:choose>
					<xsl:when test="h:img">
						<img alt="" height="{h:img/@height}" width="{h:img/@width}" src="{h:img/@src}"/>
					</xsl:when>
					<xsl:otherwise>
						<img alt="" height="40" width="200" src="no_banner.png"/>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:value-of select="h:title"/>
			</a>
		</h2>
		<xsl:apply-templates select="h:p"/>
	</div>
</xsl:template>

<!-- ================ 各リンクページ専用 head 要素テンプレ ================  -->

<xsl:template name="head">
	<xsl:param name="pageTitle"/>
	<xsl:param name="totalPages" select="1"/>
	<xsl:param name="pageNum" select="1"/>
	<xsl:param name="existNewPage" select="false()"/>

	<head>
		<xsl:call-template name="head-meta"/>
		<title><xsl:value-of select="$pageTitle"/></title>
		<link href="{$rootURI}" title="{$rootTitle}" rel="home" />
		<link href="./" title="{$contentsTitle_}" rel="contents" />
		<xsl:choose>
			<xsl:when test="$pageNum = 1 and $existNewPage">
				<link href="{$newIllustSitesPageFileName}" title="{$pageTitlePrefix} (新着 Page)" rel="prev" />
			</xsl:when>
			<xsl:when test="$pageNum &gt; 1">
				<link href="{$fileNamePrefix}{format-number($pageNum - 1, '00')}.html"
					title="{$pageTitlePrefix} (Page {format-number($pageNum - 1, '00')})" rel="prev" />
			</xsl:when>
			<xsl:otherwise/>
		</xsl:choose>
		<xsl:if test="$pageNum &lt; $totalPages">
			<link href="{$fileNamePrefix}{format-number($pageNum + 1, '00')}.html"
				title="{$pageTitlePrefix} (Page {format-number($pageNum + 1, '00')})" rel="next" />
		</xsl:if>
		<xsl:call-template name="head-metaLink"/>
		<xsl:call-template name="head-miscLink"/>
		<xsl:call-template name="head-css"/>
		<xsl:call-template name="head-script"/>
	</head>
</xsl:template>

<!-- ================ 各リンクページ専用ナビリンクテンプレ ================  -->

<xsl:template name="navi_">
	<xsl:param name="pageTitle"/>
	<xsl:param name="totalPages" select="1"/>
	<xsl:param name="pageNum" select="1"/>
	<xsl:param name="existNewPage" select="false()"/>
	<xsl:param name="contentsTitle">
		<xsl:call-template name="searchFile">
			<xsl:with-param name="data">title</xsl:with-param>
		</xsl:call-template>
	</xsl:param>

	<ul class="navigation">
		<li class="home">
			<a rel="home" accesskey="T" title="{$rootTitle} [T]" href="{$rootURI}">
				<img alt="←" height="15" width="15" src="{$commonDir}/img/icon/LeftArrow.png" />
				<xsl:value-of select="$rootLabel"/>
			</a>
		</li>
		<li class="contents">
			<a rel="contents" accesskey="I" title="{$contentsTitle_} [I]" href="./">
				<img alt="←" height="15" width="15" src="{$commonDir}/img/icon/LeftArrow.png" />
				<xsl:value-of select="js:ct(string($contentsTitle_), 12)"/>
			</a>
		</li>
		<xsl:choose>
			<xsl:when test="$pageNum = 1 and $existNewPage">
				<li class="prev">
					<a rel="prev" accesskey="P" title="{$pageTitlePrefix} (新着 Page) [P]" href="{$newIllustSitesPageFileName}">
						<img alt="←" height="15" width="15" src="{$commonDir}/img/icon/LeftArrow.png" />
						<xsl:text>新着 Page</xsl:text>
					</a>
				</li>
			</xsl:when>
			<xsl:when test="$pageNum &gt; 1">
				<li class="prev">
					<a rel="prev" accesskey="P"
						title="{$pageTitlePrefix} (Page {format-number($pageNum - 1, '00')}) [P]"
						href="{$fileNamePrefix}{format-number($pageNum - 1, '00')}.html">
						<img alt="←" height="15" width="15" src="{$commonDir}/img/icon/LeftArrow.png" />
						<xsl:value-of select="js:ct(string(concat('Page ', format-number($pageNum - 1, '00'))), 12)"/>
					</a>
				</li>
			</xsl:when>
			<xsl:otherwise/>
		</xsl:choose>
		<xsl:if test="$pageNum &lt; $totalPages">
			<li class="next">
				<a rel="next" accesskey="N"
					title="{$pageTitlePrefix} (Page {format-number($pageNum + 1, '00')}) [N]"
					href="{$fileNamePrefix}{format-number($pageNum + 1, '00')}.html">
					<img alt="→" height="15" width="15" src="{$commonDir}/img/icon/RightArrow.png" />
					<xsl:value-of select="js:ct(string(concat('Page ', format-number($pageNum + 1, '00'))), 12)"/>
				</a>
			</li>
		</xsl:if>
	</ul>
</xsl:template>

</xsl:stylesheet>
