[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]

[%# INTERFACE:
  # realname: string. The user's real name, if any.
  # login_change_date: string. The date the email change will be complete. (optional)
  # new_login_name:    string. The user's new Bugzilla login whilst not confirmed. (optional)
  #%]

<table>
  [% IF user.authorizer.can_change_password
        || (user.authorizer.can_change_email && Param('allowemailchange')) %]
    <tr>
      <td colspan="3">
        Please enter your existing password to confirm account changes.
      </td>
    </tr>
    <tr>
      <th>Password:</th>
      <td>
        <input type="hidden" name="old_login" value="[% user.login FILTER html %]">
        <input type="password" name="old_password">
      </td>
    </tr>
    <tr>
      <td colspan="2"><hr></td>
    </tr>
  [% END %]

  [% IF user.authorizer.can_change_password %]
    <tr>
      <th>New password:</th>
      <td>
        <input type="password" name="new_password1">
      </td>
    </tr>

    <tr>
      <th>Confirm new password:</th>
      <td>
        <input type="password" name="new_password2">
      </td>
    </tr>
  [% END %]

  <tr>
    <th>Your real name (optional, but encouraged):</th>
    <td>
      <input size="35" name="realname" value="[% realname FILTER html %]">
    </td>
  </tr>  

  [% IF user.authorizer.can_change_email && Param('allowemailchange') %]
    [% IF login_change_date %]
      [% IF new_login_name %]
        <tr>
          <th>Pending email address:</th>
          <td>[% new_login_name FILTER html %]</td>
        </tr>
        <tr>
          <th>Change request expires:</th>
          <td>[% login_change_date FILTER time %]</td>
        </tr>
      [% ELSE %]
        <tr>
          <th>Confirmed email address:</th>
          <td>[% user.login FILTER html %]</td>
        </tr>
        <tr>
          <th>Completion date:</th>
          <td>[% login_change_date FILTER time %]</td>
        </tr>
      [% END %]
    [% ELSE %]
      <tr>
        <th>
          [% IF Param('emailsuffix') %]
            New login:
          [% ELSE %]
            New email address:
          [% END %]
        </th>
        <td>
          <input size="35" id="new_login_name" name="new_login_name"
                 [%- ' type="email"' UNLESS Param('emailsuffix') %]>
        </td>
      </tr>
    [% END %]
  [% END %]

  [% Hook.process('field') %]

</table>
