<?xml version="1.0"?>
<!--
 * ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (the "MPL"); you may not use this file
 * except in compliance with the MPL. You may obtain a copy of
 * the MPL at http://www.mozilla.org/MPL/
 *
 * Software distributed under the MPL is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the MPL for the specific language governing
 * rights and limitations under the MPL.
 *
 * The Original Code is Enigmail.
 *
 * The Initial Developer of the Original Code is Patrick Brunschwig.
 * Portions created by Patrick Brunschwig <patrick@enigmail.net> are
 * Copyright (C) 2003 Patrick Brunschwig. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 * ***** END LICENSE BLOCK ***** *
-->

<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://enigmail/skin/enigmail.css" type="text/css"?>

<!DOCTYPE window [
<!ENTITY % brandDTD SYSTEM "chrome://global/locale/brand.dtd" >
%brandDTD;
<!ENTITY % enigMailDTD SYSTEM "chrome://enigmail/locale/enigmail.dtd" >
%enigMailDTD;
]>

<dialog id="enigmailChangePwdDlg"
        title="&enigmail.changePasswd.title;"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload="onLoad()"
        ondialogaccept="return onAccept();">


  <vbox>
    <label id="userId" value="..."/>
    <separator/>
    <grid>
      <columns>
        <column/>
        <column flex="1"/>
      </columns>
      <rows>
        <row align="center">
          <label value="&enigmail.changePasswd.currPasswd.label; :" control="currPasswd"/>
          <textbox id="currPasswd" value="" size="20" type="password"/>
        </row>
        <row align="center">
          <label value="&enigmail.changePasswd.newPasswd.label; :" control="newPasswd"/>
          <textbox id="newPasswd" value="" size="20" type="password"/>
        </row>
        <row align="center">
          <label value="&enigmail.changePasswd.repeatPasswd.label; :" control="repeatPasswd"/>
          <textbox id="repeatPasswd" value="" size="20" type="password"/>
        </row>
      </rows>
    </grid>
  </vbox>

  <script type="application/x-javascript">
  <![CDATA[

  Components.utils.import("resource://enigmail/enigmailCommon.jsm");
  Components.utils.import("resource://enigmail/keyManagement.jsm");

  const Ec = EnigmailCommon;

  function onLoad() {
    var uid = window.window.arguments[0].userId +" - 0x"+ window.arguments[0].keyId.substr(-8,8);
    document.getElementById("userId").value = uid;
  }

  function onAccept() {
    var enigmailSvc = Ec.getService();
    if (!enigmailSvc)
      return false;


    var currPasswd = document.getElementById("currPasswd").value;
    var newPasswd = document.getElementById("newPasswd").value;
    var repeatPasswd = document.getElementById("repeatPasswd").value;
    if (newPasswd.length == 0 && repeatPasswd.length == 0) {
      if (! Ec.confirmDlg(window, Ec.getString("removePassphrase"), Ec.getString("keyMan.button.removePass"))) {
        return false;
      }
    }
    else {
      if (newPasswd.length < 8) {
        Ec.alert(window, Ec.getString("passphrase.min8keys"));
        return false;
      }
      if (newPasswd != repeatPasswd) {
        Ec.alert(window, Ec.getString("passNoMatch"));
        return false;
      }

      if (newPasswd.search(/[^\x20-\x7E]/)>=0) {
        if (! Ec.confirmDlg(window, Ec.getString("keygen.passCharProblem"),
              Ec.getString("dlg.button.ignore"), Ec.getString("dlg.button.cancel"))) {
          return false;
        }
      }
    }

    EnigmailKeyMgmt.changePassphrase(window, window.arguments[0].keyId,
        Ec.convertFromUnicode(currPasswd),
        Ec.convertFromUnicode(newPasswd),
      function _changePwdCb(exitCode, errorMsg) {
        if (exitCode != 0) {
          Ec.alert(window, Ec.getString("changePassFailed")+"\n\n"+errorMsg);
        }
        else
          window.close();
      });

    return false;
  }

  ]]>
  </script>
</dialog>


