<!--                                                                  -->
<!--  Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved     -->
<!--  $Id$  -->
<!--                                                                  -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="no" doctype-system="" encoding="utf-8" />

    <xsl:include href="/app/tools/bookpub/templates/global.xsl" />
    <xsl:include href="/app/tools/bookpub/templates/searchNav.xsl" />

    <xsl:template name="pickLayout">
        <form action="/bookpub/user" name="userEdit" id="userEdit" method="post">
            <input type="hidden" name="UserID" value="{Form/AppUser/UserID}" />
            <input type="hidden" name="formSubmit" value="1" />
            <input type="hidden" name="c" value="{$cmd}" />
            <input type="hidden" name="ReturnTo" id="ReturnTo" value="{Params/ReturnTo}" />
            <xsl:call-template name="successMessageGeneral">
                <xsl:with-param name="successMessage">
                    <xsl:choose>
                        <xsl:when test="Params/UserID">Profile successfully updated!</xsl:when>
                        <xsl:otherwise>Password successfully updated!</xsl:otherwise>
                    </xsl:choose>
                </xsl:with-param>
            </xsl:call-template>
            <xsl:call-template name="errorMessageGeneral" />
            <p class="User-edit-subheader">Enter user information here.<span class="Required-notice"/></p>
            <xsl:call-template name="userEntry" />
            <xsl:call-template name="buttons" />
        </form>
    </xsl:template>

    <xsl:template name="userEntry">
        <xsl:if test="$cmd = 'edit'">
            <script src="/production/javascript/validateUser.js?t={$now}" type="text/javascript"></script>
        </xsl:if>
        <fieldset class="User-edit-fieldset">
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item Form-item-required</xsl:text>
                    <xsl:if test="Form/AppUser/Email[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">E-mail</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_Email" id="Form_AppUser_Email" class="Input Form-input" maxlength="80" value="{Form/AppUser/Email}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Email</xsl:with-param>
                            <xsl:with-param name="displayName">E-mail</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item Form-item-required</xsl:text>
                    <xsl:if test="Form/AppUser/FirstName[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">First Name</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_FirstName" id="Form_AppUser_FirstName" class="Input Form-input" maxlength="{Form/AppUser/FirstName[@maxlength]}" value="{Form/AppUser/FirstName}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/FirstName</xsl:with-param>
                        <xsl:with-param name="displayName">First Name</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item Form-item-required</xsl:text>
                    <xsl:if test="Form/AppUser/LastName[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">Last Name</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_LastName" id="Form_AppUser_LastName" class="Input Form-input" maxlength="{Form/AppUser/LastName[@maxlength]}" value="{Form/AppUser/LastName}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/LastName</xsl:with-param>
                            <xsl:with-param name="displayName">Last Name</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item</xsl:text>
                    <xsl:if test="Form/AppUser/Address/StreetAddress[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">Address</span>
                    <div class="Form-input-wrapper">
                        <textarea rows="4" name="Form_AppUser_Address_StreetAddress" id="Form_AppUser_Address_StreetAddress" class="Input Form-input"><xsl:value-of select="Form/AppUser/Address/StreetAddress" /></textarea>
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Address/StreetAddress</xsl:with-param>
                            <xsl:with-param name="displayName">Address</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item</xsl:text>
                    <xsl:if test="Form/AppUser/Address/City[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">City</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_Address_City" id="Form_AppUser_Address_City" class="Input Form-input" maxlength="{Form/AppUser/Address/City[@maxlength]}" value="{Form/AppUser/Address/City}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Address/City</xsl:with-param>
                            <xsl:with-param name="displayName">City</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item</xsl:text>
                    <xsl:if test="Form/AppUser/Address/StateProvince[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">State/Province</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_Address_StateProvince" id="Form_AppUser_Address_StateProvince" class="Input Form-input" maxlength="{Form/AppUser/Address/StateProvince[@maxlength]}" value="{Form/AppUser/Address/StateProvince}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Address/StateProvince</xsl:with-param>
                            <xsl:with-param name="displayName">State/Province</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item</xsl:text>
                    <xsl:if test="Form/AppUser/Address/PostalCode[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">ZIP/Postal</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_Address_PostalCode" id="Form_AppUser_Address_PostalCode" class="Input Form-input" maxlength="{Form/AppUser/Address/PostalCode[@maxlength]}" value="{Form/AppUser/Address/PostalCode}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Address/PostalCode</xsl:with-param>
                            <xsl:with-param name="displayName">ZIP/Postal</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item</xsl:text>
                    <xsl:if test="Form/AppUser/Address/Country[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">Country</span>
                    <div class="Form-input-wrapper">
                        <xsl:variable name="selectCountriesList">
                            <map>
                                <xsl:for-each select="Form/CountryList/Country">
                                    <mapEntry>
                                        <name><xsl:value-of select="Name"/></name>
                                        <value><xsl:value-of select="CountryCode"/></value>
                                    </mapEntry>
                                </xsl:for-each>
                            </map>
                        </xsl:variable>
                        <xsl:call-template name="uiDropdown">
                            <xsl:with-param name="items" select="$selectCountriesList"/>
                            <xsl:with-param name="id" select="'Form_AppUser_Address_Country'"/>
                            <xsl:with-param name="name" select="'Form_AppUser_Address_Country'"/>
                            <xsl:with-param name="active" select="/Root/Form/AppUser/Address/Country"/>
                            <xsl:with-param name="className" select="'Form_AppUser_Address_Country'"/>
                        </xsl:call-template>
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Address/Country</xsl:with-param>
                            <xsl:with-param name="displayName">Country</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
            <div>
                <xsl:attribute name="class">
                    <xsl:text>Form-item Form-item-required</xsl:text>
                    <xsl:if test="Form/AppUser/Phone1[@e]">
                        <xsl:text> Form-item-error</xsl:text>
                    </xsl:if>
                </xsl:attribute>
                <label class="Form-label">
                    <span class="Form-label-caption">Phone</span>
                    <div class="Form-input-wrapper">
                        <input type="text" name="Form_AppUser_Phone1" id="Form_AppUser_Phone1" class="Input Form-input" maxlength="{Form/AppUser/Phone1[@maxlength]}" value="{Form/AppUser/Phone1}" />
                        <xsl:call-template name="inlineError">
                            <xsl:with-param name="path">Form/AppUser/Phone1</xsl:with-param>
                            <xsl:with-param name="displayName">Phone</xsl:with-param>
                        </xsl:call-template>
                    </div>
                </label>
            </div>
        </fieldset>

        <xsl:if test="$cmd = 'profile'">
            <p class="User-edit-link"><a href="/bookpub/user?c=changepw">Change Password</a></p>
            <xsl:if test="normalize-space(Form/Terms)">
                <p class="User-edit-link"><a href="/bookpub/user?c=view_terms">View Subscription Agreement</a></p>
            </xsl:if>
        </xsl:if>

        <xsl:if test="$cmd != 'profile'">
            <fieldset class="User-edit-fieldset">
                <div class="Form-item Form-item-required">
                    <label class="Form-label">
                        <span class="Form-label-caption">Type</span>
                        <div class="Form-input-wrapper">
                            <xsl:variable name="selectAccessLevelsList">
                                <map>
                                    <mapEntry>
                                        <name>Choose...</name>
                                        <value></value>
                                    </mapEntry>
                                    <xsl:for-each select="Form/AccessLevelList/AccessLevel">
                                        <xsl:variable name="accessLevel" select="AccessLevelID" />
                                        <xsl:if test="/Root/Form/AccessLevelList/AccessLevel[AccessLevelID = /Root/User/AccessLevel]/CanEditList/CanEdit[@id = $accessLevel] = 1">
                                            <mapEntry>
                                                <name><xsl:value-of select="Name"/></name>
                                                <value><xsl:value-of select="AccessLevelID"/></value>
                                            </mapEntry>
                                        </xsl:if>
                                    </xsl:for-each>
                                </map>
                            </xsl:variable>
                            <xsl:call-template name="uiDropdown">
                                <xsl:with-param name="items" select="$selectAccessLevelsList"/>
                                <xsl:with-param name="id" select="'Form_AppUser_UserAccess_AccessLevel'"/>
                                <xsl:with-param name="name" select="'Form_AppUser_UserAccess_AccessLevel'"/>
                                <xsl:with-param name="active" select="/Root/Form/AppUser/UserAccess/AccessLevel" />
                                <xsl:with-param name="onChange">checkAccessLevel(this.value)</xsl:with-param>
                            </xsl:call-template>
                            <xsl:call-template name="inlineError">
                                <xsl:with-param name="path">Form/AppUser/UserAccess/AccessLevel</xsl:with-param>
                                <xsl:with-param name="displayName">Type</xsl:with-param>
                            </xsl:call-template>
                        </div>
                    </label>
                </div>
            </fieldset>

            <div id="userImprint">
                <xsl:if test="Form/ImprintList">
                    <fieldset class="User-edit-fieldset User-edit-fieldset-dualselect">
                        <div class="Form-item Form-item-required">
                            <label class="Form-label">
                                <span class="Form-label-caption">Imprints</span>
                                <div class="Form-input-wrapper">
                                    <xsl:variable name="selectLabelsAvailable">
                                        <map>
                                            <xsl:choose>
                                                <xsl:when test="normalize-space(Form/AppUser/UserAccess/ImprintID)">
                                                    <xsl:for-each select="Form/ImprintList/Imprint">
                                                        <xsl:variable name="imprintTestID" select="ImprintID" />
                                                        <xsl:if test="not(/Root/Form/AppUser/UserAccess[ImprintID = $imprintTestID])">
                                                            <mapEntry>
                                                                <name><xsl:value-of select="Name"/></name>
                                                                <value><xsl:value-of select="ImprintID"/></value>
                                                            </mapEntry>
                                                        </xsl:if>
                                                    </xsl:for-each>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                    <xsl:for-each select="Form/ImprintList/Imprint">
                                                        <mapEntry>
                                                            <name><xsl:value-of select="Name"/></name>
                                                            <value><xsl:value-of select="ImprintID"/></value>
                                                        </mapEntry>
                                                    </xsl:for-each>
                                                </xsl:otherwise>
                                            </xsl:choose>
                                        </map>
                                    </xsl:variable>
                                    <xsl:variable name="selectLabelsSelected">
                                        <map>
                                            <xsl:variable name="ImprintID" select="Form/AppUser/UserAccess/ImprintID" />
                                            <xsl:for-each select="Form/ImprintList/Imprint[ImprintID = $ImprintID]">
                                                <mapEntry>
                                                    <name><xsl:value-of select="Name"/></name>
                                                    <value><xsl:value-of select="ImprintID"/></value>
                                                </mapEntry>
                                            </xsl:for-each>
                                        </map>
                                    </xsl:variable>
                                    <xsl:call-template name="uiDualSelect">
                                        <xsl:with-param name="name" select="'Form_AppUser_UserAccess_ImprintID'"/>
                                        <xsl:with-param name="itemsAvailable" select="$selectLabelsAvailable"/>
                                        <xsl:with-param name="itemsSelected" select="$selectLabelsSelected"/>
                                    </xsl:call-template>
                                    <xsl:call-template name="inlineError">
                                        <xsl:with-param name="path">Form/AppUser/UserAccess/ImprintID</xsl:with-param>
                                        <xsl:with-param name="displayName">Imprints</xsl:with-param>
                                    </xsl:call-template>
                                </div>
                            </label>
                        </div>
                    </fieldset>
                </xsl:if>
            </div>

            <div id="userPublisher">
                <xsl:if test="Form/PublisherList">
                    <fieldset class="User-edit-fieldset User-edit-fieldset-dualselect">
                        <div class="Form-item Form-item-required">
                            <label class="Form-label">
                                <span class="Form-label-caption">Publishers</span>
                                <div class="Form-input-wrapper">
                                    <xsl:variable name="selectLabelsAvailable">
                                        <map>
                                            <xsl:choose>
                                                <xsl:when test="normalize-space(Form/AppUser/UserAccess/PublisherID)">
                                                    <xsl:for-each select="Form/PublisherList/Publisher">
                                                        <xsl:variable name="publisherTestID" select="PublisherID" />
                                                        <xsl:if test="not(/Root/Form/AppUser/UserAccess[PublisherID = $publisherTestID])">
                                                            <mapEntry>
                                                                <name><xsl:value-of select="Name"/></name>
                                                                <value><xsl:value-of select="PublisherID"/></value>
                                                            </mapEntry>
                                                        </xsl:if>
                                                    </xsl:for-each>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                    <xsl:for-each select="Form/PublisherList/Publisher">
                                                        <mapEntry>
                                                            <name><xsl:value-of select="Name"/></name>
                                                            <value><xsl:value-of select="PublisherID"/></value>
                                                        </mapEntry>
                                                    </xsl:for-each>
                                                </xsl:otherwise>
                                            </xsl:choose>
                                        </map>
                                    </xsl:variable>
                                    <xsl:variable name="selectLabelsSelected">
                                        <map>
                                            <xsl:variable name="PublisherID" select="Form/AppUser/UserAccess/PublisherID" />
                                            <xsl:for-each select="Form/PublisherList/Publisher[PublisherID = $PublisherID]">
                                                <mapEntry>
                                                    <name><xsl:value-of select="Name"/></name>
                                                    <value><xsl:value-of select="PublisherID"/></value>
                                                </mapEntry>
                                            </xsl:for-each>
                                        </map>
                                    </xsl:variable>
                                    <xsl:call-template name="uiDualSelect">
                                        <xsl:with-param name="name" select="'Form_AppUser_UserAccess_PublisherID'"/>
                                        <xsl:with-param name="itemsAvailable" select="$selectLabelsAvailable"/>
                                        <xsl:with-param name="itemsSelected" select="$selectLabelsSelected"/>
                                        <xsl:with-param name="availId" select="'AvailPublishers'"/>
                                    </xsl:call-template>
                                    <xsl:call-template name="inlineError">
                                        <xsl:with-param name="path">Form/AppUser/UserAccess/PublisherID</xsl:with-param>
                                        <xsl:with-param name="displayName">Publishers</xsl:with-param>
                                    </xsl:call-template>
                                </div>
                            </label>
                        </div>
                    </fieldset>
                </xsl:if>
            </div>

            <xsl:if test="User/UserID != Form/AppUser/UserID">
                <fieldset class="User-edit-fieldset User-edit-fieldset-disablers">
                    <label class="Form-label-caption">Disabled</label>
                    <xsl:variable name="userDisabled">
                        <xsl:if test="Form/AppUser/Disabled = 1">true</xsl:if>
                    </xsl:variable>
                    <xsl:variable name="userNotDisabled">
                        <xsl:if test="Form/AppUser/Disabled != 1">true</xsl:if>
                    </xsl:variable>
                    <xsl:call-template name="uiRadio">
                        <xsl:with-param name="caption" select="'No'"/>
                        <xsl:with-param name="name" select="'Form_AppUser_Disabled'"/>
                        <xsl:with-param name="value"  select="'0'"/>
                        <xsl:with-param name="checked" select="$userNotDisabled"/>
                    </xsl:call-template>
                    <xsl:call-template name="uiRadio">
                        <xsl:with-param name="caption" select="'Yes'"/>
                        <xsl:with-param name="name" select="'Form_AppUser_Disabled'"/>
                        <xsl:with-param name="value"  select="'1'"/>
                        <xsl:with-param name="checked" select="$userDisabled"/>
                    </xsl:call-template>
                </fieldset>
            </xsl:if>

        </xsl:if>

        <xsl:choose>
            <xsl:when test="$cmd = 'profile'">
                <script src="/production/javascript/validateProfile.js" type="text/javascript"></script>
            </xsl:when>
            <xsl:otherwise>
                <script type="text/javascript">checkAccessLevel(<xsl:value-of select="Form/AppUser/UserAccess/AccessLevel" />);</script>
            </xsl:otherwise>
        </xsl:choose>

    </xsl:template>

    <xsl:template name="submitButton">
        <xsl:call-template name="uiButton">
            <xsl:with-param name="content">
                <xsl:if test="normalize-space(Form/AppUser/UserID)">Update</xsl:if>
                <xsl:if test="not(normalize-space(Form/AppUser/UserID))">Create</xsl:if>
            </xsl:with-param>
            <xsl:with-param name="name" select="'submit'"/>
            <xsl:with-param name="id" select="'submitButton'"/>
            <xsl:with-param name="type" select="'primary'"/>
            <xsl:with-param name="className" select="'Form-button'"/>
            <xsl:with-param name="elemType" select="'submit'"/>
            <xsl:with-param name="onClick">selectAllMulti('Form_AppUser_UserAccess_ImprintID');selectAllMulti('Form_AppUser_UserAccess_PublisherID');</xsl:with-param>
        </xsl:call-template>
    </xsl:template>

    <xsl:template name="cancelButton">
        <xsl:choose>
            <xsl:when test="$cmd = 'profile'">
                <xsl:call-template name="uiButton">
                    <xsl:with-param name="name" select="'Cancel'"/>
                    <xsl:with-param name="content" select="'Cancel'" />
                    <xsl:with-param name="type" select="'default'"/>
                    <xsl:with-param name="className" select="'Form-button'"/>
                    <xsl:with-param name="onClick">location.href='/'</xsl:with-param>
                </xsl:call-template>
            </xsl:when>
            <xsl:when test="Access/bookpub/user/show and normalize-space(Form/AppUser/UserID)">
                <xsl:call-template name="uiButton">
                    <xsl:with-param name="name" select="'Cancel'"/>
                    <xsl:with-param name="content" select="'Return to User'" />
                    <xsl:with-param name="type" select="'default'"/>
                    <xsl:with-param name="className" select="'Form-button'"/>
                    <xsl:with-param name="onClick">location.href='user?UserID=<xsl:value-of select="Form/AppUser/UserID" />&amp;c=show'</xsl:with-param>
                </xsl:call-template>
            </xsl:when>
            <xsl:when test="Access/bookpub/user/show">
                <xsl:call-template name="uiButton">
                    <xsl:with-param name="content" select="'Back to User List'" />
                    <xsl:with-param name="type" select="'default'"/>
                    <xsl:with-param name="className" select="'Form-button'"/>
                    <xsl:with-param name="onClick">location.href='user'</xsl:with-param>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:call-template name="uiButton">
                    <xsl:with-param name="name" select="'Cancel'"/>
                    <xsl:with-param name="content" select="'Cancel'" />
                    <xsl:with-param name="type" select="'default'"/>
                    <xsl:with-param name="className" select="'Form-button'"/>
                    <xsl:with-param name="onClick">location.href='/'</xsl:with-param>
                </xsl:call-template>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>


</xsl:stylesheet>
