Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (
- && window.location.hostname !== 'landingpage-ico.savedroid.tzander'
- && window.location.hostname !== 'landingpage-ico.mryvlin'
- && window.location.hostname !== 'localhost'
- && window.location.hostname !== 'landingpage-ico.localhost'
- ) {
- }
- var poolData = {
- UserPoolId: 'eu-central-1_jjhzopINU',
- ClientId: '1qlhp39on8d3cc4s25q8menucf'
- };
- var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
- var cognitoUser = null;
- var rates = new FXRatesManager()
- var storeAttribute = function (key, value, callback) {
- //console.log('Save ' + value + ' in ' + key);
- var attributeList = [];
- var attribute = {
- Name: key,
- Value: value
- };
- //console.log('setting attribute');
- var attribute = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(attribute);
- attributeList.push(attribute);
- //console.log('call updateAttributes');
- cognitoUser.updateAttributes(attributeList, function (err, result) {
- //console.log('result of updateAttributes');
- //console.log(result);
- if (err) {
- alert(err.message);
- return;
- }
- if (callback) {
- //console.log('stored attribute ' + key);
- callback();
- }
- });
- };
- var changePassword = function(oldPwd, newPwd, buttonElement) {
- var oldColor = buttonElement.css('background-color');
- var oldText = buttonElement.val();
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading ...');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.css('background-color', oldColor);
- buttonElement.val(oldText);
- buttonElement.prop('disabled', false);
- };
- cognitoUser.changePassword(oldPwd, newPwd, function(err, message) {
- resetButton()
- if(err) {
- var alertElement = jQuery('#full-popup .alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.message));
- } else {
- alert(message);
- }
- } else {
- var popup = jQuery("<div><img alt='Big Johnny likes it' src='/img/big_johnny_thumbsup.png' scale='0' style=' width: 150px; display: block; margin: auto; margin-top: 30px; margin-bottom: 30px; '><div style='margin:auto; text-align: center'><span>Password successfully changed</span></div></div>")
- showPopup("YEAH!", popup.html());
- }
- })
- }
- var showBanktransfer = function (amount, state, reservationId) {
- var popup = jQuery('.banktransfer-success');
- popup.find('.currencyamount').text(amount);
- if (state && state === 'processing') {
- popup.find('.banktransfer-proof').html('<p class="small-text">Thank you for providing the necessary information. We will check and confirm it when we receive your payment.</p>');
- }
- showPopup(popup.find('.title').html(), popup.find('.description').html(), true);
- jQuery('#full-popup').find('.paymentsubmit').click(function (e) {
- var buttonElement = jQuery(this);
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading...');
- buttonElement.prop('disabled', true);
- showBanktransferProofPopup(reservationId);
- });
- };
- var showReferredAccountsPopup = function () {
- var popup = jQuery('#referred-accounts-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- }
- var showReferralInfoPopup = function () {
- var popup = jQuery('#referral-info-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- }
- var showBanktransferProofPopup = function (reservationId) {
- var popup = jQuery('.banktransfer-proof-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- var jPopup = jQuery('#full-popup');
- jPopup.find('.paymentsubmit').click(function () {
- var buttonElement = jQuery(this);
- var oldColor = buttonElement.css('background-color');
- var oldText = buttonElement.val();
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading...');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.css('background-color', oldColor);
- buttonElement.val(oldText);
- buttonElement.prop('disabled', false);
- };
- var uploadElement = jPopup.find('#banktransfer-proof-file').prop('files')[0];
- var filename = uploadElement.name;
- jQuery.ajax({
- type: "POST",
- url: 'https://start-payment-upload.ico.savedroid.com',
- data: JSON.stringify({accessToken: accessToken, filename: filename, reservationId: reservationId}),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'wcqCNXFoYiap1YxJBnmau6S6WuB7rAHg9zjtYykE'
- },
- success: function (response) {
- var result = JSON.parse(response);
- var url = result.url;
- var filename = result.filename;
- uploadFile(uploadElement, url, function(error) {
- if (error) {
- var message = 'Error on file upload. Please try again later.';
- var alertElement = jPopup.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(message));
- } else {
- alert(message);
- }
- } else {
- var reservation = tokenReservations.filter(function(res) {
- return res.reservationId == reservationId
- })
- if(reservation.length > 0) {
- reservation.state = "processing"
- ga('send', 'event', 'PurchaseMainsale', 'paid', reservation[0].type, reservation[0].tokens);
- jQuery("#"+reservation[0].reservationId).data().update(reservation)
- }
- var popup = jQuery('#banktransfer-proof-popup-success');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- jQuery('#full-popup').find('.share-button').data('amount', reservation[0].tokens);
- }
- });
- }
- }).fail(function (error) {
- if (error) {
- var message = JSON.stringify(error);
- var alertElement = jPopup.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(message));
- } else {
- alert(message);
- }
- ;
- resetButton();
- }
- });
- });
- };
- var showBtcSuccess = function (amount, reservationId, tokens) {
- var popup = jQuery('.bitcoin-success');
- popup.find('.currencyamount').text(amount);
- showPopup(popup.find('.title').html(), popup.find('.description').html(), true);
- if (reservationId)
- {
- showCryptoPaymentInformation('bitcoin', reservationId, tokens);
- jQuery('#full-popup').scrollTop(0);
- if (tokens>=100000){
- var lastingMinutes = 60 - new Date().getMinutes();
- jQuery('#full-popup').find('.minutes').text(lastingMinutes);
- jQuery('#full-popup').find('.airdrop-info').removeClass('hidden');
- } else {
- jQuery('#full-popup').find(".edit-button").click( function(){ showPresalePopup(tokenReservations.filter(function(e){ return e.reservationId == reservationId; })[0]) });
- jQuery('#full-popup').find('.airdrop-info-not-enough').removeClass('hidden');
- }
- }
- };
- var startCcPayment = function (reservationId) {
- //console.log('in creditcard-success callback');
- var url = 'https://vip-customers.ico.savedroid.com';
- var apiKey = 'dfGh3HZa3T71OUD6kiBSK82rTjCOSIWj6Zf9jRYw';
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({"accessToken": accessToken}),
- url: url,
- success: function (data) {
- if(data.approved == false) {
- return showVIPPopup(reservationId)
- }
- doPayment(data.approved)
- },
- dataType: 'json',
- headers: {
- 'X-Api-Key': apiKey
- }
- }).fail(function(err) {
- doPayment(false)
- })
- var doPayment = function(vipUser) {
- console.log(vipUser)
- var reservation = tokenReservations.filter(function(res) {
- return res.reservationId == reservationId
- })
- if(reservation.length > 0 && reservation[0].tokens > 500000) {
- return showPopup("!!! CREDIT CARD MAXIMUM LIMIT !!!",'<p class="text-center;" style="width: 80%;margin: auto; margin-top:30px;">Please note that the maximum limit per credit card payment is 5,000.00 Euro and 5,750.00 US-Dollar respectively. So if you want to purchase SVD tokens for a total value of 10,000.00 Euro please make sure to split your credit cart payment into two separate payment transactions of 5,000.00 Euro each. Thanks a lot!</p>')
- }
- var popup = jQuery('.creditcard-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({"accessToken": accessToken, "reservationId": reservationId, vipUser : vipUser}),
- url: 'https://masterpayment-start.ico.savedroid.com',
- success: function (data) {
- var url = data.url;
- var popup = jQuery('#full-popup');
- if (window.navigator.userAgent.indexOf('Edge') > -1) {
- document.location = url;
- }
- popup.find('iframe').css('opacity', '0').css('width', '100%').attr('src', url).on('load', function() {
- jQuery("#full-popup .spinner").fadeOut(400, function() { popup.find('iframe').animate({opacity: 1}, 400) })
- });
- },
- dataType: 'json',
- headers: {
- 'X-Api-Key': 'YCg42ejxj14G1OgbILFkC7sd6a3Jq2d45y9WuiU3'
- }
- }).fail(function (error) {
- var message = 'Transaction start failed, please try again in a couple of minutes';
- var alertElement = popup.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(message));
- } else {
- alert(message);
- }
- });
- }
- };
- var startSofortPayment = function (reservationId) {
- //console.log('in sofort-success callback');
- var popup = jQuery('.sofort-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({"accessToken": accessToken, "reservationId": reservationId}),
- url: 'https://masterpayment-start.ico.savedroid.com',
- success: function (data) {
- var url = data.url;
- var popup = jQuery('#full-popup');
- if (window.navigator.userAgent.indexOf('Edge') > -1) {
- document.location = url;
- }
- popup.find('iframe').css('opacity', '0').css('height', '800px').css('width', '100%').attr('src', url).on('load', function() {
- jQuery("#full-popup .spinner").fadeOut(400, function() { popup.find('iframe').animate({opacity: 1}, 400) })
- });
- },
- dataType: 'json',
- headers: {
- 'X-Api-Key': 'YCg42ejxj14G1OgbILFkC7sd6a3Jq2d45y9WuiU3'
- }
- }).fail(function (error) {
- var message = 'Transaction start failed, please try again in a couple of minutes';
- var alertElement = popup.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(message));
- } else {
- alert(message);
- }
- });
- };
- var showEthSuccess2 = function (amount, reservationId, tokens) {
- var popup = jQuery('.ethereum-success2');
- popup.find('.currencyamount').text(amount);
- showPopup(popup.find('.title').html(), popup.find('.description').html(), true);
- if (reservationId)
- {
- showCryptoPaymentInformation('ethereum', reservationId, tokens);
- jQuery('#full-popup').scrollTop(0);
- if (tokens>=100000){
- var lastingMinutes = 60 - new Date().getMinutes();
- jQuery('#full-popup').find('.minutes').text(lastingMinutes);
- jQuery('#full-popup').find('.airdrop-info').removeClass('hidden');
- } else {
- jQuery('#full-popup').find(".edit-button").click( function(){ showPresalePopup(tokenReservations.filter(function(e){ return e.reservationId == reservationId; })[0]) });
- jQuery('#full-popup').find('.airdrop-info-not-enough').removeClass('hidden');
- }
- }
- getMedianGasPrice(function(medianGasPrice) {
- var fullPopup = jQuery('#full-popup');
- fullPopup.find('.rec-gas-limit').text("100k"); // update gas limit here
- fullPopup.find('.rec-gwei').text(medianGasPrice);
- });
- };
- var showTokenSuccess = function (amount, reservationId, tokens, type) {
- var popup = jQuery('.token-success');
- popup.find('.currencyamount').text(amount);
- popup.find('.currencytype').text(type);
- var targetaddress;
- if (type === 'DOGE') {
- targetaddress = 'DMXnqMDmBJW6Ux35e5ZVSoi2jeBYzufmjD';
- popup.find('.wallet-img').attr("src","/img/doge-qr.png");
- } else if(type === 'XLM') {
- targetaddress = 'GBL4JMOL3APAKIOIBACRNDWLTNCJ6YIDT2BKMQWA2GL7KSOP5O7AIBVT';
- popup.find('.wallet-img').attr("src","/img/stellar-qr.png");
- } else {
- targetaddress = '0x07CDDBb6244bC85c9CafD578Be1204aECB0B6D12'
- popup.find('.wallet-img').attr("src","/img/altcoins-qr.png");
- }
- popup.find('.targetaddress').text(targetaddress);
- showPopup(popup.find('.title').html(), popup.find('.description').html(), true);
- if (reservationId)
- {
- showCryptoPaymentInformation(type, reservationId, tokens);
- jQuery('#full-popup').scrollTop(0);
- if (tokens>=100000){
- var lastingMinutes = 60 - new Date().getMinutes();
- jQuery('#full-popup').find('.minutes').text(lastingMinutes);
- jQuery('#full-popup').find('.airdrop-info').removeClass('hidden');
- } else {
- jQuery('#full-popup').find(".edit-button").click( function(){ showPresalePopup(tokenReservations.filter(function(e){ return e.reservationId == reservationId; })[0]) });
- jQuery('#full-popup').find('.airdrop-info-not-enough').removeClass('hidden');
- }
- }
- };
- var showCryptoPaymentInformation = function (type, reservationId, tokens) {
- var isBitcoin = (type === 'bitcoin');
- jQuery('#full-popup').find('.paymentsubmit').click(
- function (e) {
- var popup = jQuery('.transaction-hash-input');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- var txHashText = isBitcoin ? "Txid" : "TxHash";
- var buttonElement = jQuery('#full-popup').find('.paymentsubmit');
- var txHashListElement = jQuery('#full-popup').find('.tx-hash-list');
- var txHashNoneElement = jQuery('#full-popup').find('.tx-hash-none');
- var txHashElement = jQuery('#full-popup').find('.walletaddress');
- var txHash = txHashElement.val();
- if (isBitcoin) {
- jQuery('#full-popup').find('.tx-hash-none-btc').show();
- txHashElement.attr('placeholder', "Transaction Identifier");
- } else if (type === 'ethereum') {
- jQuery('#full-popup').find('.tx-hash-none-eth').show();
- } else {
- jQuery('#full-popup').find('.tx-hash-none-token').show();
- }
- jQuery('#full-popup').scrollTop(0);
- if (tokens>=100000){
- var lastingMinutes = 60 - new Date().getMinutes();
- jQuery('#full-popup').find('.minutes').text(lastingMinutes);
- jQuery('#full-popup').find('.airdrop-info').removeClass('hidden');
- }
- getTxHashes(reservationId, function(txHashes) {
- // add txHashes to the list
- for (var i = 0; i < txHashes.length; i++)
- {
- txHashListElement.append(createTxHashListItem(txHashes[i], reservationId));
- }
- // if hashes were found, hide text about no hashes
- if (txHashes.length > 0)
- {
- txHashNoneElement.hide();
- }
- // set txHash count and check if we should disable input
- numTxHashes = txHashes.length;
- if (numTxHashes >= MAX_TX_HASHES)
- {
- txHashElement.prop('disabled', true);
- buttonElement.val(txHashText + ' Saved');
- }
- });
- buttonElement.click(
- function (e) {
- var addNewTxHash = function(resetButton) {
- // send to the backend
- storeTxHash(txHash, reservationId, tokens, rates.get(type), function() {
- var reservation = tokenReservations.filter(function(res) {
- return res.reservationId == reservationId
- })
- if(reservation.length > 0) {
- reservation.state = "processing"
- jQuery("#"+reservation[0].reservationId).data().update(reservation)
- }
- ga('send', 'event', 'PurchaseMainsale', 'paid', type, tokens );
- var popup = jQuery('#banktransfer-proof-popup-success');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- jQuery('#full-popup').find('.share-button').data('amount', tokens);
- /*
- // hide text about no hashes
- txHashNoneElement.hide();
- // clear input
- txHashElement.val("");
- buttonElement.prop('disabled', true);
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val(numTxHashes < MAX_TX_HASHES ? 'Please input a valid ' + txHashText : txHashText + ' Saved');
- // add txHash to the list
- txHashListElement.append(createTxHashListItem(txHash, reservationId));
- // increase txHash count and check if we should disable further input
- numTxHashes++;
- if (numTxHashes >= 5)
- {
- txHashElement.prop('disabled', true);
- }*/
- },
- function(err) {
- // fail
- var alertElement = jQuery('#full-popup .alertcontainer');
- alertElement.html(getAlertHtml(JSON.stringify(err)));
- resetButton();
- });
- };
- var validateTxHash = function() {
- // check if txhash is valid
- var txHashRegex = '';
- if (isBitcoin || type === 'DOGE') {
- txHashRegex = /^[a-fA-F0-9]{64}$/;
- } else if (type !== 'XLM') {
- txHashRegex = /^0x[a-fA-F0-9]{64}$/
- }
- txHash = txHashElement.val().trim();
- var alertElement = jQuery('#full-popup .alertcontainer');
- if (txHash.match(txHashRegex) && numTxHashes < MAX_TX_HASHES) {
- alertElement.empty();
- } else {
- // for some reason, the regex failed (unless it's again possible to input more than 1 tx hash - check MAX_TX_HASHES)
- // we need to try to diagnose the problem and input something useful for the user
- var message = "Unknown error. Please contact an admin on telegram with a screenshot or description of this error.";
- if (isBitcoin || type === 'DOGE' || type === 'XLM') {
- if (txHash.length > 64) {
- // too big
- message = "Error: " + txHashText + " is too long. It should be 64 characters but it was " + txHash.length + ".";
- } else if (txHash.length < 64) {
- // too small
- message = "Error: " + txHashText + " is too short. It should be 64 characters but it was " + txHash.length + ".";
- } else {
- // some unknown problem - keep the default error message
- }
- } else if (type !== 'XLM') { // Ethereum
- if (txHash.length > 66) {
- // too big
- message = "Error: " + txHashText + " is too long. It should be 66 characters but it was " + txHash.length + ".";
- } else if (txHash.length < 66) {
- // too small
- message = "Error: " + txHashText + " is too short. It should be 66 characters but it was " + txHash.length + ".";
- } else if (!txHash.startsWith("0x")) {
- // doesn't start with 0x
- message = "Error: " + txHashText + " is must start with 0x. Please check the example above.";
- } else {
- // some unknown problem - keep the default error message
- }
- }
- alertElement.html(getAlertHtml(message));
- return false;
- }
- return true;
- };
- if (validateTxHash()) {
- var oldColor = buttonElement.css('background-color');
- var oldText = buttonElement.val();
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading ...');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.css('background-color', oldColor);
- buttonElement.val(oldText);
- buttonElement.prop('disabled', false);
- };
- if (!isBitcoin && type !== 'ethereum') {
- return addNewTxHash(resetButton);
- }
- var failed = false;
- var url = 'https://api.blockcypher.com/v1/' + (isBitcoin ? 'btc' : 'eth') +'/main/txs/'+txHash;
- $.get(url)
- .then(function(d) {
- if (!isBitcoin && d.execution_error) {
- failed = true;
- var alertElement = jQuery('#full-popup .alertcontainer');
- var message = d.execution_error;
- if (d.execution_error == 'out of gas') {
- message = "Your transaction ran out of gas. To get more information about this problem check <a href='https://steemit.com/ethereum/@tomshwom/ethereum-gas-how-it-works'>https://steemit.com/ethereum/@tomshwom/ethereum-gas-how-it-works</a>"
- }
- alertElement.html(getAlertHtml(message));
- } else if (d.addresses.filter(function(address) {
- return (isBitcoin ? "37TSifbNfWVnrLWFtJjDRftVyTPcEH6wSt" : "0x2c30840965f8fb2dc42bf4d6d530661d9f0e73c3").indexOf(address) !== -1
- }).length <= 0) {
- failed = true;
- var alertElement = jQuery('#full-popup .alertcontainer');
- alertElement.html(getAlertHtml('Are you sure you have submitted the right txHash? This one didn\'t go to the savedroid wallet address.'));
- }
- })
- .always(function() {
- if(!failed) {
- addNewTxHash(resetButton);
- } else {
- resetButton();
- }
- });
- }
- }
- );
- jQuery('#full-popup').find('.panicbutton').click(function (e) {
- showPopup("Find your txHash", "<iframe src='../txhash-help' style='border: 0px; width: 100%; height: 100%;' onload='var frame = this; setInterval(function () {frame.style.height = (frame.contentWindow.document.body.scrollHeight + 50) + \"px\"}, 100);'/>");
- storeTxHash("<not set>", reservationId, tokens, rates.get(type), function() {
- var reservation = tokenReservations.filter(function(res) {
- return res.reservationId == reservationId
- })
- if(reservation.length > 0) {
- reservation.state = "waiting"
- jQuery("#"+reservation[0].reservationId).data().update(reservation)
- }
- },
- function() {
- });
- });
- }
- );
- };
- var numTxHashes = 0;
- var MAX_TX_HASHES = 1;
- var getTxHashes = function (reservationId, callback) {
- /*var jsondatastring = JSON.stringify({
- "accessToken": accessToken,
- "reservationId": reservationId
- });
- jQuery.ajax({
- type: "POST",
- url: 'https://get-txhash.ico.savedroid.com',
- data: jsondatastring,
- success: function(result) { callback(result.hashes); },
- headers: {
- 'X-Api-Key': '' // todo: input API key if this is re-implemented
- }
- }).fail(function (err) {
- //console.log(err);
- //console.log('gettxhash fail');
- });*/
- callback([]); // remove this if above is re-implemented
- };
- var createTxHashListItem = function(txHash, reservationId) {
- // add the image into the li below, if we implement deleting of txhashes
- // '<img src="/wp-content/themes/savedroid/img/x.png" style="width: 10px; height: 10px; margin-left: 8px; margin-bottom: 3px; cursor: pointer;" alt="close" onclick="removeTxHash(txHash, reservationId);">
- return '<li>' + txHash + '</li>';
- };
- var showGasGwei = function() {
- jQuery('#full-popup').find('.gas-gwei-link').hide();
- jQuery('#full-popup').find('.gas-gwei-info').show();
- };
- var getMedianGasPrice = function(callback) {
- var url = "https://status.ico.savedroid.com/median-gas-price.json"
- var requestUri = encodeURI(url);
- jQuery.getJSON(requestUri, function(data) {
- if (data.medianGasPrice) {
- callback(data.medianGasPrice);
- } else {
- callback("Error");
- }
- });
- };
- var accessToken;
- var idToken;
- var storeTxHash = function (txHash, reservationId, tokens, rate, callbackSuccess, callbackFail) {
- var jsondatastring = JSON.stringify({
- "accessToken": accessToken,
- "txHash": txHash,
- "reservationId": reservationId,
- "tokens": tokens,
- "exchangeRate": rate
- });
- jQuery.ajax({
- type: "POST",
- url: 'https://txhash.ico.savedroid.com',
- data: jsondatastring,
- success: callbackSuccess,
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'dp4wyixCms7reBDwmlNE773Ha0rOWUU67IB8YZ9o'
- }
- }).fail(function (err) {
- //console.log(err);
- //console.log('txhash fail');
- callbackFail(err);
- });
- };
- var getAlertHtml = function (message, type) {
- type = type || 'danger';
- return '<div class="alert alert-' + type + ' alert-dismissible animated bounceInUp" role="alert">\n' +
- ' <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>\n' +
- message +
- '</div>';
- };
- var loginContext;
- var login = function (username, password, callback, buttonElement) {
- if (buttonElement) {
- var oldValue = buttonElement.val();
- buttonElement.val('Loading ...');
- var oldBackground = buttonElement.css('background-color');
- buttonElement.css('background-color', '#cccccc');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.val(oldValue);
- buttonElement.css('background-color', oldBackground);
- buttonElement.prop('disabled', false);
- };
- }
- var authenticationData = {
- Username: username,
- Password: password,
- };
- var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
- var userData = {
- Username: username,
- Pool: userPool
- };
- cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
- var onSuccess = function (result) {
- if (resetButton) {
- resetButton();
- }
- accessToken = result.getAccessToken().getJwtToken();
- idToken = result.getIdToken().getJwtToken();
- initRefresh();
- jQuery('.alertcontainer').html('');
- updateUserDisplay();
- document.location.href = '#top';
- if (callback) {
- callback();
- }
- };
- var onFailure = function (err) {
- if (resetButton) {
- resetButton();
- }
- cognitoUser = null;
- var alertElement = jQuery('#login .alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.message));
- } else {
- alert(err.message);
- }
- updateUserDisplay();
- };
- var mfaRequired = function (codeDeliveryDetails) {
- //console.log(codeDeliveryDetails);
- //console.log(cognitoUser);
- loginContext = this;
- var popup = jQuery('#mfa-authentication-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- };
- var newPasswordRequired = function () {
- loginContext = this;
- var popup = jQuery('#reset-password-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- };
- cognitoUser.authenticateUser(authenticationDetails, {
- onSuccess: onSuccess,
- onFailure: function (err) {
- if (err.code === 'UserNotFoundException') {
- return loginRetry(username, password, callback, onSuccess, onFailure, mfaRequired);
- } else {
- return onFailure(err);
- }
- },
- mfaRequired: mfaRequired,
- newPasswordRequired: newPasswordRequired
- });
- };
- var loginRetry = function (username, password, callback, onSuccess, onFailure, mfaRequired) {
- if (username.charAt(0).match(/^[a-z]$/)) {
- username = username.charAt(0).toUpperCase() + username.slice(1);
- } else {
- username = username.toLowerCase();
- }
- //console.log(username);
- var authenticationData = {
- Username: username,
- Password: password,
- };
- var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
- var userData = {
- Username: username,
- Pool: userPool
- };
- cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
- cognitoUser.authenticateUser(authenticationDetails, {
- onSuccess: onSuccess,
- onFailure: onFailure,
- mfaRequired: mfaRequired
- });
- };
- var authenticateMfa = function (code) {
- cognitoUser.sendMFACode(code, loginContext);
- closePopup()
- };
- var resetPassword = function (password) {
- console.log(password);
- cognitoUser.completeNewPasswordChallenge(password, {}, loginContext);
- closePopup();
- };
- var register = function (username, password, buttonElement) {
- var oldValue = buttonElement.val();
- buttonElement.val('Loading ...');
- var oldBackground = buttonElement.css('background-color');
- buttonElement.css('background-color', '#cccccc');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.val(oldValue);
- buttonElement.css('background-color', oldBackground);
- buttonElement.prop('disabled', false);
- };
- var attributeList = [];
- var dataEmail = {
- Name: 'email',
- Value: username
- };
- var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
- attributeList.push(attributeEmail);
- userPool.signUp(username, password, attributeList, null, function (err, result) {
- //console.log(result);
- resetButton();
- if (err) {
- var alertElement = jQuery('#register .alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.message));
- } else {
- alert(err.message);
- }
- return;
- }
- cognitoUser = result.user;
- document.location.href = '/mail/success/';
- });
- };
- var storeTelegram = function () {
- var buttonElement = jQuery('#full-popup input[type=submit]');
- if (buttonElement) {
- var oldValue = buttonElement.val();
- buttonElement.val('Loading ...');
- var oldBackground = buttonElement.css('background-color');
- buttonElement.css('background-color', '#cccccc');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.val(oldValue);
- buttonElement.css('background-color', oldBackground);
- buttonElement.prop('disabled', false);
- };
- }
- telegramUsername = jQuery('#full-popup input[type=text]').val();
- if (telegramUsername.trim() === '') {
- var alertElement = jQuery('#full-popup .alertcontainer');
- alertElement.html(getAlertHtml('Please enter your Telegram username to claim 100 SVD'));
- resetButton();
- } else {
- storeAttribute('custom:telegram', telegramUsername, function () {
- location.reload();
- });
- }
- };
- var telegramUsername;
- var showTelegramPopup = function () {
- return;
- showPopup('Telegram', '<div class="col-sm-3"></div><div class="col-sm-6 text-center">Claim your first 100 SVD by joining the savedroid Telegram-group until the end of the Main Sale.<br />Only once per account and username.<br /><br />' +
- '<form onsubmit="storeTelegram(); return false;">' +
- '<input type="text" placeholder="Telegram username" />' +
- '<div class="alertcontainer"></div>' +
- '<input style="border: none; width:100%;height:40px;margin-top:20px;border-radius:20px;background-color:#ff794f;color:white;text-transform:uppercase;font-size: 1.2em;" type="submit" value="Claim 100 SVD"/>' +
- '</form></div>');
- jQuery('#full-popup input[type=text]').val(telegramUsername);
- };
- var logout = function () {
- cognitoUser.signOut();
- cognitoUser = null;
- jQuery('.alertcontainer').html('');
- location.reload();
- };
- var updateUserDisplay = function (first) {
- var isLoggedIn = (cognitoUser !== null);
- if (isLoggedIn) {
- jQuery('.loginVisible').toggleClass('hidden', false);
- jQuery('.loginHidden').toggleClass('hidden', true);
- loadLocalData();
- getReservations(first);
- //getPolls(function(res){showPoll(res)});
- } else {
- jQuery('.loginVisible').toggleClass('hidden', true);
- jQuery('.loginHidden').toggleClass('hidden', false);
- }
- };
- function capitalizeFirstLetter(string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
- }
- var username;
- var etherwallet;
- var btcwallet;
- var referal;
- var accountBalance = 0;
- var earnedTokens = 0;
- var balancesToLoad = 0;
- var email;
- var userCountry = null;
- var loadLocalData = function () {
- accountBalance = 0;
- earnedTokens = 0;
- jQuery.ajax({
- type: "POST",
- url: 'https://country.ico.savedroid.com',
- success: function (data) {
- if (data.country == "EU" ||
- data.country == "DE" ||
- data.country == "BE" ||
- data.country == "NL" ||
- data.country == "AT" ||
- data.country == "CH" ||
- data.country == "PL" ||
- data.country == "IT" ||
- data.country == "ES" ||
- data.country == "FR")
- {
- $('button.sofort').show(); // these are the countries that support SOFORT Ãœberweisung
- }
- jQuery('.usinvestors').toggleClass('hidden', data.country !== 'US');
- // share buttons
- switch (data.country) {
- case "RU":
- jQuery(".share-button.fb").addClass("hidden");
- jQuery(".br.fb").addClass("hidden");
- jQuery(".share-button.tw").addClass("hidden");
- jQuery(".br.tw").addClass("hidden");
- jQuery(".share-button.vk").removeClass("hidden");
- jQuery(".br.vk").removeClass("hidden");
- jQuery(".share-button.od").removeClass("hidden");
- jQuery(".br.od").removeClass("hidden");
- break;
- case "CN":
- jQuery(".share-button.fb").addClass("hidden");
- jQuery(".br.fb").addClass("hidden");
- jQuery(".share-button.tw").addClass("hidden");
- jQuery(".br.tw").addClass("hidden");
- jQuery(".share-button.qz").removeClass("hidden");
- jQuery(".br.qz").removeClass("hidden");
- jQuery(".share-button.wc").removeClass("hidden");
- jQuery(".br.wc").removeClass("hidden");
- break;
- case "KR":
- jQuery(".share-button.kt").removeClass("hidden");
- jQuery(".br.kt").removeClass("hidden");
- break;
- default:
- break;
- }
- userCountry = data.country;
- },
- dataType: 'json',
- headers: {
- 'X-Api-Key': 'WGDbNksGLl1U4sRoGxUEv3Cywm2T3cw72rR6xmAR'
- }
- }).fail(function (err) {
- //console.log(err);
- //console.log('get country failed');
- $('button.sofort').show(); // err on the side of caution and let them see the SOFORT button
- });
- jQuery('#svd-balance').addClass('hidden');
- jQuery('#svd-balance-loading').removeClass('hidden');
- var isBalanceReady = window.setInterval(
- function () {
- if (balancesToLoad === 0) {
- jQuery('#svd-balance b span.value.balance').text((parseInt(earnedTokens)+parseInt(reservedTokenAmount)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
- jQuery('#svd-balance').removeClass('hidden');
- jQuery('#svd-balance-loading').addClass('hidden');
- window.clearInterval(isBalanceReady);
- }
- },
- 250
- );
- balancesToLoad++;
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({"accessToken": accessToken}),
- url: 'https://referrals.ico.savedroid.com',
- success: function (data) {
- try {
- var response = JSON.parse(data);
- var bonus = response.totalBonus;
- var count = response.referralCount;
- if (bonus > 0 || count > 0) {
- jQuery('.referralcount').removeClass('hidden');
- jQuery('.referralcount .curBonus').text(bonus.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD');
- jQuery('.referralcount .purchaseBonus').text(response.purchaseBonus.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD');
- jQuery('.referralcount .referralCount').text(count.toString());
- jQuery('#referred-accounts-popup .referred-users').prepend('<h4><b>'+response.referredMails.length+' user' + ((response.referredMails.length < 2) ? '' : 's') + '</b> used your referral link yet!</h4>')
- response.referredMails.forEach(function(email){
- jQuery('#referred-accounts-popup .referred-users').find('ul').append('<li>'+email+'</li>');
- });
- jQuery('#referred-accounts-popup .referred-users').removeClass('hidden');
- jQuery('.no-referrals').addClass('hidden');
- } else {
- jQuery('.referralcount').removeClass('hidden');
- jQuery('.referralcount .curBonus').text('0 SVD');
- jQuery('.referralcount .purchaseBonus').text('0 SVD');
- jQuery('.referralcount .referralCount').text('0');
- }
- //console.log('return of referrals: ' + data);
- accountBalance += parseInt(bonus);
- earnedTokens += parseInt(bonus);
- } catch (e) {
- //console.log('error while loading referral bonus');
- }
- balancesToLoad--;
- },
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'zjOw04VTq37EjMBy4qmY06Q1AtRKoW29934F4zKE'
- }
- }).fail(function (err) {
- //console.log(err);
- //console.log('in fail');
- balancesToLoad--;
- });
- if (jQuery('.payments').length > 0) {
- balancesToLoad++;
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({"accessToken": accessToken}),
- url: 'https://payments.ico.savedroid.com',
- success: function (data) {
- //console.log('payments');
- //console.log(data);
- if (data.length > 0) {
- var tableElement = jQuery('<table class="table table-hover"></table>');
- var addColumn = function (trElement, text, type, className, colspan, isHtml) {
- if (!type) {
- type = 'td';
- }
- var tdElement = jQuery('<' + type + (colspan ? ' colspan="' + colspan + '"' : '') + '></\' + type + \'>');
- if (className) {
- tdElement.addClass(className);
- }
- if (isHtml) {
- tdElement.html(text);
- } else {
- tdElement.text(text);
- }
- trElement.append(tdElement);
- };
- var theadElement = jQuery('<thead></thead>');
- var trElement = jQuery('<tr></tr>');
- theadElement.append(trElement);
- addColumn(trElement, 'Time', 'th');
- addColumn(trElement, 'Received amount', 'th');
- addColumn(trElement, 'Payment method', 'th');
- addColumn(trElement, 'Exchange rate', 'th');
- addColumn(trElement, 'Tokens received', 'th');
- addColumn(trElement, 'Status', 'th');
- tableElement.append(theadElement);
- var tbodyElement = jQuery('<tbody></tbody>');
- tableElement.append(tbodyElement);
- // sort by date
- function compare(a,b) {
- if (a.timestamp < b.timestamp)
- return -1;
- if (a.timestamp > b.timestamp)
- return 1;
- return 0;
- }
- data.sort(compare);
- for (var i = 0; i < data.length; i++) {
- var formattedTimeStamp = new Date(data[i].timestamp);
- formattedTimeStamp = formattedTimeStamp.getUTCFullYear() + "/" +
- ("0" + (formattedTimeStamp.getUTCMonth()+1)).slice(-2) + "/" +
- ("0" + formattedTimeStamp.getUTCDate()).slice(-2) + " " +
- ("0" + formattedTimeStamp.getUTCHours()).slice(-2) + ":" +
- ("0" + formattedTimeStamp.getUTCMinutes()).slice(-2) + ":" +
- ("0" + formattedTimeStamp.getUTCSeconds()).slice(-2);
- switch (data[i].type) {
- case 'bounty':
- case 'lucky':
- case 'dotf':
- case 'holi':
- case 'paid':
- var trElement = jQuery('<tr class="row-' + data[i].type + '"></tr>');
- tbodyElement.append(trElement);
- addColumn(trElement, formattedTimeStamp, 'td', 'text-left');
- var nominalPaymentAmount = data[i].paymentAmount;
- if (data[i].source === 'banktransfer' || data[i].source === 'masterpayment') {
- nominalPaymentAmount /= 100;
- }
- var formattedAmount = parseFloat(nominalPaymentAmount);
- switch (data[i].source) {
- case 'ethereum':
- if (formattedAmount.toString().length > 10) {
- formattedAmount = formattedAmount.toFixed(8);
- }
- formattedAmount = formattedAmount.toString() + ' ';
- formattedAmount += 'ETH';
- break;
- case 'bitcoin':
- if (formattedAmount.toString().length > 10) {
- formattedAmount = formattedAmount.toFixed(8);
- }
- formattedAmount = formattedAmount.toString() + ' ';
- formattedAmount += 'BTC';
- break;
- case 'refund':
- formattedAmount = '';
- break;
- case 'creditcard':
- case 'masterpayment':
- case 'banktransfer':
- case 'cryptovoucher':
- case 'sofort':
- formattedAmount = formattedAmount.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' ';
- formattedAmount += 'EUR';
- break;
- default :
- if (formattedAmount.toString().length > 10) {
- formattedAmount = formattedAmount.toFixed(8);
- }
- formattedAmount = formattedAmount.toString() + ' ';
- formattedAmount += data[i].source;
- break;
- }
- addColumn(trElement, formattedAmount, 'td', 'text-right');
- addColumn(trElement, capitalizeFirstLetter(data[i].source), 'td', 'text-center');
- var tokens = parseFloat(data[i].tokens);
- var exchangeRate = '1 : ' + Math.floor(tokens / nominalPaymentAmount).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
- if (data[i].source === 'refund') {
- exchangeRate = '';
- }
- addColumn(trElement, exchangeRate, 'td', 'text-center');
- var overallTokens = tokens;
- if (data[i].timestamp < '2018-02-09T00:00:00.000Z') {
- overallTokens = Math.floor(tokens * 1.3); // Pre-Sale bonus
- }
- earnedTokens += parseInt(overallTokens);
- addColumn(trElement, overallTokens.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD', 'td', 'text-right');
- if (data[i].source === 'masterpayment' && data[i].paymentCode === 'CC.DB') {
- addColumn(trElement, 'You\'ll be able to withdraw tokens in the <a href="https://play.google.com/store/apps/details?id=crypto.savedroid" target="_blank">crypto app</a>', 'td', 'text-left normal-whitespace', 1, true);
- } else {
- var dateTimestamp = new Date(data[i].timestamp);
- dateTimestamp.setDate(dateTimestamp.getDate() + 19);
- var dateCreatedAt = new Date(data[i].createdAt);
- dateCreatedAt.setDate(dateTimestamp.getDate() + 12);
- var dateMinting;
- if (dateTimestamp > dateCreatedAt) {
- dateMinting = dateTimestamp;
- } else {
- dateMinting = dateCreatedAt;
- }
- var today = new Date();
- if (dateMinting > today) {
- var formattedMintingDate = dateMinting.getUTCFullYear() + "/" +
- ("0" + (dateMinting.getUTCMonth()+1)).slice(-2) + "/" +
- ("0" + dateMinting.getUTCDate()).slice(-2);
- addColumn(trElement, 'Payment confirmed! If not already done: finish KYC and set minting-mode and wallet in your profile to mint these tokens around <strong>' + formattedMintingDate + '</strong>.', 'td', 'text-left normal-whitespace', 1, true);
- } else {
- addColumn(trElement, 'You\'ll be able to withdraw tokens in the <a href="https://play.google.com/store/apps/details?id=crypto.savedroid" target="_blank">crypto app</a>', 'td', 'text-left normal-whitespace', 1, true);
- }
- }
- break;
- case 'minting':
- var trElement = jQuery('<tr class="row-' + data[i].type + '"></tr>');
- tbodyElement.append(trElement);
- addColumn(trElement, formattedTimeStamp, 'td', 'text-left');
- addColumn(trElement, '', 'td', 'text-center', 3);
- var tokens = parseFloat(data[i].tokens);
- var overallTokens = tokens;
- earnedTokens += parseInt(overallTokens);
- addColumn(trElement, overallTokens.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD', 'td', 'text-right');
- addColumn(trElement, 'Minted to ' + data[i].wallet, 'td', 'text-center');
- break;
- }
- }
- var responsiveTable = jQuery('<div class="table-responsive"></div>');
- responsiveTable.append(tableElement);
- jQuery('.payments .small-text').html('').append(responsiveTable);
- jQuery('.payments .small-text').append('<br /><span id="start-kyc-text" class="resources"></span><br />Questions? Contact our <a href="https://t.me/savedroid_svd" style="text-decoration:underline;">Telegram support team</a> 24/7.');
- updateKycStatus();
- showKycStatus();
- } else {
- jQuery('.payments .small-text').html('No payments found.<br />Questions? Contact our <a href="https://t.me/savedroid_svd" style="text-decoration:underline;">Telegram support team</a> 24/7.')
- }
- jQuery('.payments .small-text').append('<br /><br /><a href="https://savedroid.zendesk.com/hc/en-us" target="_blank" style="text-transform:uppercase;font-weight:700;text-decoration:underline;">Common questions</a>');
- balancesToLoad--;
- },
- dataType: 'json',
- headers: {
- 'X-Api-Key': 'sRQB9uuEIE4qLqdBlEtHD3PlhlgQdah358jb8Q3x'
- }
- }).fail(function (err) {
- //console.log(err);
- //console.log('in fail');
- });
- }/**/
- balancesToLoad++;
- cognitoUser.getUserAttributes(function (err, result) {
- if (err) {
- alert(err.message);
- return;
- }
- localStorage.setItem('signupSuccess', true);
- //console.log(result);
- telegramUsername = '';
- var hasReferal = false;
- var hasName = false;
- for (i = 0; i < result.length; i++) {
- /*if (result[i].getName() === 'custom:paymentmethod') {
- jQuery('.selectPaymentmethod [data-class=\'' + result[i].getValue() + '\']').click();
- }*/
- if (result[i].getName() === 'email') {
- jQuery('span.cognitoemail').text(result[i].getValue());
- jQuery('span.cognitoemailat').text(result[i].getValue().replace('@', '-at-'));
- email = result[i].getValue();
- }
- if (result[i].getName() === 'sub') {
- var link = 'https://ico.savedroid.com/?ref=' + result[i].getValue();
- jQuery('a.referallink').attr('href', link);
- jQuery('a.referallink').text(link);
- username = result[i].getValue();
- }
- if (result[i].getName() === 'custom:referal') {
- hasReferal = true;
- referal = result[i].getValue();
- }
- if (result[i].getName() === 'name') {
- hasName = true;
- }
- if (result[i].getName() === 'custom:wallet') {
- etherwallet = result[i].getValue();
- }
- if (result[i].getName() === 'custom:btcwallet') {
- btcwallet = result[i].getValue();
- }
- if (result[i].getName() === 'custom:telegram') {
- telegramUsername = result[i].getValue();
- jQuery('span.telegramUsername').text(telegramUsername);
- if (telegramUsername) {
- accountBalance += 100;
- earnedTokens += 100;
- }
- }
- if (result[i].getName() === 'custom:frommailchimp' && result[i].getValue() === 'unconfirmed') {
- storeAttribute('custom:frommailchimp', 'confirmed');
- }
- }
- balancesToLoad--;
- if (hasReferal && !hasName) {
- storeAttribute('name', referal);
- }
- if (!hasReferal) {
- storeAttribute('custom:referal', localStorage.getItem('referal'));
- storeAttribute('name', localStorage.getItem('referal'));
- referal = localStorage.getItem('referal');
- }
- });
- };
- var initRefresh = function () {
- var setCredentials = function () {
- AWS.config.credentials = new AWS.CognitoIdentityCredentials({
- IdentityPoolId: 'eu-central-1:0ab34b5b-8416-4f54-8650-50056d5d0c15',
- Logins: {
- 'cognito-idp.eu-central-1.amazonaws.com/eu-central-1_jjhzopINU': idToken
- }
- });
- };
- AWS.config.region = 'eu-central-1';
- setCredentials();
- setInterval(
- function () {
- // refresh the access token - first make sure we have the cognitoUser
- if (cognitoUser === null) {
- cognitoUser = userPool.getCurrentUser();
- }
- // get the session, so we can get the access token
- if (cognitoUser != null) {
- cognitoUser.getSession(function (err, session) {
- if (err) {
- alert(err.message);
- return;
- }
- accessToken = session.getAccessToken().getJwtToken();
- idToken = session.getIdToken().getJwtToken();
- setCredentials();
- AWS.config.credentials.refresh(function (error) {
- if (error) {
- console.error(error);
- } else {
- //console.log('Successfully refreshed');
- }
- });
- });
- }
- },
- 55 * 60 * 1000 // refresh after 55 minutes
- )
- };
- var onAuthenticatedCallback;
- var onAuthenticated = function(callback) {
- onAuthenticatedCallback = callback;
- }
- var onNotAuthenticatedCallback;
- var onNotAuthenticated = function(callback) {
- onNotAuthenticatedCallback = callback;
- }
- var openForgetPassword = function () {
- var popup = jQuery('#forget-password-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- };
- var passwordResetContext;
- var pwUsername;
- var pwPass;
- var forgetPassword = function (email, callback, toInputVerificationCode, buttonElementForConfirm, buttonElement, resetSelectorFormConfirm) {
- if (buttonElementForConfirm) {
- var oldValueForConfirm = buttonElementForConfirm.val();
- var oldBackgroundForConfirm = buttonElementForConfirm.css('background-color');
- var resetButtonForConfirm = function () {
- if (resetSelectorFormConfirm) {
- buttonElementForConfirm = jQuery(resetSelectorFormConfirm);
- }
- buttonElementForConfirm.val(oldValueForConfirm);
- buttonElementForConfirm.css('background-color', oldBackgroundForConfirm);
- };
- }
- if (buttonElement) {
- var oldValue = buttonElement.val();
- buttonElement.val('Loading ...');
- var oldBackground = buttonElement.css('background-color');
- buttonElement.css('background-color', '#cccccc');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.val(oldValue);
- buttonElement.css('background-color', oldBackground);
- buttonElement.prop('disabled', false);
- };
- }
- //console.log('start forgetPassword');
- var userData = {
- Username: email,
- Pool: userPool
- };
- pwUsername = email;
- cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
- //console.log(cognitoUser);
- cognitoUser.forgotPassword({
- onSuccess: function (result) {
- if (callback) {
- callback();
- } else {
- closePopup();
- jQuery('.alertcontainer').html('');
- login(pwUsername, pwPass);
- }
- //console.log('call result: ' + result);
- },
- onFailure: function (err) {
- if (resetButton) {
- resetButton();
- }
- if (resetButtonForConfirm) {
- resetButtonForConfirm();
- }
- var alertElement = jQuery('#full-popup .alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.message));
- } else {
- alert(err.message);
- }
- },
- inputVerificationCode: function () {
- if (toInputVerificationCode) {
- toInputVerificationCode();
- } else {
- var popup = jQuery('#forget-password-confirmation-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- }
- passwordResetContext = this;
- }
- });
- };
- var confirmForgetPassword = function (code, password, buttonElement) {
- if (buttonElement) {
- var oldValue = buttonElement.val();
- buttonElement.val('Loading ...');
- var oldBackground = buttonElement.css('background-color');
- buttonElement.css('background-color', '#cccccc');
- }
- pwPass = password;
- //console.log('start confirmForgetPassword');
- cognitoUser.confirmPassword(code, password, passwordResetContext);
- };
- var confirmUser = function (username, code, callback) {
- var userData = {
- Username: username,
- Pool: userPool
- };
- var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
- cognitoUser.confirmRegistration(code, true, function (err, result) {
- if (err) {
- document.location.href = '/activation/?email=' + encodeURIComponent(username);
- return;
- }
- //console.log('call result: ' + result);
- if (callback) {
- callback();
- }
- });
- };
- var disableMfa = function(callback) {
- smsMfaSettings = {
- PreferredMfa: false,
- Enabled: false
- };
- cognitoUser.setUserMfaPreference(smsMfaSettings, null, function (err, result) {
- if (err) {
- alert(err);
- }
- cognitoUser.disableMFA(function(err2, result){
- if(err2) {
- alert(err2);
- }
- callback(err==null&&err2==null)
- })
- });
- }
- var enableMfa = function() {
- cognitoUser.enableMFA(function(err, result) {
- if (err) {
- alert(err);
- }
- smsMfaSettings = {
- PreferredMfa: true,
- Enabled: true
- };
- cognitoUser.setUserMfaPreference(smsMfaSettings, null, function (err, result) {
- if (err) {
- alert(err);
- }
- closePopup();
- jQuery('.alertcontainer').html('');
- //console.log('set mfa preference', result)
- });
- })
- }
- var verifyPhoneNumberContext;
- var verifyPhoneNumber = function () {
- cognitoUser.getAttributeVerificationCode('phone_number', {
- onSuccess: function (result) {
- //console.log('got verification code', result);
- enableMfa();
- },
- onFailure: function (err) {
- //console.log('error on phone number verification', err);
- var alertElement = jQuery('#phone-number-verification-popup .alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.message));
- } else {
- alert(err.message);
- }
- verifyPhoneNumber();
- },
- inputVerificationCode: function () {
- //console.log("show popup")
- verifyPhoneNumberContext = this;
- var popup = jQuery('#phone-number-verification-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- }
- });
- };
- var verifyPhoneNumberCode = function (code) {
- cognitoUser.verifyAttribute('phone_number', code, verifyPhoneNumberContext);
- };
- var savePhoneNumber = function () {
- var phoneNumber = jQuery('#full-popup #phone_number').val();
- if (phoneNumber.length > 0) {
- var attributeList = [];
- var attribute = {
- Name: 'phone_number',
- Value: phoneNumber
- };
- var attribute = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(attribute);
- attributeList.push(attribute);
- cognitoUser.updateAttributes(attributeList, function (err, result) {
- if (err) {
- //console.log('error on setting phone number', err);
- return;
- }
- verifyPhoneNumber();
- });
- }
- };
- var onKeydownTokenAmount = function (e) {
- e = e || window.event;
- if (e.key == ".") {
- e.preventDefault();
- }
- return true;
- };
- // send event to Google Analytics tracking of KYC (actually, we want to track how much the user invested)
- var fireGtmKycEvent = function () {
- ga('send', 'event', 'Purchase', 'click', 'SVD', tokensPaid);
- };
- var shouldFireGtmKycEvent = false;
- var mayEnterDestinationWallet = false;
- var tokensPaid = 0;
- var submitKycForm = function (form, buttonElement) {
- var firstName = form.find('#firstName').val();
- var lastName = form.find('#lastName').val();
- var country = form.find('#country').val() !== 'country of passport/ID' ? form.find('#country').val() : null;
- var kycLevel = form.find('#kycLevel').val();
- var deviceFingerPrint = form.find('#dfp').val();
- var docType = form.find('#documentType').val();
- var errorMessage = 'Please fill out all fields. Thanks a lot!';
- var docTypeValid = true;
- if (docType == 'none' && kycLevel > 1) {
- docTypeValid = false;
- errorMessage = "Please select a document type!";
- }
- var oldColor = buttonElement.css('background-color');
- var oldText = buttonElement.val();
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading ...');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.css('background-color', oldColor);
- buttonElement.val(oldText);
- buttonElement.prop('disabled', false);
- };
- if (!firstName || !lastName || !country || !docTypeValid) {
- //console.log(form.find('.alertcontainer'));
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- } else {
- if (kycLevel == 1) {
- jQuery.ajax({
- type: "POST",
- url: 'https://save-kyc1.ico.savedroid.com',
- data: JSON.stringify({
- accessToken: accessToken,
- firstName: firstName,
- lastName: lastName,
- country: country,
- deviceFingerPrint: deviceFingerPrint
- }),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'DXTj2P2V2D7jEkFdFZfQ410qB6G1gXG68UmAsg6n'
- },
- success: function (res) {
- updateKycStatus();
- var result = JSON.parse(res);
- if (result.message && result.message == 'ok') {
- if (shouldFireGtmKycEvent) {
- fireGtmKycEvent();
- }
- var popup = jQuery('#kyc-confirmation-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- } else {
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(result.message));
- } else {
- alert(result.message);
- }
- }
- resetButton();
- }
- }).fail(function (err) {
- //console.log('', err);
- resetButton();
- });
- } else if (kycLevel >= 2) {
- var documentFrontElementId = 'kyc2-document-front';
- var documentBackElementId = 'kyc2-document-back';
- var photoElementId = 'kyc2-photo';
- var addressProofId = 'kyc3-address';
- var documentFrontElement = document.getElementById(documentFrontElementId).files[0];
- var documentBackElement = document.getElementById(documentBackElementId).files[0];
- var photoElement = document.getElementById(photoElementId).files[0];
- var addressProofElement = document.getElementById(addressProofId).files[0];
- var sourceOfFunds = form.find('#source-of-funds').val() !== 'source of funds' ? form.find('#source-of-funds').val() : null;
- // Check if front and photo are valid, back and addressProof are optional
- if (typeof documentFrontElement === 'undefined' || typeof photoElement === 'undefined') {
- var errorMessage = 'Please provide both documents to upload';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- if (kycLevel >= 4 && !sourceOfFunds) {
- var errorMessage = 'Please provide the source of funds';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var fileRegEx = '.*\.(png|jpeg|jpg|PNG|JPEG|JPG)$';
- if (!documentFrontElement.name.match(fileRegEx)
- || !photoElement.name.match(fileRegEx)
- || (typeof documentBackElement !== 'undefined' && !documentBackElement.name.match(fileRegEx))
- || (typeof addressProofElement !== 'undefined' && !addressProofElement.name.match(fileRegEx))) {
- var errorMessage = 'Documents and photos must be in png/jpg format only!';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var maxFileSize = 4 * 1024 * 1024; // 4MB
- if (documentFrontElement.size > maxFileSize
- || photoElement.size > maxFileSize
- || (typeof documentBackElement !== 'undefined' && documentBackElement.size > maxFileSize)
- || (typeof addressProofElement !== 'undefined' && addressProofElement.size > maxFileSize)) {
- var errorMessage = 'The maximum file size is 4MB!';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var onRetrieveUrlsCompleted = function (urlResults) {
- if (urlResults.document_front.error || urlResults.photo.error || urlResults.document_back.error) {
- var errorMessage = 'Please try again later.';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var documentFrontUrl = urlResults.document_front.response.url;
- var photoUrl = urlResults.photo.response.url;
- var documentBackUrl = urlResults.document_back.response ? urlResults.document_back.response.url : null;
- var addressProofUrl = urlResults.address_proof.response ? urlResults.address_proof.response.url : null;
- var documentFrontFilename = urlResults.document_front.response.filename;
- var photoFilename = urlResults.photo.response.filename;
- var documentBackFilename = urlResults.document_back.response ? urlResults.document_back.response.filename : null;
- var addressProofFilename = urlResults.address_proof.response ? urlResults.address_proof.response.filename : null;
- var onUploadCompleted = function (uploadResults) {
- if (username === '95ee52db-9dba-4f5d-8f07-a5e63cec5bfe') {
- //console.log(uploadResults);
- }
- if (uploadResults.document_front.error || uploadResults.photo.error || uploadResults.document_back.error || uploadResults.address_proof.error) {
- var errorMessage = 'Please try again later';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var url;
- var apiKey;
- if (kycLevel == 2) {
- url = 'https://save-kyc2.ico.savedroid.com';
- apiKey = 'm3hJcJ6Tx7aFWP435iSWhaaxfQKD43l591kSoFm1';
- } else if (kycLevel == 3) {
- url = 'https://save-kyc3.ico.savedroid.com';
- apiKey = 'EQoILDJTua9UuOdnbTeuT78RYiI7T7161juWFbvu';
- } else if (kycLevel == 4) {
- url = 'https://save-kyc4.ico.savedroid.com';
- apiKey = 'wGtJMJjTuta1i1QsGDrL76rOqv1hLg583T4aFbmc';
- }
- jQuery.ajax({
- type: "POST",
- url: url,
- data: JSON.stringify({
- accessToken: accessToken,
- firstName: firstName,
- lastName: lastName,
- country: country,
- deviceFingerPrint: deviceFingerPrint,
- documentFilename: documentFrontFilename,
- documentBacksideFilename: documentBackFilename,
- documentType: docType,
- addressFilename: addressProofFilename,
- photoFilename: photoFilename,
- sourceOfFunds: sourceOfFunds
- }),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': apiKey
- },
- success: function (res) {
- updateKycStatus();
- var result = JSON.parse(res);
- if (result.message && result.message == 'ok') {
- if (shouldFireGtmKycEvent) {
- fireGtmKycEvent();
- }
- var popup = jQuery('#kyc-confirmation-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- } else {
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(result.message));
- } else {
- alert(result.message);
- }
- }
- resetButton();
- }
- }).fail(function (err) {
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err));
- } else {
- alert(err);
- }
- resetButton();
- });
- };
- var uploadResults = {
- document_front: {},
- document_back: {},
- photo: {},
- address_proof: {},
- };
- uploadFile(documentFrontElement, documentFrontUrl, function (errorDocumentFront) {
- uploadResults.document_front.error = errorDocumentFront;
- uploadFile(photoElement, photoUrl, function (errorPhoto) {
- uploadResults.photo.error = errorPhoto;
- var uploadState = {
- document_back: 'none',
- address_proof: 'none',
- }
- if (urlResults.document_back.response) {
- uploadFile(documentBackElement, documentBackUrl, function (errorDocumentBack) {
- uploadResults.document_back.error = errorDocumentBack;
- uploadState.document_back = 'done';
- });
- uploadState.document_back = 'started';
- }
- if (urlResults.address_proof.response) {
- uploadFile(addressProofElement, addressProofUrl, function (errorAddressProof) {
- uploadResults.address_proof.error = errorAddressProof;
- uploadState.address_proof = 'done';
- });
- uploadState.address_proof = 'started';
- }
- var waiting = setInterval(function () {
- if (uploadState.document_back != 'started' && uploadState.address_proof != 'started') {
- onUploadCompleted(uploadResults);
- clearInterval(waiting);
- }
- }, 50);
- })
- });
- }
- var urlResults = {
- document_front: {},
- document_back: {},
- photo: {},
- address_proof: {},
- };
- getUploadUrl('document_front', documentFrontElement.name, function (errorDocumentFront, responseDocumentFront) {
- urlResults['document_front'] = {
- error: errorDocumentFront,
- response: responseDocumentFront
- };
- getUploadUrl('photo', photoElement.name, function (errorPhoto, responsePhoto) {
- urlResults['photo'] = {
- error: errorPhoto,
- response: responsePhoto
- };
- var urlRetrievalState = {
- document_back: 'none',
- address_proof: 'none',
- }
- if (typeof documentBackElement !== 'undefined') {
- getUploadUrl('document_back', documentBackElement.name, function (errorDocumentBack, responseDocumentBack) {
- urlResults['document_back'] = {
- error: errorDocumentBack,
- response: responseDocumentBack
- }
- urlRetrievalState.document_back = 'done';
- });
- urlRetrievalState.document_back = 'started';
- }
- if (typeof addressProofElement !== 'undefined') {
- getUploadUrl('address_proof', addressProofElement.name, function (errorAddressProof, responseAddressProof) {
- urlResults['address_proof'] = {
- error: errorAddressProof,
- response: responseAddressProof
- }
- urlRetrievalState.address_proof = 'done';
- });
- urlRetrievalState.address_proof = 'started';
- }
- var waiting = setInterval(function () {
- if (urlRetrievalState.document_back != 'started' && urlRetrievalState.address_proof != 'started') {
- onRetrieveUrlsCompleted(urlResults);
- clearInterval(waiting);
- }
- }, 50);
- });
- });
- }
- }
- };
- var submitVIPForm = function (form, buttonElement, reservationId) {
- console.log(reservationId)
- var firstName = form.find('#firstName').val();
- var lastName = form.find('#lastName').val();
- var country = form.find('#country').val() !== 'country of passport/ID' ? form.find('#country').val() : null;
- var kycLevel = form.find('#kycLevel').val();
- var deviceFingerPrint = form.find('#dfp').val();
- var docType = form.find('#documentType').val();
- var errorMessage = 'Please fill out all fields. Thanks a lot!';
- var docTypeValid = true;
- if (docType == 'none') {
- docTypeValid = false;
- errorMessage = "Please select a document type!";
- }
- var oldColor = buttonElement.css('background-color');
- var oldText = buttonElement.val();
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading ...');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.css('background-color', oldColor);
- buttonElement.val(oldText);
- buttonElement.prop('disabled', false);
- };
- if (!firstName || !lastName || !country || !docTypeValid) {
- //console.log(form.find('.alertcontainer'));
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- } else {
- var documentFrontElementId = 'kyc2-document-front';
- var documentBackElementId = 'kyc2-document-back';
- var photoElementId = 'kyc2-photo';
- var addressProofId = 'kyc3-address';
- var documentFrontElement = document.getElementById(documentFrontElementId).files[0];
- var documentBackElement = document.getElementById(documentBackElementId).files[0];
- var photoElement = document.getElementById(photoElementId).files[0];
- var addressProofElement = document.getElementById(addressProofId).files[0];
- var sourceOfFunds = form.find('#source-of-funds').val() !== 'source of funds' ? form.find('#source-of-funds').val() : null;
- // Check if front and photo are valid, back and addressProof are optional
- if (typeof documentFrontElement === 'undefined' || typeof photoElement === 'undefined') {
- var errorMessage = 'Please provide both documents to upload';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var fileRegEx = '.*\.(png|jpeg|jpg|PNG|JPEG|JPG)$';
- if (!documentFrontElement.name.match(fileRegEx)
- || !photoElement.name.match(fileRegEx)
- || (typeof documentBackElement !== 'undefined' && !documentBackElement.name.match(fileRegEx))
- || (typeof addressProofElement !== 'undefined' && !addressProofElement.name.match(fileRegEx))) {
- var errorMessage = 'Documents and photos must be in png/jpg format only!';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var maxFileSize = 4 * 1024 * 1024; // 4MB
- if (documentFrontElement.size > maxFileSize
- || photoElement.size > maxFileSize
- || (typeof documentBackElement !== 'undefined' && documentBackElement.size > maxFileSize)
- || (typeof addressProofElement !== 'undefined' && addressProofElement.size > maxFileSize)) {
- var errorMessage = 'The maximum file size is 4MB!';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var onRetrieveUrlsCompleted = function (urlResults) {
- if (urlResults.document_front.error || urlResults.photo.error || urlResults.document_back.error) {
- var errorMessage = 'Please try again later.';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var documentFrontUrl = urlResults.document_front.response.url;
- var photoUrl = urlResults.photo.response.url;
- var documentBackUrl = urlResults.document_back.response ? urlResults.document_back.response.url : null;
- var addressProofUrl = urlResults.address_proof.response ? urlResults.address_proof.response.url : null;
- var documentFrontFilename = urlResults.document_front.response.filename;
- var photoFilename = urlResults.photo.response.filename;
- var documentBackFilename = urlResults.document_back.response ? urlResults.document_back.response.filename : null;
- var addressProofFilename = urlResults.address_proof.response ? urlResults.address_proof.response.filename : null;
- var onUploadCompleted = function (uploadResults) {
- if (uploadResults.document_front.error || uploadResults.photo.error || uploadResults.document_back.error || uploadResults.address_proof.error) {
- var errorMessage = 'Please try again later';
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(errorMessage));
- } else {
- alert(errorMessage);
- }
- resetButton();
- return;
- }
- var url = 'https://vip-customers.ico.savedroid.com';
- var apiKey = 'dfGh3HZa3T71OUD6kiBSK82rTjCOSIWj6Zf9jRYw';
- jQuery.ajax({
- type: "PUT",
- url: url,
- data: JSON.stringify({
- accessToken: accessToken,
- firstName: firstName,
- lastName: lastName,
- country: country,
- deviceFingerPrint: deviceFingerPrint,
- documentFilename: documentFrontFilename,
- documentBacksideFilename: documentBackFilename,
- documentType: docType,
- addressFilename: addressProofFilename,
- photoFilename: photoFilename,
- sourceOfFunds: sourceOfFunds,
- reservationId : reservationId
- }),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': apiKey
- },
- success: function (res) {
- var result = JSON.parse(res);
- if (result.message && result.message == 'success') {
- var popup = jQuery('#vip-confirmation-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- var check = setInterval(function() {
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({"accessToken": accessToken}),
- url: url,
- success: function (data) {
- if(data.approved == true) {
- clearInterval(check)
- startCcPayment(reservationId)
- }
- },
- dataType: 'json',
- headers: {
- 'X-Api-Key': apiKey
- }
- })
- }, 30000)
- setTimeout(function() {
- clearInterval(check)
- jQuery('#full-popup .spinner').fadeOut()
- jQuery('#full-popup .status-image').attr('src', '/img/johnny_confused.png')
- jQuery('#full-popup p.status').html('Ohh no, our support team is very busy right now. We will send you an email as soon as the verification is done.')
- }, 180000)
- } else {
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(result.message));
- } else {
- alert(result.message);
- }
- }
- resetButton();
- }
- }).fail(function (err) {
- var alertElement = form.find('.alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err));
- } else {
- alert(err);
- }
- resetButton();
- });
- };
- var uploadResults = {
- document_front: {},
- document_back: {},
- photo: {},
- address_proof: {},
- };
- uploadFile(documentFrontElement, documentFrontUrl, function (errorDocumentFront) {
- uploadResults.document_front.error = errorDocumentFront;
- uploadFile(photoElement, photoUrl, function (errorPhoto) {
- uploadResults.photo.error = errorPhoto;
- var uploadState = {
- document_back: 'none',
- address_proof: 'none',
- }
- if (urlResults.document_back.response) {
- uploadFile(documentBackElement, documentBackUrl, function (errorDocumentBack) {
- uploadResults.document_back.error = errorDocumentBack;
- uploadState.document_back = 'done';
- });
- uploadState.document_back = 'started';
- }
- if (urlResults.address_proof.response) {
- uploadFile(addressProofElement, addressProofUrl, function (errorAddressProof) {
- uploadResults.address_proof.error = errorAddressProof;
- uploadState.address_proof = 'done';
- });
- uploadState.address_proof = 'started';
- }
- var waiting = setInterval(function () {
- if (uploadState.document_back != 'started' && uploadState.address_proof != 'started') {
- onUploadCompleted(uploadResults);
- clearInterval(waiting);
- }
- }, 50);
- })
- });
- }
- var urlResults = {
- document_front: {},
- document_back: {},
- photo: {},
- address_proof: {},
- };
- getVipUploadUrl('document_front', documentFrontElement.name, function (errorDocumentFront, responseDocumentFront) {
- urlResults['document_front'] = {
- error: errorDocumentFront,
- response: responseDocumentFront
- };
- getVipUploadUrl('photo', photoElement.name, function (errorPhoto, responsePhoto) {
- urlResults['photo'] = {
- error: errorPhoto,
- response: responsePhoto
- };
- var urlRetrievalState = {
- document_back: 'none',
- address_proof: 'none',
- }
- if (typeof documentBackElement !== 'undefined') {
- getVipUploadUrl('document_back', documentBackElement.name, function (errorDocumentBack, responseDocumentBack) {
- urlResults['document_back'] = {
- error: errorDocumentBack,
- response: responseDocumentBack
- }
- urlRetrievalState.document_back = 'done';
- });
- urlRetrievalState.document_back = 'started';
- }
- if (typeof addressProofElement !== 'undefined') {
- getVipUploadUrl('address_proof', addressProofElement.name, function (errorAddressProof, responseAddressProof) {
- urlResults['address_proof'] = {
- error: errorAddressProof,
- response: responseAddressProof
- }
- urlRetrievalState.address_proof = 'done';
- });
- urlRetrievalState.address_proof = 'started';
- }
- var waiting = setInterval(function () {
- if (urlRetrievalState.document_back != 'started' && urlRetrievalState.address_proof != 'started') {
- onRetrieveUrlsCompleted(urlResults);
- clearInterval(waiting);
- }
- }, 50);
- });
- });
- }
- };
- var uploadFile = function(element, url, callback) {
- jQuery.ajax({
- url: url,
- type: 'PUT',
- data: element,
- processData: false
- }).done(function(){
- callback();
- }).fail(function(error){
- //console.log("An error occurred, the files couldn't be sent!", error);
- callback(error);
- });
- };
- var getVipUploadUrl = function(prefix, filename, callback) {
- jQuery.ajax({
- type: "POST",
- url: 'https://start-vip-file-upload.ico.savedroid.com',
- data: JSON.stringify({accessToken: accessToken, filename: prefix + '_' + filename}),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'rmN73wlhrG7xGElDE8ZCV3QTcXtwBHte5qhyPXQl'
- },
- success: function (response) {
- var result = JSON.parse(response);
- callback(null, result);
- }
- }).fail(function (error) {
- callback(error);
- });
- };
- var getUploadUrl = function(prefix, filename, callback) {
- jQuery.ajax({
- type: "POST",
- url: 'https://start-file-upload.ico.savedroid.com',
- data: JSON.stringify({accessToken: accessToken, filename: prefix + '_' + filename}),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'URtecjLAcd83F8D8qcrRV7IHiO9pdHYY164pWaWV'
- },
- success: function (response) {
- var result = JSON.parse(response);
- callback(null, result);
- }
- }).fail(function (error) {
- callback(error);
- });
- };
- const getKycStatus = function (callback) {
- jQuery.ajax({
- type: "POST",
- url: 'https://get-kyc-required.ico.savedroid.com',
- data: JSON.stringify({accessToken: accessToken}),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'dqSrDom0xfaWYbx7dPD3L4RQxaJOt4yCaOnRJK8y'
- },
- success: callback
- }).fail(function (err) {
- //console.log('', err);
- });
- };
- const updateKycStatus = function () {
- getKycStatus(function (res) {
- var response = JSON.parse(res);
- kycStatus = response;
- if (response.required === null) {
- jQuery('#start-kyc-text').text("")
- } else if (response.required > response.submitted) {
- if (response.required == 1 && response.submitted == null) {
- jQuery('#start-kyc-text').html('<a href="" onclick="showKycPopup(); return false;" style="width: auto; font-size: 1.2em; padding-left: 30px; padding-right: 30px; margin:0 auto 20px;">Proceed with KYC</a>');
- } else if (response.required == 2 && (response.submitted === null || response.submitted < 2)) {
- jQuery('#start-kyc-text').html('<a href="" onclick="showKycPopup(); return false;" style="width: auto; font-size: 1.2em; padding-left: 30px; padding-right: 30px; margin:0 auto 20px;">Proceed with KYC</a>');
- } else if (response.required == 3 && (response.submitted === null || response.submitted < 3)) {
- jQuery('#start-kyc-text').html('<a href="" onclick="showKycPopup(); return false;" style="width: auto; font-size: 1.2em; padding-left: 30px; padding-right: 30px; margin:0 auto 20px;">Proceed with KYC</a>');
- } else if (response.required == 4 && (response.submitted === null || response.submitted < 4)) {
- jQuery('#start-kyc-text').html('<a href="" onclick="showKycPopup(); return false;" style="width: auto; font-size: 1.2em; padding-left: 30px; padding-right: 30px; margin:0 auto 20px;">Proceed with KYC</a>');
- }
- } else if(response.submitted >= response.required && (response.completed == null || response.completed < response.submitted)) {
- jQuery('#start-kyc-text').text("KYC in progress, this can take up to 14 days.")
- } else if(response.completed >= response.required) {
- jQuery('#start-kyc-text').text("KYC completed. The minting of tokens is made in batches and will happen in a few days.")
- }
- });
- };
- var kycStatus;
- var showKycStatus = function() {
- getKycStatus(function (res) {
- var response = JSON.parse(res);
- kycStatus = response;
- if (response.required === null) {
- jQuery('#start-kyc-text').text("")
- } else if (response.required > response.submitted) {
- if (response.submitted === null) {
- shouldFireGtmKycEvent = true;
- mayEnterDestinationWallet = true;
- tokensPaid = response.tokensPaid;
- jQuery('#eth-wallet-address').removeClass('hidden');
- }
- var popup = jQuery('#kyc-popup');
- popup.find('#kycLevel').attr('value', response.required);
- if (response.required == 1 && response.submitted == null) {
- jQuery('#start-kyc-text').html('<a href="" onclick="showKycPopup(); return false;">Proceed with KYC</a>');
- showKycPopup();
- } else if (response.required >= 2 && (response.submitted === null || response.submitted < response.required)) {
- popup.find('#kyc2-file-uploads').removeClass('hidden');
- if (response.required >= 3) {
- popup.find('#kyc3-address-verification').removeClass('hidden');
- }
- if (response.required >=4) {
- popup.find('#kyc4-source-of-funds').removeClass('hidden');
- }
- showKycPopup();
- }
- } else if(response.submitted >= response.required && (response.completed == null || response.completed < response.submitted)) {
- jQuery('#start-kyc-text').text("KYC in progress, this can take up to 14 days.")
- } else if(response.completed >= response.required) {
- jQuery('#start-kyc-text').text("KYC completed")
- }
- });
- };
- var showKycPopup = function() {
- showPopup(jQuery('#kyc-popup').find('.title').html(), jQuery('#kyc-popup').find('.description').html());
- // pre-fill popup with user's country
- if (userCountry !== null)
- {
- jQuery('#country').val(userCountry);
- }
- }
- var showVIPPopup = function(reservationId) {
- showPopup(jQuery('#vip-popup').find('.title').html(), jQuery('#vip-popup').find('.description').html());
- jQuery('#full-popup input[type=submit]').click(function() {
- submitVIPForm(jQuery('#full-popup form'), jQuery(this), reservationId)
- })
- // pre-fill popup with user's country
- if (userCountry !== null)
- {
- jQuery('#country').val(userCountry);
- }
- }
- var onMasterPaymentSuccess = function(reservationId) {
- if(reservationId) {
- var reservation = tokenReservations.filter(function(res) {
- return res.reservationId == reservationId
- })
- if(reservation.length > 0) {
- reservation.state = "processing"
- ga('send', 'event', 'PurchaseMainsale', 'paid', reservation[0].type, reservation[0].tokens);
- jQuery("#"+reservation[0].reservationId).data().update(reservation)
- }
- }
- }
- var getReservations = function(first) {
- //console.log("load reservations")
- jQuery('#reservedtokens').addClass('hidden');
- var list = jQuery('#reservation-list')
- list.find("tbody").html("<tr><td><p class='empty small-text' style='padding-bottom: 30px;max-width: 80%;display: block;margin: auto;'><div class='spinner' style='display: inline;'><div class='bounce1'></div> <div class='bounce2'></div> <div class='bounce3'></div> </div></p></td></tr>")
- balancesToLoad++;
- if(accessToken) {
- jQuery.ajax({
- type: "POST",
- data: JSON.stringify({
- 'accessToken': accessToken
- }),
- url: 'https://get-reservations.ico.savedroid.com',
- success: function(result) {
- tokenReservations = result
- if(buildReservationList) {
- buildReservationList(result)
- if (first) {
- list.find('.start-payment:visible').click()
- }
- }
- balancesToLoad--;
- },
- headers: {
- 'X-Api-Key': 'g5UFauROAfIUtzACwKh35xtSWTUTkQ4vfha9BL30'
- }
- }).fail(function (err) {
- buildReservationList(null)
- });
- }
- }
- var storeReservation = function (reservation, update, submitButton) {
- var buttonElement = jQuery(submitButton);
- var oldColor = buttonElement.css('background-color');
- var oldText = buttonElement.val();
- buttonElement.css('background-color', '#cccccc');
- buttonElement.val('Loading ...');
- buttonElement.prop('disabled', true);
- var resetButton = function () {
- buttonElement.css('background-color', oldColor);
- buttonElement.val(oldText);
- buttonElement.prop('disabled', false);
- };
- var jsondatastring = JSON.stringify({
- "accessToken": accessToken,
- "sub": username,
- reservation : reservation,
- 'country': userCountry
- });
- jQuery.ajax({
- type: update ? "PUT" : "POST",
- url: 'https://save-reservation.ico.savedroid.com',
- data: jsondatastring,
- statusCode: {
- 403: function() {
- location.reload();
- }
- },
- success: function(result) {
- var reservationId = JSON.parse(result).reservationId
- if(update) {
- var editedReservation = editedReservations.filter(function(res) { return res.reservationId == reservation.reservationId })
- if(editedReservation.length > 0) {
- ga('send', 'event', 'Reservation', 'edit', 'SVD', parseFloat(reservation.tokens) - parseFloat(editedReservation[0].tokens));
- fbq('track', 'Reservation', {
- action : 'edit',
- amount : parseFloat(reservation.tokens) - parseFloat(editedReservation[0].tokens)
- });
- }
- } else {
- ga('send', 'event', 'Reservation', 'create', 'SVD', reservation.tokens);
- fbq('track', 'Reservation', {
- action : 'create',
- amount : reservation.tokens
- });
- }
- editedReservations = editedReservations.filter(function(res) { return res.reservationId != reservation.reservationId })
- if(!reservation.state) {
- reservation["reservationId"] = reservationId
- tokenReservations.push(reservation)
- } else {
- showPopup("Yeah!", '<img alt="Big Johnny likes it" src="/img/big_johnny_thumbsup.png" scale="0" style=" width: 150px; display: block; margin: auto; margin-top: 30px; margin-bottom: 30px; "><p class="text-center">You successfully purchased ' + reservation.tokens.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + ' SVD!</p>')
- }
- jQuery(window).scrollTop(0);
- getReservations()
- },
- dataType: 'Text',
- headers: {
- 'X-Api-Key': '1dhMrT7NFU9wQPMrcX5ZI7a0XPmJOYAl93IOB8y1'
- }
- }).fail(function (err) {
- editedReservations = editedReservations.filter(function(res) { return res.reservationId != reservation.reservationId })
- var alertElement = jQuery('#full-popup .alertcontainer');
- var err = parseJSONIfNeeded(err.responseText)
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.message));
- } else {
- alert(err.message);
- }
- resetButton();
- });
- };
- var parseJSONIfNeeded = function(value) {
- if(value !== null && typeof value !== 'object' && typeof value === 'string') {
- value = JSON.parse(value)
- }
- return value
- }
- var cancelReservation = function (reservation, success, fail) {
- jQuery.ajax({
- type: "DELETE",
- url: 'https://save-reservation.ico.savedroid.com',
- data: JSON.stringify({
- sub : username,
- reservation : reservation,
- accessToken : accessToken
- }),
- success: success,
- headers: {
- 'X-Api-Key': '1dhMrT7NFU9wQPMrcX5ZI7a0XPmJOYAl93IOB8y1'
- }
- }).fail(function (err) {
- fail()
- var alertElement = jQuery('#full-popup .alertcontainer');
- if (alertElement.length) {
- alertElement.html(getAlertHtml(err.responseText.message));
- } else {
- alert(err.responseText.message);
- }
- });
- }
- var showToast = function(content) {
- var snackbar = jQuery("#snackbar")
- if(snackbar) {
- snackbar.html(content)
- snackbar.addClass("show")
- setTimeout(function() {snackbar.removeClass("show")},4000)
- }
- }
- var calculateAndFormatAmount = function(tokens, type, currency, exchangeRate) {
- var formattedAmount;
- var rate = exchangeRate || rates.get(currency || type);
- var nominalPaymentAmount = parseFloat(tokens) / parseFloat(rate);
- if (type == "ethereum" || type == "bitcoin") {
- // for crypto, round to four decimals
- nominalPaymentAmount = Math.ceil(nominalPaymentAmount * 10000) / 10000;
- // only fix decimals if there are any decimals
- if (nominalPaymentAmount % 1 > 0) {
- nominalPaymentAmount = nominalPaymentAmount.toFixed(4);
- }
- formattedAmount = nominalPaymentAmount;
- } else {
- // for fiat, round to two decimals
- nominalPaymentAmount = Math.ceil(nominalPaymentAmount * 100) / 100;
- // only fix decimals if there are any decimals
- if (nominalPaymentAmount % 1 > 0) {
- nominalPaymentAmount = nominalPaymentAmount.toFixed(2);
- }
- // add commas for the big fiat numbers
- formattedAmount = nominalPaymentAmount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
- }
- return formattedAmount;
- };
- var tokenReservations = []
- var deletedReservations = []
- var editedReservations = []
- var reservedTokenAmount = 0
- var buildReservationList = function(reservations) {
- console.log('buildReservationList for ' + reservations.length)
- balancesToLoad++
- var list = jQuery("#reservation-list")
- list.find("tbody").empty()
- jQuery('#reservedtokens').addClass('hidden');
- jQuery('#reservedtokens span.value').empty()
- reservedTokenAmount = 0;
- if(reservations) {
- if(reservations.length > 0) {
- list.parent().show()
- list.parent().siblings(".empty").remove()
- balancesToLoad += reservations.length;
- reservations.forEach(function(reservation){
- if (reservation.state === 'processing' && reservation.type !== 'cryptovoucher' && !reservation.conflict) {
- reservedTokenAmount += parseFloat(reservation.tokens)
- }
- list.find("tbody").append(new ReservationRow(reservation).view)
- balancesToLoad--;
- })
- } else {
- list.parent().hide()
- list.parent().parent().find('p.empty').remove()
- list.parent().after("<p class='empty small-text' style='padding-bottom: 30px;max-width: 80%;display: block;margin: auto;'>No purchases have been made with your account so far!</p>")
- }
- } else {
- list.parent().hide()
- list.parent().after("<p class='empty small-text' style='padding-bottom: 30px;max-width: 80%;display: block;margin: auto;'><div class='spinner' style='display: inline;'><div class='bounce1'></div> <div class='bounce2'></div> <div class='bounce3'></div> </div></p>")
- }
- var today = new Date();
- jQuery('.date').text(today.toISOString());
- balancesToLoad--;
- var isBalanceReady = window.setInterval(
- function () {
- if (balancesToLoad === 0) {
- var balance = (parseInt(reservedTokenAmount)+parseInt(earnedTokens));
- if (balance < 0) {
- balance = 0;
- }
- jQuery('#svd-balance b span.value.balance').text(balance.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
- jQuery('#svd-balance').removeClass('hidden');
- jQuery('#svd-balance-loading').addClass('hidden');
- window.clearInterval(isBalanceReady);
- }
- },
- 250
- );
- }
- var showPresalePopup = function (reservation){
- var popup = jQuery('#presale-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- jQuery(".payment-option").addClass("hidden")
- jQuery('#full-popup .fiat-options button[data-class]:hidden').first().trigger("click")
- var adjustRates = function() {
- var amount = jQuery('#full-popup #reservationamount').val()
- if (amount == "") {
- amount = 0
- }
- if(jQuery('#full-popup #reservationamount').val().replace(/\D/g,'').length > 8) {
- amount = 10000000
- }
- /*
- if(jQuery('#full-popup #reservationamount').val()[0] == 0) {
- while(amount.charAt(0) === '0')
- {
- amount = amount.substr(1);
- }
- jQuery('#full-popup #reservationamount').val(amount)
- }*/
- jQuery('#full-popup #reservationamount').val(amount.toString().replace(/\D/g,'').replace(/\B(?=(\d{3})+(?!\d))/g, ","))
- var value = amount.toString().replace(/\D/g,'')
- jQuery('#full-popup .reservation-options button[data-type], #full-popup .fiat-options button[data-type]').each(function() {
- var formattedAmount = calculateAndFormatAmount(value, jQuery(this).attr("data-class"), jQuery(this).attr("data-type"));
- jQuery(this).find("span").text(formattedAmount);
- })
- refreshAltcoinsDropdown();
- }
- jQuery('#full-popup #reservationamount').change(function() {
- // enforce Integer with minimum of 1000 tokens
- if(jQuery('#full-popup #reservationamount').val().replace(/\D/g,'').length < 4) {
- jQuery('#full-popup #reservationamount').val(Math.max(1000, parseInt(jQuery('#full-popup #reservationamount').val())));
- }
- if(jQuery('#full-popup #reservationamount').val().replace(/\D/g,'').length > 8) {
- jQuery('#full-popup #reservationamount').val(10000000);
- }
- adjustRates()
- });
- jQuery('#full-popup #reservationamount').on("keyup", adjustRates);
- $(document).on('keyup keypress', '#full-popup #reservationamount', function(e) {
- if(e.which == 13) {
- adjustRates()
- e.preventDefault();
- return false;
- }
- });
- jQuery('#full-popup .fiat-options button[data-class]').click(function() {
- jQuery('#full-popup .fiat-options button[data-class]').addClass("disabled")
- jQuery(this).removeClass("disabled")
- })
- jQuery('#full-popup .payment-type').click(function() {
- jQuery('#full-popup .payment-type').removeClass("selected")
- jQuery(this).addClass("selected")
- if (jQuery(this).data('class') === 'sofort') {
- var amount = parseInt(jQuery('#full-popup #reservationamount').val().replace(/\D/g,''));
- console.log(amount);
- if (amount >= 100000) {
- jQuery('#full-popup .warningcontainer').html(getAlertHtml('!!! SOFORT MAXIMUM LIMIT !!!\n' +
- 'Please note that the maximum limit of your SOFORT payment equals the Online Banking transfer limit of your checking account. So if you want to purchase SVD tokens for a total value exceeding your Online Banking transfer limit please either split your SOFORT payments across several days OR select an alternative payment method, i.e. Credit Card, ETH or BTC. Thanks a lot!',
- 'warning'));
- }
- }
- jQuery('#full-popup .cchint').toggleClass('hidden', jQuery(this).data('class') !== 'creditcard');
- jQuery('#full-popup .cryptovoucher-checkout').toggleClass('hidden', jQuery(this).data('class') !== "cryptovoucher");
- jQuery('#full-popup .regular-checkout').toggleClass('hidden', jQuery(this).data('class') == "cryptovoucher");
- });
- jQuery('#full-popup .reservation-options button[data-class]').click(function() {
- jQuery(".payment-option").addClass("hidden")
- jQuery('#full-popup .reservation-options button[data-class]').addClass("disabled")
- jQuery(this).removeClass("disabled")
- switch (jQuery(this).attr("data-class")) {
- case 'ethereum': jQuery(".payment-option.eth-wallet").removeClass("hidden");break;
- case 'bitcoin': jQuery(".payment-option.btc-wallet").removeClass("hidden");break;
- case 'XLM': jQuery(".payment-option.xlm-wallet").removeClass("hidden");break;
- case 'DOGE': jQuery(".payment-option.doge-wallet").removeClass("hidden");break;
- case 'altcoins': jQuery(".payment-option.altcoins-wallet").removeClass("hidden");refreshAltcoinsDropdown();break;
- default: jQuery(".payment-option.fiat-options." + jQuery(this).attr("data-type")).removeClass("hidden");jQuery('#full-popup .fiat-options .payment-type:not([disabled]):visible').first().trigger("click");break;
- }
- })
- jQuery('.reservation-options button').click(
- function(){
- return false;
- }
- );
- var update = false
- if(reservation) {
- update = true
- jQuery("#full-popup #reservationamount").val(parseFloat(reservation.tokens))
- if(reservation.type != "ethereum" && reservation.type != "DOGE" && reservation.type != "XLM" && reservation.type !== "bitcoin") {
- var currency = reservation.currency || "EUR"
- if(reservation.type == 'creditcard'
- || reservation.type == 'banktransfer'
- || reservation.type == 'sofort'
- || reservation.type == 'cryptovoucher') {
- jQuery('#full-popup .reservation-options button[data-type=' + currency + ']').trigger("click")
- jQuery('#full-popup .fiat-options.' + currency + ' button[data-class=' + reservation.type + ']').trigger("click")
- } else {
- jQuery('#full-popup .reservation-options button[data-type=altcoins]').trigger("click")
- jQuery('.altcoins-select option[value="'+ currency +'"]').prop('selected', true)
- jQuery('.altcoins-select').change()
- }
- } else {
- jQuery('#full-popup .reservation-options button[data-class=' + reservation.type + ']').trigger("click")
- }
- }
- var reservation = reservation || {}
- adjustRates()
- jQuery('#full-popup input.paymentsubmit').click(function() {
- var alertElement = jQuery('#full-popup .alertcontainer');
- var type = jQuery('#full-popup .payment-type.selected').attr("data-class")
- var accepted = true
- editedReservations.push(JSON.parse(JSON.stringify(reservation)))
- reservation.currency = jQuery('#full-popup .reservation-options .payment-type:not(.disabled)').attr("data-type")
- reservation.tokens = jQuery('#full-popup #reservationamount').val().replace(/\D/g,'')
- reservation.wallet = jQuery('#full-popup .payment-option:visible input.walletaddress').val()
- reservation.type = type
- if (type=="cryptovoucher"){
- storeReservation(reservation, update, jQuery(this));
- window.open("https://cryptovoucher.io/buy-voucher?utm_source=SVD&utm_medium=website&utm_campaign=sale");
- getReservations();
- closePopup();
- return;
- }
- jQuery('#full-popup input.terms:visible').each(function(index,cb) { if(!cb.checked) { accepted = cb.checked} })
- if(!accepted) {
- return alertElement.html(getAlertHtml("Please accept the Terms and Conditions"))
- }
- if(reservation.type == 'creditcard' && reservation.tokens > 500000) {
- return alertElement.html(getAlertHtml("Maximum SVD amount for creditcard payment is " + ((500000 / rates.get(reservation.currency))).toFixed(0).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + " " +reservation.currency))
- }
- if(reservation.type == 'banktransfer' && reservation.tokens < 50000) {
- return alertElement.html(getAlertHtml("Minimum SVD amount is 50,000 for bank transfer"))
- }
- if(reservation.type == "altcoins" && reservation.tokens < 100000) {
- return alertElement.html(getAlertHtml("Minimum SVD amount is 100,000 for ERC20 Tokens"));
- }
- if(reservation.type == "altcoins") {
- reservation.type = $( ".altcoins-select option:selected" ).attr('value')
- reservation.currency = $( ".altcoins-select option:selected" ).attr('value')
- }
- storeReservation(reservation, update, jQuery(this))
- })
- }
- var deleteReservation = function(reservation) {
- var popup = jQuery('.delete-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html(), true);
- var fullPopup = jQuery('#full-popup');
- fullPopup.find('.cancel-purchase').click(function (e) {
- closePopup();
- var canceled = false;
- showToast($('<div class="col-sm-11 col-md-11"><span style="width: 80%;margin: auto;display: block;">Your purchase of ' + reservation.tokens.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD has been deleted.</span></div><div class="col-sm-1 col-md-1 revert"><button alt="revert" style="background:none;border:none;"><img title="Revert" src="/img/ic_revert.png" style="display:inline; width:25px;margin-right:5px" scale="0">revert</button></div></div>'));
- deletedReservations.push(reservation.reservationId);
- buildReservationList(tokenReservations.filter(function(res) { return deletedReservations.indexOf(res.reservationId) < 0 }));
- jQuery("#snackbar .revert").click(function() {
- deletedReservations.splice(deletedReservations.indexOf(reservation.reservationId), 1);
- canceled = true;
- buildReservationList(tokenReservations.filter(function(res) { return deletedReservations.indexOf(res.reservationId) < 0 }));
- })
- setTimeout(function() {
- if(!canceled) {
- cancelReservation(reservation, function () {
- deletedReservations.splice(deletedReservations.indexOf(reservation.reservationId), 1)
- ga('send', 'event', 'Reservation', 'delete', 'SVD', -reservation.tokens);
- fbq('track', 'Reservation', {
- action : 'delete',
- amount : reservation.tokens
- });
- getReservations();
- }, function() {
- deletedReservations.splice(deletedReservations.indexOf(reservation.reservationId), 1);
- showToast($('<span style="padding-left:40px;padding-right:40px;">Oh no! There was a problem, please try again</span>'));
- buildReservationList(tokenReservations.filter(function(res) { return deletedReservations.indexOf(res.reservationId) < 0 }));
- })
- }
- }, 4000);
- });
- fullPopup.find('.keep-purchase').click(function (e) {
- closePopup();
- ga('send', 'event', 'Reservation', 'delete-cancel');
- });
- }
- var getUrlParameter = function getUrlParameter(sParam) {
- var sPageURL = decodeURIComponent(window.location.search.substring(1)),
- sURLVariables = sPageURL.split('&'),
- sParameterName,
- i;
- for (i = 0; i < sURLVariables.length; i++) {
- sParameterName = sURLVariables[i].split('=');
- if (sParameterName[0] === sParam) {
- return sParameterName[1] === undefined ? true : sParameterName[1];
- }
- }
- };
- var action = getUrlParameter('action');
- var reservationId = getUrlParameter('reservationId');
- if (action && reservationId) {
- var editReservationsInterval = setInterval(function () {
- if (tokenReservations.length > 0) {
- clearInterval(editReservationsInterval);
- var reservationToHandle;
- tokenReservations.forEach(function (reservation) {
- if (reservation.reservationId === reservationId) {
- reservationToHandle = reservation;
- }
- });
- if (reservationToHandle && !reservationToHandle.state) {
- switch(action) {
- case 'retryKYC' :
- showVIPPopup(reservationId);
- break;
- case 'editReservation':
- showPresalePopup(reservationToHandle);
- break;
- case 'retryPayment':
- var nominalPaymentAmount = parseFloat(reservationToHandle.tokens) / parseFloat(rates.get(reservationToHandle.currency || reservationToHandle.type))
- if (reservationToHandle.type === 'sofort') {
- startSofortPayment(reservationId);
- } else if (reservationToHandle.type === 'creditcard') {
- startCcPayment(reservationId);
- } else if (reservationToHandle.type === 'ethereum') {
- showEthSuccess2(nominalPaymentAmount, reservationId, reservationToHandle.tokens);
- } else if (reservationToHandle.type === 'bitcoin') {
- showBtcSuccess(nominalPaymentAmount, reservationId, reservationToHandle.tokens);
- } else if (reservationToHandle.type === 'banktransfer') {
- showBanktransfer(nominalPaymentAmount, reservationToHandle.state, reservationToHandle.reservationId);
- } else {
- showTokenSuccess(nominalPaymentAmount, reservationId, reservationToHandle.tokens, reservationToHandle.type)
- }
- break;
- default:
- break;
- }
- }
- }
- }, 500);
- }
- jQuery(document).ready(
- function () {
- if (cognitoUser === null) {
- cognitoUser = userPool.getCurrentUser();
- if (cognitoUser != null) {
- cognitoUser.getSession(function (err, session) {
- if (err) {
- alert(err.message);
- return;
- }
- accessToken = session.getAccessToken().getJwtToken();
- idToken = session.getIdToken().getJwtToken();
- if(onAuthenticatedCallback) {
- onAuthenticatedCallback()
- }
- initRefresh();
- updateUserDisplay(action ? false : true);
- });
- } else {
- if(onNotAuthenticatedCallback) {
- onNotAuthenticatedCallback()
- }
- updateUserDisplay();
- }
- } else {
- updateUserDisplay();
- }
- }
- );
- function ReservationRow(reservation) {
- console.log('ReservationRow for ' + reservation.reservationId + ' - ' + reservation.state)
- var self = this
- var countdownInterval;
- var reservationType;
- var reservation = reservation;
- var startPaymentText = 'Pay now!';
- switch (reservation.type)
- {
- case "creditcard":
- reservationType = "Credit card";
- break;
- case "banktransfer":
- reservationType = "Bank transfer";
- break;
- case "cryptovoucher":
- reservationType = "Crypto Voucher";
- break;
- case 'ethereum':
- case 'bitcoin':
- startPaymentText = 'Pay now!';
- reservationType = capitalizeFirstLetter(reservation.type);
- break;
- default:
- reservationType = capitalizeFirstLetter(reservation.type);
- break;
- }
- var elements = {
- amount : jQuery('<td class="text-right"></td>').html(reservation.tokens.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +' SVD'),
- type : jQuery('<td class="text-left"></td>').html(reservationType),
- exchangerate : jQuery('<td class="text-left"><div class="spinner"><div class="bounce1"></div> <div class="bounce2"></div> <div class="bounce3"></div> </div></td>'),
- price : jQuery('<td class="text-right"><div class="spinner"><div class="bounce1"></div> <div class="bounce2"></div> <div class="bounce3"></div> </div></td>'),
- status : jQuery('<td class="text-left" style="font-weight: bold;">Pay latest in <p style="width:100px; color : #ff794f; display: inline; font-weight: bold;" class="clockdiv"><span class="hours"></span>:<span class="minutes"></span>:<span class="seconds"></span></p></td>'),
- actions : jQuery('<td class="text-center actions"><span class="delete-reservation">Delete</span></td>'),
- }
- this.view = jQuery("<tr id='"+ reservation.reservationId + "'/>")
- var getTimeRemaining = function(endtime) {
- var t = (endtime * 1000) - Date.parse(new Date());
- var seconds = Math.floor((t / 1000) % 60);
- var minutes = Math.floor((t / 1000 / 60) % 60);
- var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
- var days = Math.floor(t / (1000 * 60 * 60 * 24));
- return {
- 'total': t,
- 'days': days,
- 'hours': hours,
- 'minutes': minutes,
- 'seconds': seconds
- };
- }
- var calculateEndTime = function(created) {
- var createdTimestamp = Math.round((created ? new Date(created) : new Date()).getTime()/1000);
- var mainsaleStart = 1518184800;
- var expirationOffset = 36000;
- if (createdTimestamp<mainsaleStart || !created){
- return mainsaleStart+expirationOffset;
- } else {
- return createdTimestamp+expirationOffset;
- }
- }
- var initializeClock = function(el, endtime) {
- var clock = el
- var hoursSpan = clock.find('.hours');
- var minutesSpan = clock.find('.minutes');
- var secondsSpan = clock.find('.seconds');
- function updateClock() {
- var t = getTimeRemaining(endtime);
- if(t.hours < 5) {
- elements.status.find('.clockdiv').addClass("animated").addClass("pulse").addClass("infinite")
- }
- hoursSpan.html(t.hours.toString().slice(-2))
- minutesSpan.html(('0' + t.minutes).slice(-2))
- secondsSpan.html(('0' + t.seconds).slice(-2))
- if (t.total <= 0) {
- clearInterval(countdownInterval);
- //self.view.fadeOut(400, function() { self.view.remove()})
- }
- }
- updateClock();
- countdownInterval = setInterval(updateClock, 1000);
- }
- var onRateStateChanged = function(state) {
- if(state == rates.STATE.DONE) {
- var formattedAmount = calculateAndFormatAmount(reservation.tokens, reservation.type, reservation.currency, reservation.exchangeRate) + ' ';
- if(reservation.currency) {
- formattedAmount += reservation.currency;
- } else {
- switch (reservation.type) {
- case 'ethereum':
- formattedAmount += 'ETH';
- break;
- case 'bitcoin':
- formattedAmount += 'BTC';
- break;
- case 'creditcard':
- formattedAmount += 'EUR';
- break;
- case 'sofort':
- formattedAmount += 'EUR';
- break;
- case 'banktransfer':
- formattedAmount += 'EUR';
- break;
- default :
- formattedAmount += reservation.type;
- break;
- }
- }
- var exchangeRate = reservation.exchangeRate ? reservation.exchangeRate : rates.get([reservation.currency || reservation.type]);
- elements.exchangerate.empty().html('1 : ' + (parseFloat(exchangeRate) < 1 ? parseFloat(exchangeRate).toFixed(4) : Math.round(exchangeRate).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")))
- elements.price.empty().html(formattedAmount)
- }
- }
- ReservationRow.startPayment = function(reservation) {
- }
- var startPayment = function() {
- ReservationRow.startPayment(reservation)
- }
- this.startPayment = startPayment;
- this.update = function(reservation) {
- reservation = reservation
- console.log(reservation);
- rates.onChange(onRateStateChanged)
- self.view.empty()
- Object.keys(elements).forEach(function(el) {
- self.view.append(elements[el])
- })
- if(reservation.state) {
- elements.status.css("cursor", "");
- var text = reservation.state;
- switch (reservation.state) {
- case 'paid' :
- text = 'Payment confirmed, see applied SVD in your payments below.';
- elements.actions.empty().addClass("hide-mobile-row")
- break;
- case 'processing' :
- if (reservation.txHash) {
- text = 'Identifier: ' + reservation.txHash + '. ';
- } else {
- text = 'Thanks for your payment. ';
- }
- if(reservation.conflict) {
- text = 'There are issues with your payment. Please contact our support via telegram.'
- } else {
- text += 'We\'ll notify you about next steps if required.'
- }
- if (reservation.type === 'cryptovoucher') {
- text = '';
- var paymentAction = jQuery('<span class="start-cryptovoucher-payment" style="cursor: pointer; margin-bottom: 5px;color: white;background-color: #ff794f;display: block;min-width: 130px;border-radius: 10px; padding: 5px; text-transform:uppercase; font-weight:700; box-shadow: 0px 0px 5px rgba(0,0,0,.8);">Buy now!</span>');
- paymentAction.click(function () {
- window.open("https://cryptovoucher.io/buy-voucher?utm_source=SVD&utm_medium=website&utm_campaign=sale_direct");
- });
- elements.actions.prepend(paymentAction);
- elements.actions.find(".start-payment").remove()
- } else {
- elements.actions.empty()
- elements.actions.addClass("hide-mobile-row")
- }
- break;
- case 'expired' :
- case 'waiting' :
- text = 'Purchase timed out.';
- //elements.actions.find(".buy-new").removeClass('hidden')
- elements.actions.find(".edit-reservation").remove()
- elements.actions.find(".start-payment").remove()
- break;
- }
- elements.status.html(text)
- }
- elements.actions.find(".delete-reservation").click(function() { deleteReservation(reservation) })
- //elements.actions.find(".buy-new").click(function () {showPresalePopup(); });
- }
- var init = function(reservation) {
- self.view.data(self)
- self.update(reservation)
- }
- init(reservation)
- }
- function FXRatesManager() {
- var self = this
- var listeners = []
- var dataSources = [
- new DataSource('https://rates.ico.savedroid.com/ethereum.json', function(data) { return { ETH : JSON.parse(data).value * 100, ethereum : JSON.parse(data).value * 100}}),
- new DataSource('https://rates.ico.savedroid.com/bitcoin.json', function(data) { return { BTC : JSON.parse(data).value * 100, bitcoin : JSON.parse(data).value * 100}}),
- new DataSource('https://rates.ico.savedroid.com/usd.json', function(data) { return { USD : JSON.parse(data).value * 100}}),
- new DataSource('https://rates.ico.savedroid.com/other.json', function(data) {
- return data.reduce(function (map, obj) {
- map[obj.coin] = obj.value;
- return map;
- }, {});
- }),
- ]
- this.STATE = {
- LOADING : "LOADING",
- DONE : "DONE",
- ERRORED : "ERRORED"
- }
- this.currentState = self.STATE.LOADING
- this.rates = {}
- function DataSource(url, processor) {
- var self = this
- var errorCallback;
- this.load = function(callback) {
- jQuery.get(url, function (data) {
- callback(processor(data))
- }).fail(errorCallback);
- return self
- }
- this.catch = function(callback) {
- errorCallback = callback
- }
- }
- var init = function() {
- var added = 0;
- dataSources.forEach(function(dataSource) {
- dataSource.load(function(rate) {
- Object.assign(self.rates, rate)
- console.log(rate);
- added++;
- if(added >= dataSources.length) {
- Object.assign(self.rates, {"creditcard": 100, "banktransfer": 100, "EUR" : 100, "sofort" : 100})
- stateChanged(self.STATE.DONE)
- }
- }).catch(function(err) {
- console.log(err);
- stateChanged(self.STATE.ERRORED)
- })
- })
- }
- var stateChanged = function(state) {
- self.currentState = state
- listeners.forEach(function(listener) {
- listener(state)
- })
- }
- this.onChange = function(callback) {
- listeners.push(callback)
- if(self.currentState != self.STATE.LOADING) {
- callback(self.currentState)
- }
- }
- this.get = function(key) {
- return self.rates[key]
- }
- init()
- }
- //jQuery('.buy-button').click(function(){showPresalePopup()});
- function shareClickHandler(e) {
- var amount;
- var platform = jQuery(e.srcElement).data("platform");
- if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){
- platform = e.target.dataset.platform;
- }
- if(jQuery(e.srcElement).data("amount") != undefined){
- amount = jQuery(e.srcElement).data("amount");
- }
- switch (platform) {
- case "fb":
- openFbShareDialog(amount);
- break;
- case "tw":
- openTwShareDialog(amount);
- break;
- case "vk":
- openVKontakteDialog(amount);
- break;
- case "od":
- openOdnoklassnikiDialog(amount);
- break;
- case "qz":
- openQZoneDialog(amount);
- break;
- case "wc":
- openWeChatDialog(amount);
- break;
- case "kt":
- openKakaoTalkDialog(amount);
- break;
- case "wa":
- openWhatsapp(amount);
- break;
- case "mail":
- openMail(amount);
- break;
- }
- }
- function openWhatsapp(amount) {
- var quoteString;
- var sdUrl = 'https://ico.savedroid.com/'
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone. savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- } else {
- quoteString = 'Join the revolution now! savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- }
- if(cognitoUser){
- refLink = '?ref=' + cognitoUser.username;
- }
- var text = encodeURIComponent(quoteString+" "+sdUrl+refLink);
- var url = "whatsapp://send?text="+text;
- window.location.replace(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'wa',
- eventValue: amount
- });
- }
- function openMail(amount) {
- var quoteString;
- var sdUrl = 'https://ico.savedroid.com/'
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone.\nsavedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!\n\n'
- } else {
- quoteString = 'Join the revolution now!\nsavedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!\n\n'
- }
- if(cognitoUser){
- refLink = '?ref=' + cognitoUser.username;
- }
- var subject = encodeURIComponent("I have a recommendation for you: savedroid ICO")
- var text = encodeURIComponent(quoteString+sdUrl+refLink);
- var url = "mailto:?subject="+subject+"&body="+text;
- window.location.replace(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'mail',
- eventValue: amount
- });
- }
- function openFbShareDialog(amount) {
- var quoteString;
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone. savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- } else {
- quoteString ='Join the revolution now! savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- }
- if(cognitoUser){
- refLink = '?ref=' + cognitoUser.username;
- }
- var urlParams = {
- app_id: '1622950757978663',
- quote: quoteString,
- display: 'popup',
- href: 'https://ico.savedroid.com/'+refLink
- }
- var url = "https://www.facebook.com/dialog/share?" + jQuery.param(urlParams);
- window.open(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'fb',
- eventValue: amount
- });
- }
- function openTwShareDialog(amount) {
- var quoteString;
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone.'
- } else {
- quoteString ='Join the revolution now! savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- }
- if(cognitoUser){
- refLink = '?ref=' + cognitoUser.username;
- }
- var urlParams = {
- url: 'https://ico.savedroid.com/'+refLink,
- via: 'savedroidAG',
- hashtags: 'savedroidICO,ico',
- text: quoteString
- }
- var url = "https://twitter.com/share?" + jQuery.param(urlParams);
- window.open(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'tw',
- eventValue: amount
- });
- }
- function openVKontakteDialog(amount) {
- var quoteString;
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone.'
- } else {
- quoteString ='Join the revolution now! savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- }
- if (cognitoUser) {
- refLink = '?ref=' + cognitoUser.username;
- }
- var urlParams = {
- url: 'https://ico.savedroid.com/' + refLink,
- title: 'savedroid ICO',
- description: quoteString
- };
- var url = "https://vk.com/share.php?" + jQuery.param(urlParams);
- window.open(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'vk',
- eventValue: amount
- });
- };
- function openOdnoklassnikiDialog(amount) {
- var quoteString;
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone.'
- } else {
- quoteString ='Join the revolution now! savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!'
- }
- if (cognitoUser) {
- refLink = '?ref=' + cognitoUser.username;
- }
- var urlParams = {
- url: 'https://ico.savedroid.com/' + refLink,
- title: 'savedroid ICO',
- description: quoteString
- };
- var url = "https://connect.ok.ru/offer?" + jQuery.param(urlParams);
- window.open(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'od',
- eventValue: amount
- });
- };
- function openQZoneDialog(amount) {
- var refLink = '';
- if (cognitoUser) {
- refLink = '?ref=' + cognitoUser.username;
- }
- var urlParams = {
- url: 'https://ico.savedroid.com/' + refLink
- };
- var url = "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?" + jQuery.param(urlParams);
- window.open(url);
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'qz',
- eventValue: amount
- });
- };
- function openWeChatDialog(amount) {
- window.open("weixin://dl/chat");
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'kt',
- eventValue: amount
- });
- };
- function openKakaoTalkDialog(amount) {
- var quoteString;
- var refLink = '';
- if (amount){
- quoteString = 'I just purchased ' + amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' SVD to make cryptocurrencies available for everyone.';
- } else {
- quoteString ='Join the revolution now! savedroid creates a unique AI-fueled ecosystem of crypto saving and investing for the masses!';
- }
- if (cognitoUser) {
- refLink = '?ref=' + cognitoUser.username;
- }
- Kakao.init('6451adb1b34179ee372e6a65c6eecc1c');
- Kakao.Link.sendDefault({
- objectType: 'feed',
- content: {
- title: 'savedroid ICO',
- description: quoteString,
- imageUrl: 'https://ico.savedroid.com/img/droid_logo.jpg',
- link: {
- mobileWebUrl: 'https://ico.savedroid.com/' + refLink,
- webUrl: 'https://ico.savedroid.com/' + refLink
- }
- }
- });
- ga('send', {
- hitType: 'event',
- eventCategory: 'SocialSharing',
- eventAction: 'kt',
- eventValue: amount
- });
- };
- var altcoins = {
- "0x": "ZRX",
- "aelf": "ELF",
- "Aeternity": "AE",
- "Aion": "AION",
- "Augur": "REP",
- "Bancor": "BNT",
- "Basic Attention": "BAT",
- "Binance Coin": "BNB",
- "Bytom": "BTM",
- "ChainLink": "LINK",
- "Cindicator": "CND",
- "Civic": "CVC",
- "Dent": "DENT",
- "DigixDAO": "DGD",
- "Dragonchain": "DRGN",
- "Enigma": "ENG",
- "Enjin Coin": "ENJ",
- "EOS": "EOS",
- "Ethos": "ETHOS",
- "FunFair": "FUN",
- "Genesis Vision": "GVT",
- "Gnosis": "GNO",
- "Golem": "GNT",
- "ICON": "ICX",
- "Iconomi": "ICN",
- "IOStoken": "IOST",
- "KuCoin Shares": "KCS",
- "Kyber Network": "KNC",
- "Loopring": "LRC",
- "Maker": "MKR",
- "Nebulas": "NAS",
- "OmiseGO": "OMG",
- "Polymath": "POLY",
- "Populous": "PPT",
- "Power Ledger": "POWR",
- "QASH": "QASH",
- "Qtum": "QTUM",
- "Quantstamp": "QSP",
- "Raiden Network": "RDN",
- "RChain": "RHOC",
- "Request Network": "REQ",
- "Revain": "R",
- "SALT": "SALT",
- "Santiment Network": "SAN",
- "SingularityNET": "AGI",
- "Status": "SNT",
- "Storj": "STORJ",
- "TenX": "PAY",
- "Tether": "USDT",
- "TRON": "TRX",
- "VeChain": "VEN",
- "Waltonchain": "WTC",
- "WAX": "WAX",
- "Zilliqa": "ZIL"
- }
- function refreshAltcoinsDropdown(selection){
- var tokenAmount = parseInt(jQuery('#full-popup #reservationamount').val().replace(/\D/g,''));
- var selected = jQuery("#full-popup .altcoins-select option:selected").prop("value");
- var dropdown = jQuery("#full-popup .altcoins-select");
- dropdown.empty();
- dropdown.append('<option '+ ((selected == '') ? 'selected' : '') +' value="" disabled>Select your ERC20 token</option>');
- jQuery.each( altcoins, function( key, value ) {
- var amount = calculateAndFormatAmount(tokenAmount, "altcoins", value);
- dropdown.append('<option ' + ((selected == value) ? 'selected' : '') + ' value="' + value + '">'+key+' '+'('+value+') – Price: '+ amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' '+ value +'</option>');
- });
- }
- jQuery(document).ready(function(){
- });
- function openJobBountyTC(){
- var popup = jQuery('#jobbounty-tc-popup');
- showPopup(popup.find('.title').html(), popup.find('.description').html());
- }
- var getPolls = function (callbackSuccess){
- var jsondatastring = JSON.stringify({
- "accessToken": accessToken
- });
- jQuery.ajax({
- type: "POST",
- url: "https://poll.ico.savedroid.com",
- data: jsondatastring,
- success: callbackSuccess,
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'nF4ts2zqlw4JIVoOWzBAJ4sKUHHEYeUP7XIXSY4j'
- }
- }).fail(function (err) {
- //console.log(err);//callbackFail(err);
- });
- }
- var showPollSuccess = function(poll){
- jQuery('#'+poll+' .poll-buttons').hide();
- var alertElement = jQuery('#'+poll+' .alertcontainer');
- alertElement.html(getAlertHtml("Your vote was submitted successfully!", "success"));
- }
- var showPoll = function(polls){
- var poll = JSON.parse(polls).polls[0];
- jQuery('#'+poll).removeClass('hidden');
- jQuery('#'+poll+' .poll-button').click(function(e){
- var buttonElement = jQuery(this);
- var poll = buttonElement.data('poll');
- storePollAnswer(buttonElement.data('poll'), buttonElement.data('result'));
- })
- }
- var storePollAnswer = function (poll, response) {
- var jsondatastring = JSON.stringify({
- "accessToken": accessToken,
- "poll": poll,
- "response": response
- });
- jQuery.ajax({
- type: "POST",
- url: 'https://poll.ico.savedroid.com',
- data: jsondatastring,
- success: showPollSuccess(poll),
- dataType: 'Text',
- headers: {
- 'X-Api-Key': 'nF4ts2zqlw4JIVoOWzBAJ4sKUHHEYeUP7XIXSY4j'
- }
- }).fail(function (err) {
- var alertElement = jQuery('#'+poll+' .alertcontainer');
- alertElement.html(getAlertHtml("Oooops, something went wrong! Try to refresh the browser and try it again!"));
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement