+ function getLanguageFromUrl() {
+ return window.location.hash.substring(1);
+ }
+
+ function setMnemonicLanguage() {
+ var language = getLanguage();
+ // Load the bip39 mnemonic generator for this language if required
+ if (!(language in mnemonics)) {
+ mnemonics[language] = new Mnemonic(language);
+ }
+ mnemonic = mnemonics[language];
+ }
+
+ function convertPhraseToNewLanguage() {
+ var oldLanguage = getLanguageFromPhrase();
+ var newLanguage = getLanguageFromUrl();
+ var oldPhrase = DOM.phrase.val();
+ var oldWords = phraseToWordArray(oldPhrase);
+ var newWords = [];
+ for (var i=0; i<oldWords.length; i++) {
+ var oldWord = oldWords[i];
+ var index = WORDLISTS[oldLanguage].indexOf(oldWord);
+ var newWord = WORDLISTS[newLanguage][index];
+ newWords.push(newWord);
+ }
+ newPhrase = wordArrayToPhrase(newWords);
+ return newPhrase;
+ }
+
+ // TODO look at jsbip39 - mnemonic.splitWords
+ function phraseToWordArray(phrase) {
+ var words = phrase.split(/\s/g);
+ var noBlanks = [];
+ for (var i=0; i<words.length; i++) {
+ var word = words[i];
+ if (word.length > 0) {
+ noBlanks.push(word);
+ }
+ }
+ return noBlanks;
+ }
+
+ // TODO look at jsbip39 - mnemonic.joinWords
+ function wordArrayToPhrase(words) {
+ var phrase = words.join(" ");
+ var language = getLanguageFromPhrase(phrase);
+ if (language == "japanese") {
+ phrase = words.join("\u3000");
+ }
+ return phrase;
+ }
+
+ var networks = [
+ {
+ name: "Bitcoin",
+ onSelect: function() {
+ network = bitcoin.networks.bitcoin;
+ DOM.bip44coin.val(0);
+ },
+ },
+ {
+ name: "Bitcoin Testnet",
+ onSelect: function() {
+ network = bitcoin.networks.testnet;
+ DOM.bip44coin.val(1);
+ },
+ },
+ {
+ name: "Litecoin",
+ onSelect: function() {
+ network = bitcoin.networks.litecoin;
+ DOM.bip44coin.val(2);
+ },
+ },
+ {
+ name: "Dogecoin",
+ onSelect: function() {
+ network = bitcoin.networks.dogecoin;
+ DOM.bip44coin.val(3);
+ },
+ },
+ {
+ name: "ShadowCash",
+ onSelect: function() {
+ network = bitcoin.networks.shadow;
+ DOM.bip44coin.val(35);
+ },
+ },
+ {
+ name: "ShadowCash Testnet",
+ onSelect: function() {
+ network = bitcoin.networks.shadowtn;
+ DOM.bip44coin.val(1);
+ },
+ },
+ {
+ name: "Viacoin",
+ onSelect: function() {
+ network = bitcoin.networks.viacoin;
+ DOM.bip44coin.val(14);
+ },
+ },
+ {
+ name: "Viacoin Testnet",
+ onSelect: function() {
+ network = bitcoin.networks.viacointestnet;
+ DOM.bip44coin.val(1);
+ },
+ },
+ {
+ name: "Jumbucks",
+ onSelect: function() {
+ network = bitcoin.networks.jumbucks;
+ DOM.bip44coin.val(26);
+ },
+ },
+ {
+ name: "CLAM",
+ onSelect: function() {
+ network = bitcoin.networks.clam;
+ DOM.bip44coin.val(23);
+ },
+ },
+ {
+ name: "DASH",
+ onSelect: function() {
+ network = bitcoin.networks.dash;
+ DOM.bip44coin.val(5);
+ },
+ },
+ {
+ name: "Namecoin",
+ onSelect: function() {
+ network = bitcoin.networks.namecoin;
+ DOM.bip44coin.val(7);
+ },
+ },
+ {
+ name: "Peercoin",
+ onSelect: function() {
+ network = bitcoin.networks.peercoin;
+ DOM.bip44coin.val(6);
+ },
+ },
+ ]
+