<?php
/*******************************************************************************
 * Copyright (c) 2012-2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Denis Roy (Eclipse Foundation)- initial API and implementation
 *    Christopher Guindon (Eclipse Foundation) - Bug 432355 - Update l&f of the Eclipse site login
 *******************************************************************************/

  if ($stage == "reset3") :
    include_once('en_index.php');
  else:
?>
    <div class="container padding-bottom" style="padding-top:2em;">
      <div class="col-md-16">
        <h1>Reset my password</h1>
        <?php print $Sitelogin->getSystemMessage();?>
        <?php if ($stage == "reset2") :?>
          <form name="frm-new-password" method="post" action="password_recovery.php">
            <div class="form-group clearfix">
              <label class="col-sm-6 control-label">New Password<span class="required">*</span></label>
              <div class="col-sm-16">
                <input id="msg_password1" tabindex="1" class="form-control" type="password" name="password1" value="" size="32" maxlength="255"/>
              </div>
            </div>

            <div class="form-group clearfix">
              <label class="col-sm-6 control-label">New Password (again)<span class="required">*</span></label>
              <div class="col-sm-16">
                <input id="msg_password2" tabindex="2" class="form-control" type="password" name="password2" value="" size="32" maxlength="255"/>
              </div>
            </div>

            <div class="form-group clearfix">
              <label class="col-sm-6 control-label">Verification <span class="required">*</span></label>
              <div class="col-sm-16">
                <?php print $Captcha->get_html();?>
              </div>
            </div>

            <div class="form-group clearfix">
              <div class="col-sm-24">
                <button id="btn_submit" type="submit" name="btn-submit" tabindex="4" class="btn btn-primary">Reset password</button>
                <input type="hidden" name="t" value="<?php print  $var_reset['token']; ?>" />
                <input type="hidden" name="token-password-reset" value="<?php print $Sitelogin->FormToken->getToken();?>" />
                <input type="hidden" name="reset-account-email-req" value="" />
              </div>
            </div>
          </form>
        <?php else:?>
          <p>So you lost the sticky note that your password was written on?
          No worries -- just enter your email address and we'll send you instructions
          for resetting your password.</p>
          <form name="frm_passwd" id="frm_passwd" class="form-horizontal" method="post">
            <div class="form-group">
              <label class="col-sm-6 control-label">Email address <span class="required">*</span></label>
              <div class="col-sm-16">
                <input class="form-control" autofocus="autofocus" type="text"  name="username" value="" size="42" maxlength="255" placeholder="Enter email"/>
              </div>
            </div>
            <button type="submit" name="btn_submit" class="btn btn-warning" >Continue</button>
            <input type="hidden" name="stage" value="reset" />
            <input type="hidden" name="token-password-recovery" value="<?php print $Sitelogin->FormToken->getToken();?>" />
            <input type="hidden" name="recover-account-email-req" value="" />
          </form>
        <?php endif;?>
      </div>
      <div class="col-md-6 col-md-offset-2">
        <div class="sideitem background-white">
          <h6>Related Links</h6>
          <ul>
            <li><a href="index.php">Create Account</a></li>
            <li><a href="https://www.eclipse.org/legal/termsofuse.php">Term of use</a></li>
            <li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
          </ul>
        </div>
      </div>
    </div>
  <?php endif;?>