<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
	version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:param name="get_name">25</xsl:param>

<!-- MAIN TEMPLATE -->
<xsl:template match="/beer_recipes">
    <xsl:for-each select="recipe">
        <xsl:if test="name/@number=$get_name">
        <div id="box">
            <span class="navright">
                <a href="recipe_list.php">full list</a><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
                <a href="recipe_list.php?narrow=1">narrow list</a><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
                <xsl:text disable-output-escaping="yes">&lt;a href="full.php?num=</xsl:text><xsl:value-of select="number(name/@number) - 1"/>
                <xsl:text disable-output-escaping="yes">"&gt;prev&lt;/a&gt;&amp;nbsp;</xsl:text>
                <xsl:text disable-output-escaping="yes">&lt;a href="full.php?num=</xsl:text><xsl:value-of select="number(name/@number) + 1"/>
                <xsl:text disable-output-escaping="yes">"&gt;next&lt;/a&gt;</xsl:text>
                <xsl:if test="name/@number>13">
                    <xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
                    <xsl:text disable-output-escaping="yes">&lt;a href="xsl/fo/full_</xsl:text><xsl:value-of select="name/@number"/>
                    <xsl:text>.pdf</xsl:text>
                    <xsl:text disable-output-escaping="yes">"&gt;PDF version&lt;/a&gt;&amp;nbsp;</xsl:text>
                </xsl:if>
            </span>
          <strong>#<xsl:value-of select="name/@number"/>:
                <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
                <xsl:value-of select="name"/></strong> (<xsl:value-of select="style"/>)<xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <xsl:apply-templates select="descrip"/>
            <!-- What I want here is:  if count(select="brewer" > 1) add ',' between brewers -->
            <xsl:for-each select="brewer">
                <xsl:value-of select="."/>
                <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
            </xsl:for-each><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <xsl:value-of select="date"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Recipe</strong> (for <xsl:apply-templates select="boil/end/volume" mode="minus_half"/> final volume)<xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <table class="full"><xsl:apply-templates select="ingredients"/>
                <tr><td colspan="3"><hr /></td></tr></table>
            <xsl:apply-templates select="ingredients/yeast"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Water</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
              <xsl:apply-templates select="ingredients/water"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Mash</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
                <xsl:apply-templates select="ingredients/adjuncts/adjunct/comment"/>
                <xsl:apply-templates select="mash"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Sparge</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
              <xsl:apply-templates select="sparge"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Boil</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
              <xsl:apply-templates select="boil"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Fermentation</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
              <xsl:apply-templates select="fermentation"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Packaging</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
              <xsl:apply-templates select="packaging"/><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
            <strong>Properties</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
                <table class="full"><xsl:apply-templates select="predicted_data"/>
                </table><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
                <xsl:apply-templates select="brewing_notes"/>
                <xsl:apply-templates select="tasting_notes"/>
                <xsl:apply-templates select="comment" mode="final"/>
            </div>
            </xsl:if>
    </xsl:for-each>
</xsl:template>

<!-- DESCRIPTION -->
<xsl:template match="descrip">
  <ul class="plain"><li><xsl:value-of select="."/></li></ul>
</xsl:template>

<!-- INGREDIENTS -->
<xsl:template match="ingredients">
    <xsl:apply-templates select="grains"/>
    <xsl:apply-templates select="adjuncts"/>
    <xsl:apply-templates select="hops"/>
    <xsl:apply-templates select="spices"/>
    <!-- <xsl:apply-templates select="water"/> -->
    <xsl:apply-templates select="others"/>
    <!-- <xsl:apply-templates select="yeast"/> -->
</xsl:template>

<xsl:template match="grains">
    <xsl:for-each select="grain">
      <tr><xsl:apply-templates select="weight" mode="with_percentage"/>
      <td align="left"><xsl:value-of select="gname"/><xsl:apply-templates select="comment" mode="paren"/></td></tr>
    </xsl:for-each>
