<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://www.w3.org/1999/xhtml"
				xmlns:fo="http://www.w3.org/1999/XSL/Format"
				xmlns:svg="http://www.w3.org/2000/svg"
                version="1.0"
                exclude-result-prefixes="fo svg">

<xsl:template match="vitalstats">
	<xsl:call-template name="heading1" />

	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="'My personal details; name, date of birth, address, telephone, and links to email me and to my homepage.'" /></xsl:attribute></xsl:if>
		<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tcenter'" /></xsl:call-template>
			<!-- This table holds my personal info, name address, etc... -->
			<!-- Number of rows in table is: "6 + count(contacts/contact[@type='address']/address[contains(@type, 'primary')]/addressline)" -->
			<xsl:element name="{$table}"><!--<xsl:call-template name="tableattr" />-->
				<xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tleft'" /></xsl:call-template>
				<xsl:if test="$destination='html'">
					<xsl:attribute name="summary">My personal details; name, date of birth, address, telephone, and links to email me and to my homepage.</xsl:attribute>
				</xsl:if>
				<xsl:if test="$destination='fo'">
					<fo:table-column column-width="3.5cm" />
					<fo:table-column column-width="12cm" />
					<fo:table-column column-width="1cm" />
					<!-- Below are the widths necessary when putting a picture in	-->
					<!--fo:table-column column-width="3.5cm" />
					<fo:table-column column-width="8.5cm" />
					<fo:table-column column-width="5cm" /-->
				</xsl:if>
				<xsl:element name="{$tablebody}">
					<xsl:element name="{$tablerow}">
						<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright italic padr'" /><xsl:with-param name="content" select="'Name:'" /></xsl:call-template>
						<xsl:call-template name="cell"><xsl:with-param name="attribs" select="'bold'" /><xsl:with-param name="content" select="string(name)" /></xsl:call-template>
						<xsl:choose>
							<xsl:when test="string-length(picture) &gt; 0">
								<xsl:call-template name="cell">
									<xsl:with-param name="attribs" select="'padl tcenter'" />
									<xsl:with-param name="rowspan" select="6 + count(contacts/contact[@type='address']/address[contains(@type, 'primary')]/addressline)" />
									<xsl:with-param name="content">
										<xsl:call-template name="img">
											<xsl:with-param name="src" select="string(picture)" />
											<xsl:with-param name="x" select="concat(picture/@x, 'px')" />
											<xsl:with-param name="y" select="concat(picture/@y, 'px')" />
											<xsl:with-param name="xcm" select="concat((picture/@x div picture/@y) * 3.5, 'cm')" />
											<xsl:with-param name="ycm" select="'3.5cm'" />
											<xsl:with-param name="description" select="picture/@description" />
										</xsl:call-template>
									</xsl:with-param>
								</xsl:call-template>
							</xsl:when>
						</xsl:choose>
					</xsl:element><!-- tablerow -->
					<xsl:element name="{$tablerow}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'padb'" /></xsl:call-template>
						<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright italic padr'" /><xsl:with-param name="content" select="'Date of Birth:'" /></xsl:call-template>
						<xsl:call-template name="cell"><xsl:with-param name="content" select="string(dob)" /></xsl:call-template>
					</xsl:element><!-- tablerow -->
					<xsl:call-template name="writeaddress">
						<xsl:with-param name="address" select="contacts/contact[@type='address']/address[contains(@type, 'primary')]" />
					</xsl:call-template>
					<xsl:for-each select="contacts/contact[@type='telephone']/telephone[contains(@type, 'primary')]">
						<xsl:element name="{$tablerow}">
							<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright italic padr'" /><xsl:with-param name="content" select="'Telephone:'" /></xsl:call-template>
							<xsl:call-template name="cell"><xsl:with-param name="content"><xsl:value-of select="string(.)" /><xsl:if test="substring-before(@type, ' ') = 'mobile'"> (<xsl:value-of select="substring-before(@type, ' ')" />)</xsl:if></xsl:with-param></xsl:call-template>
						</xsl:element>
					</xsl:for-each>
					<xsl:element name="{$tablerow}">
						<xsl:variable name="email" select="string(contacts/contact[@type='email']/email[@type='primary'])" />
						<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright italic padr'" /><xsl:with-param name="content" select="'Email:'" /></xsl:call-template>
						<xsl:call-template name="cell"><xsl:with-param name="content"><xsl:call-template name="link"><xsl:with-param name="url" select="concat('mailto:', $email)" /><xsl:with-param name="description" select="string($email)" /><xsl:with-param name="title" select="'Send me an email'" /></xsl:call-template></xsl:with-param></xsl:call-template>
					</xsl:element><!-- tablerow -->
					<xsl:element name="{$tablerow}">
						<xsl:variable name="url" select="string(contacts/contact[@type='url']/url[@type='primary'])" />
						<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright italic padr'" /><xsl:with-param name="content" select="'Web:'" /></xsl:call-template>
						<xsl:call-template name="cell"><xsl:with-param name="content"><xsl:call-template name="link"><xsl:with-param name="url" select="string($url)" /><xsl:with-param name="description" select="string($url)" /><xsl:with-param name="title" select="'My homepage'" /></xsl:call-template></xsl:with-param></xsl:call-template>
					</xsl:element><!-- tablerow -->
				</xsl:element><!-- tablebody -->
			</xsl:element><!-- table -->
		</xsl:element><!-- block -->
	</xsl:element><!-- block -->
