<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output index="yes" method="html" encoding="ISO-8859-1"/>

<xsl:variable name="bVerbose">0</xsl:variable>

<!-- to use call - -param lang '"pt"' -->
<xsl:param name="lang">en</xsl:param>
<xsl:param name="gui">yes</xsl:param>
<xsl:param name="links">yes</xsl:param>
<xsl:param name="curyear">2004</xsl:param>
<xsl:param name="curmon">5</xsl:param>

<xsl:template match="resume">
    <html>
        <head>
            <title><xsl:value-of select="/resume/map/title/text[@lang=$lang]"/></title>
        </head>
        <style id="MyStyles">
            .verbose {
                color: darkblue; display: none;
            }
            .not-verbose {
            }

            .group-style {
                padding-left:15; background:lightgrey;
            }
            .description-style {
                margin-left:5pt
            }
            .group-ul {
                display:block;
            }
            .show {
                display:block;
            }
            .hide {
                display:none;
            }
            .jobname {
                font-style: italic; font-weight: bold;
            }
            .line {
                 border: solid thin gray;
                 margin: 5px 0px 5px 0px;
                 background-color: gray;
             }
            .location {
                font-style: italic; font-weight: bold;
            }
            </style>
        <body>
        <script>
            function ToggleVerbose()
            {
                if (document.styleSheets[0].cssRules[0].style.display == "none")
                {
                    document.styleSheets[0].cssRules[0].style.display = "";
                    document.styleSheets[0].cssRules[1].style.display = "none";
                }
                else
                {
                    document.styleSheets[0].cssRules[0].style.display = "none";
                    document.styleSheets[0].cssRules[1].style.display = "";
                }
            }
            function Collapse(item)
            {
                /* Were like h3 / div / input {HERE} */
                var sib = item.parentNode.parentNode.nextSibling.nextSibling;

                window.status = sib.attributes.getNamedItem("class").nodeValue;

                if (sib.attributes.getNamedItem("class").nodeValue == "show")
                {
                    sib.attributes.getNamedItem("class").nodeValue = "hide";
                }
                else
                {
                    sib.attributes.getNamedItem("class").nodeValue = "show";
                }
            }
        </script>
        <center><h1><xsl:value-of select="name" /></h1></center>

        <xsl:apply-templates select="category[1]"/>

        </body>
    </html>
</xsl:template>

<xsl:template match="category">
    <h2 align="center">
        <xsl:value-of select="title[@lang=$lang or not(@lang)]"/>
    </h2>

    <xsl:if test="$gui = 'yes'">
        <input type="checkbox" onclick="ToggleVerbose()">
            <xsl:if test="$bVerbose = 1">
                <xsl:attribute name="checked">checked</xsl:attribute>
            </xsl:if>
        </input>
        <span class="not-verbose"><xsl:copy-of select="/resume/map/show-long-version/text[@lang=$lang]/child::node()"/></span>
        <span class="verbose" style="color: black"><xsl:copy-of select="/resume/map/show-short-version/text[@lang=$lang]/child::node()"/></span>
    </xsl:if>

    <xsl:apply-templates select="group[@name='Contact Information']"/>

    <xsl:apply-templates select="group[@name='Professional Experience']"/>

    <xsl:apply-templates select="group[@name='Education']"/>

    <xsl:apply-templates select="group[@name='Programming Languages']"/>

    <xsl:apply-templates select="group[@name='Applications and SDKs']"/>

    <xsl:apply-templates select="group[@name='Non-Digital Skills']"/>

    <xsl:apply-templates select="group[@name='Open Source']"/>

    <xsl:apply-templates select="group[@name='Languages']"/>
</xsl:template>

<xsl:template match="group">
    <xsl:if test="not(@verbose) or @verbose=$gui">
        <h3>
            <xsl:if test="@verbose = 'yes'">
                <xsl:attribute name="class">verbose</xsl:attribute>
            </xsl:if>
            <div class="group-style">
                <xsl:if test="$gui = 'yes'">
                    <input type="checkbox" checked="true" onClick="Collapse(this)"/><xsl:text> </xsl:text>
                </xsl:if>
                <xsl:value-of select="title[@lang=$lang or not(@lang)]"/>
            </div>
        </h3>

        <div class="show">
            <xsl:if test="description[@lang=$lang or not(@lang)] != '' ">
                <div class="description-style"><xsl:value-of select="description[@lang=$lang or not(@lang)]"/></div>
            </xsl:if>

            <ul class="group-ul">
                <xsl:for-each select="address|institution|skill|employer|item|links">
                    <!-- If it's verbose, remove it unless gui is on -->
                    <xsl:if test="not(@verbose) or @verbose='no' or $gui = 'yes'">
                        <xsl:if test="position() != 1">
                            <!-- I'm using HR here (rather than a DIV) so that when copied to MS Word a line will be put in -->
                            <hr class="line">
                                <xsl:if test="@verbose = 'yes'">
                                    <xsl:attribute name="class">line verbose</xsl:attribute>
                                </xsl:if>
                            </hr>
                        </xsl:if>

                        <li>
                            <xsl:if test="@verbose = 'yes'">
                                <xsl:attribute name="class">verbose</xsl:attribute>
                            </xsl:if>

                            <xsl:apply-templates select="."/>
                        </li>
                    </xsl:if>
                </xsl:for-each>
            </ul>
        </div>
    </xsl:if>