</xsl:template>

<xsl:template match="adjuncts">
    <xsl:for-each select="adjunct">
    <tr><xsl:apply-templates select="weight" mode="with_percentage"/>
      <td align="left"><xsl:value-of select="aname"/><xsl:apply-templates select="comment" mode="adjunct_ref"/></td></tr>
    </xsl:for-each>
</xsl:template>

<xsl:template match="hops">
  <tr><td colspan="3"><hr /></td><td></td></tr>
    <xsl:for-each select="hop">
    <tr><xsl:apply-templates select="weight"/>
        <td><xsl:value-of select="hname"/>
            <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
            <xsl:value-of select="@type"/>
            <xsl:text> hops, </xsl:text>
            <xsl:value-of select="hname/@aa"/>
            <xsl:text>% AA </xsl:text>
            <xsl:apply-templates select="time" mode="paren"/>
            <xsl:apply-templates select="first_wort"/>
            <xsl:apply-templates select="secondary_hop"/>
            <xsl:apply-templates select="keg_hop"/>
        </td>
    </tr>
    </xsl:for-each>
</xsl:template>

<xsl:template match="first_wort">
    (first wort hop)
</xsl:template>

<xsl:template match="secondary_hop">
    (dry hopped in secondary)
</xsl:template>

<xsl:template match="keg_hop">
    (dry hopped in keg)
</xsl:template>

<xsl:template match="spices">
  <tr><td colspan="3"><hr /></td><td></td></tr>
    <xsl:for-each select="spice">
      <tr>
        <xsl:apply-templates select="weight"/>
        <xsl:apply-templates select="volume"/>
        <td>
          <xsl:value-of select="sname"/>
            <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
            <xsl:apply-templates select="time" mode="paren"/>
            <xsl:apply-templates select="liquor_infusion"/>
            <xsl:apply-templates select="secondary_spiced"/>
            <xsl:apply-templates select="keg_spiced"/>
            </td>
          </tr>
    </xsl:for-each>
</xsl:template>

<xsl:template match="liquor_infusion">
  <xsl:text> (Soaked in </xsl:text>
  <xsl:value-of select="."/>
  <xsl:text>, added at conditioning)</xsl:text>
</xsl:template>

<!-- WATER -->
<xsl:template match="water"><ul class="plain">
        <li><xsl:value-of select="wname"/></li>
        <xsl:apply-templates select="treatments"/></ul>
</xsl:template>

<xsl:template match="treatments">
    <li><xsl:apply-templates select="volume" mode="notable"/>
        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
        <xsl:value-of select="@type"/> water treated with:</li>
    <li><ul class="plain">
        <xsl:for-each select="treatment"><li>
          <xsl:apply-templates select="weight" mode="notable"/>
          <xsl:apply-templates select="volume" mode="notable"/>
          <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
          <xsl:value-of select="tname"/>.
          <xsl:apply-templates select="comment" mode="nocomma"/>
        </li>
  </xsl:for-each></ul></li>
</xsl:template>

<xsl:template match="yeast">
    <!--    <tr><td colspan="3"><hr /></td><td></td></tr>
    <tr>
      <td colspan="4"><xsl:value-of select="yname"/>, pitched at <xsl:apply-templates select="temperature"/>
        <xsl:apply-templates select="starter"/>
</td></tr>
-->
    <xsl:text disable-output-escaping="yes">&lt;ul class="plain"&gt;</xsl:text>
        <xsl:text disable-output-escaping="yes">&lt;li&gt;</xsl:text>
            <xsl:value-of select="yname"/>
            <xsl:text>, pitched at </xsl:text>
            <xsl:apply-templates select="temperature"/>
        <xsl:text disable-output-escaping="yes">&lt;/li&gt;</xsl:text>
        <xsl:apply-templates select="starter"/>
        <xsl:apply-templates select="aeration"/>
        <xsl:apply-templates select="comment" mode="parenli"/>
    <xsl:text disable-output-escaping="yes">&lt;/ul&gt;</xsl:text>