</xsl:template><!-- match="vitalstats" -->


<xsl:template match="experience[@type='positions']">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="@title" /></xsl:attribute></xsl:if>
		<xsl:call-template name="heading2" />
		<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tcenter'" /></xsl:call-template>
			<xsl:element name="{$table}"><xsl:call-template name="tableattr" />
				<xsl:if test="$destination='html'">
					<xsl:attribute name="summary">A summary of my working experience, giving names of companies, position held, and start and finish dates.</xsl:attribute>
				</xsl:if>
				<xsl:if test="$destination='fo'">
					<fo:table-column column-width="5cm" />
					<fo:table-column column-width="5cm" />
					<fo:table-column column-width="3cm" />
					<fo:table-column column-width="3cm" />
				</xsl:if>
				<xsl:element name="{$tablehead}">
					<xsl:element name="{$tablerow}">
						<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tcenter bold'" /><xsl:with-param name="content" select="'Organisation'" /></xsl:call-template>
						<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tcenter bold padl padr'" /><xsl:with-param name="content" select="'Position'" /></xsl:call-template>
						<xsl:call-template name="cellhead"><xsl:with-param name="colspan" select="2" /><xsl:with-param name="attribs" select="'tcenter bold'" /><xsl:with-param name="content" select="'Dates'" /></xsl:call-template>
					</xsl:element><!-- tablerow -->
				</xsl:element><!-- tablehead -->

				<xsl:element name="{$tablebody}">
					<xsl:for-each select="pastwork"><!-- For now rely on document ordering to get the most recent first, might change this sometime -->
						<xsl:element name="{$tablerow}">
							<xsl:call-template name="cell"><xsl:with-param name="attribs" select="'nowrap'" /><xsl:with-param name="content" select="string(@organisation)" /></xsl:call-template>
							<xsl:call-template name="cell"><xsl:with-param name="attribs" select="'padl padr'" /><xsl:with-param name="content" select="string(@position)" /></xsl:call-template>
							<xsl:call-template name="cell"><xsl:with-param name="attribs" select="'tright'" /><xsl:with-param name="content" select="concat(@fromdate, '-')" /></xsl:call-template>
							<xsl:call-template name="cell"><xsl:with-param name="attribs" select="'tleft'" /><xsl:with-param name="content" select="string(@todate)" /></xsl:call-template>
						</xsl:element><!-- tablerow -->
					</xsl:for-each>
				</xsl:element><!-- tablebody -->
			</xsl:element><!-- table -->
		</xsl:element><!-- block -->
	</xsl:element><!-- block -->
