bitaddress.org/src/ninja.bulkwallet.js
2013-08-27 22:05:31 -04:00

73 lines
No EOL
2.8 KiB
JavaScript

ninja.wallets.bulkwallet = {
open: function () {
document.getElementById("bulkarea").style.display = "block";
// show a default CSV list if the text area is empty
if (document.getElementById("bulktextarea").value == "") {
// return control of the thread to the browser to render the tab switch UI then build a default CSV list
setTimeout(function () { ninja.wallets.bulkwallet.buildCSV(3, 1, document.getElementById("bulkcompressed").checked); }, 200);
}
},
close: function () {
document.getElementById("bulkarea").style.display = "none";
},
// use this function to bulk generate addresses
// rowLimit: number of Bitcoin Addresses to generate
// startIndex: add this number to the row index for output purposes
// returns:
// index,bitcoinAddress,privateKeyWif
buildCSV: function (rowLimit, startIndex, compressedAddrs) {
var bulkWallet = ninja.wallets.bulkwallet;
document.getElementById("bulktextarea").value = ninja.translator.get("bulkgeneratingaddresses") + rowLimit;
bulkWallet.csv = [];
bulkWallet.csvRowLimit = rowLimit;
bulkWallet.csvRowsRemaining = rowLimit;
bulkWallet.csvStartIndex = --startIndex;
bulkWallet.compressedAddrs = !!compressedAddrs;
setTimeout(bulkWallet.batchCSV, 0);
},
csv: [],
csvRowsRemaining: null, // use to keep track of how many rows are left to process when building a large CSV array
csvRowLimit: 0,
csvStartIndex: 0,
batchCSV: function () {
var bulkWallet = ninja.wallets.bulkwallet;
if (bulkWallet.csvRowsRemaining > 0) {
bulkWallet.csvRowsRemaining--;
var key = new Bitcoin.ECKey(false);
key.setCompressed(bulkWallet.compressedAddrs);
bulkWallet.csv.push((bulkWallet.csvRowLimit - bulkWallet.csvRowsRemaining + bulkWallet.csvStartIndex)
+ ",\"" + key.getBitcoinAddress() + "\",\"" + key.toString("wif")
//+ "\",\"" + key.toString("wifcomp") // uncomment these lines to add different private key formats to the CSV
//+ "\",\"" + key.getBitcoinHexFormat()
//+ "\",\"" + key.toString("base64")
+ "\"");
document.getElementById("bulktextarea").value = ninja.translator.get("bulkgeneratingaddresses") + bulkWallet.csvRowsRemaining;
// release thread to browser to render UI
setTimeout(bulkWallet.batchCSV, 0);
}
// processing is finished so put CSV in text area
else if (bulkWallet.csvRowsRemaining === 0) {
document.getElementById("bulktextarea").value = bulkWallet.csv.join("\n");
}
},
openCloseFaq: function (faqNum) {
// do close
if (document.getElementById("bulka" + faqNum).style.display == "block") {
document.getElementById("bulka" + faqNum).style.display = "none";
document.getElementById("bulke" + faqNum).setAttribute("class", "more");
}
// do open
else {
document.getElementById("bulka" + faqNum).style.display = "block";
document.getElementById("bulke" + faqNum).setAttribute("class", "less");
}
}
};