</xsl:template>

<xsl:template match="starter">
  <xsl:text disable-output-escaping="yes">&lt;li&gt;</xsl:text>
    <xsl:text>Starter: </xsl:text>
    <xsl:value-of select="."/>
  <xsl:text disable-output-escaping="yes">&lt;/li&gt;</xsl:text>
</xsl:template>

<xsl:template match="aeration">
  <xsl:text disable-output-escaping="yes">&lt;li&gt;</xsl:text>
    <xsl:text>Aeration: </xsl:text>
    <xsl:value-of select="."/>
  <xsl:text disable-output-escaping="yes">&lt;/li&gt;</xsl:text>
</xsl:template>

<xsl:template match="others">
    <xsl:for-each select="other">
        <tr>
        <xsl:apply-templates select="weight"/>
        <xsl:apply-templates select="volume"/>
        <td align="left"><xsl:value-of select="oname"/>
        (<xsl:apply-templates select="time"/>)
        </td></tr>
    </xsl:for-each>
</xsl:template>

<!-- MASH -->
<xsl:template match="mash"><ul class="plain">
    <xsl:for-each select="step"><li>
       <xsl:apply-templates select="added_water"/>
       <xsl:apply-templates select="added_heat"/>
       <xsl:apply-templates select="grist"/>
       <xsl:apply-templates select="time" mode="step"/>
       <xsl:apply-templates select="comment"/></li>
   </xsl:for-each></ul>
</xsl:template>

<xsl:template match="added_water">
    <xsl:value-of select="volume"/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="volume/@type"/> water @ 
    <xsl:apply-templates select="temperature"/>
</xsl:template>

<xsl:template match="added_heat">Heated</xsl:template>

<xsl:template match="grist">, grist ratio of 
    <xsl:value-of select="ratio"/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="ratio/@type"/> @ 
    <xsl:apply-templates select="temperature"/>
</xsl:template>

<xsl:template match="ingredients/adjuncts/adjunct/comment"><ul class="plain">
        <li><xsl:value-of select="../aname"/>: <xsl:value-of select="."/></li></ul>
</xsl:template>

<!-- SPARGE -->
<xsl:template match="sparge"><ul class="plain">
    <xsl:for-each select="step"><li>
            <xsl:apply-templates select="added_water"/>, drain</li>
    </xsl:for-each>
    <xsl:apply-templates select="comment" mode="li"/></ul>
</xsl:template>

<!-- BOIL -->
<xsl:template match="boil"><ul class="plain">
    <li><xsl:text>Boiled </xsl:text>
      <xsl:apply-templates select="start/volume" mode="notable"/>
      <xsl:text> for </xsl:text>
      <xsl:apply-templates select="time"/>
      <xsl:text> to yield </xsl:text>
      <xsl:apply-templates select="end/volume" mode="notable"/>
      <xsl:text> wort </xsl:text></li>
      <xsl:apply-templates select="comment" mode="li"/></ul>
</xsl:template>

<!-- FERMENTATION -->
<xsl:template match="fermentation"><ul class="plain">
    <xsl:apply-templates select="primary"/>
    <xsl:apply-templates select="secondary"/>
    <xsl:apply-templates select="comment" mode="li"/></ul>
</xsl:template>

<xsl:template match="primary"><li>
  Primary: <xsl:value-of select="@type"/>, <xsl:apply-templates select="time"/>,
  <xsl:apply-templates select="temperature"/>
  <xsl:apply-templates select="comment"/></li>
</xsl:template>

<xsl:template match="secondary"><li>
  Secondary: <xsl:value-of select="@type"/>, <xsl:apply-templates select="time"/>,
    <xsl:apply-templates select="temperature"/>
    <xsl:apply-templates select="comment"/></li>
</xsl:template>

