diff --git a/account.js b/account.js index 536e417..1ca2b19 100644 --- a/account.js +++ b/account.js @@ -113,19 +113,19 @@ var AccountSettings = new function() { }); } - this.bind = function() { + this.bind = function(success, error) { setDoubleEncryptionButton(); bindAccountButtons(); - getAccountInfo(); + getAccountInfo(success, error); } this.init = function(container, success, error) { MyWallet.setLoadingText('Loading Account Settings'); if (!container.is(':empty')) { - AccountSettings.bind(); + AccountSettings.bind(success, error); success(); return; } @@ -138,7 +138,7 @@ var AccountSettings = new function() { try { container.html(html); - AccountSettings.bind(); + AccountSettings.bind(success, error); success(); } catch (e) { @@ -156,7 +156,7 @@ var AccountSettings = new function() { } //Get email address, secret phrase, yubikey etc. - function getAccountInfo() { + function getAccountInfo(success, error) { $('a[data-toggle="tab"]').unbind().on('show', function(e) { $(e.target.hash).trigger('show'); @@ -386,7 +386,12 @@ var AccountSettings = new function() { }; }, function(data) { - MyWallet.makeNotice('error', 'misc-error', data.responseText); + if (data.responseText) + MyWallet.makeNotice('error', 'misc-error', data.responseText); + else + MyWallet.makeNotice('error', 'misc-error', 'Error Downloading Account Settings'); + + if (error) error(); }); } diff --git a/account.min.js b/account.min.js index 8d0a3d9..ac2ea26 100644 --- a/account.min.js +++ b/account.min.js @@ -1 +1 @@ -var AccountSettings=new function(){function b(n){var m=n.lastIndexOf("@");var l=n.lastIndexOf(".");return(m0&&n.indexOf("@@")==-1&&l>2&&(n.length-l)>2)}function c(l){try{var m=window.applicationCache;console.log("Clear Cache Manifest");m.addEventListener("updateready",function(o){m.swapCache();if(l){l()}},false);m.addEventListener("noupdate",function(o){if(l){l()}},false);m.addEventListener("error",function(o){if(l){l()}},false);m.update()}catch(n){console.log(n);if(l){l()}}}function i(l,p,n,o,m){n=$.trim(n);if(n.length==0){MyWallet.makeNotice("error","misc-error",l+": Invalid value");return}if(n.length==0){MyWallet.makeNotice("error",p+"-error",data.responseText);if(m){m()}return}MyWallet.setLoadingText(l);MyWallet.securePost("wallet",{length:(n+"").length,payload:n+"",method:p},function(q){MyWallet.makeNotice("success",p+"-success",q);if(o){o()}},function(q){MyWallet.makeNotice("error",p+"-error",q.responseText);if(m){m()}})}function h(){if(MyWallet.getDoubleEncryption()){$(".double-encryption-off").hide();$(".double-encryption-on").show()}else{$(".double-encryption-on").hide();$(".double-encryption-off").show()}$("#double-password").val("");$("#double-password2").val("")}function k(){$("#password_mnemonic1").find("span").empty();$("#password_mnemonic2").find("span").empty()}function f(){k();var m=$("#password_mnemonic1");var l=$("#password_mnemonic2");loadScript("wallet/mnemonic.js",function(){MyWallet.getMainPassword(function(n){MyWallet.getSecondPassword(function(o){try{m.show().find("span").text(mn_encode_pass(n));if(o){l.show().find("span").text(mn_encode_pass(o))}else{l.hide()}}catch(p){console.log(p);e()}},function(){e()})},function(){e()})})}this.bind=function(){h();d();a()};this.init=function(l,n,m){MyWallet.setLoadingText("Loading Account Settings");if(!l.is(":empty")){AccountSettings.bind();n();return}$.ajax({type:"GET",url:root+"wallet/account-settings-template",data:{format:"plain"},success:function(o){try{l.html(o);AccountSettings.bind();n()}catch(p){console.log(p);m()}},error:function(o){MyWallet.makeNotice("error","misc-error","Error Downloading Account Settings Template");m()}})};function a(){$('a[data-toggle="tab"]').unbind().on("show",function(l){$(l.target.hash).trigger("show")});MyWallet.setLoadingText("Getting Wallet Info");MyWallet.securePost("wallet",{method:"get-info",format:"json"},function(r){if(r.email!=null){$("#wallet-email").val(r.email);$(".my-email").text(r.email)}$("#wallet-phrase").val(r.phrase);$("#two-factor-select").val(r.auth_type);$(".two-factor").hide();$(".two-factor.t"+r.auth_type).show(200);var s=$("#notifications-type");s.find(":checkbox").prop("checked",false);s.find('[class^="type"]').hide();for(var t in r.notifications_type){var u=r.notifications_type[t];s.find(':checkbox[value="'+u+'"]').prop("checked",true);s.find(".type-"+u).show()}$(".logl").hide();$(".logl.l"+r.logging_level).show();$("#logging-level").val(r.logging_level);$("#notifications-confirmations").val(r.notifications_confirmations);$("#notifications-on").val(r.notifications_on);if(r.alias!=null&&r.alias.length>0){$("#wallet-alias").val(r.alias);$(".alias").text("https://blockchain.info/wallet/"+r.alias);$(".alias").show(200)}var m=$("#local_currency").empty();for(var v in r.currencies){var y=r.currencies[v];m.append('")}m.val(r.currency);var p=$("#language_select").empty();for(var q in r.languages){var x=r.languages[q];p.append('")}p.val(r.language);if(r.auto_email_backup==1){$("#auto-email-backup").prop("checked",true)}else{$("#auto-email-backup").prop("checked",false)}if(r.never_save_auth_type==1){$("#never-save-auth-type").prop("checked",true)}else{$("#never-save-auth-type").prop("checked",false)}if(r.google_secret_url!=null&&r.google_secret_url.length>0){loadScript("wallet/jquery.qrcode.min.js",function(){$("#wallet-google-qr").empty().qrcode({width:300,height:300,text:r.google_secret_url})})}$("#wallet-http-url").val(r.http_url);$("#wallet-skype").val(r.skype_username);$("#wallet-boxcar").val(r.boxcar_email);$("#wallet-yubikey").val(r.yubikey);if(r.password_hint1){$("#password-hint1").val(r.password_hint1)}if(r.password_hint2){$("#password-hint2").val(r.password_hint2)}$("#ip-lock").val(r.ip_lock);$("#my-ip").text(r.my_ip);if(r.ip_lock_on==1){$("#ip-lock-on").prop("checked",true)}else{$("#ip-lock-on").prop("checked",false)}$('input[name="fee-policy"]').each(function(){if(parseInt($(this).val())==MyWallet.getFeePolicy()){$(this).attr("checked",true)}});if(MyWallet.getAlwaysKeepLocalBackup()){$('input[name="always-keep-local-backup"]').attr("checked",true)}else{$('input[name="always-keep-local-backup"]').attr("checked",false)}$('input[name="inactivity-logout-time"]').each(function(){if(parseInt($(this).val())==MyWallet.getLogoutTime()){$(this).attr("checked",true)}});if(r.email_verified==0){$("#verify-email").show();$("#email-verified").hide()}else{$("#verify-email").hide();$("#email-verified").show()}$("#my-ip").text(r.my_ip);var l="1";if(r.sms_number){var o=r.sms_number.split(" ");if(r.sms_number[0]=="+"&&o.length>1){l=o[0].substring(1);$(".wallet-sms").val(o[1])}else{$(".wallet-sms").val(r.sms_number)}}if(r.sms_verified==0){$(".sms-unverified").show();$(".sms-verified").hide()}else{$(".sms-verified").show().trigger("show");$(".sms-unverified").hide()}$.ajax({type:"GET",url:resource+"wallet/country_codes.html",success:function(z){$('select[class="wallet-sms-country-codes"]').html(z).val(l)},error:function(){MyWallet.makeNotice("error","misc-error","Error Downloading SMS Country Codes")}});var w=function(D,A,B){try{if(window.webkitNotifications&&navigator.userAgent.indexOf("Chrome")>-1){var z=webkitNotifications.checkPermission();if(z==1&&B){webkitNotifications.requestPermission(w)}else{if(z==0){D()}else{A()}}}else{if(window.Notification){if(Notification.permissionLevel()==="default"&&B){Notification.requestPermission(w)}else{if(window.Notification.permissionLevel()=="granted"){D()}else{A()}}}else{A()}}}catch(C){console.log(C);A()}};var n=$("#html5-notifications-checkbox");n.unbind().change(function(){if($(this).is(":checked")){w(function(){MyWallet.makeNotice("success","misc-success","HTML5 Notifications Enabled");MyWallet.setHTML5Notifications(true);MyWallet.backupWallet()},function(){MyWallet.makeNotice("error","misc-error","Error Enabling HTML5 Notifications");MyWallet.setHTML5Notifications(false);MyWallet.backupWallet()},true)}else{MyWallet.setHTML5Notifications(false);MyWallet.backupWallet()}});if(MyWallet.getHTML5Notifications()){n.attr("checked",true)}else{n.attr("checked",false)}},function(l){MyWallet.makeNotice("error","misc-error",l.responseText)})}function j(){e();var l=$("#update-password-modal");l.modal({keyboard:true,backdrop:"static",show:true});l.center();l.find(".btn.btn-primary").unbind().click(function(){l.modal("hide");var m=$.trim($("#password").val());var n=$.trim($("#password2").val());if(m!=n){MyWallet.makeNotice("error","misc-error","Passwords do not match.");return false}if(m.length==0||m.length<10||m.length>255){MyWallet.makeNotice("error","misc-error","Password length must be between least 10 & 255 characters");return false}MyWallet.setMainPassword(m)});l.find(".btn.btn-secondary").unbind().click(function(){l.modal("hide")})}function e(){$(".accordion-body").collapse("hide")}function g(m){var l=$("#double-password").val();var n=$("#double-password2").val();if(l==null||l.length==0||l.length<4||l.length>255){MyWallet.makeNotice("error","misc-error","Password must be 4 characters or more in length");return}if(l!=n){MyWallet.makeNotice("error","misc-error","Passwords do not match.");return}if(MyWallet.isCorrectMainPassword(l)){MyWallet.makeNotice("error","misc-error","Second password should not be the same as your main password.");return}MyWallet.setDoubleEncryption(m,l,function(){h()})}function d(){var l=$("#notifications-type");l.find(":checkbox").unbind().change(function(){var o=[];l.find(":checkbox:checked").each(function(){o.push($(this).val())});if(!o.length){o.push(0)}i("Updating Notifications Type","update-notifications-type",o.join("|"));l.find(".type-"+$(this).val()).toggle();MyWallet.get_history()});$("input[name=fee-policy]").unbind().change(function(){MyWallet.setFeePolicy($("input[name=fee-policy]:checked").val());MyWallet.backupWallet()});$('input[name="always-keep-local-backup"]').unbind().change(function(){MyWallet.setAlwaysKeepLocalBackup($(this).is(":checked"));try{localStorage.removeItem("payload")}catch(o){}MyWallet.backupWallet()});$("input[name=inactivity-logout-time]").unbind().change(function(){MyWallet.setLogoutTime(parseInt($(this).val()));MyWallet.backupWallet()});$("#password_mnemonic").unbind().on("show",function(){f()}).on("hide",function(){k()});$("#pairing_code").unbind().on("show",function(){var o=$("#device-qr-code");o.empty();MyWallet.makePairingQRCode(function(p){o.empty().append(p);setTimeout(function(){o.empty();e()},30000)})});$("#update-password-btn").unbind().click(function(){j()});$("#password-hint1").unbind().change(function(){i("Updating Main Password Hint","update-password-hint1",$(this).val())});$("#password-hint2").unbind().change(function(){i("Updating Second Password Hint","update-password-hint2",$(this).val())});$("#ip-lock-on").unbind().change(function(){i("Updating IP Lock","update-ip-lock-on",$(this).is(":checked"))});$("#ip-lock").unbind().change(function(){i("Updating Locked Ip Addresses","update-ip-lock",$(this).val())});$("#notifications-on").unbind().change(function(){i("Updating Notifications Settings","update-notifications-on",$(this).val())});$("#auto-email-backup").unbind().change(function(){i("Updating Auto Backup Settings","update-auto-email-backup",$(this).is(":checked"))});$("#never-save-auth-type").unbind().change(function(){i("Updating Auth Saving Settings","update-never-save-auth-type",$(this).is(":checked"))});$("#two-factor-select").unbind().change(function(){var o=parseInt($(this).val());i("Updating Two Factor Authentication","update-auth-type",o,function(){if(o==4){a()}else{if(o!=0&&!MyWallet.getAlwaysKeepLocalBackup()){try{localStorage.removeItem("payload")}catch(p){}}}MyWallet.setRealAuthType(o)});$(".two-factor").hide(200);$(".two-factor.t"+o).show(200)});var m="";$("#wallet-email-send").click(function(){m="";$("#wallet-email").trigger("change")});$("#wallet-email").unbind().change(function(p){var o=$.trim($(this).val());if(o.length==0){return}if(m==o){return}if(!b(o)){MyWallet.makeNotice("error","misc-error","Email address is not valid");return}i("Updating Email","update-email",o,function(){m=o},function(){m=""});m=o;$("#verify-email").show(200);$("#email-verified").hide()});$("#wallet-double-encryption-enable").unbind().click(function(o){e();g(true)});$("#wallet-double-encryption-disable").unbind().click(function(o){e();g(false)});$("#wallet-email-code").unbind().change(function(p){var o=$.trim($(this).val());if(o.length==0||o.length>255){MyWallet.makeNotice("error","misc-error","You must enter a code to verify");return}MyWallet.setLoadingText("Verifying Email");MyWallet.securePost("wallet",{payload:o,length:o.length,method:"verify-email"},function(q){MyWallet.makeNotice("success","misc-success",q);$("#verify-email").hide();$("#email-verified").show(200)},function(q){MyWallet.makeNotice("error","misc-error",q.responseText);$("#verify-email").show(200);$("#email-verified").hide()})});$(".wallet-sms-code").unbind().change(function(p){var o=$.trim($(this).val());if(o.length==0||o.length>255){MyWallet.makeNotice("error","misc-error","You must enter an SMS code to verify");return}MyWallet.setLoadingText("Verifying SMS Code");MyWallet.securePost("wallet",{payload:o,length:o.length,method:"verify-sms"},function(q){MyWallet.makeNotice("success","misc-success",q);$(".sms-unverified").hide();$(".sms-verified").show(200).trigger("show")},function(q){MyWallet.makeNotice("error","misc-error",q.responseText);$(".sms-verified").hide();$(".sms-unverified").show(200)})});var n="";$(".send-code").unbind().click(function(){n="";$(this).parent().find(".wallet-sms").trigger("change")});$('select[class="wallet-sms-country-codes"]').unbind().change(function(){n="";$(".wallet-sms").trigger("change")});$(".wallet-sms").unbind().change(function(){var o=$.trim($(this).val());if(o==null||o.length==0){return}if(o.charAt(0)!="+"){o="+"+$(".wallet-sms-country-codes").val()+o}if(n==o){return}n=o;i("Updating Cell Number","update-sms",o,function(){$(".sms-unverified").show(200);$(".sms-verified").hide()})});$("#run-key-check").unbind().click(function(){MyWallet.getSecondPassword(function(){try{MyWallet.checkAllKeys(true);MyWallet.backupWallet()}catch(o){MyWallet.makeNotice("error","misc-error",o)}})});$("#local_currency").unbind().change(function(){if(symbol!=symbol_local){toggleSymbol()}i("Updating Local Currency","update-currency",$(this).val(),function(){MyWallet.get_history()})});$("#language_select").unbind().change(function(){i("Updating Language","update-language",$(this).val(),function(){c(function(){window.location.reload()})})});$("#notifications-confirmations").unbind().change(function(o){i("Updating Notification Confirmations","update-notifications-confirmations",$(this).val())});$("#account-logging").unbind().on("show",function(){var p=$(this).find("table").hide();var o=p.find("tbody");MyWallet.securePost("wallet",{method:"list-logs",format:"json"},function(u){try{p.show();o.empty();if(u==null){throw"Failed to get backups"}var s=u.results;if(s.length==0){throw"No logs found"}for(var r in s){var q=s[r];o.append(''+dateToString(new Date(q.time))+''+q.action+''+q.ip_address+""+q.user_agent+"")}}catch(t){MyWallet.makeNotice("error","misc-error",t)}},function(q){MyWallet.makeNotice("error","misc-error",q.responseText)})});$("#logging-level").unbind().change(function(o){$(".logl").hide();$(".logl.l"+$(this).val()).show();i("Updating Logging Level","update-logging-level",$(this).val(),function(){$("#account-logging").trigger("show")})});$("#wallet-yubikey").unbind().change(function(o){i("Updating Yubikey","update-yubikey",$(this).val())});$("#wallet-skype").unbind().change(function(o){i("Updating Skype Username","update-skype",$(this).val())});$("#wallet-boxcar").unbind().change(function(o){i("Updating Boxcar Email","update-boxcar",$(this).val())});$("#wallet-http-url").unbind().change(function(o){i("Updating HTTP url","update-http-url",$(this).val())});$("#wallet-phrase").unbind().change(function(p){var o=$.trim($(this).val());if(o==null||o.length==0||o.length>255){MyWallet.makeNotice("error","misc-error","You must enter a secret phrase");return}i("Updating Secret Phrase","update-phrase",o)});$("#wallet-alias").unbind().change(function(r){var q=$(this);var o=$.trim(q.val());q.val(q.val().replace(/[\.,\/ #!$%\^&\*;:{}=`~()]/g,""));var p=$.trim(q.val());if(p.length>0){$(".alias").fadeIn(200);$(".alias").text("https://blockchain.info/wallet/"+p)}i("Updating Alias","update-alias",p,null,function(){q.val(o)})})}}; \ No newline at end of file +var AccountSettings=new function(){function b(n){var m=n.lastIndexOf("@");var l=n.lastIndexOf(".");return(m0&&n.indexOf("@@")==-1&&l>2&&(n.length-l)>2)}function c(l){try{var m=window.applicationCache;console.log("Clear Cache Manifest");m.addEventListener("updateready",function(o){m.swapCache();if(l){l()}},false);m.addEventListener("noupdate",function(o){if(l){l()}},false);m.addEventListener("error",function(o){if(l){l()}},false);m.update()}catch(n){console.log(n);if(l){l()}}}function i(l,p,n,o,m){n=$.trim(n);if(n.length==0){MyWallet.makeNotice("error","misc-error",l+": Invalid value");return}if(n.length==0){MyWallet.makeNotice("error",p+"-error",data.responseText);if(m){m()}return}MyWallet.setLoadingText(l);MyWallet.securePost("wallet",{length:(n+"").length,payload:n+"",method:p},function(q){MyWallet.makeNotice("success",p+"-success",q);if(o){o()}},function(q){MyWallet.makeNotice("error",p+"-error",q.responseText);if(m){m()}})}function h(){if(MyWallet.getDoubleEncryption()){$(".double-encryption-off").hide();$(".double-encryption-on").show()}else{$(".double-encryption-on").hide();$(".double-encryption-off").show()}$("#double-password").val("");$("#double-password2").val("")}function k(){$("#password_mnemonic1").find("span").empty();$("#password_mnemonic2").find("span").empty()}function f(){k();var m=$("#password_mnemonic1");var l=$("#password_mnemonic2");loadScript("wallet/mnemonic.js",function(){MyWallet.getMainPassword(function(n){MyWallet.getSecondPassword(function(o){try{m.show().find("span").text(mn_encode_pass(n));if(o){l.show().find("span").text(mn_encode_pass(o))}else{l.hide()}}catch(p){console.log(p);e()}},function(){e()})},function(){e()})})}this.bind=function(m,l){h();d();a(m,l)};this.init=function(l,n,m){MyWallet.setLoadingText("Loading Account Settings");if(!l.is(":empty")){AccountSettings.bind(n,m);n();return}$.ajax({type:"GET",url:root+"wallet/account-settings-template",data:{format:"plain"},success:function(o){try{l.html(o);AccountSettings.bind(n,m);n()}catch(p){console.log(p);m()}},error:function(o){MyWallet.makeNotice("error","misc-error","Error Downloading Account Settings Template");m()}})};function a(m,l){$('a[data-toggle="tab"]').unbind().on("show",function(n){$(n.target.hash).trigger("show")});MyWallet.setLoadingText("Getting Wallet Info");MyWallet.securePost("wallet",{method:"get-info",format:"json"},function(t){if(t.email!=null){$("#wallet-email").val(t.email);$(".my-email").text(t.email)}$("#wallet-phrase").val(t.phrase);$("#two-factor-select").val(t.auth_type);$(".two-factor").hide();$(".two-factor.t"+t.auth_type).show(200);var u=$("#notifications-type");u.find(":checkbox").prop("checked",false);u.find('[class^="type"]').hide();for(var v in t.notifications_type){var w=t.notifications_type[v];u.find(':checkbox[value="'+w+'"]').prop("checked",true);u.find(".type-"+w).show()}$(".logl").hide();$(".logl.l"+t.logging_level).show();$("#logging-level").val(t.logging_level);$("#notifications-confirmations").val(t.notifications_confirmations);$("#notifications-on").val(t.notifications_on);if(t.alias!=null&&t.alias.length>0){$("#wallet-alias").val(t.alias);$(".alias").text("https://blockchain.info/wallet/"+t.alias);$(".alias").show(200)}var o=$("#local_currency").empty();for(var x in t.currencies){var A=t.currencies[x];o.append('")}o.val(t.currency);var r=$("#language_select").empty();for(var s in t.languages){var z=t.languages[s];r.append('")}r.val(t.language);if(t.auto_email_backup==1){$("#auto-email-backup").prop("checked",true)}else{$("#auto-email-backup").prop("checked",false)}if(t.never_save_auth_type==1){$("#never-save-auth-type").prop("checked",true)}else{$("#never-save-auth-type").prop("checked",false)}if(t.google_secret_url!=null&&t.google_secret_url.length>0){loadScript("wallet/jquery.qrcode.min.js",function(){$("#wallet-google-qr").empty().qrcode({width:300,height:300,text:t.google_secret_url})})}$("#wallet-http-url").val(t.http_url);$("#wallet-skype").val(t.skype_username);$("#wallet-boxcar").val(t.boxcar_email);$("#wallet-yubikey").val(t.yubikey);if(t.password_hint1){$("#password-hint1").val(t.password_hint1)}if(t.password_hint2){$("#password-hint2").val(t.password_hint2)}$("#ip-lock").val(t.ip_lock);$("#my-ip").text(t.my_ip);if(t.ip_lock_on==1){$("#ip-lock-on").prop("checked",true)}else{$("#ip-lock-on").prop("checked",false)}$('input[name="fee-policy"]').each(function(){if(parseInt($(this).val())==MyWallet.getFeePolicy()){$(this).attr("checked",true)}});if(MyWallet.getAlwaysKeepLocalBackup()){$('input[name="always-keep-local-backup"]').attr("checked",true)}else{$('input[name="always-keep-local-backup"]').attr("checked",false)}$('input[name="inactivity-logout-time"]').each(function(){if(parseInt($(this).val())==MyWallet.getLogoutTime()){$(this).attr("checked",true)}});if(t.email_verified==0){$("#verify-email").show();$("#email-verified").hide()}else{$("#verify-email").hide();$("#email-verified").show()}$("#my-ip").text(t.my_ip);var n="1";if(t.sms_number){var q=t.sms_number.split(" ");if(t.sms_number[0]=="+"&&q.length>1){n=q[0].substring(1);$(".wallet-sms").val(q[1])}else{$(".wallet-sms").val(t.sms_number)}}if(t.sms_verified==0){$(".sms-unverified").show();$(".sms-verified").hide()}else{$(".sms-verified").show().trigger("show");$(".sms-unverified").hide()}$.ajax({type:"GET",url:resource+"wallet/country_codes.html",success:function(B){$('select[class="wallet-sms-country-codes"]').html(B).val(n)},error:function(){MyWallet.makeNotice("error","misc-error","Error Downloading SMS Country Codes")}});var y=function(F,C,D){try{if(window.webkitNotifications&&navigator.userAgent.indexOf("Chrome")>-1){var B=webkitNotifications.checkPermission();if(B==1&&D){webkitNotifications.requestPermission(y)}else{if(B==0){F()}else{C()}}}else{if(window.Notification){if(Notification.permissionLevel()==="default"&&D){Notification.requestPermission(y)}else{if(window.Notification.permissionLevel()=="granted"){F()}else{C()}}}else{C()}}}catch(E){console.log(E);C()}};var p=$("#html5-notifications-checkbox");p.unbind().change(function(){if($(this).is(":checked")){y(function(){MyWallet.makeNotice("success","misc-success","HTML5 Notifications Enabled");MyWallet.setHTML5Notifications(true);MyWallet.backupWallet()},function(){MyWallet.makeNotice("error","misc-error","Error Enabling HTML5 Notifications");MyWallet.setHTML5Notifications(false);MyWallet.backupWallet()},true)}else{MyWallet.setHTML5Notifications(false);MyWallet.backupWallet()}});if(MyWallet.getHTML5Notifications()){p.attr("checked",true)}else{p.attr("checked",false)}},function(n){if(n.responseText){MyWallet.makeNotice("error","misc-error",n.responseText)}else{MyWallet.makeNotice("error","misc-error","Error Downloading Account Settings")}if(l){l()}})}function j(){e();var l=$("#update-password-modal");l.modal({keyboard:true,backdrop:"static",show:true});l.center();l.find(".btn.btn-primary").unbind().click(function(){l.modal("hide");var m=$.trim($("#password").val());var n=$.trim($("#password2").val());if(m!=n){MyWallet.makeNotice("error","misc-error","Passwords do not match.");return false}if(m.length==0||m.length<10||m.length>255){MyWallet.makeNotice("error","misc-error","Password length must be between least 10 & 255 characters");return false}MyWallet.setMainPassword(m)});l.find(".btn.btn-secondary").unbind().click(function(){l.modal("hide")})}function e(){$(".accordion-body").collapse("hide")}function g(m){var l=$("#double-password").val();var n=$("#double-password2").val();if(l==null||l.length==0||l.length<4||l.length>255){MyWallet.makeNotice("error","misc-error","Password must be 4 characters or more in length");return}if(l!=n){MyWallet.makeNotice("error","misc-error","Passwords do not match.");return}if(MyWallet.isCorrectMainPassword(l)){MyWallet.makeNotice("error","misc-error","Second password should not be the same as your main password.");return}MyWallet.setDoubleEncryption(m,l,function(){h()})}function d(){var l=$("#notifications-type");l.find(":checkbox").unbind().change(function(){var o=[];l.find(":checkbox:checked").each(function(){o.push($(this).val())});if(!o.length){o.push(0)}i("Updating Notifications Type","update-notifications-type",o.join("|"));l.find(".type-"+$(this).val()).toggle();MyWallet.get_history()});$("input[name=fee-policy]").unbind().change(function(){MyWallet.setFeePolicy($("input[name=fee-policy]:checked").val());MyWallet.backupWallet()});$('input[name="always-keep-local-backup"]').unbind().change(function(){MyWallet.setAlwaysKeepLocalBackup($(this).is(":checked"));try{localStorage.removeItem("payload")}catch(o){}MyWallet.backupWallet()});$("input[name=inactivity-logout-time]").unbind().change(function(){MyWallet.setLogoutTime(parseInt($(this).val()));MyWallet.backupWallet()});$("#password_mnemonic").unbind().on("show",function(){f()}).on("hide",function(){k()});$("#pairing_code").unbind().on("show",function(){var o=$("#device-qr-code");o.empty();MyWallet.makePairingQRCode(function(p){o.empty().append(p);setTimeout(function(){o.empty();e()},30000)})});$("#update-password-btn").unbind().click(function(){j()});$("#password-hint1").unbind().change(function(){i("Updating Main Password Hint","update-password-hint1",$(this).val())});$("#password-hint2").unbind().change(function(){i("Updating Second Password Hint","update-password-hint2",$(this).val())});$("#ip-lock-on").unbind().change(function(){i("Updating IP Lock","update-ip-lock-on",$(this).is(":checked"))});$("#ip-lock").unbind().change(function(){i("Updating Locked Ip Addresses","update-ip-lock",$(this).val())});$("#notifications-on").unbind().change(function(){i("Updating Notifications Settings","update-notifications-on",$(this).val())});$("#auto-email-backup").unbind().change(function(){i("Updating Auto Backup Settings","update-auto-email-backup",$(this).is(":checked"))});$("#never-save-auth-type").unbind().change(function(){i("Updating Auth Saving Settings","update-never-save-auth-type",$(this).is(":checked"))});$("#two-factor-select").unbind().change(function(){var o=parseInt($(this).val());i("Updating Two Factor Authentication","update-auth-type",o,function(){if(o==4){a()}else{if(o!=0&&!MyWallet.getAlwaysKeepLocalBackup()){try{localStorage.removeItem("payload")}catch(p){}}}MyWallet.setRealAuthType(o)});$(".two-factor").hide(200);$(".two-factor.t"+o).show(200)});var m="";$("#wallet-email-send").click(function(){m="";$("#wallet-email").trigger("change")});$("#wallet-email").unbind().change(function(p){var o=$.trim($(this).val());if(o.length==0){return}if(m==o){return}if(!b(o)){MyWallet.makeNotice("error","misc-error","Email address is not valid");return}i("Updating Email","update-email",o,function(){m=o},function(){m=""});m=o;$("#verify-email").show(200);$("#email-verified").hide()});$("#wallet-double-encryption-enable").unbind().click(function(o){e();g(true)});$("#wallet-double-encryption-disable").unbind().click(function(o){e();g(false)});$("#wallet-email-code").unbind().change(function(p){var o=$.trim($(this).val());if(o.length==0||o.length>255){MyWallet.makeNotice("error","misc-error","You must enter a code to verify");return}MyWallet.setLoadingText("Verifying Email");MyWallet.securePost("wallet",{payload:o,length:o.length,method:"verify-email"},function(q){MyWallet.makeNotice("success","misc-success",q);$("#verify-email").hide();$("#email-verified").show(200)},function(q){MyWallet.makeNotice("error","misc-error",q.responseText);$("#verify-email").show(200);$("#email-verified").hide()})});$(".wallet-sms-code").unbind().change(function(p){var o=$.trim($(this).val());if(o.length==0||o.length>255){MyWallet.makeNotice("error","misc-error","You must enter an SMS code to verify");return}MyWallet.setLoadingText("Verifying SMS Code");MyWallet.securePost("wallet",{payload:o,length:o.length,method:"verify-sms"},function(q){MyWallet.makeNotice("success","misc-success",q);$(".sms-unverified").hide();$(".sms-verified").show(200).trigger("show")},function(q){MyWallet.makeNotice("error","misc-error",q.responseText);$(".sms-verified").hide();$(".sms-unverified").show(200)})});var n="";$(".send-code").unbind().click(function(){n="";$(this).parent().find(".wallet-sms").trigger("change")});$('select[class="wallet-sms-country-codes"]').unbind().change(function(){n="";$(".wallet-sms").trigger("change")});$(".wallet-sms").unbind().change(function(){var o=$.trim($(this).val());if(o==null||o.length==0){return}if(o.charAt(0)!="+"){o="+"+$(".wallet-sms-country-codes").val()+o}if(n==o){return}n=o;i("Updating Cell Number","update-sms",o,function(){$(".sms-unverified").show(200);$(".sms-verified").hide()})});$("#run-key-check").unbind().click(function(){MyWallet.getSecondPassword(function(){try{MyWallet.checkAllKeys(true);MyWallet.backupWallet()}catch(o){MyWallet.makeNotice("error","misc-error",o)}})});$("#local_currency").unbind().change(function(){if(symbol!=symbol_local){toggleSymbol()}i("Updating Local Currency","update-currency",$(this).val(),function(){MyWallet.get_history()})});$("#language_select").unbind().change(function(){i("Updating Language","update-language",$(this).val(),function(){c(function(){window.location.reload()})})});$("#notifications-confirmations").unbind().change(function(o){i("Updating Notification Confirmations","update-notifications-confirmations",$(this).val())});$("#account-logging").unbind().on("show",function(){var p=$(this).find("table").hide();var o=p.find("tbody");MyWallet.securePost("wallet",{method:"list-logs",format:"json"},function(u){try{p.show();o.empty();if(u==null){throw"Failed to get backups"}var s=u.results;if(s.length==0){throw"No logs found"}for(var r in s){var q=s[r];o.append(''+dateToString(new Date(q.time))+''+q.action+''+q.ip_address+""+q.user_agent+"")}}catch(t){MyWallet.makeNotice("error","misc-error",t)}},function(q){MyWallet.makeNotice("error","misc-error",q.responseText)})});$("#logging-level").unbind().change(function(o){$(".logl").hide();$(".logl.l"+$(this).val()).show();i("Updating Logging Level","update-logging-level",$(this).val(),function(){$("#account-logging").trigger("show")})});$("#wallet-yubikey").unbind().change(function(o){i("Updating Yubikey","update-yubikey",$(this).val())});$("#wallet-skype").unbind().change(function(o){i("Updating Skype Username","update-skype",$(this).val())});$("#wallet-boxcar").unbind().change(function(o){i("Updating Boxcar Email","update-boxcar",$(this).val())});$("#wallet-http-url").unbind().change(function(o){i("Updating HTTP url","update-http-url",$(this).val())});$("#wallet-phrase").unbind().change(function(p){var o=$.trim($(this).val());if(o==null||o.length==0||o.length>255){MyWallet.makeNotice("error","misc-error","You must enter a secret phrase");return}i("Updating Secret Phrase","update-phrase",o)});$("#wallet-alias").unbind().change(function(r){var q=$(this);var o=$.trim(q.val());q.val(q.val().replace(/[\.,\/ #!$%\^&\*;:{}=`~()]/g,""));var p=$.trim(q.val());if(p.length>0){$(".alias").fadeIn(200);$(".alias").text("https://blockchain.info/wallet/"+p)}i("Updating Alias","update-alias",p,null,function(){q.val(o)})})}}; \ No newline at end of file diff --git a/blockchainapi.js b/blockchainapi.js index 4179be4..841f439 100644 --- a/blockchainapi.js +++ b/blockchainapi.js @@ -30,7 +30,10 @@ function _BlockchainAPI() { } }, error : function(data) { - MyWallet.makeNotice('error', 'misc-error', data.responseText); + if (data.responseText) + MyWallet.makeNotice('error', 'misc-error', data.responseText); + else + MyWallet.makeNotice('error', 'misc-error', 'Error Downloading Wallet Balance'); error(); } diff --git a/blockchainapi.min.js b/blockchainapi.min.js index 41a81a5..c37c201 100644 --- a/blockchainapi.min.js +++ b/blockchainapi.min.js @@ -1 +1 @@ -function _BlockchainAPI(){var a=this;this.get_history=function(e,b,d,c){MyWallet.setLoadingText("Loading transactions");$.ajax({type:"POST",dataType:"json",url:root+"multiaddr",data:{active:MyWallet.getActiveAddresses().join("|"),format:"json",filter:d,offset:c*50},success:function(f){if(f.error!=null){MyWallet.makeNotice("error","misc-error",f.error)}try{try{if(c==0&&d==0){localStorage.setItem("multiaddr",JSON.stringify(f))}}catch(g){}e(f)}catch(g){MyWallet.makeNotice("error","misc-error",g);b()}},error:function(f){MyWallet.makeNotice("error","misc-error",f.responseText);b()}})};this.get_balances=function(d,c,b){MyWallet.setLoadingText("Getting Balances");$.ajax({type:"POST",url:root+"multiaddr",dataType:"json",data:{active:d.join("|"),simple:true,format:"json"},success:function(f){for(var e in f){if(MyWallet.addressExists(e)){MyWallet.setAddressBalance(e,f[e].final_balance)}}c(f)},error:function(f){b(f.responseText)}})};this.get_balance=function(d,c,b){MyWallet.setLoadingText("Getting Balance");this.get_balances(d,function(g){var f=0;for(var e in g){f+=g[e].final_balance}c(f)},b)};this.get_ticker=function(){MyWallet.setLoadingText("Getting Ticker Data");$.ajax({type:"GET",dataType:"json",url:root+"ticker",data:{format:"json"},success:function(d){var b=$("#send-ticker ul").empty();b.append('');for(var c in d){b.append('
  • '+c+'
    =d[c]["24h"])?"up_green.png":"down_red.png")+');width:14px;background-position:0px">'+d[c]["15m"]+"
  • ")}b.append('
  • Delayed By Up To 15 minutes
  • ')},error:function(b){console.log(b)}})};this.resolve_firstbits=function(d,c,b){MyWallet.setLoadingText("Querying Firstbits");$.ajax({type:"GET",url:root+"q/resolvefirstbits/"+d,data:{format:"plain"},success:function(e){if(e==null||e.length==0){b()}else{c(e)}},error:function(f){b(f.responseText)}})};this.get_rejection_reason=function(d,c,b){MyWallet.setLoadingText("Querying Rejection Reason");$.ajax({type:"GET",url:root+"q/rejected/"+d,data:{format:"plain"},success:function(e){if(e==null||e.length==0){b()}else{c(e)}},error:function(f){b(f.responseText)}})};this.push_tx=function(g,j,m,k){try{MyWallet.setLoadingText("Pushing Transaction");var n=MyWallet.getTransactions();if(n.length>0){var h=n[0].txIndex}function o(){m();function e(){MyWallet.get_history(function(){if(n.length==0||n[0].txIndex==h){a.get_rejection_reason(Crypto.util.bytesToHex(g.getHash().reverse()),function(q){MyWallet.makeNotice("error","tx-error",q)},function(){MyWallet.makeNotice("error","tx-error","Unknown Error Pushing Transaction")})}else{playSound("beep")}},function(){MyWallet.makeNotice("error","tx-error","Unable to determine if transaction was submitted. Please re-login.")})}if(!window.WebSocket||ws==null||ws.readyState!=WebSocket.OPEN){e()}else{setTimeout(function(){if(n.length==0||n[0].txIndex==h){e()}},2000)}}var p=g.serialize();function l(){var e=Crypto.util.bytesToHex(p);var q={format:"plain",tx:e};if(j){q.note=j}$.ajax({type:"POST",url:root+"pushtx",data:q,success:function(){o()},error:function(r){k(r?r.responseText:null)}})}try{var f=new ArrayBuffer(p.length);var c=new Int8Array(f);c.set(p);var b=new Blob([f],{type:"application/octet-stream"});if(b.size!=p.length){throw"Inconsistent Data Sizes (blob : "+b.size+" s : "+p.length+" buffer : "+f.byteLength+")"}var d=new FormData();d.append("txbytes",b);if(j){d.append("note",j)}d.append("format","plain");$.ajax({url:root+"pushtx",data:d,processData:false,contentType:false,type:"POST",success:function(){o()},error:function(e){l()}})}catch(i){console.log(i);l()}}catch(i){console.log(i);k(i)}};this.get_unspent=function(c,d,b){MyWallet.setLoadingText("Getting Unspent Outputs");$.ajax({type:"POST",dataType:"json",url:root+"unspent",data:{active:c.join("|"),format:"json"},success:function(g){try{if(g.error!=null){throw g.error}if(g.notice!=null){MyWallet.makeNotice("notice","misc-notice",g.notice)}try{localStorage.setItem("unspent",data)}catch(f){}d(g)}catch(f){b(f)}},error:function(g){try{try{var f=localStorage.getItem("unspent");if(f!=null){var i=$.parseJSON(f);d(i);return}}catch(h){console.log(h)}if(g.responseText){throw g.responseText}else{throw"Error Contacting Server. No unspent outputs available in cache."}}catch(h){b(h)}}})}}var BlockchainAPI=new _BlockchainAPI(); \ No newline at end of file +function _BlockchainAPI(){var a=this;this.get_history=function(e,b,d,c){MyWallet.setLoadingText("Loading transactions");$.ajax({type:"POST",dataType:"json",url:root+"multiaddr",data:{active:MyWallet.getActiveAddresses().join("|"),format:"json",filter:d,offset:c*50},success:function(f){if(f.error!=null){MyWallet.makeNotice("error","misc-error",f.error)}try{try{if(c==0&&d==0){localStorage.setItem("multiaddr",JSON.stringify(f))}}catch(g){}e(f)}catch(g){MyWallet.makeNotice("error","misc-error",g);b()}},error:function(f){if(f.responseText){MyWallet.makeNotice("error","misc-error",f.responseText)}else{MyWallet.makeNotice("error","misc-error","Error Downloading Wallet Balance")}b()}})};this.get_balances=function(d,c,b){MyWallet.setLoadingText("Getting Balances");$.ajax({type:"POST",url:root+"multiaddr",dataType:"json",data:{active:d.join("|"),simple:true,format:"json"},success:function(f){for(var e in f){if(MyWallet.addressExists(e)){MyWallet.setAddressBalance(e,f[e].final_balance)}}c(f)},error:function(f){b(f.responseText)}})};this.get_balance=function(d,c,b){MyWallet.setLoadingText("Getting Balance");this.get_balances(d,function(g){var f=0;for(var e in g){f+=g[e].final_balance}c(f)},b)};this.get_ticker=function(){MyWallet.setLoadingText("Getting Ticker Data");$.ajax({type:"GET",dataType:"json",url:root+"ticker",data:{format:"json"},success:function(d){var b=$("#send-ticker ul").empty();b.append('');for(var c in d){b.append('
  • '+c+'
    =d[c]["24h"])?"up_green.png":"down_red.png")+');width:14px;background-position:0px">'+d[c]["15m"]+"
  • ")}b.append('
  • Delayed By Up To 15 minutes
  • ')},error:function(b){console.log(b)}})};this.resolve_firstbits=function(d,c,b){MyWallet.setLoadingText("Querying Firstbits");$.ajax({type:"GET",url:root+"q/resolvefirstbits/"+d,data:{format:"plain"},success:function(e){if(e==null||e.length==0){b()}else{c(e)}},error:function(f){b(f.responseText)}})};this.get_rejection_reason=function(d,c,b){MyWallet.setLoadingText("Querying Rejection Reason");$.ajax({type:"GET",url:root+"q/rejected/"+d,data:{format:"plain"},success:function(e){if(e==null||e.length==0){b()}else{c(e)}},error:function(f){b(f.responseText)}})};this.push_tx=function(g,j,m,k){try{MyWallet.setLoadingText("Pushing Transaction");var n=MyWallet.getTransactions();if(n.length>0){var h=n[0].txIndex}function o(){m();function e(){MyWallet.get_history(function(){if(n.length==0||n[0].txIndex==h){a.get_rejection_reason(Crypto.util.bytesToHex(g.getHash().reverse()),function(q){MyWallet.makeNotice("error","tx-error",q)},function(){MyWallet.makeNotice("error","tx-error","Unknown Error Pushing Transaction")})}else{playSound("beep")}},function(){MyWallet.makeNotice("error","tx-error","Unable to determine if transaction was submitted. Please re-login.")})}if(!window.WebSocket||ws==null||ws.readyState!=WebSocket.OPEN){e()}else{setTimeout(function(){if(n.length==0||n[0].txIndex==h){e()}},2000)}}var p=g.serialize();function l(){var e=Crypto.util.bytesToHex(p);var q={format:"plain",tx:e};if(j){q.note=j}$.ajax({type:"POST",url:root+"pushtx",data:q,success:function(){o()},error:function(r){k(r?r.responseText:null)}})}try{var f=new ArrayBuffer(p.length);var c=new Int8Array(f);c.set(p);var b=new Blob([f],{type:"application/octet-stream"});if(b.size!=p.length){throw"Inconsistent Data Sizes (blob : "+b.size+" s : "+p.length+" buffer : "+f.byteLength+")"}var d=new FormData();d.append("txbytes",b);if(j){d.append("note",j)}d.append("format","plain");$.ajax({url:root+"pushtx",data:d,processData:false,contentType:false,type:"POST",success:function(){o()},error:function(e){l()}})}catch(i){console.log(i);l()}}catch(i){console.log(i);k(i)}};this.get_unspent=function(c,d,b){MyWallet.setLoadingText("Getting Unspent Outputs");$.ajax({type:"POST",dataType:"json",url:root+"unspent",data:{active:c.join("|"),format:"json"},success:function(g){try{if(g.error!=null){throw g.error}if(g.notice!=null){MyWallet.makeNotice("notice","misc-notice",g.notice)}try{localStorage.setItem("unspent",data)}catch(f){}d(g)}catch(f){b(f)}},error:function(g){try{try{var f=localStorage.getItem("unspent");if(f!=null){var i=$.parseJSON(f);d(i);return}}catch(h){console.log(h)}if(g.responseText){throw g.responseText}else{throw"Error Contacting Server. No unspent outputs available in cache."}}catch(h){b(h)}}})}}var BlockchainAPI=new _BlockchainAPI(); \ No newline at end of file diff --git a/firefox.js b/firefox.js index 9354a59..0e00241 100644 --- a/firefox.js +++ b/firefox.js @@ -1,5 +1,6 @@ $(document).ready(function() { + $.ajax = function(obj) { var requests = {}; var initd = false; @@ -15,7 +16,7 @@ $(document).ready(function() { obj.request_id = request_id; - document.body.setAttribute('data-ajax', JSON.stringify(obj)); + document.body.setAttribute('data-ajax-request', JSON.stringify(obj)); document.body.dispatchEvent(customEvent); } @@ -24,7 +25,7 @@ $(document).ready(function() { document.body.addEventListener('ajax_response', function() { console.log('Received Response'); - var obj = JSON.parse(document.body.getAttribute('data-ajax')); + var obj = JSON.parse(document.body.getAttribute('data-ajax-response')); var request = requests[obj.request_id]; if (!request) { @@ -41,6 +42,8 @@ $(document).ready(function() { } else { request.error({responseText : obj.response, status : obj.status}); } + + delete requests[obj.request_id]; }); initd = true; @@ -59,5 +62,5 @@ $(document).ready(function() { if (data_resource) resource = data_resource; - $.ajax({data : 'TEST'}); -}) \ No newline at end of file + $('head').append(''); +}); \ No newline at end of file diff --git a/respond.min.js b/respond.min.js new file mode 100644 index 0000000..d505236 --- /dev/null +++ b/respond.min.js @@ -0,0 +1,6 @@ +/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ +/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ +window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='­',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document); + +/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function(a){"use strict";function x(){u(!0)}var b={};if(a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,!b.mediaQueriesSupported){var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var a=m.shift();v(a.href,function(b){p(b,a.href,a.media),h[a.href]=!0,setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(a){var b="clientWidth",h=d[b],k="CSS1Compat"===c.compatMode&&h||c.body[b]||h,m={},n=l[l.length-1],o=(new Date).getTime();if(a&&q&&i>o-q)return clearTimeout(r),r=setTimeout(u,i),void 0;q=o;for(var p in e)if(e.hasOwnProperty(p)){var v=e[p],w=v.minw,x=v.maxw,y=null===w,z=null===x,A="em";w&&(w=parseFloat(w)*(w.indexOf(A)>-1?t||s():1)),x&&(x=parseFloat(x)*(x.indexOf(A)>-1?t||s():1)),v.hasquery&&(y&&z||!(y||k>=w)||!(z||x>=k))||(m[v.media]||(m[v.media]=[]),m[v.media].push(f[v.rules]))}for(var B in g)g.hasOwnProperty(B)&&g[B]&&g[B].parentNode===j&&j.removeChild(g[B]);for(var C in m)if(m.hasOwnProperty(C)){var D=c.createElement("style"),E=m[C].join("\n");D.type="text/css",D.media=C,j.insertBefore(D,n.nextSibling),D.styleSheet?D.styleSheet.cssText=E:D.appendChild(c.createTextNode(E)),g.push(D)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)}})(this); diff --git a/shared.js b/shared.js index ce344f9..006fd39 100644 --- a/shared.js +++ b/shared.js @@ -506,8 +506,16 @@ function loadScript(src, success, error) { s.type = "text/javascript"; s.async = true; s.src = src; - s.addEventListener('error', function(e){ error_fired = true; if (error) error('Error Loading Script. Are You Offline?'); }, false); - s.addEventListener('load', function (e) { if (error_fired) return; success(); }, false); + try { + s.addEventListener('error', function(e){ error_fired = true; if (error) error('Error Loading Script. Are You Offline?'); }, false); + s.addEventListener('load', function (e) { if (!error_fired) success(); }, false); + } catch (e) { + //IE 7 & 8 Will throw an exception here + setTimeout(function() { + if (!error_fired) success(); + }, 2000); + } + var head = document.getElementsByTagName('head')[0]; head.appendChild(s); } diff --git a/shared.min.js b/shared.min.js index 4c835ff..904051d 100644 --- a/shared.min.js +++ b/shared.min.js @@ -1 +1 @@ -var satoshi=100000000;var show_adv=false;var adv_rule;var symbol_btc={code:"BTC",symbol:"BTC",name:"Bitcoin",conversion:satoshi,symbolAppearsAfter:true};var symbol_local=symbol_btc;var symbol;var root="/";var resource="/Resources/";var war_checksum;function setLocalSymbol(a){if(!a){return}if(symbol==symbol_local&&symbol_local!=symbol_btc){symbol=a}symbol_local=a;calcMoney()}$.fn.center=function(){scrollTo(0,0);this.css("top",Math.max(($(window).height()/2)-(this.height()/2),10)+"px");this.css("left",Math.max(($(window).width()/2)-(this.width()/2),10)+"px");return this};if(!window.console){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i';if(this.note){g+='
    '+this.note+"
    "}g+='
    ';if(this.time>0){var c=new Date(this.time*1000);g+=dateToString(c)}var l;if(n<0){l='class="txtd hidden-phone"'}else{l='class="txtd"'}g+='
    ";if(this.inputs.length>0){for(var f=0;f"}else{g+=formatOutput(input.prev_out,k,h)}}}else{g+="No inputs, transaction probably sent from self.
    "}g+='
    ';if(n==null){n=0;for(var f=0;f0){b="btn btn-success";g+=''}else{if(n<0){b="btn btn-danger";g+=''}else{b="btn";g+=" "}}if(n>=0){l='class="txtd hidden-phone"'}else{l='class="txtd"'}g+="";var j=null;var d=null;for(var f=0;f0&&!e.spent&&j==null){var m=k[e.addr];if(m==null){m=k[e.addr2]}if(m==null){m=k[e.addr3]}if(m!=null&&m.priv!=null){j=f;d=m}}g+=formatOutput(e,k,h)}g+='';for(var f=0;f'+formatMoney(output.value,true)+"
    "}g+='
    ';if(this.confirmations==null){g+=' '}else{if(this.confirmations==0){g+=' '}else{if(this.confirmations>0){g+=' "}}}g+='";if(this.double_spend==true){g+=' '}g+="";return g}}}Date.prototype.sameDayAs=function(a){return((this.getFullYear()==a.getFullYear())&&(this.getMonth()==a.getMonth())&&(this.getDate()==a.getDate()))};function padStr(a){return(a<10)?"0"+a:""+a}function dateToString(a){if(a.sameDayAs(new Date())){return"Today "+padStr(a.getHours())+":"+padStr(a.getMinutes())+":"+padStr(a.getSeconds())}else{return padStr(a.getFullYear())+"-"+padStr(1+a.getMonth())+"-"+padStr(a.getDate())+" "+padStr(a.getHours())+":"+padStr(a.getMinutes())+":"+padStr(a.getSeconds())}}function formatBTC(b){if(b==null){return"0.00"}var d="";if(b<0){b=-b;d="-"}b=""+parseInt(b);var c=b.length>8?b.substr(0,b.length-8):"0";var a=b.length>8?b.substr(b.length-8):b;if(a!=null){while(a.length<8){a="0"+a}a=a.replace(/0*$/,"");while(a.length<2){a+="0"}return d+c+"."+a}return d+c}function convert(a,b){return(a/b).toFixed(2).toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")}function formatSymbol(a,b){var c;if(b.code!="BTC"){c=b.symbol+" "+convert(a,b.conversion)}else{c=formatBTC(a)+" "+b.symbol}return c}function formatMoney(a,b){var c=formatSymbol(a,symbol);if(b){c=''+c+""}return c}function formatOutput(b,e,a){function c(j,f){var h=null;if(e!=null){h=e[j]}if(h!=null){if(h.label!=null){return h.label}else{return j}}else{if(a&&a[j]){return''+a[j]+""}else{if(f.addr_tag){var g="";if(f.addr_tag_link){g=' '}return''+j+' ('+f.addr_tag+g+")"}else{return''+j+""}}}}var d="";if(b.type==0){}else{if(b.type==1||b.type==2||b.type==3){d='(Escrow '+b.type+" of "}else{d='Strange '}}if(b.addr!=null){d+=c(b.addr,b)}if(b.addr2!=null){d+=", "+c(b.addr2,b)}if(b.addr3!=null){d+=", "+c(b.addr3,b)}if(b.type==1||b.type==2||b.type==3){d+=")"}d+="
    ";return d}function toggleAdv(){setAdv(!show_adv)}function setAdv(a){show_adv=a;if(adv_rule!=null){adv_rule.remove()}if(show_adv){adv_rule=$("").appendTo("head");$("a[class=show_adv]").text("Show Basic")}else{adv_rule=$("").appendTo("head");$("a[class=show_adv]").text("Show Advanced")}}function selectOption(b,a){$("#"+b+" option:selected").removeAttr("selected");$("#"+b+" option[value="+a+"]").attr("selected","selected")}function calcMoney(){$("span[data-c]").each(function(a){$(this).text(formatMoney($(this).attr("data-c")))})}function toggleSymbol(){if(symbol===symbol_btc){symbol=symbol_local;SetCookie("local","true")}else{symbol=symbol_btc;SetCookie("local","false")}selectOption("currencies",symbol.code);calcMoney()}var _sounds={};function playSound(b){try{if(!_sounds[b]){_sounds[b]=new Audio(resource+b+".wav")}_sounds[b].play()}catch(a){}}function setupSymbolToggle(){$(".cb").unbind().click(function(){toggleSymbol()})}function setupToggle(){$("[class=show_adv]").unbind().click(function(){toggleAdv()})}$(document).ready(function(){var a=$("#symbol-local").text();if(a&&a.length>0){symbol_local=$.parseJSON(a)}if(symbol_local&&getCookie("local")=="true"){symbol=symbol_local}else{symbol=symbol_btc}war_checksum=$(document.body).data("war-checksum");show_adv=getCookie("show_adv");try{$("#currencies").change(function(){var c=$(this).val();if(symbol==null||c!=symbol.symbol){if(symbol_local!=null&&c==symbol_local.code){toggleSymbol()}else{if(symbol_btc!=null&&c==symbol_btc.code){toggleSymbol()}else{SetCookie("currency",c);SetCookie("local","true");location.reload()}}}});setupSymbolToggle();setupToggle();setAdv(show_adv)}catch(b){}});function registerURIHandler(){if(navigator&&getCookie("protoreg")==null){try{navigator.registerProtocolHandler("bitcoin",window.location.protocol+"//"+window.location.hostname+"/uri?uri=%s","Blockchain.info");setCooke("protoreg",true)}catch(a){console.log(a)}}}function loadScript(f,e,a){f=resource+f+"?"+war_checksum;console.log("Load "+f);if($('script[src="'+f+'"]').length>0){e();return}var d=false;var c=document.createElement("script");c.type="text/javascript";c.async=true;c.src=f;c.addEventListener("error",function(g){d=true;if(a){a("Error Loading Script. Are You Offline?")}},false);c.addEventListener("load",function(g){if(d){return}e()},false);var b=document.getElementsByTagName("head")[0];b.appendChild(c)}function SetCookie(a,b){document.cookie=a+"="+encodeURI(b.toString())+"; path=/; domain=blockchain.info; max-age="+(60*60*24*365)}function getCookie(a){if(document.cookie.length>0){c_start=document.cookie.indexOf(a+"=");if(c_start!=-1){c_start=c_start+a.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1){c_end=document.cookie.length}return decodeURI(document.cookie.substring(c_start,c_end))}}return""}; \ No newline at end of file +var satoshi=100000000;var show_adv=false;var adv_rule;var symbol_btc={code:"BTC",symbol:"BTC",name:"Bitcoin",conversion:satoshi,symbolAppearsAfter:true};var symbol_local=symbol_btc;var symbol;var root="/";var resource="/Resources/";var war_checksum;function setLocalSymbol(a){if(!a){return}if(symbol==symbol_local&&symbol_local!=symbol_btc){symbol=a}symbol_local=a;calcMoney()}$.fn.center=function(){scrollTo(0,0);this.css("top",Math.max(($(window).height()/2)-(this.height()/2),10)+"px");this.css("left",Math.max(($(window).width()/2)-(this.width()/2),10)+"px");return this};if(!window.console){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i';if(this.note){g+='
    '+this.note+"
    "}g+='
    ';if(this.time>0){var c=new Date(this.time*1000);g+=dateToString(c)}var l;if(n<0){l='class="txtd hidden-phone"'}else{l='class="txtd"'}g+='
    ";if(this.inputs.length>0){for(var f=0;f"}else{g+=formatOutput(input.prev_out,k,h)}}}else{g+="No inputs, transaction probably sent from self.
    "}g+='
    ';if(n==null){n=0;for(var f=0;f0){b="btn btn-success";g+=''}else{if(n<0){b="btn btn-danger";g+=''}else{b="btn";g+=" "}}if(n>=0){l='class="txtd hidden-phone"'}else{l='class="txtd"'}g+="";var j=null;var d=null;for(var f=0;f0&&!e.spent&&j==null){var m=k[e.addr];if(m==null){m=k[e.addr2]}if(m==null){m=k[e.addr3]}if(m!=null&&m.priv!=null){j=f;d=m}}g+=formatOutput(e,k,h)}g+='';for(var f=0;f'+formatMoney(output.value,true)+"
    "}g+='
    ';if(this.confirmations==null){g+=' '}else{if(this.confirmations==0){g+=' '}else{if(this.confirmations>0){g+=' "}}}g+='";if(this.double_spend==true){g+=' '}g+="";return g}}}Date.prototype.sameDayAs=function(a){return((this.getFullYear()==a.getFullYear())&&(this.getMonth()==a.getMonth())&&(this.getDate()==a.getDate()))};function padStr(a){return(a<10)?"0"+a:""+a}function dateToString(a){if(a.sameDayAs(new Date())){return"Today "+padStr(a.getHours())+":"+padStr(a.getMinutes())+":"+padStr(a.getSeconds())}else{return padStr(a.getFullYear())+"-"+padStr(1+a.getMonth())+"-"+padStr(a.getDate())+" "+padStr(a.getHours())+":"+padStr(a.getMinutes())+":"+padStr(a.getSeconds())}}function formatBTC(b){if(b==null){return"0.00"}var d="";if(b<0){b=-b;d="-"}b=""+parseInt(b);var c=b.length>8?b.substr(0,b.length-8):"0";var a=b.length>8?b.substr(b.length-8):b;if(a!=null){while(a.length<8){a="0"+a}a=a.replace(/0*$/,"");while(a.length<2){a+="0"}return d+c+"."+a}return d+c}function convert(a,b){return(a/b).toFixed(2).toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")}function formatSymbol(a,b){var c;if(b.code!="BTC"){c=b.symbol+" "+convert(a,b.conversion)}else{c=formatBTC(a)+" "+b.symbol}return c}function formatMoney(a,b){var c=formatSymbol(a,symbol);if(b){c=''+c+""}return c}function formatOutput(b,e,a){function c(j,f){var h=null;if(e!=null){h=e[j]}if(h!=null){if(h.label!=null){return h.label}else{return j}}else{if(a&&a[j]){return''+a[j]+""}else{if(f.addr_tag){var g="";if(f.addr_tag_link){g=' '}return''+j+' ('+f.addr_tag+g+")"}else{return''+j+""}}}}var d="";if(b.type==0){}else{if(b.type==1||b.type==2||b.type==3){d='(Escrow '+b.type+" of "}else{d='Strange '}}if(b.addr!=null){d+=c(b.addr,b)}if(b.addr2!=null){d+=", "+c(b.addr2,b)}if(b.addr3!=null){d+=", "+c(b.addr3,b)}if(b.type==1||b.type==2||b.type==3){d+=")"}d+="
    ";return d}function toggleAdv(){setAdv(!show_adv)}function setAdv(a){show_adv=a;if(adv_rule!=null){adv_rule.remove()}if(show_adv){adv_rule=$("").appendTo("head");$("a[class=show_adv]").text("Show Basic")}else{adv_rule=$("").appendTo("head");$("a[class=show_adv]").text("Show Advanced")}}function selectOption(b,a){$("#"+b+" option:selected").removeAttr("selected");$("#"+b+" option[value="+a+"]").attr("selected","selected")}function calcMoney(){$("span[data-c]").each(function(a){$(this).text(formatMoney($(this).attr("data-c")))})}function toggleSymbol(){if(symbol===symbol_btc){symbol=symbol_local;SetCookie("local","true")}else{symbol=symbol_btc;SetCookie("local","false")}selectOption("currencies",symbol.code);calcMoney()}var _sounds={};function playSound(b){try{if(!_sounds[b]){_sounds[b]=new Audio(resource+b+".wav")}_sounds[b].play()}catch(a){}}function setupSymbolToggle(){$(".cb").unbind().click(function(){toggleSymbol()})}function setupToggle(){$("[class=show_adv]").unbind().click(function(){toggleAdv()})}$(document).ready(function(){var a=$("#symbol-local").text();if(a&&a.length>0){symbol_local=$.parseJSON(a)}if(symbol_local&&getCookie("local")=="true"){symbol=symbol_local}else{symbol=symbol_btc}war_checksum=$(document.body).data("war-checksum");show_adv=getCookie("show_adv");try{$("#currencies").change(function(){var c=$(this).val();if(symbol==null||c!=symbol.symbol){if(symbol_local!=null&&c==symbol_local.code){toggleSymbol()}else{if(symbol_btc!=null&&c==symbol_btc.code){toggleSymbol()}else{SetCookie("currency",c);SetCookie("local","true");location.reload()}}}});setupSymbolToggle();setupToggle();setAdv(show_adv)}catch(b){}});function registerURIHandler(){if(navigator&&getCookie("protoreg")==null){try{navigator.registerProtocolHandler("bitcoin",window.location.protocol+"//"+window.location.hostname+"/uri?uri=%s","Blockchain.info");setCooke("protoreg",true)}catch(a){console.log(a)}}}function loadScript(h,g,a){h=resource+h+"?"+war_checksum;console.log("Load "+h);if($('script[src="'+h+'"]').length>0){g();return}var d=false;var c=document.createElement("script");c.type="text/javascript";c.async=true;c.src=h;try{c.addEventListener("error",function(j){d=true;if(a){a("Error Loading Script. Are You Offline?")}},false);c.addEventListener("load",function(j){if(!d){g()}},false)}catch(f){setTimeout(function(){if(!d){g()}},2000)}var b=document.getElementsByTagName("head")[0];b.appendChild(c)}function SetCookie(a,b){document.cookie=a+"="+encodeURI(b.toString())+"; path=/; domain=blockchain.info; max-age="+(60*60*24*365)}function getCookie(a){if(document.cookie.length>0){c_start=document.cookie.indexOf(a+"=");if(c_start!=-1){c_start=c_start+a.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1){c_end=document.cookie.length}return decodeURI(document.cookie.substring(c_start,c_end))}}return""}; \ No newline at end of file diff --git a/wallet.js b/wallet.js index 6a22b9a..84d0e60 100644 --- a/wallet.js +++ b/wallet.js @@ -29,11 +29,11 @@ var MyWallet = new function() { var pbkdf2_iterations = 10; //Not ideal, but limitations of using javascript var tx_notes = {}; var real_auth_type = 0; + var auth_type; var logout_timeout; var event_listeners = []; //Emits Did decrypt wallet event (used on claim page) var last_input_main_password; var main_password_timeout = 60000; - var auth_type; var isInitialized = false; var wallet_options = { @@ -2121,12 +2121,18 @@ var MyWallet = new function() { var local_guid = localStorage.getItem('guid'); } catch(e) {} + var open_wallet_btn = $('#restore-wallet-continue'); + + open_wallet_btn.attr('disabled', true); + $.ajax({ type: "GET", dataType: 'json', url: root + 'wallet/'+guid_or_alias, data : {format : 'json', resend_code : resend_code}, success: function(obj) { + open_wallet_btn.attr('disabled', false); + $('.auth-'+auth_type).hide(); guid = obj.guid; @@ -2161,8 +2167,9 @@ var MyWallet = new function() { } catch (e) { } }, error : function(e) { + open_wallet_btn.attr('disabled', false); - if (local_guid == guid && encrypted_wallet_data) { + if (local_guid == guid_or_alias && encrypted_wallet_data) { MyWallet.makeNotice('error', 'misc-error', 'Error Contacting Server. Using Local Wallet Cache.'); //Generate a new Checksum @@ -3418,14 +3425,14 @@ var MyWallet = new function() { if (!guid || guid.length == 0) guid = localStorage.getItem('guid'); - - if (guid && guid.length == 36) { - setTimeout(function(){ - MyWallet.setGUID(guid, false); - }, 10); - } } catch (e) {} + if (guid && guid.length == 36) { + setTimeout(function(){ + MyWallet.setGUID(guid, false); + }, 10); + } + //Frame break if (top.location!= self.location) { top.location = self.location.href diff --git a/wallet.min.js b/wallet.min.js index 3b4472a..e1f182f 100644 --- a/wallet.min.js +++ b/wallet.min.js @@ -1 +1 @@ -var MyWallet=new function(){var h=this;this.skip_init=false;var D="abcaa314-6f67-6705-b384-5d47fbe9d7cc";var ac;var M;var j;var az;var af;var w;var d;var ap=0;var P=0;var ak=0;var K=0;var aJ=0;var ax;var g={};var E=[];var F=false;var an=0;var aj=0;var at=1000;var I={};var aq;var ah;var x=1.5;var S=10;var b={};var aD=0;var R;var W=[];var B;var N=60000;var q;var A=false;var s={fee_policy:0,html5_notifications:false,logout_time:600000,tx_display:0,always_keep_local_backup:false};this.setEncryptedWalletData=function(aL){if(!aL||aL.length==0){return}ac=aL;aq=ab();try{if(aD==0||s.always_keep_local_backup){localStorage.setItem("payload",ac)}}catch(aM){console.log(aM)}};this.setRealAuthType=function(aL){this.real_auth_type=aL};this.addEventListener=function(aL){W.push(aL)};this.getLogoutTime=function(){return s.logout_time};this.setLogoutTime=function(aL){s.logout_time=aL;clearInterval(R);R=setTimeout(h.logout,h.getLogoutTime())};this.getDoubleEncryption=function(){return F};this.getEncryptedWalletData=function(){return ac};this.getFeePolicy=function(){return s.fee_policy};this.setFeePolicy=function(aL){s.fee_policy=aL};this.setAlwaysKeepLocalBackup=function(aL){s.always_keep_local_backup=aL};this.getAlwaysKeepLocalBackup=function(){return s.always_keep_local_backup};this.getGuid=function(){return M};this.getHTML5Notifications=function(){return s.html5_notifications};this.setHTML5Notifications=function(aL){s.html5_notifications=aL};this.getTransactions=function(){return E};this.addressExists=function(aL){return I[aL]!=null};this.getAddressTag=function(aL){return I[aL].tag};this.setAddressTag=function(aM,aL){I[aM].tag=aL};this.getAddressBook=function(){return g};this.getAddressLabel=function(aL){return I[aL].label};this.setAddressLabel=function(aL,aM){I[aL].label=aM};this.setAddressBalance=function(aL,aM){I[aL].balance=aM};this.getAddressBookLabel=function(aL){return g[aL]};this.isWatchOnly=function(aL){return I[aL].priv==null};this.getAddressBalance=function(aL){return I[aL].balance};this.getMixerFee=function(){return x};this.deleteAddress=function(aL){delete I[aL]};this.addAddressBookEntry=function(aM,aL){g[aM]=aL};this.getPrivateKey=function(aL){return I[aL].priv};this.setLabel=function(aL,aM){I[aL].label=aM;ad();c()};this.securePost=function(aM,aN,aO,aL){var aP=jQuery.extend({},aN);if(d==null||d.length==0||d.length!=36){throw"Shared key is invalid"}aP.sharedKey=d;aP.guid=M;aP.format=aN.format?aN.format:"plain";$.ajax({dataType:aN.format?aN.format:"text",type:"POST",url:root+aM,data:aP,success:function(aQ){aO(aQ)},error:function(aQ){aL(aQ)}})};this.isCorrectMainPassword=function(aL){return az==aL};this.setDoubleEncryption=function(aN,aL,aP){var aM=function(aQ){console.log("Panic "+aQ);window.location.reload()};try{if(F==aN){return}if(aN){h.getSecondPassword(function(){try{F=true;af=aL;for(var aS in I){var aU=I[aS];if(aU.priv!=null){aU.priv=i(B58.decode(aU.priv))}}var aQ=Crypto.SHA256(d+af,{asBytes:true});for(var aR=1;aR-1){if(webkitNotifications.checkPermission()==0){webkitNotifications.createNotification(aZ.iconUrl,aZ.title,aZ.body).show()}}else{if(window.Notification){if(Notification.permissionLevel()==="granted"){new Notification(aZ.title,aZ).show()}}}}catch(a0){}};try{aP({title:aY>0?"Payment Received":"Payment Sent",body:"Transaction Value "+formatBTC(aY)+" BTC",iconUrl:resource+"cube48.png"})}catch(aT){console.log(aT)}}aR.result=aY;ap+=aY;K++;aR.setConfirmations(0);playSound("beep");if(aj==0&&an==0){E.unshift(aR);var aV=false;if(E.length>50){E.pop();aV=true}}var aN=T();if("my-transactions"==aN){if(aj==0&&an==0){$("#no-transactions").hide();if(s.tx_display==0){var aM=$("#transactions-compact").show();aG($(C(aR,I,g)),aR).prependTo(aM.find("tbody")).find("div").hide().slideDown("slow");if(aV){aM.find("tbody tr:last-child").remove()}}else{var aM=$("#transactions-detailed").show();aM.prepend(aR.getHTML(I,g));if(aV){aM.find("div:last-child").remove()}setupSymbolToggle()}}}else{c()}}else{if(aQ.op=="block"){for(var aO=0;aO');aL.text(""+aO);if($("#"+aP).length>0){aL.attr("id",aP);return}$("#notices").append(aL).hide().fadeIn(200);if(aN>0){(function(){var aQ=aL;setTimeout(function(){aQ.fadeOut(250,function(){$(this).remove()})},aN)})()}};function aw(aL){return aL}function am(aL){return h.decryptPK(aL)}function Y(aL){var aM=h.decodePK(aL);return Crypto.util.bytesToBase64(aM)}function k(aL){var aM=h.decodePK(aL);return Crypto.util.bytesToHex(aM)}this.base58ToSipa=function(aL,aQ){var aM=h.decodePK(aL);var aN=new Bitcoin.ECKey(aM);while(aM.length<32){aM.unshift(0)}aM.unshift(128);if(aN.getBitcoinAddress().toString()==aQ){}else{if(aN.getBitcoinAddressCompressed().toString()==aQ){aM.push(1)}else{throw"Private Key does not match bitcoin address"+aQ}}var aO=Crypto.SHA256(Crypto.SHA256(aM,{asBytes:true}),{asBytes:true});aM=aM.concat(aO.slice(0,4));var aP=B58.encode(aM);return aP};this.makeWalletJSON=function(aL){return h.makeCustomWalletJSON(aL,M,d)};this.makeCustomWalletJSON=function(aP,aM,aR){var aO=aw;if(aP=="base64"){aO=Y}else{if(aP=="hex"){aO=k}else{if(aP=="sipa"){aO=h.base58ToSipa}else{if(aP=="base58"){aO=am}}}}var aL='{\n "guid" : "'+aM+'",\n "sharedKey" : "'+aR+'",\n';if(F&&w!=null&&aO==aw){aL+=' "double_encryption" : '+F+',\n "dpasswordhash" : "'+w+'",\n'}if(s){aL+=' "options" : '+JSON.stringify(s)+",\n"}aL+=' "keys" : [\n';for(var aN in I){var aQ=I[aN];aL+=' {"addr" : "'+aQ.addr+'"';if(aQ.priv!=null){aL+=',\n "priv" : "'+aO(aQ.priv,aQ.addr)+'"'}if(aQ.tag==2){aL+=',\n "tag" : '+aQ.tag}if(aQ.label!=null){aL+=',\n "label" : "'+aQ.label+'"'}aL+="},\n";atLeastOne=true}if(atLeastOne){aL=aL.substring(0,aL.length-2)}aL+="\n ]";if(av(g)>0){aL+=',\n "address_book" : [\n';for(var aN in g){aL+=' {"addr" : "'+aN+'",\n';aL+=' "label" : "'+g[aN]+'"},\n'}aL=aL.substring(0,aL.length-2);aL+="\n ]"}if(av(b)>0){aL+=',\n "tx_notes" : '+JSON.stringify(b)}aL+="\n}";return aL};this.get_history=function(aM,aL){BlockchainAPI.get_history(function(aN){H(aN,false);c();if(aM){aM()}},function(){if(aL){aL()}},aj,an)};this.deleteAddressBook=function(aL){delete g[aL];ad();$("#send-coins").find(".tab-pane").trigger("show",true)};function u(aL){$("#send-coins").find(".tab-pane.active").trigger("show",aL);if(aL){BlockchainAPI.get_ticker();$(".send").attr("disabled",false)}}function l(aL,aM,aQ){var aP=aL.val();aL.empty();for(var aO in I){var aR=I[aO];if(!aR||aR.tag==2){continue}var aN=aR.label;if(!aN){aN=aR.addr.substring(0,15)+"..."}if(aM||aR.balance>0){aL.prepend('")}}aL.prepend('');if(!aQ&&aP){aL.val(aP)}}function r(aN,aO){l(aN.find('select[name="from"]'),false,aO);l(aN.find('select[name="change"]'),true,aO);aN.find('select[name="change"]').prepend('');if(aO){aN.find("input").val("");aN.find(".send-value-usd").text(formatSymbol(0,symbol_local)).val("");aN.find(".amount-needed").text(0)}var aM=aN.find(".recipient-container");if(aO){var aQ=aM.find(".recipient:first-child").clone();aM.empty().append(aQ)}function aL(){var aR=0;aN.find('input[name="send-value"]').each(function(){var aS=parseFloat($(this).val());if(!isNaN(aS)){aR+=aS}});return aR}function aP(aR){aR.find('input[name="send-to-address"]').val("").typeahead({source:ar()}).next().click(function(){var aS=$(this).prev();h.scanQRCode(function(aT){console.log(aT);try{new Bitcoin.Address(aT);aS.val(aT)}catch(aU){loadScript("wallet/jsuri-1.1.1.min.js",function(){try{var aV=new Uri(aT);aS.val(aV.host());aR.find('input[name="send-value"]').val(aV.getQueryParamValue("amount"))}catch(aW){h.makeNotice("error","error","Invalid Bitcoin Address or URI")}},function(){h.makeNotice("error","error","Invalid Bitcoin Address or URI")})}},function(aT){h.makeNotice("error","misc-error",aT)})});aR.find(".local-symbol").text(symbol_local.symbol);aR.find('input[name="send-value"]').val("").bind("keyup change",function(aS){if(aS.keyCode=="9"){return}aN.find(".amount-needed").text(formatBTC(Bitcoin.Util.parseValue(aL().toFixed(8)).toString()));aR.find(".send-value-usd").val(convert($(this).val()*100000000,symbol_local.conversion)).text(formatSymbol($(this).val()*100000000,symbol_local))});aR.find(".send-value-usd").val("").text(formatSymbol(0,symbol_local)).bind("keyup change",function(aS){if(aS.keyCode=="9"){return}aR.find('input[name="send-value"]').val(formatBTC(parseFloat($(this).val())*symbol_local.conversion))})}aM.find(".recipient").each(function(){aP($(this))});aN.find(".remove-recipient").unbind().click(function(){var aR=aM.find(".recipient").length;if(aR>1){if(aR==2){$(this).hide(200)}aM.find(".recipient:last-child").remove()}});aN.find(".add-recipient").unbind().click(function(){var aR=aM.find(".recipient:first-child").clone();aR.appendTo(aM);aP(aR);aN.find(".remove-recipient").show(200)})}this.getAllAddresses=function(){var aM=[];for(var aL in I){aM.push(aL)}return aM};this.getPreferredAddress=function(){var aM=null;for(var aL in I){var aN=I[aL];if(aM==null){aM=aN}if(aN.priv!=null){if(aM==null){aM=aN}if(aN.tag==null||aN.tag==0){aM=aN;break}}}return aM.addr};function aI(){console.log("backupInstructionsModal");var aL=$("#restore-backup-modal");aL.modal({keyboard:true,backdrop:"static",show:true});aL.find(".btn.btn-secondary").unbind().click(function(){aL.modal("hide")})}this.scanQRCode=function(aN,aL){var aM=$("#qr-code-reader-modal");aM.modal({keyboard:false,backdrop:"static",show:true});loadScript("wallet/qr.code.reader.js",function(){QRCodeReader.init(aM,function(aO){aM.modal("hide");aN(aO)},function(aO){aM.modal("hide");aL(aO)})},aL);aM.find(".btn.btn-secondary").unbind().click(function(){QRCodeReader.stop();aM.modal("hide");aL()})};function U(aL){var aO=[];for(var aM in I){var aN=I[aM];if(aN.tag==aL){aO.push(aN.addr)}}return aO}this.getActiveAddresses=function(){return U()};this.getArchivedAddresses=function(){return U(2)};function ao(aO){if(aO!=null){ax=aO;for(var aM in E){var aL=E[aM];if(aL.blockHeight!=null&&aL.blockHeight>0){var aN=ax.height-aL.blockHeight+1;if(aN<=100){aL.setConfirmations(ax.height-aL.blockHeight+1)}else{aL.setConfirmations(null)}}else{aL.setConfirmations(0)}}}}function z(aM,aL){loadScript("wallet/frame-modal.js",function(){showFrameModal({title:"Transaction Summary",description:"",src:root+"tx-summary/"+aM+"?result="+aL+"&guid="+M})})}this.deleteNote=function(aL){delete b[aL];c();ad()};function m(aL,aM){(function(aO,aQ){aO=$(aO);if(!aO.data("popover")){aO.popover({title:'Add Note ',trigger:"manual",content:'
    '})}else{if(aO.data("popover").tip().is(":visible")){return}}aO.popover("show");aO.mouseleave(function(){if(!aO.__timeout){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)}});function aN(){if(aO.__timeout){clearTimeout(aO.__timeout);aO.__timeout=null}}var aP=aO.data("popover").tip().mouseenter(aN);aP.find("textarea").focus(aN);aP.mouseleave(function(){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)});aP.find("i").unbind().click(function(){aO.popover("hide")});aP.find("button").click(function(){var aR=$.trim($("
    "+aP.find("textarea").val()+"
    ").text().replace(/'/g,"").replace(/"/g,""));if(aR.length>0){b[aQ]=aR;ad()}c()})})(aL,aM)}function aB(aL,aM,aN){(function(aO,aP,aR){aO=$(aO);if(!aO.data("popover")){var aS="Note";if(b[aR]){aS+=' '}$(aO).popover({title:aS,trigger:"manual",content:aP})}else{if(aO.data("popover").tip().is(":visible")){return}}aO.popover("show");aO.mouseleave(function(){if(!aO.__timeout){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)}});var aQ=aO.data("popover").tip().mouseenter(function(){if(aO.__timeout){clearTimeout(aO.__timeout);aO.__timeout=null}});aQ.find("img").unbind().click(function(){h.deleteNote(aR)});aQ.mouseleave(function(){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)})})(aL,aM,aN)}function C(aO,aT,aQ){var aU=aO.result;var aP='
      ';var aM=true;if(aU>=0){for(var aN=0;aNNewly Generated Coins'}else{var aR=aT[aL.addr];if(aR){continue}aM=false;aP+=formatOutput(aL,aT,aQ)}}}else{if(aU<0){for(var aN=0;aNMoved Between Wallet'}aP+="
    ";var aS=aO.note?aO.note:b[aO.hash];if(aS){aP+=' '}else{aP+=' '}if(aO.time>0){aP+=dateToString(new Date(aO.time*1000))}if(aO.confirmations==0){aP+=' Unconfirmed Transaction! '}else{if(aO.confirmations>0){aP+=' '+aO.confirmations+" Confirmations "}}aP+="
    ";if(aU>0){aP+='
    '+formatMoney(aU,true)+"
    "}else{if(aU<0){aP+='
    '+formatMoney(aU,true)+"
    "}else{aP+="
    "+formatMoney(aU,true)+"
    "}}if(aO.balance==null){aP+=""}else{aP+='
    '+formatMoney(aO.balance)+"
    "}return aP}function T(){L();if(ap==null){$("#balance").html("Loading...")}else{$("#balance").html(formatSymbol(ap,symbol));$("#balance2").html(formatSymbol(ap,(symbol==symbol_local)?symbol_btc:symbol_local))}return j.attr("id")}function c(aL){var aM=T();if("send-coins"==aM){u(aL)}else{if("home-intro"==aM){f(aL)}else{if("receive-coins"==aM){aK(aL)}else{if("my-transactions"==aM){V(aL)}}}}}function f(aL){$("#summary-n-tx").html(K);$("#summary-received").html(formatMoney(ak,true));$("#summary-sent").html(formatMoney(P,true));$("#summary-balance").html(formatMoney(ap,symbol));var aN=h.getPreferredAddress();$("#tweet-for-btc").unbind().click(function(){window.open("https://twitter.com/share?url=https://blockchain.info/wallet&hashtags=tweet4btc,bitcoin,"+aN+"&text=Sign Up For a Free Bitcoin Wallet @ Blockchain.info","","toolbar=0, status=0, width=650, height=360")});if(h.isWatchOnly(aN)==null){$(".no-watch-only").hide()}else{$(".no-watch-only").show();var aM=$("#my-primary-address");if(aM.text()!=aN){aM.text(aN);loadScript("wallet/jquery.qrcode.min.js",function(){$("#my-primary-addres-qr-code").qrcode({width:125,height:125,text:aN})})}}}function Q(){var aL=$("#export-warning").show();var aM=$("#import-export-content").hide();$("#show-import-export").unbind().click(function(){h.getMainPassword(function(){aL.hide();loadScript("wallet/import-export.min.js",function(){ImportExport.init(aM,function(){aM.show()},function(){aa($("#home-intro"))})},function(aN){h.makeNotice("error","misc-error",aN);aa($("#home-intro"))})},function(){aa($("#home-intro"))})})}function V(){var aM=null;var aO=0;if(aM!=null){clearInterval(aM);aM=null}var aL;if(s.tx_display==0){$("#transactions-detailed").hide();aL=$("#transactions-compact").show().find("tbody").empty()}else{$("#transactions-compact").hide();aL=$("#transactions-detailed").empty().show()}if(E.length==0){$("#transactions-detailed, #transactions-compact").hide();$("#no-transactions").show();return}else{$("#no-transactions").hide()}var aN=function(){for(var aS=aO;aS0){aT=""}aQ.append($('
  • ← Previous
  • ').click(function(){h.setPage(an-1)}));for(var aS=0;aS'+aU+"").click(function(){h.setPage(aU)}))})(aS)}var aT=" disabled";if(anNext →').click(function(){h.setPage(an+1)}))}};aN()}this.setPage=function(aL){an=aL;scroll(0,0);h.get_history()};function v(){loadScript("wallet/frame-modal.js",function(){showFrameModal({title:"Export History",description:"",src:root+"export-history?active="+h.getActiveAddresses().join("|")+"&archived="+h.getArchivedAddresses().join("|")})})}function H(aO,aN){if(!aN&&aO.mixer_fee){x=aO.mixer_fee}E.length=0;if(aO.wallet==null){ak=0;P=0;ap=0;K=0;aJ=0;return}ak=aO.wallet.total_received;P=aO.wallet.total_sent;ap=aO.wallet.final_balance;K=aO.wallet.n_tx;aJ=aO.wallet.n_tx_filtered;for(var aM=0;aM0){aM.checksum=aq}$.ajax({type:"GET",url:root+"wallet/wallet.aes.json",data:aM,success:function(aO){if(aO==null||aO.length==0||aO=="Not modified"){return}console.log("Wallet data modified");h.setEncryptedWalletData(aO);if(X()){h.get_history();c()}else{window.location.reload()}}})}function X(){try{if(ac==null||ac.length==0){h.makeNotice("error","misc-error","No Wallet Data To Decrypt");return false}var aO=null;h.decrypt(ac,az,function(aP){try{aO=$.parseJSON(aP);return(aO!=null)}catch(aQ){return false}});if(aO==null){throw"Error Decrypting Wallet. Please check your password is correct."}if(aO.double_encryption&&aO.dpasswordhash){F=aO.double_encryption;w=aO.dpasswordhash}if(aO.options){$.extend(s,aO.options)}else{if(aO.fee_policy){h.setFeePolicy(aO.fee_policy)}if(aO.html5_notifications){h.setHTML5Notifications(aO.html5_notifications)}}I={};for(var aM=0;aM").qrcode({width:300,height:300,text:M+"|"+d+"|"+az}))}catch(aM){h.makeNotice("error","misc-error",aM)}})},function(){h.logout()})};this.getMainPassword=function(aM,aL){if(B>new Date().getTime()-N){return aM(az)}h.getPassword($("#main-password-modal"),function(aN){if(az==aN){B=new Date().getTime();if(aM){try{aM(az)}catch(aO){h.makeNotice("error","misc-error",aO)}}}else{h.makeNotice("error","misc-error","Password incorrect.");if(aL){try{aL()}catch(aO){h.makeNotice("error","misc-error",aO)}}}},aL)};this.getSecondPassword=function(aN,aL){if(!F||af!=null){if(aN){try{aN(af)}catch(aM){h.makeNotice("error","misc-error",aM)}}return}h.getPassword($("#second-password-modal"),function(aO){if(aA(aO)){if(aN){try{aN(aO)}catch(aP){h.makeNotice("error","misc-error",aP)}}}else{h.makeNotice("error","misc-error","Password incorrect.");if(aL){try{aL()}catch(aP){h.makeNotice("error","misc-error",aP)}}}},aL)};function a(){if(A){console.log("Already initd");return}var aL=$("#restore-password");az=aL.val();aL.val("");B=new Date().getTime();if(ac==null||ac.length==0){h.setLoadingText("Validating Authentication key");var aM=$.trim($(".auth-"+q).find(".code").val());if(aM.length==0||aM.length>255){h.makeNotice("error","misc-error","You must enter a Two Factor Authentication code");return false}$.ajax({type:"POST",url:root+"wallet",data:{guid:M,payload:aM,length:aM.length,method:"get-wallet",format:"plain"},success:function(aN){try{if(aN==null||aN.length==0){h.makeNotice("error","misc-error","Server Return Empty Wallet Data");return}h.setEncryptedWalletData(aN);$(".auth-"+q).hide();$(".auth-0").show();if(X()){n();aC()}}catch(aO){h.makeNotice("error","misc-error",aO)}},error:function(aN){h.makeNotice("error","misc-error",aN.responseText)}})}else{if(X()){n();aC()}}return true}function e(){al("error");webSocketConnect(y);A=true;$("#tech-faq").hide();$("#intro-text").hide();$("#large-summary").show()}this.quickSendNoUI=function(aN,aM,aL){loadScript("wallet/signer.min.js",function(){h.getSecondPassword(function(){try{var aP=initNewTx();aP.from_addresses=h.getActiveAddresses();aP.to_addresses.push({address:new Bitcoin.Address(aN),value:Bitcoin.Util.parseValue(aM)});aP.addListener(aL);aP.start()}catch(aO){aL.on_error(aO)}},function(aO){aL.on_error(aO)})})};function G(){h.setLoadingText("Sending email backup");$.ajax({type:"POST",url:root+"wallet",data:{guid:M,sharedKey:d,method:"email-backup",format:"plain"},success:function(aL){h.makeNotice("success","backup-success",aL)},error:function(aL){h.makeNotice("error","misc-error",aL.responseText)}})}function ad(aO,aN,aM,aL){if(ah!=null){clearInterval(ah);ah=null}ah=setTimeout(function(){h.backupWallet(aO,aN,aM,aL)},3000)}this.backupWallet=function(aS,aR,aL){try{if(aS==null){aS="update"}if(av(I)==0){return}var aN=h.makeWalletJSON();var aQ=h.encrypt(aN,az);if(aQ.length==0){throw"Error encrypting the JSON output"}var aP=null;h.decrypt(aQ,az,function(aT){try{aP=$.parseJSON(aT);return(aP!=null)}catch(aU){return false}});if(aP==null){throw"Error Decrypting Previously encrypted JSON. Not Saving Wallet."}var aM=aq;h.setLoadingText("Saving wallet");h.setEncryptedWalletData(aQ);$.ajax({type:"POST",url:root+"wallet",data:{guid:M,length:aQ.length,payload:aQ,sharedKey:d,checksum:aq,old_checksum:aM,method:aS},converters:{"* text":window.String,"text html":true,"text json":window.String,"text xml":window.String},success:function(aU){var aW=false;for(var aT in I){var aV=I[aT];if(aV.tag==1){aV.tag=null;aW=true}}h.makeNotice("success","misc-success",aU);c();if(aR!=null){aR()}},error:function(aT){h.makeNotice("error","misc-error",aT.responseText,10000);c();if(aL!=null){aL()}}})}catch(aO){h.makeNotice("error","misc-error","Error Saving Wallet: "+aO,10000);c();if(aL!=null){aL(aO)}else{throw aO}}};function aE(aL){if(F){if(af==null){throw"Cannot encrypt private key without a password"}return h.encrypt(aL,d+af)}else{return aL}return null}this.isBase58=function(aN,aM){for(var aL=0;aL58){return false}}return true};this.encrypt=function(aM,aL){return Crypto.AES.encrypt(aM,aL,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:S})};this.decrypt=function(aO,aN,aQ,aM){try{var aL=Crypto.AES.decrypt(aO,aN,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:S});if(aL!=null&&aL.length>0){if(aQ(aL)){return aL}}}catch(aP){console.log(aP)}try{var aL=Crypto.AES.decrypt(aO,aN,{mode:new Crypto.mode.OFB(Crypto.pad.iso7816),iterations:1});if(aL!=null&&aL.length>0){if(aQ(aL)){return aL}}}catch(aP){console.log(aP)}try{var aL=Crypto.AES.decrypt(aO,aN,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:1});if(aL!=null&&aL.length>0){if(aQ(aL)){return aL}}}catch(aP){console.log(aP)}if(aM!=null){aM()}return null};this.setGUID=function(aN,aM){if(A){throw"Cannot Set GUID Once Initialized"}h.setLoadingText("Changing Wallet Identifier");$("#initial_error,#initial_success").remove();try{var aL=localStorage.getItem("guid")}catch(aO){}$.ajax({type:"GET",dataType:"json",url:root+"wallet/"+aN,data:{format:"json",resend_code:aM},success:function(aQ){$(".auth-"+q).hide();M=aQ.guid;q=aQ.auth_type;aD=aQ.real_auth_type;h.setEncryptedWalletData(aQ.payload);war_checksum=aQ.war_checksum;setLocalSymbol(aQ.symbol_local);$("#restore-guid").val(M);$(".auth-"+q).show();if(aQ.initial_error){h.makeNotice("error","misc-error",aQ.initial_error)}if(aQ.initial_success){h.makeNotice("success","misc-success",aQ.initial_success)}try{if(aL!=M){localStorage.clear();if(M!=D){localStorage.setItem("guid",M)}}}catch(aP){}},error:function(aQ){if(aL==M&&ac){h.makeNotice("error","misc-error","Error Contacting Server. Using Local Wallet Cache.");M=aL;aq=ab();q=0;$("#restore-guid").val(M);$(".auth-"+q).show();return}try{var aP=$.parseJSON(aQ.responseText);if(aP.initial_error){h.makeNotice("error","misc-error",aP.initial_error);return}}catch(aQ){}if(aQ.responseText){h.makeNotice("error","misc-error",aQ.responseText)}else{h.makeNotice("error","misc-error","Error changing wallet identifier")}}})};function i(aL){var aM=B58.encode(aL);return aE(aM)}this.decryptPK=function(aL){if(F){if(af==null){throw"Cannot decrypt private key without a password"}return h.decrypt(aL,d+af,h.isBase58)}else{return aL}return null};this.decodePK=function(aM){var aL=h.decryptPK(aM);if(aL!=null){return B58.decode(aL)}return null};this.signmessage=function(aL,aN){var aP=I[aL];var aO=h.decodePK(aP.priv);var aM=new Bitcoin.ECKey(aO);return Bitcoin.Message.signMessage(aM,aN,aP.addr)};function aA(aM){var aL=Crypto.SHA256(d+aM,{asBytes:true});var aO=aL;for(var aN=1;aN0){$("#"+j.attr("id")+"-btn").parent().attr("class","")}j.hide()}j=aL;j.show();if($("#"+j.attr("id")+"-btn").length>0){$("#"+j.attr("id")+"-btn").parent().attr("class","active")}c(true)}function av(aN){var aM=0,aL;for(aL in aN){aM++}return aM}function Z(aL){I[aL].priv=null}function ae(){if(av(I)>=at){h.makeNotice("error","misc-error","We currently support a maximum of "+at+" private keys, please remove some unused ones.");return true}return false}function aH(aN,aL){var aM=I[aN];if(!aM||aM.length==0){I[aN]={addr:aN,priv:aL,balance:0};return true}else{if(!aM.priv&&aL){aM.priv=aL;return true}}return false}function o(){var aN=$("#add-address-book-entry-modal");aN.modal({keyboard:true,backdrop:"static",show:true});var aL=aN.find('input[name="label"]');var aM=aN.find('input[name="address"]');aL.val("");aM.val("");aN.find(".btn.btn-primary").unbind().click(function(){aN.modal("hide");var aP=$.trim($("
    "+aL.val()+"
    ").text());var aO=$.trim(aM.val());if(aP.length==0){h.makeNotice("error","misc-error","You must enter a label for the address book entry");return false}if(aP.indexOf('"')!=-1){h.makeNotice("error","misc-error","Label cannot contain double quotes");return false}if(aO.length==0){h.makeNotice("error","misc-error","You must enter a bitcoin address for the address book entry");return false}var aR;try{aR=new Bitcoin.Address(aO);if(aR==null){throw"Null address"}}catch(aQ){h.makeNotice("error","misc-error","Bitcoin address invalid, please make sure you entered it correctly");return false}if(g[aO]!=null){h.makeNotice("error","misc-error","Bitcoin address already exists");return false}h.makeNotice("success","misc-success","Added Address book entry");h.addAddressBookEntry(aO,aP);ad();$("#send-coins").find(".tab-pane").trigger("show",true)});aN.find(".btn.btn-secondary").unbind().click(function(){aN.modal("hide")})}this.logout=function(){$.ajax({type:"GET",url:root+"wallet/logout",data:{format:"plain"},success:function(aL){window.location.reload()},error:function(){window.location.reload()}})};function ai(aR){var aT=$("#delete-address-modal");aT.modal({keyboard:true,backdrop:"static",show:true});aT.find(".btn.btn-primary").hide();aT.find(".btn.btn-danger").hide();$("#change-mind").hide();aT.find("#to-delete-address").html(aR.join(" "));aT.find("#delete-balance").empty();var aN=aT.find("#delete-balance");var aL=[];for(var aQ in aR){var aS=aR[aQ];if(I[aS]&&I[aS].priv){aL.push(aR[aQ])}}BlockchainAPI.get_balance(aL,function(aU){aT.find(".btn.btn-primary").show(200);aT.find(".btn.btn-danger").show(200);aN.html("Balance "+formatBTC(aU)+" BTC");if(aU>0){aN.css("color","red")}else{aN.css("color","black")}},function(){aT.find(".btn.btn-primary").show(200);aT.find(".btn.btn-danger").show(200);aN.text("Error Fetching Balance")});var aO=false;var aQ=0;var aM=null;var aP=10;changeMind=function(){$("#change-mind").show();$("#change-mind-time").text(aP-aQ)};aT.find(".btn.btn-primary").unbind().click(function(){changeMind();aT.find(".btn.btn-primary").hide();aT.find(".btn.btn-danger").hide();aM=setInterval(function(){if(aO){return}++aQ;changeMind();if(aQ==aP){$("#delete-address-modal").modal("hide");h.makeNotice("warning","warning-deleted","Private Key Removed From Wallet");for(var aU in aR){Z(aR[aU])}c();h.backupWallet();clearInterval(aM)}},1000)});aT.find(".btn.btn-danger").unbind().click(function(){changeMind();aT.find(".btn.btn-primary").hide();aT.find(".btn.btn-danger").hide();aM=setInterval(function(){if(aO){return}++aQ;changeMind();if(aQ==aP){try{$("#delete-address-modal").modal("hide");h.makeNotice("warning","warning-deleted","Address & Private Key Removed From Wallet");for(var aU in aR){h.deleteAddress(aR[aU])}c();h.backupWallet("update",function(){h.get_history()})}finally{clearInterval(aM)}}},1000)});aT.unbind().on("hidden",function(){if(aM){aO=true;clearInterval(aM);aM=null}});aT.find(".btn.btn-secondary").unbind().click(function(){aT.modal("hide")})}function ar(){var aN=[];for(var aL in g){aN.push(g[aL])}for(var aL in I){var aM=I[aL];if(aM.tag!=2&&aM.label){aN.push(aM.label)}}return aN}function O(aL){h.getSecondPassword(function(){var aN=$("#sweep-address-modal");aN.modal("show");BlockchainAPI.get_balance(aL,function(aO){aN.find(".balance").text("Amount: "+formatBTC(aO)+" BTC")},function(){aN.find(".balance").text("Error Fetching Balance")});var aM=aN.find('select[name="change"]');l(aM,true);aN.find(".btn.btn-primary").unbind().click(function(){loadScript("wallet/signer.min.js",function(){BlockchainAPI.get_balance(aL,function(aO){var aP=initNewTx();aP.fee=aP.base_fee;aP.to_addresses.push({address:new Bitcoin.Address($.trim(aM.val())),value:BigInteger.valueOf(aO).subtract(aP.fee)});aP.from_addresses=aL;aP.start()},function(){h.makeNotice("error","misc-error","Error Getting Address Balance")})});aN.modal("hide")});aN.find(".btn.btn-secondary").unbind().click(function(){aN.modal("hide")})})}function au(){try{$(".pop").popover({offset:10,placement:"bottom"})}catch(aL){}}function n(){$("#add-address-book-entry-btn").click(function(){o()});$("#home-intro-btn").click(function(){aa($("#home-intro"))});$("#my-transactions-btn").click(function(){aa($("#my-transactions"))});$("#send-coins-btn").click(function(){aa($("#send-coins"))});$("#import-export-btn").click(function(){aa($("#import-export"));Q()});$("#chord-diagram").click(function(){window.open(root+"taint/"+h.getActiveAddresses().join("|"),null,"width=850,height=850")});$("#verify-message").click(function(){loadScript("wallet/address_modal.min.js",function(){verifyMessageModal()})});$("#group-received").click(function(){loadScript("wallet/taint_grouping.min.js",function(){try{loadTaintData()}catch(aL){h.makeNotice("error","misc-error","Unable To Load Taint Grouping Data")}})});$("#my-account-btn").click(function(){aa($("#my-account"));var aL=$("#account-settings-warning").show();var aM=$("#my-account-content").hide();$("#show-account-settings").unbind().click(function(){h.getMainPassword(function(){aL.hide();loadScript("wallet/account.min.js",function(){AccountSettings.init(aM,function(){aM.show()},function(){aa($("#home-intro"))})},function(aN){h.makeNotice("error","misc-error",aN);aa($("#home-intro"))})},function(){aa($("#home-intro"))})})});$("#enable_archived_checkbox").change(function(){var aL=$(this).is(":checked");$(".archived_checkbox").attr("checked",false);$(".archived_checkbox").attr("disabled",!aL);$("#archived-sweep").attr("disabled",!aL);$("#archived-delete").attr("disabled",!aL)});$("#anonymous-addresses").on("show",function(){var aL=$(this);loadScript("wallet/anonymous-addresses.min.js",function(){buildAnonymousTable(aL)})});$("#active-addresses").on("show",function(){var aR=$(this).find("table:first");aR.find("tbody:gt(0)").remove();var aO=aR.find("tbody").empty();for(var aQ in I){var aS=I[aQ];if(aS.tag==2){continue}var aP="";if(aS.tag==1){aP=' (Not Synced)'}else{if(aS.priv==null){aP=' (Watch Only)'}}var aL="";var aN=aS.addr;if(aS.label!=null){aN=aS.label;aL=' - '+aS.addr+""}var aM=$('
    '+aN+""+aL+" "+aP+'
    '+formatMoney(aS.balance,true)+' ');(function(aT){aM.find(".act-archive").click(function(){h.archiveAddr(aT)});aM.find(".act-label").click(function(){loadScript("wallet/address_modal.min.js",function(){showLabelAddressModal(aT)})});aM.find(".act-qr").click(function(){loadScript("wallet/address_modal.min.js",function(){showAddressModalQRCode(aT)})});aM.find(".act-sign").click(function(){loadScript("wallet/address_modal.min.js",function(){showAddressModalSignMessage(aT)})});aM.find(".act-request").click(function(){loadScript("wallet/frame-modal.js",function(){showFrameModal({title:"Create Payment Request",description:"Request Payment into address "+aT+"",src:root+"payment_request?address="+aT})})})})(aS.addr);if(aS.balance>0&&aS.priv){aR.prepend(aM)}else{aR.append(aM)}}au()});$("#archived-addresses").on("show",function(){$("#enable_archived_checkbox").attr("checked",false);$("#archived-delete").attr("disabled",true);$("#archived-sweep").attr("disabled",true);$("#archived-addr tbody").empty();var aM=$(this).find("tbody");var aL=h.getArchivedAddresses();var aN=function(){aM.empty();for(var aR in aL){var aT=I[aL[aR]];if(aT.tag!=2){continue}var aQ="";if(aT.priv==null){aQ=' (Watch Only)'}var aO="";var aP=aT.addr;if(aT.label!=null){aP=aT.label;aO=' - '+aT.addr+""}var aS=$('
    '+aP+""+aO+" "+aQ+'
    '+formatBTC(aT.balance)+' BTC');(function(aU){aS.find(".act-unarchive").click(function(){h.unArchiveAddr(aU)})})(aT.addr);if(aT.balance>0&&aT.priv){aM.prepend(aS)}else{aM.append(aS)}}};aN();BlockchainAPI.get_balances(aL,function(aO){aN()},function(aO){h.makeNotice("error","misc-error",aO)})});$("#archived-sweep").click(function(){var aL=[];$(".archived_checkbox:checked").each(function(){var aM=I[$(this).val()];if(aM.priv==null){h.makeNotice("error","misc-error","Cannot Sweep Watch Only Address");return}aL.push(aM.addr)});if(aL.length==0){return}O(aL)});$("#archived-delete").click(function(){var aL=[];$(".archived_checkbox:checked").each(function(){aL.push($(this).val())});if(aL.length==0){return}ai(aL)});$("#anonymous-never-ask").click(function(){SetCookie("anonymous-never-ask",$(this).is(":checked"))});$(".deposit-btn").click(function(){var aM=$(this);var aL=h.getPreferredAddress();loadScript("wallet/frame-modal.js",function(){showFrameModal({title:aM.data("title"),description:"Deposit into address "+aL+"",top_right:'Have Questions? Read How It Works',src:root+"deposit?address="+aL+"&ptype="+aM.data("type")+"&guid="+M+"&sharedKey="+d})})});$(".withdraw-btn").click(function(){var aL=$(this);h.getSecondPassword(function(){var aM=h.getPreferredAddress();loadScript("wallet/frame-modal.js",function(){showFrameModal({title:aL.data("title"),description:"Your Wallet Balance is "+formatBTC(ap)+" BTC",src:root+"withdraw?method="+aL.data("type")+"&address="+aM+"&balance="+ap+"&guid="+M+"&sharedKey="+d})})})});$("#logout").click(h.logout);$("#refresh").click(function(){J();h.get_history()});$("#summary-n-tx-chart").click(function(){window.open(root+"charts/n-transactions?show_header=false&address="+h.getActiveAddresses().join("|"),null,"scroll=0,status=0,location=0,toolbar=0,width=1000,height=700")});$("#summary-received-chart").click(function(){window.open(root+"charts/received-per-day?show_header=false&address="+h.getActiveAddresses().join("|"),null,"scroll=0,status=0,location=0,toolbar=0,width=1000,height=700")});$("#summary-balance-chart").click(function(){window.open(root+"charts/balance?show_header=false&address="+h.getActiveAddresses().join("|"),null,"scroll=0,status=0,location=0,toolbar=0,width=1000,height=700")});$("#new-addr").click(function(){try{h.getSecondPassword(function(){var aM=h.generateNewKey().getBitcoinAddress().toString();h.makeNotice("info","new-address","Generated new Bitcoin Address "+aM);loadScript("wallet/address_modal.min.js",function(){showLabelAddressModal(aM)});h.backupWallet()})}catch(aL){h.makeNotice("error","misc-error",aL)}});$(".tx_filter a").click(function(){an=0;aj=$(this).data("value");h.get_history()});$(".tx_display a").click(function(){var aL=$(this).data("value");if(aL=="export"){v();return}s.tx_display=aL;c();ad()});$("#email-backup-btn").click(function(){G()});$("#dropbox-backup-btn").click(function(){window.open(root+"wallet/dropbox-login?guid="+M+"&sharedKey="+d)});$("#gdrive-backup-btn").click(function(){window.open(root+"wallet/gdrive-login?guid="+M+"&sharedKey="+d)});$("#large-summary").click(function(){toggleSymbol();c()});$("#send-quick").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"quick",initNewTx())})})});$("#send-email").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"email",initNewTx())})})});$("#send-anonymous").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".mixer_fee").text(x);aL.find(".fees,.free,.bonus").show();if(x<0){aL.find(".fees,.free").hide()}else{if(x==0){aL.find(".fees,.bonus").hide()}else{aL.find(".free,.bonus").hide()}}aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"anonymous",initNewTx())})});aL.find(".anonymous-fees").text("0.00");aL.find('input[name="send-before-fees"]').unbind().bind("keyup change",function(){var aP=parseFloat($.trim($(this).val()));var aO=0;if(aP>0){if(x>0){aO=parseFloat(aP+((aP/100)*x))}else{aO=parseFloat(aP);aL.find(".bonus-value").text(-(Math.min($(this).val(),200)/100)*x)}}if(aP<0.5){aL.find(".anonymous-fees").text("0.00")}else{aL.find(".anonymous-fees").text(aO.toFixed(4))}aL.find('input[name="send-value"]').val(aO).trigger("keyup")})});$("#send-custom").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"custom",initNewTx())})});aL.find('select[name="from"]').unbind().change(function(){var aQ=0;var aO=$(this).val();for(var aP in aO){if(aO[aP]=="any"){$(this).val("any");aQ=ap;break}else{var aR=I[aO[aP]];if(aR&&aR.balance){aQ+=aR.balance}}}aL.find(".amount-available").text(formatBTC(aQ))}).trigger("change");aL.find(".reset").unbind().click(function(){r(aL,true);aL.find('select[name="from"]').trigger("change")})});$("#send-satoshi-dice,#send-btcdice-dice").on("show",function(aN,aM){var aL=this;loadScript("wallet/dicegames.min.js",function(){try{DICEGame.init($(aL))}catch(aO){h.makeNotice("error","misc-error","Unable To Load Dice Bets")}},function(aO){h.makeNotice("error","misc-error",aO)})});$("#send-sms").on("show",function(aN,aM){if(aM){return}var aL=$(this);r(aL);$.ajax({type:"GET",url:resource+"wallet/country_codes.html",success:function(aO){aL.find('select[name="sms-country-code"]').html(aO)},error:function(){h.makeNotice("error","misc-error","Error Downloading SMS Country Codes")}});aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){var aO=initNewTx();startTxUI(aL,"sms",aO)})})});$("#address-book").on("show",function(){var aM=$("#address-book-tbl tbody");if(av(g)>0){aM.empty();for(var aL in g){var aN=$(""+g[aL]+'
    '+aL+'
    ');(function(aO){aN.find(".act-delete").click(function(){h.deleteAddressBook(aO)})})(aL);aM.append(aN)}}});$('a[data-toggle="tab"]').unbind().on("show",function(aL){$(aL.target.hash).trigger("show")});$("#receive-coins-btn").click(function(){aa($("#receive-coins"))});$(".show_adv").click(function(){$(".modal:visible").center()});$(".download-backup-btn").show();au()}function p(){$(".resend-code").click(function(){h.setGUID(M,true)});$(".download-backup-btn").toggle(ac!=null).click(function(){$(this).attr("download","wallet.aes.json");if(!ac){h.makeNotice("error","error","No Wallet Data to Download");return}var aM=("download" in document.createElement("a"));if(window.Blob&&window.URL&&aM){var aN=new Blob([ac]);var aO=window.URL.createObjectURL(aN);$(this).attr("href",aO)}else{var aL=window.open(null,null,"width=700,height=800,toolbar=0");aL.document.write('
    '+ac+"
    ")}aI()});$(".auth-0,.auth-1,.auth-2,.auth-3,.auth-4,.auth-5").unbind().keypress(function(aL){if(aL.keyCode==13){aL.preventDefault();$("#restore-wallet-continue").click()}});$("#restore-wallet-continue").unbind().click(function(aM){aM.preventDefault();var aL=$.trim($("#restore-guid").val());if(aL.length==0){return}if(M!=aL){h.setGUID(aL,false)}else{a()}});$(".modal").on("show",function(){L();$(this).center()}).on("shown",function(){L();$(this).center()})}function ag(aM){var aN=Crypto.SHA256(aM+"?");switch(aN.slice(0,2)){case"00":var aO=Crypto.SHA256(aM,{asBytes:true});return aO;break;case"01":var aL=Crypto.util.hexToBytes(aN.slice(2,4))[0];var aP=Math.round(Math.pow(2,(aL/4)));var aO=Crypto.PBKDF2(aM,"Satoshi Nakamoto",32,{iterations:aP,asBytes:true});return aO;break;default:console.log("invalid key");break}}function ay(){var aN,aL="";if(window.getSelection){aN=window.getSelection();if(aN.rangeCount){var aO=aN.getRangeAt(0).cloneContents();var aM=document.createElement("div");aM.appendChild(aO);aL=aM.innerText}}else{if(document.selection&&document.selection.type=="Text"){aL=document.selection.createRange().htmlText}}return aL}this.detectPrivateKeyFormat=function(aM){if(/^5[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{50}$/.test(aM)){return"sipa"}if(/^[LK][123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{51}$/.test(aM)){return"compsipa"}if(/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{44}$/.test(aM)||/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{43}$/.test(aM)){return"base58"}if(/^[A-Fa-f0-9]{64}$/.test(aM)){return"hex"}if(/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789=+\/]{44}$/.test(aM)){return"base64"}if(/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{21}$/.test(aM)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{25}$/.test(aM)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{29}$/.test(aM)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{30}$/.test(aM)){var aL=Crypto.SHA256(aM+"?",{asBytes:true});if(aL[0]===0||aL[0]===1){return"mini"}}throw"Unknown Key Format "+aM};this.privateKeyStringToKey=function(aM,aO){var aL=null;if(aO=="base58"){aL=B58.decode(aM)}else{if(aO=="base64"){aL=Crypto.util.base64ToBytes(aM)}else{if(aO=="hex"){aL=Crypto.util.hexToBytes(aM)}else{if(aO=="mini"){aL=ag(aM)}else{if(aO=="sipa"){var aN=B58.decode(aM);aN.shift();aL=aN.slice(0,aN.length-4)}else{if(aO=="sipa"){var aN=B58.decode(aM);aN.shift();aL=aN.slice(0,aN.length-4)}else{if(aO=="compsipa"){var aN=B58.decode(aM);aN.shift();aN.pop();aL=aN.slice(0,aN.length-4)}else{throw"Unsupported Key Format"}}}}}}}if(aL.length!=32){throw"Result not 32 bytes in length"}return new Bitcoin.ECKey(aL)};$(document).ready(function(){if(!$.isEmptyObject({})){h.makeNotice("error","error","Object.prototype has been extended by a browser extension. Please disable this extensions and reload the page.");return}var aM=$(document.body);M=aM.data("guid");d=aM.data("sharedkey");if(h.skip_init){return}try{ac=localStorage.getItem("payload");if(!M||M.length==0){M=localStorage.getItem("guid")}if(M&&M.length==36){setTimeout(function(){h.setGUID(M,false)},10)}}catch(aO){}if(top.location!=self.location){top.location=self.location.href}$("input,button,select").attr("autocomplete","off");aM.ajaxStart(function(){al("loading_start");$(".loading-indicator").fadeIn(200)}).ajaxStop(function(){al("loading_stop");$(".loading-indicator").hide()}).click(function(){if(R){clearTimeout(R);R=setTimeout(h.logout,h.getLogoutTime())}rng_seed_time()}).keypress(function(){if(R){clearTimeout(R);R=setTimeout(h.logout,h.getLogoutTime())}rng_seed_time()});p();$(".auth-"+q).show();j=$("#restore-wallet");j.show();var aN=false;var aR=17,aQ=86,aL=67,aP=67;$(document).keydown(function(aT){try{if(aT.keyCode==aR||aT.keyCode==aP){aN=true}if(aN&&aT.keyCode==aL){var aS=$.trim(ay());var aU=I[aS];if(aU!=null){if(aU.priv==null){$("#watch-only-copy-warning-modal").modal("show")}else{if(aU.tag==1){$("#not-synced-warning-modal").modal("show")}}}}}catch(aT){console.log(aT)}}).keyup(function(aS){if(aS.keyCode==aR||aS.keyCode==aP){aN=false}})});this.unArchiveAddr=function(aL){var aL=I[aL];if(aL.tag==2){aL.tag=null;c();ad("update",function(){h.get_history()})}else{h.makeNotice("error","add-error","Cannot Unarchive This Address")}};this.archiveAddr=function(aL){if(h.getActiveAddresses().length<=1){h.makeNotice("error","add-error","You must leave at least one active address");return}var aL=I[aL];if(aL.tag==null||aL.tag==0){aL.tag=2;c();ad("update",function(){h.get_history()})}else{h.makeNotice("error","add-error","Cannot Archive This Address")}};function aK(){$("#receive-coins").find(".tab-pane.active").trigger("show");setupToggle()}this.addWatchOnlyAddress=function(aL){return aH(aL)};this.addPrivateKey=function(aM,aL){if(ae()){return false}if(aM==null){throw"Unable to generate a new bitcoin address."}if(aL){var aO=aM.getBitcoinAddressCompressed()}else{var aO=aM.getBitcoinAddress()}if(aO==null){throw"Generated invalid bitcoin address."}if(aH(aO.toString(),i(aM.priv))){I[aO].tag=1;try{ws.send('{"op":"addr_sub", "addr":"'+aO+'"}')}catch(aN){}}else{throw"Unable to add generated bitcoin address."}return aO};this.generateNewKey=function(){var aL=new Bitcoin.ECKey(false);if(h.addPrivateKey(aL)){return aL}}}; \ No newline at end of file +var MyWallet=new function(){var h=this;this.skip_init=false;var D="abcaa314-6f67-6705-b384-5d47fbe9d7cc";var ac;var M;var j;var az;var af;var w;var d;var ap=0;var P=0;var ak=0;var K=0;var aJ=0;var ax;var g={};var E=[];var F=false;var an=0;var aj=0;var at=1000;var I={};var aq;var ah;var x=1.5;var S=10;var b={};var aD=0;var q;var R;var W=[];var B;var N=60000;var A=false;var s={fee_policy:0,html5_notifications:false,logout_time:600000,tx_display:0,always_keep_local_backup:false};this.setEncryptedWalletData=function(aL){if(!aL||aL.length==0){return}ac=aL;aq=ab();try{if(aD==0||s.always_keep_local_backup){localStorage.setItem("payload",ac)}}catch(aM){console.log(aM)}};this.setRealAuthType=function(aL){this.real_auth_type=aL};this.addEventListener=function(aL){W.push(aL)};this.getLogoutTime=function(){return s.logout_time};this.setLogoutTime=function(aL){s.logout_time=aL;clearInterval(R);R=setTimeout(h.logout,h.getLogoutTime())};this.getDoubleEncryption=function(){return F};this.getEncryptedWalletData=function(){return ac};this.getFeePolicy=function(){return s.fee_policy};this.setFeePolicy=function(aL){s.fee_policy=aL};this.setAlwaysKeepLocalBackup=function(aL){s.always_keep_local_backup=aL};this.getAlwaysKeepLocalBackup=function(){return s.always_keep_local_backup};this.getGuid=function(){return M};this.getHTML5Notifications=function(){return s.html5_notifications};this.setHTML5Notifications=function(aL){s.html5_notifications=aL};this.getTransactions=function(){return E};this.addressExists=function(aL){return I[aL]!=null};this.getAddressTag=function(aL){return I[aL].tag};this.setAddressTag=function(aM,aL){I[aM].tag=aL};this.getAddressBook=function(){return g};this.getAddressLabel=function(aL){return I[aL].label};this.setAddressLabel=function(aL,aM){I[aL].label=aM};this.setAddressBalance=function(aL,aM){I[aL].balance=aM};this.getAddressBookLabel=function(aL){return g[aL]};this.isWatchOnly=function(aL){return I[aL].priv==null};this.getAddressBalance=function(aL){return I[aL].balance};this.getMixerFee=function(){return x};this.deleteAddress=function(aL){delete I[aL]};this.addAddressBookEntry=function(aM,aL){g[aM]=aL};this.getPrivateKey=function(aL){return I[aL].priv};this.setLabel=function(aL,aM){I[aL].label=aM;ad();c()};this.securePost=function(aM,aN,aO,aL){var aP=jQuery.extend({},aN);if(d==null||d.length==0||d.length!=36){throw"Shared key is invalid"}aP.sharedKey=d;aP.guid=M;aP.format=aN.format?aN.format:"plain";$.ajax({dataType:aN.format?aN.format:"text",type:"POST",url:root+aM,data:aP,success:function(aQ){aO(aQ)},error:function(aQ){aL(aQ)}})};this.isCorrectMainPassword=function(aL){return az==aL};this.setDoubleEncryption=function(aN,aL,aP){var aM=function(aQ){console.log("Panic "+aQ);window.location.reload()};try{if(F==aN){return}if(aN){h.getSecondPassword(function(){try{F=true;af=aL;for(var aS in I){var aU=I[aS];if(aU.priv!=null){aU.priv=i(B58.decode(aU.priv))}}var aQ=Crypto.SHA256(d+af,{asBytes:true});for(var aR=1;aR-1){if(webkitNotifications.checkPermission()==0){webkitNotifications.createNotification(aZ.iconUrl,aZ.title,aZ.body).show()}}else{if(window.Notification){if(Notification.permissionLevel()==="granted"){new Notification(aZ.title,aZ).show()}}}}catch(a0){}};try{aP({title:aY>0?"Payment Received":"Payment Sent",body:"Transaction Value "+formatBTC(aY)+" BTC",iconUrl:resource+"cube48.png"})}catch(aT){console.log(aT)}}aR.result=aY;ap+=aY;K++;aR.setConfirmations(0);playSound("beep");if(aj==0&&an==0){E.unshift(aR);var aV=false;if(E.length>50){E.pop();aV=true}}var aN=T();if("my-transactions"==aN){if(aj==0&&an==0){$("#no-transactions").hide();if(s.tx_display==0){var aM=$("#transactions-compact").show();aG($(C(aR,I,g)),aR).prependTo(aM.find("tbody")).find("div").hide().slideDown("slow");if(aV){aM.find("tbody tr:last-child").remove()}}else{var aM=$("#transactions-detailed").show();aM.prepend(aR.getHTML(I,g));if(aV){aM.find("div:last-child").remove()}setupSymbolToggle()}}}else{c()}}else{if(aQ.op=="block"){for(var aO=0;aO
    ');aL.text(""+aO);if($("#"+aP).length>0){aL.attr("id",aP);return}$("#notices").append(aL).hide().fadeIn(200);if(aN>0){(function(){var aQ=aL;setTimeout(function(){aQ.fadeOut(250,function(){$(this).remove()})},aN)})()}};function aw(aL){return aL}function am(aL){return h.decryptPK(aL)}function Y(aL){var aM=h.decodePK(aL);return Crypto.util.bytesToBase64(aM)}function k(aL){var aM=h.decodePK(aL);return Crypto.util.bytesToHex(aM)}this.base58ToSipa=function(aL,aQ){var aM=h.decodePK(aL);var aN=new Bitcoin.ECKey(aM);while(aM.length<32){aM.unshift(0)}aM.unshift(128);if(aN.getBitcoinAddress().toString()==aQ){}else{if(aN.getBitcoinAddressCompressed().toString()==aQ){aM.push(1)}else{throw"Private Key does not match bitcoin address"+aQ}}var aO=Crypto.SHA256(Crypto.SHA256(aM,{asBytes:true}),{asBytes:true});aM=aM.concat(aO.slice(0,4));var aP=B58.encode(aM);return aP};this.makeWalletJSON=function(aL){return h.makeCustomWalletJSON(aL,M,d)};this.makeCustomWalletJSON=function(aP,aM,aR){var aO=aw;if(aP=="base64"){aO=Y}else{if(aP=="hex"){aO=k}else{if(aP=="sipa"){aO=h.base58ToSipa}else{if(aP=="base58"){aO=am}}}}var aL='{\n "guid" : "'+aM+'",\n "sharedKey" : "'+aR+'",\n';if(F&&w!=null&&aO==aw){aL+=' "double_encryption" : '+F+',\n "dpasswordhash" : "'+w+'",\n'}if(s){aL+=' "options" : '+JSON.stringify(s)+",\n"}aL+=' "keys" : [\n';for(var aN in I){var aQ=I[aN];aL+=' {"addr" : "'+aQ.addr+'"';if(aQ.priv!=null){aL+=',\n "priv" : "'+aO(aQ.priv,aQ.addr)+'"'}if(aQ.tag==2){aL+=',\n "tag" : '+aQ.tag}if(aQ.label!=null){aL+=',\n "label" : "'+aQ.label+'"'}aL+="},\n";atLeastOne=true}if(atLeastOne){aL=aL.substring(0,aL.length-2)}aL+="\n ]";if(av(g)>0){aL+=',\n "address_book" : [\n';for(var aN in g){aL+=' {"addr" : "'+aN+'",\n';aL+=' "label" : "'+g[aN]+'"},\n'}aL=aL.substring(0,aL.length-2);aL+="\n ]"}if(av(b)>0){aL+=',\n "tx_notes" : '+JSON.stringify(b)}aL+="\n}";return aL};this.get_history=function(aM,aL){BlockchainAPI.get_history(function(aN){H(aN,false);c();if(aM){aM()}},function(){if(aL){aL()}},aj,an)};this.deleteAddressBook=function(aL){delete g[aL];ad();$("#send-coins").find(".tab-pane").trigger("show",true)};function u(aL){$("#send-coins").find(".tab-pane.active").trigger("show",aL);if(aL){BlockchainAPI.get_ticker();$(".send").attr("disabled",false)}}function l(aL,aM,aQ){var aP=aL.val();aL.empty();for(var aO in I){var aR=I[aO];if(!aR||aR.tag==2){continue}var aN=aR.label;if(!aN){aN=aR.addr.substring(0,15)+"..."}if(aM||aR.balance>0){aL.prepend('")}}aL.prepend('');if(!aQ&&aP){aL.val(aP)}}function r(aN,aO){l(aN.find('select[name="from"]'),false,aO);l(aN.find('select[name="change"]'),true,aO);aN.find('select[name="change"]').prepend('');if(aO){aN.find("input").val("");aN.find(".send-value-usd").text(formatSymbol(0,symbol_local)).val("");aN.find(".amount-needed").text(0)}var aM=aN.find(".recipient-container");if(aO){var aQ=aM.find(".recipient:first-child").clone();aM.empty().append(aQ)}function aL(){var aR=0;aN.find('input[name="send-value"]').each(function(){var aS=parseFloat($(this).val());if(!isNaN(aS)){aR+=aS}});return aR}function aP(aR){aR.find('input[name="send-to-address"]').val("").typeahead({source:ar()}).next().click(function(){var aS=$(this).prev();h.scanQRCode(function(aT){console.log(aT);try{new Bitcoin.Address(aT);aS.val(aT)}catch(aU){loadScript("wallet/jsuri-1.1.1.min.js",function(){try{var aV=new Uri(aT);aS.val(aV.host());aR.find('input[name="send-value"]').val(aV.getQueryParamValue("amount"))}catch(aW){h.makeNotice("error","error","Invalid Bitcoin Address or URI")}},function(){h.makeNotice("error","error","Invalid Bitcoin Address or URI")})}},function(aT){h.makeNotice("error","misc-error",aT)})});aR.find(".local-symbol").text(symbol_local.symbol);aR.find('input[name="send-value"]').val("").bind("keyup change",function(aS){if(aS.keyCode=="9"){return}aN.find(".amount-needed").text(formatBTC(Bitcoin.Util.parseValue(aL().toFixed(8)).toString()));aR.find(".send-value-usd").val(convert($(this).val()*100000000,symbol_local.conversion)).text(formatSymbol($(this).val()*100000000,symbol_local))});aR.find(".send-value-usd").val("").text(formatSymbol(0,symbol_local)).bind("keyup change",function(aS){if(aS.keyCode=="9"){return}aR.find('input[name="send-value"]').val(formatBTC(parseFloat($(this).val())*symbol_local.conversion))})}aM.find(".recipient").each(function(){aP($(this))});aN.find(".remove-recipient").unbind().click(function(){var aR=aM.find(".recipient").length;if(aR>1){if(aR==2){$(this).hide(200)}aM.find(".recipient:last-child").remove()}});aN.find(".add-recipient").unbind().click(function(){var aR=aM.find(".recipient:first-child").clone();aR.appendTo(aM);aP(aR);aN.find(".remove-recipient").show(200)})}this.getAllAddresses=function(){var aM=[];for(var aL in I){aM.push(aL)}return aM};this.getPreferredAddress=function(){var aM=null;for(var aL in I){var aN=I[aL];if(aM==null){aM=aN}if(aN.priv!=null){if(aM==null){aM=aN}if(aN.tag==null||aN.tag==0){aM=aN;break}}}return aM.addr};function aI(){console.log("backupInstructionsModal");var aL=$("#restore-backup-modal");aL.modal({keyboard:true,backdrop:"static",show:true});aL.find(".btn.btn-secondary").unbind().click(function(){aL.modal("hide")})}this.scanQRCode=function(aN,aL){var aM=$("#qr-code-reader-modal");aM.modal({keyboard:false,backdrop:"static",show:true});loadScript("wallet/qr.code.reader.js",function(){QRCodeReader.init(aM,function(aO){aM.modal("hide");aN(aO)},function(aO){aM.modal("hide");aL(aO)})},aL);aM.find(".btn.btn-secondary").unbind().click(function(){QRCodeReader.stop();aM.modal("hide");aL()})};function U(aL){var aO=[];for(var aM in I){var aN=I[aM];if(aN.tag==aL){aO.push(aN.addr)}}return aO}this.getActiveAddresses=function(){return U()};this.getArchivedAddresses=function(){return U(2)};function ao(aO){if(aO!=null){ax=aO;for(var aM in E){var aL=E[aM];if(aL.blockHeight!=null&&aL.blockHeight>0){var aN=ax.height-aL.blockHeight+1;if(aN<=100){aL.setConfirmations(ax.height-aL.blockHeight+1)}else{aL.setConfirmations(null)}}else{aL.setConfirmations(0)}}}}function z(aM,aL){loadScript("wallet/frame-modal.js",function(){showFrameModal({title:"Transaction Summary",description:"",src:root+"tx-summary/"+aM+"?result="+aL+"&guid="+M})})}this.deleteNote=function(aL){delete b[aL];c();ad()};function m(aL,aM){(function(aO,aQ){aO=$(aO);if(!aO.data("popover")){aO.popover({title:'Add Note ',trigger:"manual",content:'
    '})}else{if(aO.data("popover").tip().is(":visible")){return}}aO.popover("show");aO.mouseleave(function(){if(!aO.__timeout){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)}});function aN(){if(aO.__timeout){clearTimeout(aO.__timeout);aO.__timeout=null}}var aP=aO.data("popover").tip().mouseenter(aN);aP.find("textarea").focus(aN);aP.mouseleave(function(){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)});aP.find("i").unbind().click(function(){aO.popover("hide")});aP.find("button").click(function(){var aR=$.trim($("
    "+aP.find("textarea").val()+"
    ").text().replace(/'/g,"").replace(/"/g,""));if(aR.length>0){b[aQ]=aR;ad()}c()})})(aL,aM)}function aB(aL,aM,aN){(function(aO,aP,aR){aO=$(aO);if(!aO.data("popover")){var aS="Note";if(b[aR]){aS+=' '}$(aO).popover({title:aS,trigger:"manual",content:aP})}else{if(aO.data("popover").tip().is(":visible")){return}}aO.popover("show");aO.mouseleave(function(){if(!aO.__timeout){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)}});var aQ=aO.data("popover").tip().mouseenter(function(){if(aO.__timeout){clearTimeout(aO.__timeout);aO.__timeout=null}});aQ.find("img").unbind().click(function(){h.deleteNote(aR)});aQ.mouseleave(function(){aO.__timeout=setTimeout(function(){aO.popover("hide")},250)})})(aL,aM,aN)}function C(aO,aT,aQ){var aU=aO.result;var aP='
      ';var aM=true;if(aU>=0){for(var aN=0;aNNewly Generated Coins'}else{var aR=aT[aL.addr];if(aR){continue}aM=false;aP+=formatOutput(aL,aT,aQ)}}}else{if(aU<0){for(var aN=0;aNMoved Between Wallet'}aP+="
    ";var aS=aO.note?aO.note:b[aO.hash];if(aS){aP+=' '}else{aP+=' '}if(aO.time>0){aP+=dateToString(new Date(aO.time*1000))}if(aO.confirmations==0){aP+=' Unconfirmed Transaction! '}else{if(aO.confirmations>0){aP+=' '+aO.confirmations+" Confirmations "}}aP+="
    ";if(aU>0){aP+='
    '+formatMoney(aU,true)+"
    "}else{if(aU<0){aP+='
    '+formatMoney(aU,true)+"
    "}else{aP+="
    "+formatMoney(aU,true)+"
    "}}if(aO.balance==null){aP+=""}else{aP+='
    '+formatMoney(aO.balance)+"
    "}return aP}function T(){L();if(ap==null){$("#balance").html("Loading...")}else{$("#balance").html(formatSymbol(ap,symbol));$("#balance2").html(formatSymbol(ap,(symbol==symbol_local)?symbol_btc:symbol_local))}return j.attr("id")}function c(aL){var aM=T();if("send-coins"==aM){u(aL)}else{if("home-intro"==aM){f(aL)}else{if("receive-coins"==aM){aK(aL)}else{if("my-transactions"==aM){V(aL)}}}}}function f(aL){$("#summary-n-tx").html(K);$("#summary-received").html(formatMoney(ak,true));$("#summary-sent").html(formatMoney(P,true));$("#summary-balance").html(formatMoney(ap,symbol));var aN=h.getPreferredAddress();$("#tweet-for-btc").unbind().click(function(){window.open("https://twitter.com/share?url=https://blockchain.info/wallet&hashtags=tweet4btc,bitcoin,"+aN+"&text=Sign Up For a Free Bitcoin Wallet @ Blockchain.info","","toolbar=0, status=0, width=650, height=360")});if(h.isWatchOnly(aN)==null){$(".no-watch-only").hide()}else{$(".no-watch-only").show();var aM=$("#my-primary-address");if(aM.text()!=aN){aM.text(aN);loadScript("wallet/jquery.qrcode.min.js",function(){$("#my-primary-addres-qr-code").qrcode({width:125,height:125,text:aN})})}}}function Q(){var aL=$("#export-warning").show();var aM=$("#import-export-content").hide();$("#show-import-export").unbind().click(function(){h.getMainPassword(function(){aL.hide();loadScript("wallet/import-export.min.js",function(){ImportExport.init(aM,function(){aM.show()},function(){aa($("#home-intro"))})},function(aN){h.makeNotice("error","misc-error",aN);aa($("#home-intro"))})},function(){aa($("#home-intro"))})})}function V(){var aM=null;var aO=0;if(aM!=null){clearInterval(aM);aM=null}var aL;if(s.tx_display==0){$("#transactions-detailed").hide();aL=$("#transactions-compact").show().find("tbody").empty()}else{$("#transactions-compact").hide();aL=$("#transactions-detailed").empty().show()}if(E.length==0){$("#transactions-detailed, #transactions-compact").hide();$("#no-transactions").show();return}else{$("#no-transactions").hide()}var aN=function(){for(var aS=aO;aS0){aT=""}aQ.append($('
  • ← Previous
  • ').click(function(){h.setPage(an-1)}));for(var aS=0;aS'+aU+"").click(function(){h.setPage(aU)}))})(aS)}var aT=" disabled";if(anNext →').click(function(){h.setPage(an+1)}))}};aN()}this.setPage=function(aL){an=aL;scroll(0,0);h.get_history()};function v(){loadScript("wallet/frame-modal.js",function(){showFrameModal({title:"Export History",description:"",src:root+"export-history?active="+h.getActiveAddresses().join("|")+"&archived="+h.getArchivedAddresses().join("|")})})}function H(aO,aN){if(!aN&&aO.mixer_fee){x=aO.mixer_fee}E.length=0;if(aO.wallet==null){ak=0;P=0;ap=0;K=0;aJ=0;return}ak=aO.wallet.total_received;P=aO.wallet.total_sent;ap=aO.wallet.final_balance;K=aO.wallet.n_tx;aJ=aO.wallet.n_tx_filtered;for(var aM=0;aM0){aM.checksum=aq}$.ajax({type:"GET",url:root+"wallet/wallet.aes.json",data:aM,success:function(aO){if(aO==null||aO.length==0||aO=="Not modified"){return}console.log("Wallet data modified");h.setEncryptedWalletData(aO);if(X()){h.get_history();c()}else{window.location.reload()}}})}function X(){try{if(ac==null||ac.length==0){h.makeNotice("error","misc-error","No Wallet Data To Decrypt");return false}var aO=null;h.decrypt(ac,az,function(aP){try{aO=$.parseJSON(aP);return(aO!=null)}catch(aQ){return false}});if(aO==null){throw"Error Decrypting Wallet. Please check your password is correct."}if(aO.double_encryption&&aO.dpasswordhash){F=aO.double_encryption;w=aO.dpasswordhash}if(aO.options){$.extend(s,aO.options)}else{if(aO.fee_policy){h.setFeePolicy(aO.fee_policy)}if(aO.html5_notifications){h.setHTML5Notifications(aO.html5_notifications)}}I={};for(var aM=0;aM
    ").qrcode({width:300,height:300,text:M+"|"+d+"|"+az}))}catch(aM){h.makeNotice("error","misc-error",aM)}})},function(){h.logout()})};this.getMainPassword=function(aM,aL){if(B>new Date().getTime()-N){return aM(az)}h.getPassword($("#main-password-modal"),function(aN){if(az==aN){B=new Date().getTime();if(aM){try{aM(az)}catch(aO){h.makeNotice("error","misc-error",aO)}}}else{h.makeNotice("error","misc-error","Password incorrect.");if(aL){try{aL()}catch(aO){h.makeNotice("error","misc-error",aO)}}}},aL)};this.getSecondPassword=function(aN,aL){if(!F||af!=null){if(aN){try{aN(af)}catch(aM){h.makeNotice("error","misc-error",aM)}}return}h.getPassword($("#second-password-modal"),function(aO){if(aA(aO)){if(aN){try{aN(aO)}catch(aP){h.makeNotice("error","misc-error",aP)}}}else{h.makeNotice("error","misc-error","Password incorrect.");if(aL){try{aL()}catch(aP){h.makeNotice("error","misc-error",aP)}}}},aL)};function a(){if(A){console.log("Already initd");return}var aL=$("#restore-password");az=aL.val();aL.val("");B=new Date().getTime();if(ac==null||ac.length==0){h.setLoadingText("Validating Authentication key");var aM=$.trim($(".auth-"+q).find(".code").val());if(aM.length==0||aM.length>255){h.makeNotice("error","misc-error","You must enter a Two Factor Authentication code");return false}$.ajax({type:"POST",url:root+"wallet",data:{guid:M,payload:aM,length:aM.length,method:"get-wallet",format:"plain"},success:function(aN){try{if(aN==null||aN.length==0){h.makeNotice("error","misc-error","Server Return Empty Wallet Data");return}h.setEncryptedWalletData(aN);$(".auth-"+q).hide();$(".auth-0").show();if(X()){n();aC()}}catch(aO){h.makeNotice("error","misc-error",aO)}},error:function(aN){h.makeNotice("error","misc-error",aN.responseText)}})}else{if(X()){n();aC()}}return true}function e(){al("error");webSocketConnect(y);A=true;$("#tech-faq").hide();$("#intro-text").hide();$("#large-summary").show()}this.quickSendNoUI=function(aN,aM,aL){loadScript("wallet/signer.min.js",function(){h.getSecondPassword(function(){try{var aP=initNewTx();aP.from_addresses=h.getActiveAddresses();aP.to_addresses.push({address:new Bitcoin.Address(aN),value:Bitcoin.Util.parseValue(aM)});aP.addListener(aL);aP.start()}catch(aO){aL.on_error(aO)}},function(aO){aL.on_error(aO)})})};function G(){h.setLoadingText("Sending email backup");$.ajax({type:"POST",url:root+"wallet",data:{guid:M,sharedKey:d,method:"email-backup",format:"plain"},success:function(aL){h.makeNotice("success","backup-success",aL)},error:function(aL){h.makeNotice("error","misc-error",aL.responseText)}})}function ad(aO,aN,aM,aL){if(ah!=null){clearInterval(ah);ah=null}ah=setTimeout(function(){h.backupWallet(aO,aN,aM,aL)},3000)}this.backupWallet=function(aS,aR,aL){try{if(aS==null){aS="update"}if(av(I)==0){return}var aN=h.makeWalletJSON();var aQ=h.encrypt(aN,az);if(aQ.length==0){throw"Error encrypting the JSON output"}var aP=null;h.decrypt(aQ,az,function(aT){try{aP=$.parseJSON(aT);return(aP!=null)}catch(aU){return false}});if(aP==null){throw"Error Decrypting Previously encrypted JSON. Not Saving Wallet."}var aM=aq;h.setLoadingText("Saving wallet");h.setEncryptedWalletData(aQ);$.ajax({type:"POST",url:root+"wallet",data:{guid:M,length:aQ.length,payload:aQ,sharedKey:d,checksum:aq,old_checksum:aM,method:aS},converters:{"* text":window.String,"text html":true,"text json":window.String,"text xml":window.String},success:function(aU){var aW=false;for(var aT in I){var aV=I[aT];if(aV.tag==1){aV.tag=null;aW=true}}h.makeNotice("success","misc-success",aU);c();if(aR!=null){aR()}},error:function(aT){h.makeNotice("error","misc-error",aT.responseText,10000);c();if(aL!=null){aL()}}})}catch(aO){h.makeNotice("error","misc-error","Error Saving Wallet: "+aO,10000);c();if(aL!=null){aL(aO)}else{throw aO}}};function aE(aL){if(F){if(af==null){throw"Cannot encrypt private key without a password"}return h.encrypt(aL,d+af)}else{return aL}return null}this.isBase58=function(aN,aM){for(var aL=0;aL58){return false}}return true};this.encrypt=function(aM,aL){return Crypto.AES.encrypt(aM,aL,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:S})};this.decrypt=function(aO,aN,aQ,aM){try{var aL=Crypto.AES.decrypt(aO,aN,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:S});if(aL!=null&&aL.length>0){if(aQ(aL)){return aL}}}catch(aP){console.log(aP)}try{var aL=Crypto.AES.decrypt(aO,aN,{mode:new Crypto.mode.OFB(Crypto.pad.iso7816),iterations:1});if(aL!=null&&aL.length>0){if(aQ(aL)){return aL}}}catch(aP){console.log(aP)}try{var aL=Crypto.AES.decrypt(aO,aN,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:1});if(aL!=null&&aL.length>0){if(aQ(aL)){return aL}}}catch(aP){console.log(aP)}if(aM!=null){aM()}return null};this.setGUID=function(aO,aM){if(A){throw"Cannot Set GUID Once Initialized"}h.setLoadingText("Changing Wallet Identifier");$("#initial_error,#initial_success").remove();try{var aL=localStorage.getItem("guid")}catch(aP){}var aN=$("#restore-wallet-continue");aN.attr("disabled",true);$.ajax({type:"GET",dataType:"json",url:root+"wallet/"+aO,data:{format:"json",resend_code:aM},success:function(aR){aN.attr("disabled",false);$(".auth-"+q).hide();M=aR.guid;q=aR.auth_type;aD=aR.real_auth_type;h.setEncryptedWalletData(aR.payload);war_checksum=aR.war_checksum;setLocalSymbol(aR.symbol_local);$("#restore-guid").val(M);$(".auth-"+q).show();if(aR.initial_error){h.makeNotice("error","misc-error",aR.initial_error)}if(aR.initial_success){h.makeNotice("success","misc-success",aR.initial_success)}try{if(aL!=M){localStorage.clear();if(M!=D){localStorage.setItem("guid",M)}}}catch(aQ){}},error:function(aR){aN.attr("disabled",false);if(aL==aO&&ac){h.makeNotice("error","misc-error","Error Contacting Server. Using Local Wallet Cache.");M=aL;aq=ab();q=0;$("#restore-guid").val(M);$(".auth-"+q).show();return}try{var aQ=$.parseJSON(aR.responseText);if(aQ.initial_error){h.makeNotice("error","misc-error",aQ.initial_error);return}}catch(aR){}if(aR.responseText){h.makeNotice("error","misc-error",aR.responseText)}else{h.makeNotice("error","misc-error","Error changing wallet identifier")}}})};function i(aL){var aM=B58.encode(aL);return aE(aM)}this.decryptPK=function(aL){if(F){if(af==null){throw"Cannot decrypt private key without a password"}return h.decrypt(aL,d+af,h.isBase58)}else{return aL}return null};this.decodePK=function(aM){var aL=h.decryptPK(aM);if(aL!=null){return B58.decode(aL)}return null};this.signmessage=function(aL,aN){var aP=I[aL];var aO=h.decodePK(aP.priv);var aM=new Bitcoin.ECKey(aO);return Bitcoin.Message.signMessage(aM,aN,aP.addr)};function aA(aM){var aL=Crypto.SHA256(d+aM,{asBytes:true});var aO=aL;for(var aN=1;aN0){$("#"+j.attr("id")+"-btn").parent().attr("class","")}j.hide()}j=aL;j.show();if($("#"+j.attr("id")+"-btn").length>0){$("#"+j.attr("id")+"-btn").parent().attr("class","active")}c(true)}function av(aN){var aM=0,aL;for(aL in aN){aM++}return aM}function Z(aL){I[aL].priv=null}function ae(){if(av(I)>=at){h.makeNotice("error","misc-error","We currently support a maximum of "+at+" private keys, please remove some unused ones.");return true}return false}function aH(aN,aL){var aM=I[aN];if(!aM||aM.length==0){I[aN]={addr:aN,priv:aL,balance:0};return true}else{if(!aM.priv&&aL){aM.priv=aL;return true}}return false}function o(){var aN=$("#add-address-book-entry-modal");aN.modal({keyboard:true,backdrop:"static",show:true});var aL=aN.find('input[name="label"]');var aM=aN.find('input[name="address"]');aL.val("");aM.val("");aN.find(".btn.btn-primary").unbind().click(function(){aN.modal("hide");var aP=$.trim($("
    "+aL.val()+"
    ").text());var aO=$.trim(aM.val());if(aP.length==0){h.makeNotice("error","misc-error","You must enter a label for the address book entry");return false}if(aP.indexOf('"')!=-1){h.makeNotice("error","misc-error","Label cannot contain double quotes");return false}if(aO.length==0){h.makeNotice("error","misc-error","You must enter a bitcoin address for the address book entry");return false}var aR;try{aR=new Bitcoin.Address(aO);if(aR==null){throw"Null address"}}catch(aQ){h.makeNotice("error","misc-error","Bitcoin address invalid, please make sure you entered it correctly");return false}if(g[aO]!=null){h.makeNotice("error","misc-error","Bitcoin address already exists");return false}h.makeNotice("success","misc-success","Added Address book entry");h.addAddressBookEntry(aO,aP);ad();$("#send-coins").find(".tab-pane").trigger("show",true)});aN.find(".btn.btn-secondary").unbind().click(function(){aN.modal("hide")})}this.logout=function(){$.ajax({type:"GET",url:root+"wallet/logout",data:{format:"plain"},success:function(aL){window.location.reload()},error:function(){window.location.reload()}})};function ai(aR){var aT=$("#delete-address-modal");aT.modal({keyboard:true,backdrop:"static",show:true});aT.find(".btn.btn-primary").hide();aT.find(".btn.btn-danger").hide();$("#change-mind").hide();aT.find("#to-delete-address").html(aR.join(" "));aT.find("#delete-balance").empty();var aN=aT.find("#delete-balance");var aL=[];for(var aQ in aR){var aS=aR[aQ];if(I[aS]&&I[aS].priv){aL.push(aR[aQ])}}BlockchainAPI.get_balance(aL,function(aU){aT.find(".btn.btn-primary").show(200);aT.find(".btn.btn-danger").show(200);aN.html("Balance "+formatBTC(aU)+" BTC");if(aU>0){aN.css("color","red")}else{aN.css("color","black")}},function(){aT.find(".btn.btn-primary").show(200);aT.find(".btn.btn-danger").show(200);aN.text("Error Fetching Balance")});var aO=false;var aQ=0;var aM=null;var aP=10;changeMind=function(){$("#change-mind").show();$("#change-mind-time").text(aP-aQ)};aT.find(".btn.btn-primary").unbind().click(function(){changeMind();aT.find(".btn.btn-primary").hide();aT.find(".btn.btn-danger").hide();aM=setInterval(function(){if(aO){return}++aQ;changeMind();if(aQ==aP){$("#delete-address-modal").modal("hide");h.makeNotice("warning","warning-deleted","Private Key Removed From Wallet");for(var aU in aR){Z(aR[aU])}c();h.backupWallet();clearInterval(aM)}},1000)});aT.find(".btn.btn-danger").unbind().click(function(){changeMind();aT.find(".btn.btn-primary").hide();aT.find(".btn.btn-danger").hide();aM=setInterval(function(){if(aO){return}++aQ;changeMind();if(aQ==aP){try{$("#delete-address-modal").modal("hide");h.makeNotice("warning","warning-deleted","Address & Private Key Removed From Wallet");for(var aU in aR){h.deleteAddress(aR[aU])}c();h.backupWallet("update",function(){h.get_history()})}finally{clearInterval(aM)}}},1000)});aT.unbind().on("hidden",function(){if(aM){aO=true;clearInterval(aM);aM=null}});aT.find(".btn.btn-secondary").unbind().click(function(){aT.modal("hide")})}function ar(){var aN=[];for(var aL in g){aN.push(g[aL])}for(var aL in I){var aM=I[aL];if(aM.tag!=2&&aM.label){aN.push(aM.label)}}return aN}function O(aL){h.getSecondPassword(function(){var aN=$("#sweep-address-modal");aN.modal("show");BlockchainAPI.get_balance(aL,function(aO){aN.find(".balance").text("Amount: "+formatBTC(aO)+" BTC")},function(){aN.find(".balance").text("Error Fetching Balance")});var aM=aN.find('select[name="change"]');l(aM,true);aN.find(".btn.btn-primary").unbind().click(function(){loadScript("wallet/signer.min.js",function(){BlockchainAPI.get_balance(aL,function(aO){var aP=initNewTx();aP.fee=aP.base_fee;aP.to_addresses.push({address:new Bitcoin.Address($.trim(aM.val())),value:BigInteger.valueOf(aO).subtract(aP.fee)});aP.from_addresses=aL;aP.start()},function(){h.makeNotice("error","misc-error","Error Getting Address Balance")})});aN.modal("hide")});aN.find(".btn.btn-secondary").unbind().click(function(){aN.modal("hide")})})}function au(){try{$(".pop").popover({offset:10,placement:"bottom"})}catch(aL){}}function n(){$("#add-address-book-entry-btn").click(function(){o()});$("#home-intro-btn").click(function(){aa($("#home-intro"))});$("#my-transactions-btn").click(function(){aa($("#my-transactions"))});$("#send-coins-btn").click(function(){aa($("#send-coins"))});$("#import-export-btn").click(function(){aa($("#import-export"));Q()});$("#chord-diagram").click(function(){window.open(root+"taint/"+h.getActiveAddresses().join("|"),null,"width=850,height=850")});$("#verify-message").click(function(){loadScript("wallet/address_modal.min.js",function(){verifyMessageModal()})});$("#group-received").click(function(){loadScript("wallet/taint_grouping.min.js",function(){try{loadTaintData()}catch(aL){h.makeNotice("error","misc-error","Unable To Load Taint Grouping Data")}})});$("#my-account-btn").click(function(){aa($("#my-account"));var aL=$("#account-settings-warning").show();var aM=$("#my-account-content").hide();$("#show-account-settings").unbind().click(function(){h.getMainPassword(function(){aL.hide();loadScript("wallet/account.min.js",function(){AccountSettings.init(aM,function(){aM.show()},function(){aa($("#home-intro"))})},function(aN){h.makeNotice("error","misc-error",aN);aa($("#home-intro"))})},function(){aa($("#home-intro"))})})});$("#enable_archived_checkbox").change(function(){var aL=$(this).is(":checked");$(".archived_checkbox").attr("checked",false);$(".archived_checkbox").attr("disabled",!aL);$("#archived-sweep").attr("disabled",!aL);$("#archived-delete").attr("disabled",!aL)});$("#anonymous-addresses").on("show",function(){var aL=$(this);loadScript("wallet/anonymous-addresses.min.js",function(){buildAnonymousTable(aL)})});$("#active-addresses").on("show",function(){var aR=$(this).find("table:first");aR.find("tbody:gt(0)").remove();var aO=aR.find("tbody").empty();for(var aQ in I){var aS=I[aQ];if(aS.tag==2){continue}var aP="";if(aS.tag==1){aP=' (Not Synced)'}else{if(aS.priv==null){aP=' (Watch Only)'}}var aL="";var aN=aS.addr;if(aS.label!=null){aN=aS.label;aL=' - '+aS.addr+""}var aM=$('
    '+aN+""+aL+" "+aP+'
    '+formatMoney(aS.balance,true)+' ');(function(aT){aM.find(".act-archive").click(function(){h.archiveAddr(aT)});aM.find(".act-label").click(function(){loadScript("wallet/address_modal.min.js",function(){showLabelAddressModal(aT)})});aM.find(".act-qr").click(function(){loadScript("wallet/address_modal.min.js",function(){showAddressModalQRCode(aT)})});aM.find(".act-sign").click(function(){loadScript("wallet/address_modal.min.js",function(){showAddressModalSignMessage(aT)})});aM.find(".act-request").click(function(){loadScript("wallet/frame-modal.js",function(){showFrameModal({title:"Create Payment Request",description:"Request Payment into address "+aT+"",src:root+"payment_request?address="+aT})})})})(aS.addr);if(aS.balance>0&&aS.priv){aR.prepend(aM)}else{aR.append(aM)}}au()});$("#archived-addresses").on("show",function(){$("#enable_archived_checkbox").attr("checked",false);$("#archived-delete").attr("disabled",true);$("#archived-sweep").attr("disabled",true);$("#archived-addr tbody").empty();var aM=$(this).find("tbody");var aL=h.getArchivedAddresses();var aN=function(){aM.empty();for(var aR in aL){var aT=I[aL[aR]];if(aT.tag!=2){continue}var aQ="";if(aT.priv==null){aQ=' (Watch Only)'}var aO="";var aP=aT.addr;if(aT.label!=null){aP=aT.label;aO=' - '+aT.addr+""}var aS=$('
    '+aP+""+aO+" "+aQ+'
    '+formatBTC(aT.balance)+' BTC');(function(aU){aS.find(".act-unarchive").click(function(){h.unArchiveAddr(aU)})})(aT.addr);if(aT.balance>0&&aT.priv){aM.prepend(aS)}else{aM.append(aS)}}};aN();BlockchainAPI.get_balances(aL,function(aO){aN()},function(aO){h.makeNotice("error","misc-error",aO)})});$("#archived-sweep").click(function(){var aL=[];$(".archived_checkbox:checked").each(function(){var aM=I[$(this).val()];if(aM.priv==null){h.makeNotice("error","misc-error","Cannot Sweep Watch Only Address");return}aL.push(aM.addr)});if(aL.length==0){return}O(aL)});$("#archived-delete").click(function(){var aL=[];$(".archived_checkbox:checked").each(function(){aL.push($(this).val())});if(aL.length==0){return}ai(aL)});$("#anonymous-never-ask").click(function(){SetCookie("anonymous-never-ask",$(this).is(":checked"))});$(".deposit-btn").click(function(){var aM=$(this);var aL=h.getPreferredAddress();loadScript("wallet/frame-modal.js",function(){showFrameModal({title:aM.data("title"),description:"Deposit into address "+aL+"",top_right:'Have Questions? Read How It Works',src:root+"deposit?address="+aL+"&ptype="+aM.data("type")+"&guid="+M+"&sharedKey="+d})})});$(".withdraw-btn").click(function(){var aL=$(this);h.getSecondPassword(function(){var aM=h.getPreferredAddress();loadScript("wallet/frame-modal.js",function(){showFrameModal({title:aL.data("title"),description:"Your Wallet Balance is "+formatBTC(ap)+" BTC",src:root+"withdraw?method="+aL.data("type")+"&address="+aM+"&balance="+ap+"&guid="+M+"&sharedKey="+d})})})});$("#logout").click(h.logout);$("#refresh").click(function(){J();h.get_history()});$("#summary-n-tx-chart").click(function(){window.open(root+"charts/n-transactions?show_header=false&address="+h.getActiveAddresses().join("|"),null,"scroll=0,status=0,location=0,toolbar=0,width=1000,height=700")});$("#summary-received-chart").click(function(){window.open(root+"charts/received-per-day?show_header=false&address="+h.getActiveAddresses().join("|"),null,"scroll=0,status=0,location=0,toolbar=0,width=1000,height=700")});$("#summary-balance-chart").click(function(){window.open(root+"charts/balance?show_header=false&address="+h.getActiveAddresses().join("|"),null,"scroll=0,status=0,location=0,toolbar=0,width=1000,height=700")});$("#new-addr").click(function(){try{h.getSecondPassword(function(){var aM=h.generateNewKey().getBitcoinAddress().toString();h.makeNotice("info","new-address","Generated new Bitcoin Address "+aM);loadScript("wallet/address_modal.min.js",function(){showLabelAddressModal(aM)});h.backupWallet()})}catch(aL){h.makeNotice("error","misc-error",aL)}});$(".tx_filter a").click(function(){an=0;aj=$(this).data("value");h.get_history()});$(".tx_display a").click(function(){var aL=$(this).data("value");if(aL=="export"){v();return}s.tx_display=aL;c();ad()});$("#email-backup-btn").click(function(){G()});$("#dropbox-backup-btn").click(function(){window.open(root+"wallet/dropbox-login?guid="+M+"&sharedKey="+d)});$("#gdrive-backup-btn").click(function(){window.open(root+"wallet/gdrive-login?guid="+M+"&sharedKey="+d)});$("#large-summary").click(function(){toggleSymbol();c()});$("#send-quick").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"quick",initNewTx())})})});$("#send-email").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"email",initNewTx())})})});$("#send-anonymous").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".mixer_fee").text(x);aL.find(".fees,.free,.bonus").show();if(x<0){aL.find(".fees,.free").hide()}else{if(x==0){aL.find(".fees,.bonus").hide()}else{aL.find(".free,.bonus").hide()}}aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"anonymous",initNewTx())})});aL.find(".anonymous-fees").text("0.00");aL.find('input[name="send-before-fees"]').unbind().bind("keyup change",function(){var aP=parseFloat($.trim($(this).val()));var aO=0;if(aP>0){if(x>0){aO=parseFloat(aP+((aP/100)*x))}else{aO=parseFloat(aP);aL.find(".bonus-value").text(-(Math.min($(this).val(),200)/100)*x)}}if(aP<0.5){aL.find(".anonymous-fees").text("0.00")}else{aL.find(".anonymous-fees").text(aO.toFixed(4))}aL.find('input[name="send-value"]').val(aO).trigger("keyup")})});$("#send-custom").on("show",function(aN,aM){var aL=$(this);r(aL,aM);aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){startTxUI(aL,"custom",initNewTx())})});aL.find('select[name="from"]').unbind().change(function(){var aQ=0;var aO=$(this).val();for(var aP in aO){if(aO[aP]=="any"){$(this).val("any");aQ=ap;break}else{var aR=I[aO[aP]];if(aR&&aR.balance){aQ+=aR.balance}}}aL.find(".amount-available").text(formatBTC(aQ))}).trigger("change");aL.find(".reset").unbind().click(function(){r(aL,true);aL.find('select[name="from"]').trigger("change")})});$("#send-satoshi-dice,#send-btcdice-dice").on("show",function(aN,aM){var aL=this;loadScript("wallet/dicegames.min.js",function(){try{DICEGame.init($(aL))}catch(aO){h.makeNotice("error","misc-error","Unable To Load Dice Bets")}},function(aO){h.makeNotice("error","misc-error",aO)})});$("#send-sms").on("show",function(aN,aM){if(aM){return}var aL=$(this);r(aL);$.ajax({type:"GET",url:resource+"wallet/country_codes.html",success:function(aO){aL.find('select[name="sms-country-code"]').html(aO)},error:function(){h.makeNotice("error","misc-error","Error Downloading SMS Country Codes")}});aL.find(".send").unbind().click(function(){loadScript("wallet/signer.min.js",function(){var aO=initNewTx();startTxUI(aL,"sms",aO)})})});$("#address-book").on("show",function(){var aM=$("#address-book-tbl tbody");if(av(g)>0){aM.empty();for(var aL in g){var aN=$(""+g[aL]+'
    '+aL+'
    ');(function(aO){aN.find(".act-delete").click(function(){h.deleteAddressBook(aO)})})(aL);aM.append(aN)}}});$('a[data-toggle="tab"]').unbind().on("show",function(aL){$(aL.target.hash).trigger("show")});$("#receive-coins-btn").click(function(){aa($("#receive-coins"))});$(".show_adv").click(function(){$(".modal:visible").center()});$(".download-backup-btn").show();au()}function p(){$(".resend-code").click(function(){h.setGUID(M,true)});$(".download-backup-btn").toggle(ac!=null).click(function(){$(this).attr("download","wallet.aes.json");if(!ac){h.makeNotice("error","error","No Wallet Data to Download");return}var aM=("download" in document.createElement("a"));if(window.Blob&&window.URL&&aM){var aN=new Blob([ac]);var aO=window.URL.createObjectURL(aN);$(this).attr("href",aO)}else{var aL=window.open(null,null,"width=700,height=800,toolbar=0");aL.document.write('
    '+ac+"
    ")}aI()});$(".auth-0,.auth-1,.auth-2,.auth-3,.auth-4,.auth-5").unbind().keypress(function(aL){if(aL.keyCode==13){aL.preventDefault();$("#restore-wallet-continue").click()}});$("#restore-wallet-continue").unbind().click(function(aM){aM.preventDefault();var aL=$.trim($("#restore-guid").val());if(aL.length==0){return}if(M!=aL){h.setGUID(aL,false)}else{a()}});$(".modal").on("show",function(){L();$(this).center()}).on("shown",function(){L();$(this).center()})}function ag(aM){var aN=Crypto.SHA256(aM+"?");switch(aN.slice(0,2)){case"00":var aO=Crypto.SHA256(aM,{asBytes:true});return aO;break;case"01":var aL=Crypto.util.hexToBytes(aN.slice(2,4))[0];var aP=Math.round(Math.pow(2,(aL/4)));var aO=Crypto.PBKDF2(aM,"Satoshi Nakamoto",32,{iterations:aP,asBytes:true});return aO;break;default:console.log("invalid key");break}}function ay(){var aN,aL="";if(window.getSelection){aN=window.getSelection();if(aN.rangeCount){var aO=aN.getRangeAt(0).cloneContents();var aM=document.createElement("div");aM.appendChild(aO);aL=aM.innerText}}else{if(document.selection&&document.selection.type=="Text"){aL=document.selection.createRange().htmlText}}return aL}this.detectPrivateKeyFormat=function(aM){if(/^5[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{50}$/.test(aM)){return"sipa"}if(/^[LK][123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{51}$/.test(aM)){return"compsipa"}if(/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{44}$/.test(aM)||/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{43}$/.test(aM)){return"base58"}if(/^[A-Fa-f0-9]{64}$/.test(aM)){return"hex"}if(/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789=+\/]{44}$/.test(aM)){return"base64"}if(/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{21}$/.test(aM)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{25}$/.test(aM)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{29}$/.test(aM)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{30}$/.test(aM)){var aL=Crypto.SHA256(aM+"?",{asBytes:true});if(aL[0]===0||aL[0]===1){return"mini"}}throw"Unknown Key Format "+aM};this.privateKeyStringToKey=function(aM,aO){var aL=null;if(aO=="base58"){aL=B58.decode(aM)}else{if(aO=="base64"){aL=Crypto.util.base64ToBytes(aM)}else{if(aO=="hex"){aL=Crypto.util.hexToBytes(aM)}else{if(aO=="mini"){aL=ag(aM)}else{if(aO=="sipa"){var aN=B58.decode(aM);aN.shift();aL=aN.slice(0,aN.length-4)}else{if(aO=="sipa"){var aN=B58.decode(aM);aN.shift();aL=aN.slice(0,aN.length-4)}else{if(aO=="compsipa"){var aN=B58.decode(aM);aN.shift();aN.pop();aL=aN.slice(0,aN.length-4)}else{throw"Unsupported Key Format"}}}}}}}if(aL.length!=32){throw"Result not 32 bytes in length"}return new Bitcoin.ECKey(aL)};$(document).ready(function(){if(!$.isEmptyObject({})){h.makeNotice("error","error","Object.prototype has been extended by a browser extension. Please disable this extensions and reload the page.");return}var aM=$(document.body);M=aM.data("guid");d=aM.data("sharedkey");if(h.skip_init){return}try{ac=localStorage.getItem("payload");if(!M||M.length==0){M=localStorage.getItem("guid")}}catch(aO){}if(M&&M.length==36){setTimeout(function(){h.setGUID(M,false)},10)}if(top.location!=self.location){top.location=self.location.href}$("input,button,select").attr("autocomplete","off");aM.ajaxStart(function(){al("loading_start");$(".loading-indicator").fadeIn(200)}).ajaxStop(function(){al("loading_stop");$(".loading-indicator").hide()}).click(function(){if(R){clearTimeout(R);R=setTimeout(h.logout,h.getLogoutTime())}rng_seed_time()}).keypress(function(){if(R){clearTimeout(R);R=setTimeout(h.logout,h.getLogoutTime())}rng_seed_time()});p();$(".auth-"+q).show();j=$("#restore-wallet");j.show();var aN=false;var aR=17,aQ=86,aL=67,aP=67;$(document).keydown(function(aT){try{if(aT.keyCode==aR||aT.keyCode==aP){aN=true}if(aN&&aT.keyCode==aL){var aS=$.trim(ay());var aU=I[aS];if(aU!=null){if(aU.priv==null){$("#watch-only-copy-warning-modal").modal("show")}else{if(aU.tag==1){$("#not-synced-warning-modal").modal("show")}}}}}catch(aT){console.log(aT)}}).keyup(function(aS){if(aS.keyCode==aR||aS.keyCode==aP){aN=false}})});this.unArchiveAddr=function(aL){var aL=I[aL];if(aL.tag==2){aL.tag=null;c();ad("update",function(){h.get_history()})}else{h.makeNotice("error","add-error","Cannot Unarchive This Address")}};this.archiveAddr=function(aL){if(h.getActiveAddresses().length<=1){h.makeNotice("error","add-error","You must leave at least one active address");return}var aL=I[aL];if(aL.tag==null||aL.tag==0){aL.tag=2;c();ad("update",function(){h.get_history()})}else{h.makeNotice("error","add-error","Cannot Archive This Address")}};function aK(){$("#receive-coins").find(".tab-pane.active").trigger("show");setupToggle()}this.addWatchOnlyAddress=function(aL){return aH(aL)};this.addPrivateKey=function(aM,aL){if(ae()){return false}if(aM==null){throw"Unable to generate a new bitcoin address."}if(aL){var aO=aM.getBitcoinAddressCompressed()}else{var aO=aM.getBitcoinAddress()}if(aO==null){throw"Generated invalid bitcoin address."}if(aH(aO.toString(),i(aM.priv))){I[aO].tag=1;try{ws.send('{"op":"addr_sub", "addr":"'+aO+'"}')}catch(aN){}}else{throw"Unable to add generated bitcoin address."}return aO};this.generateNewKey=function(){var aL=new Bitcoin.ECKey(false);if(h.addPrivateKey(aL)){return aL}}}; \ No newline at end of file