<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method='html' version='1.0' encoding='UTF-8' indent='yes'/>

 <!-- Setup the HTML Page -->
 <xsl:template match="season">
  <html>
  <head>
   <title>John Brewer's Training Log</title>
  </head>


  <body>

  

   <center><table border="1">
    <tr>
     <xsl:for-each select="week">
      <td><a href="#{id}"><xsl:value-of select="name"/></a></td>
     </xsl:for-each>
    </tr>
   </table></center>

   <table border="0" width="100%">
    <tr>
     <td><H3>ROLLING WEEK = 

<xsl:choose>
     <xsl:when test="string(week/run/time) = 'NONE' or string(week/run/time) = 'PM'">
	<xsl:call-template name="RollingWeek">
	  <xsl:with-param name="runDate" select="substring(week/run/@date, 9)"/> 
	  <xsl:with-param name="runMonth" select="substring(week/run/@date, 6, 2)"/> 
	  <xsl:with-param name="runYear" select="substring(week/run/@date, 1, 4)"/> 
	</xsl:call-template>
     </xsl:when>
    <xsl:otherwise>
	<xsl:call-template name="RollingWeek">
	  <xsl:with-param name="runDate" select="substring(week/run/@date, 9) - 1"/> 
	  <xsl:with-param name="runMonth" select="substring(week/run/@date, 6, 2)"/> 
	  <xsl:with-param name="runYear" select="substring(week/run/@date, 1, 4)"/> 
	</xsl:call-template>
    </xsl:otherwise>
    </xsl:choose>
M</H3></td>
     <td width="500"><H3 align="center"></H3></td>
     <td align="right"><H3>SEASON MILES = <xsl:value-of select="sum(week[not(@excludeFromTotal)]/run/mileage)"/></H3></td>
    </tr>
   </table>

   <xsl:for-each select="week">
    <a name="{id}">
     <table border="1" width="100%">
      <tr>
        <td><h2 align="center">Day</h2></td>
        <td><h2 align="center">Round Up</h2></td>
        <td><h2 align="center">Miles</h2></td>
      </tr>

      <tr>
        <td align="center" width="100"><B><xsl:value-of select="name"/><br/><xsl:value-of select="substring(startDate, 6)"/> - <xsl:value-of select="substring(endDate, 6)"/></B></td>
 	<td><xsl:value-of select="description"/>
            <xsl:call-template name="MonthMiles">
	     <xsl:with-param name="runDate" select="substring(run/@date, 9)"/> 
	     <xsl:with-param name="runMonth" select="substring(run/@date, 6, 2)"/> 
	     <xsl:with-param name="runYear" select="substring(run/@date, 1, 4)"/> 
	     <xsl:with-param name="weekDesc" select="1"/> 
            </xsl:call-template>
        </td>
	<td align="center"><xsl:value-of select="sum(run/mileage)"/></td>
      </tr>

      <xsl:for-each select="run">
       <tr>
	<td align="center" width="100"><b><xsl:value-of select="day"/><xsl:if test="string(time) != 'NONE'"><xsl:text> </xsl:text><xsl:value-of select="time"/></xsl:if></b></td>
	<td><xsl:copy-of select="description"/><xsl:if test="race"><xsl:text>  </xsl:text><a href="races.html"><xsl:copy-of select="race"/> Summary</a></xsl:if>
            <xsl:call-template name="MonthMiles">
	     <xsl:with-param name="runDate" select="substring(@date, 9)"/> 
	     <xsl:with-param name="runMonth" select="substring(@date, 6, 2)"/> 
	     <xsl:with-param name="runYear" select="substring(@date, 1, 4)"/> 
	     <xsl:with-param name="weekDesc" select="0"/> 
            </xsl:call-template>
	</td>
  	<td align="center"><xsl:value-of select="mileage"/></td>
       </tr>
      </xsl:for-each>
     </table>
   </a>
   </xsl:for-each>

<xsl:if test="@current = 'Y' or @current = 'y'">
</xsl:if>
  </body>
  </html>
</xsl:template>

<xsl:template name="MonthMiles">
	<xsl:param name="runDate" />
	<xsl:param name="runMonth" />
	<xsl:param name="runYear" />
	<xsl:param name="weekDesc" />
  <xsl:if test="$weekDesc = 1 or
    ($runDate = 31 and ($runMonth = 1 or $runMonth = 3 or $runMonth = 5 or $runMonth = 7 or $runMonth = 8 or $runMonth = 10 or $runMonth = 12)) or
    ($runDate = 30 and ($runMonth = 4 or $runMonth = 6 or $runMonth = 9 or $runMonth = 11)) or
    ($runDate = 29 and $runMonth = 2 and $runYear mod 4 = 0) or
    ($runDate = 28 and $runMonth = 2 and $runYear mod 4 != 0)">

    <xsl:variable name="extra" select="/season/carryover[@month = $runMonth and @year = $runYear]" />
    <xsl:text>  </xsl:text>
    <b>
      <xsl:choose>
        <xsl:when test="$runMonth = 01">January</xsl:when>
        <xsl:when test="$runMonth = 02">February</xsl:when>
        <xsl:when test="$runMonth = 03">March</xsl:when>
        <xsl:when test="$runMonth = 04">April</xsl:when>
        <xsl:when test="$runMonth = 05">May</xsl:when>
        <xsl:when test="$runMonth = 06">June</xsl:when>
        <xsl:when test="$runMonth = 07">July</xsl:when>
        <xsl:when test="$runMonth = 08">August</xsl:when>
        <xsl:when test="$runMonth = 09">September</xsl:when>
        <xsl:when test="$runMonth = 10">October</xsl:when>
        <xsl:when test="$runMonth = 11">November</xsl:when>
        <xsl:when test="$runMonth = 12">December</xsl:when>
      </xsl:choose>
      Miles :
      <xsl:variable name="miles" select="sum(/season/week/run[
		substring(@date, 1, 4) = $runYear and
		substring(@date, 6, 2) = $runMonth and
		substring(@date, 9) &lt;= $runDate]/mileage)" />
      <xsl:choose>
        <xsl:when test="/season/carryover[@month = $runMonth and @year = $runYear]">
          <xsl:value-of select="$miles + $extra" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$miles" />
        </xsl:otherwise>
      </xsl:choose>
    </b>
  </xsl:if>
