+ // Calculate and display
+ var passphrase = DOM.passphrase.val();
+ calcBip32RootKeyFromSeed(phrase, passphrase);
+ calcForDerivationPath();
+ hidePending();
+ }
+
+ function delayedRootKeyChanged() {
+ // Warn if there is an existing mnemonic or passphrase.
+ if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
+ if (!confirm("This will clear existing mnemonic and passphrase")) {
+ DOM.rootKey.val(bip32RootKey);
+ return
+ }
+ }
+ hideValidationError();
+ showPending();
+ // Clear existing mnemonic and passphrase
+ DOM.phrase.val("");
+ DOM.passphrase.val("");
+ seed = null;
+ if (rootKeyChangedTimeoutEvent != null) {
+ clearTimeout(rootKeyChangedTimeoutEvent);
+ }
+ rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
+ }
+
+ function rootKeyChanged() {
+ showPending();
+ hideValidationError();
+ // Validate the root key TODO
+ var rootKeyBase58 = DOM.rootKey.val();
+ var errorText = validateRootKey(rootKeyBase58);
+ if (errorText) {
+ showValidationError(errorText);
+ return;
+ }
+ // Calculate and display
+ calcBip32RootKeyFromBase58(rootKeyBase58);
+ calcForDerivationPath();
+ hidePending();
+ }
+
+ function calcForDerivationPath() {
+ showPending();
+ hideValidationError();