<!-- PACKAGING -->
<xsl:template match="packaging">
    <ul class="plain"><xsl:apply-templates select="bottling"/>
        <xsl:apply-templates select="kegging"/>
        <xsl:apply-templates select="time" mode="conditioning"/>
        <xsl:apply-templates select="ready"/>
    </ul>
</xsl:template>

<!-- BOTTLING -->
<xsl:template match="bottling">
    <li>Bottled with <xsl:apply-templates select="weight" mode="notable"/><xsl:apply-templates select="volume" mode="notable"/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="sugar"/>
    <xsl:apply-templates select="comment"/></li>
</xsl:template>

<!-- KEGGING -->
<xsl:template match="kegging">
        <li><xsl:apply-templates select="force_carb"/>
            <xsl:apply-templates select="primed"/>
            <xsl:apply-templates select="comment"/></li>
</xsl:template>

<!-- FORCE_CARB -->
<xsl:template match="force_carb">
    Kegged at <xsl:value-of select="psi"/> psi, <xsl:apply-templates select="temperature"/> (<xsl:value-of select="volumes"/> volumes CO<sub>2</sub>)<xsl:apply-templates select="comment"/>
</xsl:template>

<!-- PRIMED -->
<xsl:template match="primed">
    Kegged with <xsl:apply-templates select="weight" mode="notable"/><xsl:apply-templates select="volume" mode="notable"/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="sugar"/>
    <xsl:apply-templates select="comment"/>
</xsl:template>

<!-- READY -->
<xsl:template match="ready">
    <li>Ready to drink on <xsl:value-of select="."/></li>
</xsl:template>

<!-- DATA -->
<xsl:template match="predicted_data">
    <tr><td>Starting Gravity: <xsl:value-of select="../actual_data/SG"/></td>
        <td>Final Gravity: <xsl:value-of select="../actual_data/FG"/></td></tr>
  <tr><td>Original Extract: <xsl:value-of select="../actual_data/OE"/>
        <xsl:text disable-output-escaping="yes">&amp;deg;</xsl:text>plato</td>
      <td>Apparent Extract: <xsl:value-of select="../actual_data/AE"/>
          <xsl:text disable-output-escaping="yes">&amp;deg;</xsl:text>plato</td></tr>
  <tr><td></td><td>Real Extract: <xsl:value-of select="format-number((((0.22 + (0.001 * ../actual_data/OE)) * ../actual_data/OE) + ../actual_data/AE) div (1.22 + (0.001 * ../actual_data/OE)), '0.00')"/>
          <xsl:text disable-output-escaping="yes">&amp;deg;</xsl:text>plato</td></tr>
    <tr><td>Alcohol: <xsl:value-of select="../actual_data/ABV"/>% by volume</td>
        <td>(<xsl:value-of select="../actual_data/ABW"/>% by weight)</td></tr>
    <tr><td>Apparent Attenuation: <xsl:value-of select="../actual_data/AA"/>%</td>
        <td>Mash Efficiency: <xsl:value-of select="../actual_data/efficiency"/></td></tr>
  <tr><td>Bitterness: <xsl:apply-templates select="bitterness"/></td>
      <td>Color: <xsl:apply-templates select="color"/></td></tr>
  <tr><td>BU:SG: <xsl:value-of select="format-number(../predicted_data/bitterness div ((../actual_data/SG - 1) * 1000), '0.00')"/></td>
      <td>BV: <xsl:value-of select="format-number((../predicted_data/bitterness * 0.205) div ((((0.22 + (0.001 * ../actual_data/OE)) * ../actual_data/OE) + ../actual_data/AE) div (1.22 + (0.001 * ../actual_data/OE))), '0.00')"/></td></tr>
</xsl:template>

<xsl:template match="bitterness">
    <xsl:value-of select="."/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="./@type"/>
</xsl:template>

<xsl:template match="color">
    <xsl:value-of select="."/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="./@type"/>
</xsl:template>