</xsl:template>


<xsl:template match="experience[@type='products']">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="@title" /></xsl:attribute></xsl:if>
		<xsl:call-template name="heading2" />
		<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tcenter'" /></xsl:call-template>
			<xsl:element name="{$table}"><xsl:call-template name="tableattr" />
				<xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tleft'" /></xsl:call-template>
				<xsl:if test="$destination='html'">
					<xsl:attribute name="summary">A summary of the languages and platforms I have used.</xsl:attribute>
				</xsl:if>
				<xsl:if test="$destination='fo'">
					<fo:table-column column-width="2.5cm" />
					<fo:table-column column-width="14.5cm" />
				</xsl:if>
				<xsl:element name="{$tablebody}">
					<xsl:for-each select="products">
						<xsl:element name="{$tablerow}">
							<xsl:element name="{$tablecellhead}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'bold top padr'" /></xsl:call-template><xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'bold top'" /></xsl:call-template><xsl:value-of select="@heading" /></xsl:element></xsl:element>
							<xsl:element name="{$tablecell}"><xsl:element name="{$block}">
								<xsl:for-each select="product">
									<xsl:if test="position() != 1"><xsl:text>, </xsl:text></xsl:if>
									<xsl:choose>
										<xsl:when test="@acronym"><xsl:call-template name="acronym"><xsl:with-param name="short" select="@acronym" /><xsl:with-param name="long" select="." /></xsl:call-template></xsl:when>
										<xsl:when test="@abbrev"><xsl:call-template name="abbrev"><xsl:with-param name="short" select="@abbrev" /><xsl:with-param name="long" select="." /></xsl:call-template></xsl:when>
										<xsl:otherwise><xsl:value-of select="." /></xsl:otherwise>
									</xsl:choose>
								</xsl:for-each>
							</xsl:element></xsl:element>
						</xsl:element><!-- tablerow -->
					</xsl:for-each>
				</xsl:element><!-- tablerow -->
			</xsl:element><!-- table -->
		</xsl:element><!-- block -->
	</xsl:element><!-- block -->
</xsl:template>


<xsl:template match="experience[@type='education']">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="@title" /></xsl:attribute></xsl:if>
		<xsl:call-template name="heading2" />
		<xsl:for-each select="education">
			<xsl:element name="{$block}">
				<xsl:element name="{$inline}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'bold'" /></xsl:call-template><xsl:value-of select="string(@organisation)" /></xsl:element>, <xsl:value-of select="@fromyear" />-<xsl:value-of select="@toyear" />
				<xsl:for-each select="qualification">
					<xsl:choose>
						<xsl:when test="description">
							<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'indent'" /></xsl:call-template><xsl:value-of select="@type" /><xsl:text> - </xsl:text><xsl:value-of select="description" /></xsl:element>
						</xsl:when>
						<xsl:otherwise>
							<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'indent'" /></xsl:call-template>
								<xsl:value-of select="concat(sum(grade/@count), ' ')" /> <xsl:value-of select="@type" /><xsl:if test="sum(grade/@count) &gt; 1">s</xsl:if>
								- <xsl:for-each select="grade">
									<xsl:choose>
										<xsl:when test="count(specific) &gt; 0">
											<xsl:for-each select="specific">
												<xsl:value-of select="concat(., '(', ../@type, ') ')" />
											</xsl:for-each>
										</xsl:when>
										<xsl:otherwise>
											<xsl:value-of select="concat(@count, '(', @type, ') ')" />
										</xsl:otherwise>
									</xsl:choose>
								</xsl:for-each>
							</xsl:element><!-- block -->
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
			</xsl:element><!-- block -->
		</xsl:for-each>
	</xsl:element><!-- block -->