</xsl:template>

<xsl:template name="RollingWeek">
	<!-- Params to dictate the LAST run of the rolling week -->
	<xsl:param name="runDate" />
	<xsl:param name="runMonth" />
	<xsl:param name="runYear" />

      <xsl:choose>
	<xsl:when test="$runDate - 7 &gt; 0">
		<!-- No need to adjust month/year -->
		<xsl:variable name="startDate" select="$runDate - 7"/> 
		<xsl:value-of select="sum(week/run[
		 substring(@date, 1, 4) = $runYear and
		 substring(@date, 6, 2) = $runMonth and
		 substring(@date, 9) &gt; $startDate and
		 substring(@date, 9) &lt;= $runDate]/mileage)"/>
	</xsl:when>

	<xsl:when test="$runMonth = '02' or $runMonth = '04'
 	 or $runMonth = '06' or $runMonth = '08' or $runMonth = '09' or $runMonth = '11'">
		<!-- Prev Month Has 31 Days -->
		<xsl:variable name="startDate" select="$runDate + 24"/> 
      		<xsl:variable name="startMonth" select="$runMonth - 1"/> 
	        <xsl:value-of select="sum(week/run[
 	 	 substring(@date, 1, 4) = $runYear and
		 ((substring(@date, 6, 2) = $startMonth and substring(@date, 9) &gt; $startDate) or
		  (substring(@date, 6, 2) = $runMonth and substring(@date, 9) &lt;= $runDate))]/mileage)"/>
	</xsl:when>

	<xsl:when test="$runMonth = '05' or $runMonth = '07' or $runMonth = '10' or $runMonth = '12'">
		<!-- Prev Month Has 30 Days -->
		<xsl:variable name="startDate" select="$runDate + 23"/> 
		<xsl:variable name="startMonth" select="$runMonth - 1"/> 
	        <xsl:value-of select="sum(week/run[
 	 	 substring(@date, 1, 4) = $runYear and
		 ((substring(@date, 6, 2) = $startMonth and substring(@date, 9) &gt; $startDate) or
		  (substring(@date, 6, 2) = $runMonth and substring(@date, 9) &lt;= $runDate))]/mileage)"/>
	</xsl:when>

	<xsl:when test="$runMonth = '03' and $runYear mod 4 = 0">
		<!-- Prev Month was Feb in a Leap Year -->
		<xsl:variable name="startDate" select="$runDate + 22"/> 
		<xsl:variable name="startMonth" select="$runMonth - 1"/> 
	        <xsl:value-of select="sum(week/run[
 	 	 substring(@date, 1, 4) = $runYear and
		 ((substring(@date, 6, 2) = $startMonth and substring(@date, 9) &gt; $startDate) or
		  (substring(@date, 6, 2) = $runMonth and substring(@date, 9) &lt;= $runDate))]/mileage)"/>
	</xsl:when>

	<xsl:when test="$runMonth = '03'">
		<!-- Prev Month was Feb in a non-Leap Year -->
		<xsl:variable name="startDate" select="$runDate + 21"/> 
		<xsl:variable name="startMonth" select="$runMonth - 1"/> 
	        <xsl:value-of select="sum(week/run[
 	 	 substring(@date, 1, 4) = $runYear and
		 ((substring(@date, 6, 2) = $startMonth and substring(@date, 9) &gt; $startDate) or
		  (substring(@date, 6, 2) = $runMonth and substring(@date, 9) &lt;= $runDate))]/mileage)"/>
	</xsl:when>

	<xsl:when test="$runMonth = '01'">
		<!-- Prev Month was last year -->
		<xsl:variable name="startDate" select="$runDate + 24"/> 
		<xsl:variable name="startMonth" select="12"/> 
		<xsl:variable name="startYear" select="$runYear - 1"/> 
	        <xsl:value-of select="sum(week/run[
 	 	 ((substring(@date, 1, 4) = $startYear and
		  substring(@date, 6, 2) = $startMonth and substring(@date, 9) &gt; $startDate) or
 	 	 (substring(@date, 1, 4) = $runYear and
		  substring(@date, 6, 2) = $runMonth and substring(@date, 9) &lt;= $runDate))]/mileage)"/>
	</xsl:when>

      </xsl:choose>

</xsl:template>

</xsl:stylesheet>