</xsl:template>

<xsl:template match="institution">
    <div>
        <b><xsl:value-of select="school" /></b> -
        <xsl:call-template name="from_to_date_str"/><br/>
        <span class="location"><xsl:value-of select="location[@lang=$lang or not(@lang)]" /></span><br/>
        <xsl:choose>
            <xsl:when test="degree">
                <xsl:apply-templates select="degree[@lang=$lang or not(@lang)]" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:copy-of select="/resume/map/did-not-complete/text[@lang=$lang]/child::node()"/>
            </xsl:otherwise>
        </xsl:choose>

        <xsl:if test="major[@lang=$lang or not(@lang)]">
            (<xsl:value-of select="major[@lang=$lang or not(@lang)]" />)
        </xsl:if>
        <br/>
        <xsl:if test="comments[@lang=$lang or not(@lang)]">
            <xsl:value-of select="comments[@lang=$lang or not(@lang)]"/><br/>
        </xsl:if>
    </div>
</xsl:template>

<xsl:template match="employer">
    <b><xsl:value-of select="name[@lang=$lang or not(@lang)]"/></b>
    - <xsl:call-template name="from_to_date_and_duration_str"/><br/>
    <span class="location"><xsl:value-of select="location[@lang=$lang or not(@lang)]"/></span><br/>
    <span class="jobname"><xsl:value-of select="jobName[@lang=$lang or not(@lang)]"/></span>
    <xsl:for-each select="description">
        <xsl:call-template name="description"/>
    </xsl:for-each>
</xsl:template>

<xsl:template match="skill">
    <b><xsl:value-of select="title[@lang=$lang or not(@lang)]"/></b>
    <xsl:if test="@years != ''">- <xsl:call-template name="years_str"/></xsl:if><br/>
    <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/>
</xsl:template>

<xsl:template match="item">
    <b><xsl:value-of select="title[@lang=$lang or not(@lang)]"/></b><br/>
    <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/>
</xsl:template>

<xsl:template match="a">
    <xsl:choose>
        <xsl:when test="$links = 'yes'"><a href="{@href}"><xsl:apply-templates/></a></xsl:when>
        <xsl:otherwise><xsl:apply-templates/></xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template>
<xsl:template match="b"><b><xsl:apply-templates/></b></xsl:template>

<xsl:template name="description">
    <xsl:for-each select="job-item[@lang=$lang or not(@lang)]">
        <xsl:if test="not(@verbose) or @verbose = 'no' or $gui = 'yes'">
            <span>
                <xsl:if test="@verbose = 'yes'">
                    <xsl:attribute name="class">verbose</xsl:attribute>
                </xsl:if>
            &#8226;<xsl:apply-templates/> <!-- Bullet -->
            </span>
        </xsl:if>
    </xsl:for-each>
</xsl:template>

<xsl:template match="address">
    <xsl:value-of select="@name"/>
    <div>
        <xsl:value-of select="street[@lang=$lang or not(@lang)]"/>
        <xsl:value-of select="city/desc[@lang=$lang or not(@lang)]"/>,
        <xsl:value-of select="state/@stateCode"/><xsl:text> </xsl:text>
        <xsl:value-of select="zipcode"/><xsl:text>, </xsl:text>
        <xsl:value-of select="country/desc[@lang=$lang or not(@lang)]"/><br/>
        <xsl:apply-templates select="phone" />
    </div>
</xsl:template>

<xsl:template match="links">
    <xsl:value-of select="title[@lang=$lang or not(@lang)]"/>
    <div>
        <xsl:apply-templates select="link" />
    </div>
</xsl:template>

<xsl:template match="phone">
    <b><xsl:value-of select="title[@lang=$lang or not(@lang)]"/>: </b>
    <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/>&#160;
</xsl:template>

<xsl:template match="years"><xsl:call-template name="years_str"/></xsl:template>

<xsl:template match="link">
    <xsl:if test="@lang=$lang or not(@lang)">
        <b>    <xsl:value-of select="title[@lang=$lang or not(@lang)]"/>: </b>
        <xsl:choose>
            <xsl:when test="@ref != ''">
                <a><xsl:attribute name="href"><xsl:value-of select="@ref"/></xsl:attribute>
                <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/></a>&#160;
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates select="desc[@lang=$lang or not(@lang)]"/>&#160;
            </xsl:otherwise>
        </xsl:choose>
    </xsl:if>
</xsl:template>

<xsl:template name="from_to_date_str">
    <xsl:if test="dateStart[@month='summer' ]">
        <xsl:copy-of select="/resume/map/summers-of/text[@lang=$lang]/child::node()"/>
    </xsl:if>

    <xsl:for-each select="dateStart"><xsl:call-template name="date-str"/></xsl:for-each>
    <xsl:copy-of select="/resume/map/to/text[@lang=$lang]/child::node()"/>
    <xsl:for-each select="dateEnd"><xsl:call-template name="date-str"/></xsl:for-each>