</xsl:template>


<xsl:template match="experience[@type='positions']/pastwork">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="@organisation" /></xsl:attribute></xsl:if>
		<xsl:call-template name="heading2">
			<xsl:with-param name="title" select="@organisation" />
			<xsl:with-param name="moretitle">
				<xsl:if test="string-length(contact[contains(@type,'address')]/address[contains(@type,'primary')]/city) &gt; 0 or string-length(contact[contains(@type,'address')]/address[contains(@type,'primary')]/country) &gt; 0"><xsl:value-of select="contact[contains(@type,'address')]/address[contains(@type,'primary')]/city" /><xsl:text> </xsl:text><xsl:value-of select="contact[contains(@type,'address')]/address[contains(@type,'primary')]/country" /></xsl:if>
				<xsl:element name="{$block}"><xsl:attribute name="width">100%</xsl:attribute><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tright'" /></xsl:call-template></xsl:element>
			</xsl:with-param>
			<xsl:with-param name="righttext"><xsl:value-of select="@position" />, <xsl:value-of select="concat(@fromdate, '-', @todate)" /></xsl:with-param>
		</xsl:call-template>
		<xsl:apply-templates select="project" />
	</xsl:element>
</xsl:template>


<xsl:template match="project">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="@title" /></xsl:attribute></xsl:if>
		<xsl:call-template name="subhead">
			<xsl:with-param name="moretitle"><xsl:if test="string-length(comment) &gt; 0"><xsl:value-of select="comment" /><xsl:text> </xsl:text></xsl:if><xsl:if test="string-length(url) &gt; 0"><xsl:value-of select="preurl" /><xsl:text> </xsl:text><xsl:call-template name="link"><xsl:with-param name="url" select="string(url)" /><xsl:with-param name="description" select="string(url)" /><xsl:with-param name="title" select="concat('The webpage for my ', string(@title), ' project with ', string(../@organisation))" /></xsl:call-template><xsl:text> </xsl:text><xsl:value-of select="posturl" /></xsl:if></xsl:with-param>
		</xsl:call-template>
		<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tjustify'" /></xsl:call-template>
			<xsl:value-of select="string(description)" />
		</xsl:element><!-- block -->
	</xsl:element><!-- block -->
</xsl:template>


<xsl:template match="experience[@type='leisure']">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="@title" /></xsl:attribute></xsl:if>
		<xsl:call-template name="heading2" />
		<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tjustify'" /></xsl:call-template>
			<xsl:value-of select="description" />
		</xsl:element><!-- block -->
	</xsl:element><!-- block -->
</xsl:template>