<!-- BREWING NOTES -->
<xsl:template match="brewing_notes">
    <strong>Brewing Notes</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
    <ul class="plain"><xsl:apply-templates select="note"/></ul>
</xsl:template>

<!-- TASTING NOTES -->
<xsl:template match="tasting_notes">
    <strong>Tasting Notes</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
    <ul class="plain"><xsl:apply-templates select="note"/></ul>
</xsl:template>

<!-- NOTE -->
<xsl:template match="note">
    <li><xsl:value-of select="."/></li>
</xsl:template>

<!-- COMMENT -->
<xsl:template match="comment">,
  <xsl:value-of select="."/>
</xsl:template>

<xsl:template match="comment" mode="nocomma">
  <xsl:value-of select="."/>
</xsl:template>

<xsl:template match="comment" mode="br"><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
  <xsl:value-of select="."/>
</xsl:template>

<xsl:template match="comment" mode="paren">
  (<xsl:value-of select="."/>)
</xsl:template>

<xsl:template match="comment" mode="parenli">
  <xsl:text disable-output-escaping="yes">&lt;li&gt;(</xsl:text>
  <xsl:value-of select="."/>
  <xsl:text disable-output-escaping="yes">)&lt;/li&gt;</xsl:text>
</xsl:template>

<xsl:template match="comment" mode="li">
    <li><xsl:value-of select="."/></li>
</xsl:template>

<xsl:template match="comment" mode="final">
    <strong>Comments</strong><xsl:text disable-output-escaping="yes">&lt;br /&gt;</xsl:text>
    <ul class="plain"><li><xsl:value-of select="."/></li></ul>
</xsl:template>

<xsl:template match="comment" mode="adjunct_ref">
    (see notes below)
</xsl:template>


<!-- GENERIC TEMPLATES -->
<xsl:template match="weight">
    <td align="right">
        <xsl:value-of select="."/>
    </td><td>
        <xsl:value-of select="@type"/>
    </td><td>
        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    </td>
</xsl:template>

<xsl:template match="weight" mode="with_percentage">
    <td align="right">
        <xsl:value-of select="."/>
    </td><td>
        <xsl:value-of select="@type"/>
    </td><td align="right">
        <xsl:apply-templates select="../percentage"/></td>
</xsl:template>

<xsl:template match="weight" mode="notable">
    <xsl:value-of select="."/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:value-of select="@type"/>
</xsl:template>

<xsl:template match="volume">
    <td align="right">
        <xsl:value-of select="."/>
    </td><td>
        <xsl:value-of select="@type"/>
    </td><td>
        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    </td>
</xsl:template>

<xsl:template match="volume" mode="notable">
    <xsl:value-of select="."/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:value-of select="@type"/>
</xsl:template>

<xsl:template match="volume" mode="minus_half">
    <xsl:value-of select="number(.) - 0.5"/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:value-of select="@type"/>
</xsl:template>

<xsl:template match="time">
    <xsl:value-of select="."/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:value-of select="@type"/>
</xsl:template>

<xsl:template match="time" mode="paren">
    <xsl:text>(</xsl:text>
    <xsl:value-of select="."/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="@type"/>
    <xsl:text>)</xsl:text>
</xsl:template>

<xsl:template match="time" mode="step">
    <xsl:text> (Held </xsl:text>
    <xsl:value-of select="."/>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:value-of select="@type"/>
    <xsl:text>)</xsl:text>
</xsl:template>

<xsl:template match="time" mode="conditioning"><li>Conditioned for <xsl:value-of select="."/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:value-of select="@type"/></li>
</xsl:template>

<xsl:template match="temperature"><xsl:value-of select="."/><xsl:text disable-output-escaping="yes">&amp;deg;</xsl:text><xsl:value-of select="./@type"/></xsl:template>

<xsl:template match="percentage">
    <xsl:text>(</xsl:text>
    <xsl:value-of select="."/>
    <xsl:text>%)</xsl:text>
</xsl:template>

</xsl:stylesheet>
