<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns="http://www.w3.org/1999/xhtml"
  version="1.1"
  >
<xsl:output 
  method="xml"
  doctype-system="-//WAPFORUM//DTD XHTML Mobile 1.0//EN" 
  doctype-public="http://www.wapforum.org/DTD/xhtml-mobile10.dtd" 
  encoding="UTF-8" 
  media-type="application/vnd.wap.xhtml+xml"
/>

<xsl:template match="/">
    <html>
        <head>
            <title>Library Books at <xsl:value-of select="//location"/></title>
            <style type="text/css">
            	ul, li { margin-left: 0.3em; padding-left: 0 }
                .book { color: black; }
                .avail { color: #aaa; font-size: 0.8em; }
            </style>
        </head>
        <body>
            <xsl:call-template name="list"/>
        </body>
    </html>
</xsl:template>


<xsl:template name="list">
    <xsl:variable name="base" select="//base"/>
    <xsl:variable name="session">
        <xsl:call-template name="getSession">
            <xsl:with-param name="base" select="$base"/>
        </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="loginfo">
        <xsl:call-template name="login">
            <xsl:with-param name="base" select="$base"/>
            <xsl:with-param name="session" select="$session"/>
            <xsl:with-param name="username" select="//username"/>
            <xsl:with-param name="password" select="//password"/>
        </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="listUri">
        <xsl:call-template name="getListUri">
            <xsl:with-param name="base" select="$base"/>
            <xsl:with-param name="session" select="$session"/> 
        </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="location" select="//location"/>
    <ul>
        <xsl:for-each select="document($listUri)/mylistresponse/mylist/row">
            <xsl:variable name="bookUri">
                <xsl:call-template name="getBookUri">
                    <xsl:with-param name="base" select="$base"/>
                    <xsl:with-param name="bookid" select="TITLE/data/link/func"/>
                </xsl:call-template>
            </xsl:variable>
            <xsl:variable name="avail" select="document($bookUri)//items/searchresults/results"/>
            <xsl:if test="count($avail/row[cell[1]/data/text=$location])>0">
                <li class="book">
                    <xsl:value-of select="disptitle"/>
                    <!--xsl:value-of select="substring(disptitle, 0, string-length(disptitle)-1)"/--> 
                    <ul>
                        <xsl:for-each select="$avail/row[cell[1]/data/text=$location]">
                            <li class="avail">
                                <!--xsl:value-of select="cell[1]/data/text"/--> 
                                <xsl:value-of select="cell[3]/data/text"/>, 
                                <xsl:value-of select="cell[5]/data/text"/> 
                            </li>
                        </xsl:for-each> 
                    </ul>
                </li>
            </xsl:if>
        </xsl:for-each> 
    </ul>
</xsl:template>




<xsl:template name="getSession">
    <xsl:param name="base"/>
    <xsl:variable name="uri" select="concat($base, '?auth=true&amp;GetXML=true')"/>
    <xsl:value-of select="document($uri)//session"/>
</xsl:template>

<xsl:template name="login">
    <xsl:param name="base"/>
    <xsl:param name="session"/>
    <xsl:param name="username"/>
    <xsl:param name="password"/>
    <xsl:variable name="uri" select="concat($base, '?session=', $session, '&amp;sec1=', $username, '&amp;sec2=', $password, '&amp;lastlogin=1105044124361&amp;GetXML=true')"/>
    <xsl:value-of select="document($uri)"/>
</xsl:template>

<xsl:template name="logout">
    <xsl:param name="session"/>
    <xsl:variable name="uri" select="concat($base, '?session=', $session, '&amp;logout=true&amp;date=1105059192000&amp;GetXML=true')"/>
    <xsl:value-of select="document($uri)"/>
</xsl:template>
    
<xsl:template name="getListUri">
    <xsl:param name="base"/>
    <xsl:param name="session"/>
    <xsl:variable name="uri" select="concat($base, '?session=', $session, '&amp;menu=mylist&amp;listkey=ipac_my_list&amp;GetXML=true')"/>
    <xsl:value-of select="$uri"/> 
</xsl:template>

<xsl:template name="getBookUri">
    <xsl:param name="base"/>
    <xsl:param name="bookid"/>
    <xsl:variable name="uri" select="concat($base, '?uri=', $bookid, '&amp;GetXML=true')"/>
    <xsl:value-of select="$uri"/>
</xsl:template>

<xsl:template match="@*|node()" mode="pass">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" mode="pass"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>