<xsl:template name="references">
	<xsl:element name="{$block}">
		<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="'References'" /></xsl:attribute></xsl:if>
		<xsl:call-template name="heading2"><xsl:with-param name="title" select="'References'" /></xsl:call-template>
		<xsl:element name="{$block}">References are available on request</xsl:element>
	</xsl:element>
	<xsl:if test="count(.//referee) &gt; 0 and false()"><!-- This always fails - we don't want to show our references -->
		<xsl:element name="{$block}">
			<xsl:if test="$destination = 'html'"><xsl:attribute name="title"><xsl:value-of select="'References'" /></xsl:attribute></xsl:if>
			<xsl:call-template name="heading2"><xsl:with-param name="title" select="'References'" /></xsl:call-template>
			<xsl:element name="{$block}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tcenter'" /></xsl:call-template>
				<xsl:element name="{$table}"><xsl:call-template name="tableattr" />
					<xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'tleft'" /></xsl:call-template>
					<xsl:if test="$destination='html'">
						<xsl:attribute name="summary">My professional references, giving name, company, and email address for each person.</xsl:attribute>
					</xsl:if>
					<xsl:if test="$destination='fo'">
						<fo:table-column column-width="4cm" />
						<fo:table-column column-width="13.5cm" />
					</xsl:if>
					<xsl:element name="{$tablebody}">
						<xsl:for-each select="experience/*[count(references) &gt; 0]">
							<xsl:for-each select="references/referee">
								<xsl:element name="{$tablerow}">
									<xsl:if test="position() = 1">
									<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright top nowrap bold padr'" /><xsl:with-param name="rowspan" select="count(../referee)" /><xsl:with-param name="content" select="string(../../@shortname)" /></xsl:call-template></xsl:if>
									<xsl:call-template name="cell"><xsl:with-param name="content"><xsl:call-template name="link"><xsl:with-param name="url" select="concat('mailto:', email)" /><xsl:with-param name="description"><xsl:value-of select="name" /><xsl:text> </xsl:text>&lt;<xsl:value-of select="email" />&gt;</xsl:with-param><xsl:with-param name="title" select="concat('Send ', string(name), ' an email')" /></xsl:call-template><xsl:text> </xsl:text>(<xsl:value-of select="description" />)</xsl:with-param></xsl:call-template>
								</xsl:element><!-- tablerow -->
							<xsl:value-of select="@organisation" />
							</xsl:for-each>
						</xsl:for-each>
					</xsl:element><!-- tablebody -->
				</xsl:element><!-- table -->
			</xsl:element><!-- block -->
		</xsl:element><!-- block -->
	</xsl:if>
</xsl:template>

<xsl:template name="writeaddress">
<xsl:param name="address" />
	<!--	This is used when not putting a picture in, -->
	<!--xsl:for-each select="$address/addressline">
		<xsl:element name="{$tablerow}"><xsl:call-template name="attribs"><xsl:with-param name="attribs" select="'padt'" /></xsl:call-template>
			<xsl:if test="position() = 1"><xsl:call-template name="cellhead"><xsl:with-param name="rowspan" select="last() + 1" /><xsl:with-param name="attribs" select="'tright top italic padr'" /><xsl:with-param name="content"><xsl:value-of select="'Postal Address:'" /></xsl:with-param></xsl:call-template></xsl:if>
			<xsl:call-template name="cell"><xsl:with-param name="attribs" select="'bottom'" /><xsl:with-param name="content"><xsl:value-of select="string(.)" /></xsl:with-param></xsl:call-template>
		</xsl:element--><!-- tablerow -->
	<!--/xsl:for-each-->
	<xsl:element name="{$tablerow}">
		<!--xsl:call-template name="cell"><xsl:with-param name="attribs" select="'tright italic padr'" /></xsl:call-template this commented out because of the "+ 1" above in "last() + 1"-->
		<xsl:call-template name="cellhead"><xsl:with-param name="attribs" select="'tright top italic padr'" /><xsl:with-param name="content"><xsl:value-of select="'Postal Address:'" /></xsl:with-param></xsl:call-template>
		<xsl:call-template name="cell">
			<xsl:with-param name="content">
				<xsl:for-each select="$address/addressline">
					<xsl:if test="position() != 1">, </xsl:if><xsl:value-of select="string(.)" />
				</xsl:for-each>, <xsl:value-of select="$address/city" />
				<xsl:if test="$address/state"><xsl:if test="$address/city"><xsl:text> </xsl:text></xsl:if><xsl:value-of select="$address/state" /></xsl:if>
				<xsl:if test="$address/postcode"><xsl:if test="$address/city or $address/state"><xsl:text> </xsl:text></xsl:if><xsl:value-of select="$address/postcode" /></xsl:if>
				<xsl:if test="$address/country"><xsl:if test="$address/city or $address/state or $address/postcode"><xsl:text>, </xsl:text></xsl:if><xsl:value-of select="$address/country" /></xsl:if>
			</xsl:with-param>
		</xsl:call-template>
	</xsl:element><!-- tablerow -->
</xsl:template>


</xsl:stylesheet>