</xsl:template>

<xsl:template name="from_to_date_and_duration_str">
    <xsl:call-template name="from_to_date_str"/>
</xsl:template>

<xsl:template name="duration_str">
    <xsl:variable name="start">
        <xsl:for-each select="dateStart">
            <xsl:call-template name="extract_months"/>
        </xsl:for-each>
    </xsl:variable>
    <xsl:variable name="end">
        <xsl:for-each select="dateEnd">
            <xsl:call-template name="extract_months"/>
        </xsl:for-each>
    </xsl:variable>
</xsl:template>

<xsl:template name="extract_months">
    <xsl:variable name="month">
        <xsl:choose>
            <xsl:when test="@month = '' ">1</xsl:when>
            <xsl:when test="@month = 'summer' ">6</xsl:when>
            <xsl:when test="@year = 'Current' "><xsl:value-of select="$curmon"/></xsl:when>
            <xsl:otherwise><xsl:value-of select="@month"/></xsl:otherwise>
        </xsl:choose>
    </xsl:variable>

    <xsl:variable name="year">
        <xsl:choose>
            <xsl:when test="@year = 'Current' "><xsl:value-of select="$curyear"/></xsl:when>
            <xsl:otherwise><xsl:value-of select="@year"/></xsl:otherwise>
        </xsl:choose>
    </xsl:variable>

    <!-- return value -->
    <xsl:value-of select="$year * 12 + $month"/>
</xsl:template>

<xsl:template name="date-str">
    <xsl:variable name="year"><xsl:value-of select="@year"/></xsl:variable>

    <xsl:variable name="month">
        <xsl:choose>
            <xsl:when test="@month = '1' "><xsl:value-of select="/resume/map/jan/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '2' "><xsl:value-of select="/resume/map/feb/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '3' "><xsl:value-of select="/resume/map/mar/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '4' "><xsl:value-of select="/resume/map/apr/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '5' "><xsl:value-of select="/resume/map/may/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '6' "><xsl:value-of select="/resume/map/jun/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '7' "><xsl:value-of select="/resume/map/jul/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '8' "><xsl:value-of select="/resume/map/aug/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '9' "><xsl:value-of select="/resume/map/sep/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '10'"><xsl:value-of select="/resume/map/oct/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '11'"><xsl:value-of select="/resume/map/nov/text[@lang=$lang]"/></xsl:when>
            <xsl:when test="@month = '12'"><xsl:value-of select="/resume/map/dec/text[@lang=$lang]"/></xsl:when>
            <xsl:otherwise></xsl:otherwise>
        </xsl:choose>
        <xsl:value-of select="/resume/map/de/text[@lang=$lang]"/>
    </xsl:variable>

    <xsl:choose>
    <xsl:when test="$month != '' "><xsl:value-of select="concat($month, ' ', $year)"/></xsl:when>
    <xsl:otherwise><xsl:value-of select="$year"/></xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template name="years_str">
    <xsl:variable name="years">
        <xsl:choose>
            <xsl:when test="substring(@years, 1, 1) = '+' and string-length(@years) = 5 ">
                <xsl:value-of select="substring(@years, 2, 4)"/>
            </xsl:when>
            <xsl:when test="substring(@years, 1, 1) = '-' and string-length(@years) = 5 ">
                <xsl:value-of select="substring(@years, 2, 4)"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="@years"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>

    <xsl:choose>
        <xsl:when test="string-length(@years) = 4 or string-length(@years) = 5">
            <xsl:choose>
                <xsl:when test="substring(@years, 1, 1) = '+' ">
                    <xsl:value-of select="/resume/map/more-than/text[@lang=$lang]"/>
                </xsl:when>
                <xsl:when test="substring(@years, 1, 1) = '-'">
                    <xsl:value-of select="/resume/map/less-than/text[@lang=$lang]"/>
                </xsl:when>
            </xsl:choose>
            <xsl:choose>
                <xsl:when test="$curyear - $years = 1">
                    <xsl:value-of select="/resume/map/one-year/text[@lang=$lang]"/>
                </xsl:when>
                <xsl:otherwise><xsl:value-of select="$curyear - $years"/>
                    <xsl:value-of select="/resume/map/years/text[@lang=$lang]"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:when>
        <xsl:when test="$years = 'ongoing' ">
            <xsl:value-of select="/resume/map/ongoing/text[@lang=$lang]"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:choose>
                <xsl:when test="$years = 1">
                    <xsl:value-of select="/resume/map/one-year/text[@lang=$lang]"/>
                </xsl:when>
                <xsl:when test="$years != ''">
                    <xsl:value-of select="$years"/>
                    <xsl:value-of select="/resume/map/years/text[@lang=$lang]"/>
                </xsl:when>
            </xsl:choose>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

</xsl:stylesheet>