fuc/public/assets/baba/default_files/skaboink.js
2025-02-23 13:30:57 +08:00

9045 lines
320 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var stripePublishableKey = "";
var buyNowPostLogin = "";
var showingMoreDomainOptions = false;
var myGetBitcoinReceiverInterval = null;
var emailSetup = false;
var websiteSetup = false;
var elements = null;
var cardNumberElement = null;
var cardExpiryElement = null;
var cardCvcElement = null;
var postalCodeElement = null;
var csrfTokenName = '';
var csrfTokenHash = '';
var usc = false;
var auctionTimer = null;
var auctionEnd = 0;
function showRemaining()
{
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour *24
var now = new Date();
var distance = auctionEnd - now;
if (distance < 0 ) {
clearInterval( timer );
document.getElementById('auctionCountdown').innerHTML = 'EXPIRED!';
return;
}
var days = Math.floor(distance / _day);
var hours = Math.floor( (distance % _day ) / _hour );
var minutes = Math.floor( (distance % _hour) / _minute );
var seconds = Math.floor( (distance % _minute) / _second );
var countdown = document.getElementById('auctionCountdown');
countdown.innerHTML = '';
if (days) {
countdown.innerHTML += days + 'd ';
}
countdown.innerHTML += hours+ 'h ';
countdown.innerHTML += minutes+ 'm ';
countdown.innerHTML += seconds+ 's';
}
function hostingAutoRenewSetting(domain, value, e)
{
$.post("/api/domains/hostingAutoRenewSetting", {domain:domain, value:value},
function(data)
{
if(data['error'] == '1')
{
$(e).prop( "checked", !$(e).prop( "checked"));
alert(data['message']);
return;
}
else
{
if(value == 'on')
$('#hostingAutoRenewDescription').html("We will attempt to auto renew a couple days before expiration.");
else
$('#hostingAutoRenewDescription').html("Auto renew is disabled for this hosting product.");
}
}, "json");
}
// data-extension="'.$displayTld.'" data-price-registration="'.$registrationPrice.'" data-price-renewal="'.$renewalPrice.'" data-price-transfer="'.$transferPrice.'"
function handleDomainsPricingLabelClick(e)
{
var sortColumn = $(e).html();
var order = $(this).attr("data-order");
if(!order)
order = 'asc';
$(this).attr("data-order", order == "asc" ? "desc" : "asc");
$('.sortIcon').html("");
if(sortColumn == 'extension')
{
var sorted = getSorted(".domainsPricingAllExtensionsItem", "data-extension", order, "alpha");
$("#sortIcon_extension").html('<i class="fa-solid fa-arrow-'+(order == 'asc' ? 'up' : 'down')+'"></i>');
}
else if(sortColumn == 'registration')
{
var sorted = getSorted(".domainsPricingAllExtensionsItem", "data-price-registration", order, "numeric");
$("#sortIcon_registration").html('<i class="fa-solid fa-arrow-'+(order == 'asc' ? 'up' : 'down')+'"></i>');
}
else if(sortColumn == 'renewal')
{
var sorted = getSorted(".domainsPricingAllExtensionsItem", "data-price-renewal", order, "numeric");
$("#sortIcon_renewal").html('<i class="fa-solid fa-arrow-'+(order == 'asc' ? 'up' : 'down')+'"></i>');
}
else if(sortColumn == 'transfer')
{
var sorted = getSorted(".domainsPricingAllExtensionsItem", "data-price-transfer", order, "numeric");
$("#sortIcon_transfer").html('<i class="fa-solid fa-arrow-'+(order == 'asc' ? 'up' : 'down')+'"></i>');
}
$("#domainsPricingAllExtensionsPriceRowsContainer").html("");
$(".tldLetterAlphabet").hide();
for(var i = 0; i < sorted.length; i++)
{
$("#domainsPricingAllExtensionsPriceRowsContainer").append(sorted[i]);
}
}
function getSorted(selector, attrName, order, type) {
return $($(selector).toArray().sort(function(a, b){
if(type == "alpha")
{
var aVal = (a.getAttribute(attrName)),
bVal = (b.getAttribute(attrName));
if(order == 'asc')
return(aVal.localeCompare(bVal));
else
return(bVal.localeCompare(aVal));
}
else if(type == "numeric")
{
var aVal = parseInt(a.getAttribute(attrName)),
bVal = parseInt(b.getAttribute(attrName));
if(order == 'asc')
return(aVal - bVal);
else
return(bVal - aVal);
}
}));
}
function sortByPrice()
{
var elements = {};
$('.tldLetterAlphabet').hide();
$('.searchResultsTldLetterBox').hide();
$('.sortByPriceButton').hide();
$('.searchResultRow').each(function()
{
var price = parseInt(parseFloat($(this).parent().attr('data-price')) * 100);
if(!(price in elements))
elements[price] = [];
elements[price].push($(this).parent());
});
$('#searchResultsDomainContainer').html('');
var keys = Object.keys(elements).sort(function(a, b)
{
if(a.position > b.position)
return -1;
else
return 1;
});
for(let i = 0; i < keys.length; i++)
{
for(let j = 0; j < elements[keys[i]].length; j++)
{
$('#searchResultsDomainContainer').append(elements[keys[i]][j]);
}
}
$('html,body').scrollTop(0);
}
function showTwoFactorKeyViewOnly()
{
$('#twoFactorModal_info').hide();
$('#twoFactorModal_form').hide();
$('#twoFactorModalView_button').show();
$('#twoFactorModal_loading').hide();
$('#twoFactorModal_button').hide();
$('#twoFactorModalAlert').html('');
$('#twoFactorModalAlert').hide('');
$("#twoFactorModalCloseButton").prop("onclick", null).off("click");
$('#twoFactorVerificationCode').val('');
$('#twoFactorModal').modal('show');
}
function showTwoFactorKeyInitialize()
{
if(!confirm("Before continuing please make sure that your phone number, email address, and mailing/physical address under \"Account Details\" are true and correct. Valid information is required for account recovery should you become locked out."))
{
$('#twoFactorSwitch').prop('checked', false);
return;
}
$('#twoFactorModal_info').show();
$('#twoFactorModal_form').show();
$('#twoFactorModalView_button').hide();
$('#twoFactorModal_loading').hide();
$('#twoFactorModal_button').show();
$('#twoFactorModalAlert').html('');
$('#twoFactorModalAlert').hide('');
$("#twoFactorModalCloseButton").click(function ()
{
$('#twoFactorSwitch').prop('checked', false);
});
$('#twoFactorVerificationCode').val('');
$('#twoFactorModal').modal('show');
}
function clearSavedCoupons()
{
$.post("/api/user/clearSavedCoupons", {none:true},
function(data)
{
if(data['error'] == "1")
{
}
else
{
window.location.reload();
}
}, "json");
}
function toggleCloudflare(e, domain)
{
if(!confirm("Are you sure you want to toggle DNS? This will enable or disable DNS with our backend provider, Cloudflare."))
{
$(e).prop('checked', !$(e).prop('checked'));
return;
}
if(!domain)
{
domain = jQuery.trim($(e).attr('data-domain'));
}
var idDomain = domain.replace(/\./g, '_');
$('#domainManagementDetailsContent_loudflare_loading_'+idDomain).show();
$('#domainManagementDetailsContent_edit_cloudflare_'+idDomain).hide();
$.post("/api/domains/toggleCloudflare", {domain: domain},
function(data)
{
$('#domainManagementDetailsContent_loudflare_loading_'+idDomain).hide();
$('#domainManagementDetailsContent_edit_cloudflare_'+idDomain).show();
if(data['error'] == "1")
{
alert(data['message']);
return;
}
if(data['toggle'] == 'on')
{
$(e).html("Disable");
}
else if(data['toggle'] == 'off')
{
$(e).html("Enable");
}
}, "json");
}
function closeMessageModalOpenDns(domain)
{
$('#messageModal').on('hidden.bs.modal', function () {
viewDomainDNS(domain);
$('#messageModal').unbind('hidden.bs.modal');
});
$('#messageModal').modal('hide');
}
function configureHostingDNS(e, service, subService, additionalDns)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var domainTemplate = jQuery.trim($('#editDNSModal_templateDomain').val());
var prompt = null;
var additionalDnsData = {};
if(additionalDns)
{
$(".configDnsPromptInput").each(function(index, element)
{
if(!additionalDnsData['index_'+$(element).attr('data-group-index')])
additionalDnsData['index_'+$(element).attr('data-group-index')] = {};
additionalDnsData['index_'+$(element).attr('data-group-index')][$(element).attr('data-name')] = jQuery.trim($(element).val());
});
}
else
{
if(subService)
prompt = "Are you sure you want to reconfigure this domain's DNS records? Any conflicting records will be deleted.";
else
prompt = "Are you sure you want to configure this domain with our hosting DNS records?";
}
if(!prompt || (prompt && confirm(prompt)))
{
$("#configureHostingDNSLoading").show();
$("#configureHostingDNSButton").hide();
$("#editDNSModal_templateContainer").hide();
$("#editDNSModal_templateLoading").show();
$.post("/api/domains/configureServiceDNS", {domain:domain, service:service, subService:subService, additionalDnsData:additionalDnsData, domainTemplate:domainTemplate},
function(data)
{
$("#editDNSModal_templateContainer").show();
$("#editDNSModal_templateLoading").hide();
if(data['prompts'])
{
var messageModalBody = "<div class='alert alert-info' role='alert'><p>We've successfully updated the standard DNS records for this service.</p>"+data['prompts']['message']+"</div>";
for(var i = 0; i < data['prompts']['records'].length; i++)
{
var promptRecord = data['prompts']['records'][i];
messageModalBody += "<h4>"+promptRecord['type']+"</h4>";
if(promptRecord['description'])
{
messageModalBody += "<p class='text-muted'>"+promptRecord['description']+"</p>";
}
if(promptRecord['subdomain'] != '@')
messageModalBody += '<label class="text-heavy" for="promptRecord_subdomain_'+promptRecord['id']+'">Host</label><div class="form-inline"><div class="form-group"><input value="'+promptRecord['subdomain']+'" data-group-index="'+promptRecord['id']+'" type="text" id="promptRecord_subdomain_'+promptRecord['id']+'" data-name="subdomain" class="configDnsPromptInput form-control"><p class="form-control-static">.'+domain+'</p></div></div><br>';
else
messageModalBody += '<label class="text-heavy" for="promptRecord_subdomain_'+promptRecord['id']+'">Host</label><div class="form-inline"><div class="form-group"><p class="form-control-static">'+domain+'</p></div></div>';
if(promptRecord['contenthidden'])
messageModalBody += '<div class="form-group" style="display:none"><input value="'+promptRecord['content']+'" data-group-index="'+promptRecord['id']+'" type="text" id="promptRecord_content_'+promptRecord['id']+'" data-name="content" class="configDnsPromptInput form-control"></div><br>';
else
messageModalBody += '<div class="form-group"><label class="text-heavy" for="promptRecord_content_'+promptRecord['id']+'">Answer</label><input value="'+promptRecord['content']+'" data-group-index="'+promptRecord['id']+'" type="text" id="promptRecord_content_'+promptRecord['id']+'" data-name="content" class="configDnsPromptInput form-control"></div><br>';
}
$('#editDNSModal').on('hidden.bs.modal', function () {
$('#messageModal_button').attr('data-domain', domain);
showMessageModal("Additional DNS Requirements", messageModalBody, null, "Submit", "configureHostingDNS(this, 'quickDns', '"+subService+"', true);", "Close", "closeMessageModalOpenDns('"+domain+"');");
$('#editDNSModal').unbind('hidden.bs.modal');
});
$('#editDNSModal').modal('hide');
}
else if(data['error'] == '1')
{
$("#configureHostingDNSLoading").hide();
$("#configureHostingDNSButton").show();
alert(data['message']);
}
else
{
if(subService)
{
if(data['quickDnsAlert'])
{
$('#editDNSModal').on('shown.bs.modal', function (e) {
$("#quickDnsAlertContent").html(data['quickDnsAlert']);
$("#quickDnsAlert").show();
$('#editDNSModal').unbind('shown.bs.modal');
});
}
if($('#messageModal').is(':visible'))
{
$('#messageModal').on('hidden.bs.modal', function () {
viewDomainDNS(domain);
$('#messageModal').unbind('hidden.bs.modal');
});
$('#messageModal').modal('hide');
}
else
{
viewDomainDNS(domain);
}
alert("We were able to successfully update your DNS records.");
}
else
{
alert("Everything should be back to normal. If not, please contact our support department.");
window.location.reload();
}
}
}, "json");
}
}
function trapFocus(e)
{
var focusableEls = $(e).find(':focusable');
var firstFocusableEl = $(focusableEls).first();
var lastFocusableEl = $(focusableEls).last();
$(firstFocusableEl).focus();
$(e).keydown(function(e) {
if (e.key === 'Tab' || (typeof KEYCODE_TAB !== 'undefined' && e.keyCode === KEYCODE_TAB)) {
if ( e.shiftKey ) /* shift + tab */ {
if ($(':focus').is(firstFocusableEl)) {
lastFocusableEl.focus();
e.preventDefault();
}
} else /* tab */ {
if ($(':focus').is(lastFocusableEl)) {
firstFocusableEl.focus();
e.preventDefault();
}
}
}
});
}
function changeIPSTag(e)
{
var domain = jQuery.trim($('#modal_changeIPSTag').attr('data-domain'));
var tag = jQuery.trim($('#modal_changeIPSTag_tag').val());
$("#modal_changeIPSTag_loading").show();
$("#modal_changeIPSTag_buttons").hide();
$.post("/api/domains/changeIPSTag", {domain:domain, tag:tag},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
if(data['redir'])
window.location = 'https://'+window.location.hostname+data['redir'];
else
$('#modal_changeIPSTag').modal('hide');
}
$("#modal_changeIPSTag_loading").hide();
$("#modal_changeIPSTag_buttons").show();
}, "json");
}
function showChangeIPSTag(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
$('#modal_changeIPSTag').attr('data-domain', domain);
$('#modal_changeIPSTag').modal('show');
}
function processBuyAccountCreditAch()
{
var amount = jQuery.trim($('#modal_buyAccountCreditAch_amount').val());
$("#modal_buyAccountCreditAch_loading").show();
$("#modal_buyAccountCreditAch_buttons").hide();
$.post("/api/user/buyAccountCreditAch", {amount:amount},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
$("#modal_buyAccountCreditAch_loading").hide();
$("#modal_buyAccountCreditAch_buttons").show();
}
else
{
window.location.reload();
}
}, "json");
}
function showBuyAccountCreditAchModal(e)
{
$('#modal_buyAccountCreditAch').modal('show');
}
function deleteBillingBank()
{
if(confirm("Are you sure you want to delete this bank account?"))
{
$.post("/api/user/deleteAch", {post:1},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
window.location.reload();
}
}, "json");
}
}
function verifyAch()
{
var depositOne = jQuery.trim($("#modal_verifyAch_depositOne").val());
var depositTwo = jQuery.trim($("#modal_verifyAch_depositTwo").val());
$("#modal_verifyAch_loading").show();
$("#modal_verifyAch_buttons").hide();
$.post("/api/user/verifyAch", {depositOne:depositOne, depositTwo:depositTwo},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
$("#modal_verifyAch_loading").hide();
$("#modal_verifyAch_buttons").show();
}
else
{
window.location.reload();
}
}, "json");
}
function showVerifyBillingBank(e)
{
$('#modal_verifyAch').modal('show');
}
function setupAchConfiguration()
{
var accountHolderName = jQuery.trim($("#modal_updateAch_accountHolderName").val());
var accountHolderType = jQuery.trim($("#modal_updateAch_accountHolderType").val());
var routingNumber = jQuery.trim($("#modal_updateAch_routingNumber").val());
var accountNumber = jQuery.trim($("#modal_updateAch_accountNumber").val());
$("#modal_updateAch_loading").show();
$("#modal_updateAch_buttons").hide();
stripe.createToken('bank_account', {
country: 'US',
currency: 'usd',
routing_number: routingNumber,
account_number: accountNumber,
account_holder_name: accountHolderName,
account_holder_type: accountHolderType,
})
.then(function(result) {
if(result['error'])
{
var message = result['error']['message'];
alert(message);
$("#modal_updateAch_loading").hide();
$("#modal_updateAch_buttons").show();
}
else if(result['token'])
{
$.post("/api/user/setupAchConfiguration", {stripeResult:result},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
$("#modal_updateAch_loading").hide();
$("#modal_updateAch_buttons").show();
}
else
{
window.location.reload();
}
}, "json");
}
else
{
alert("We were unable to submit your bank information.");
$("#modal_updateAch_loading").hide();
$("#modal_updateAch_buttons").show();
}
});
}
function showConfigureAchModal(e)
{
$.post("/api/user/showConfigureAchModal", {post:1},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
$('#modal_updateAch').modal('show');
}
}, "json");
}
function showUpdateBillingModal(e)
{
elements = stripe.elements();
cardNumberElement = elements.create('cardNumber',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardNumberElement.mount('#updateBillingModal_cardNumber');
cardExpiryElement = elements.create('cardExpiry',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardExpiryElement.mount('#updateBillingModal_expires');
cardCvcElement = elements.create('cardCvc',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardCvcElement.mount('#updateBillingModal_cardCode');
postalCodeElement = elements.create('postalCode',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
postalCodeElement.mount('#updateBillingModal_zip');
$("#updateBillingModalTagline").html('');
$("#updateBillingModalTagline").hide();
$("#updateBillingModalForm").show();
$('#updateBillingModalAlert').hide();
$('#updateBillingModal_loading').hide();
$('#updateBillingModal_button').show();
if(e) $('#updateBillingModalHeader').html($(e).attr('data-name'));
$('#updateBillingModal').modal('show');
}
function toggleCloudflareDomainDNS(e)
{
var proxied = jQuery.trim($(e).attr("data-cloudplare-proxied"));
if(confirm("Are you sure you want to toggle Cloudflare proxy "+(proxied == "on" ? "off" : "on")+"?"))
{
var dnsIndex = jQuery.trim($(e).attr("data-index"));
var domain = jQuery.trim($(e).attr('data-dns-domain')).toLowerCase();
var id = jQuery.trim($(e).attr('data-id')).toLowerCase();
var idDomain = domain.replace(/\./g, '_');
$.post("/api/domains/toggleCloudflareDomainDNS", {id, domain},
function(data)
{
if(data['error'] == '1')
{
$('#editDNSModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editDNSModal').scrollTop(0);
$('#editDNSModalAlert').show();
}
else
{
if($(e).find(".text-cloudflare-on")[0])
$(e).find(".cloudflareProxiedIcon").removeClass("text-cloudflare-on");
else
$(e).find(".cloudflareProxiedIcon").addClass("text-cloudflare-on");
}
$(e).removeClass('icon-white');
}, "json");
}
}
function deleteDomainDNS(e)
{
if(confirm("Are you sure you want to delete this DNS record?"))
{
$(e).addClass('icon-white');
$('#editDNSModalAlert').hide();
$('#editDNSModalAlert').html('');
var dnsIndex = $(e).attr("data-index");
var dnsRecord = {};
dnsRecord['id'] = jQuery.trim($(e).attr('data-id')).toLowerCase();
dnsRecord['domain'] = jQuery.trim($(e).attr('data-dns-domain')).toLowerCase();
dnsRecord['type'] = jQuery.trim($(e).attr('data-dns-type')).toUpperCase();
dnsRecord['host'] = jQuery.trim($("#dnsRecordName"+dnsIndex).html()).toLowerCase();
dnsRecord['answer'] = jQuery.trim($("#dnsRecordContent"+dnsIndex).html()).toLowerCase();
var idDomain = dnsRecord['domain'].replace(/\./g, '_');
$.post("/api/domains/deleteDomainDNS", {dnsRecord: dnsRecord},
function(data)
{
if(data['error'] == '1')
{
$('#editDNSModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editDNSModal').scrollTop(0);
$('#editDNSModalAlert').show();
}
else
{
$('.quickConnectManagementIcon[data-domain="'+dnsRecord['domain']+'"]').removeClass('glyphproOn');
$(e).parent().parent().parent().remove();
$('.editDNSSortItem[data-dns-index='+dnsIndex+']').remove();
$("#domainManagementDetailsContent_dnsRecords_"+idDomain).find('.domainManagementDetailsContent_dnsRecords_content').html(($('#editDNSModalTable >tbody >tr').length / 2)+" records set");
}
$(e).removeClass('icon-white');
}, "json");
}
else
{
return;
}
}
function saveToWishList(e)
{
var itemId = $(e).attr("data-item-id");
$.post("/api/user/saveToWishList", {itemId:itemId},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
location.reload();
}
}, "json");
}
function pbSimpleHumanCheckerClick_20230305(e)
{
var pbSimpleHumanCheckerId = $(e).attr("data-id");
var checked = $(e).prop('checked')
if(!checked)
{
$("#"+pbSimpleHumanCheckerId+" .pbSimpleHumanInput").val('');
return;
}
$.get("/api/user/pbSimpleHumanCheckerClick_20230305", {},
function(data)
{
if(data['code'])
{
$("#"+pbSimpleHumanCheckerId+" .pbSimpleHumanInput").val(data['code']);
}
}, "json");
}
function submitNewsletterSubscribe()
{
var emailAddress = jQuery.trim($('#newsletterEmailAddress').val());
$('#newsletterSubscribeButton').hide();
$('#newsletterSubscribeLoading').show();
$.post("/api/user/newsletterSubscribe", {emailAddress:emailAddress},
function(data)
{
if(data['error'])
{
$('#newsletterSubscribeLoading').hide();
$('#newsletterSubscribeButton').show();
alert(data['message']);
}
else
{
$("#newsletterSubscribeForm").html("<span>Thanks for subscribing!</span>");
}
}, "json");
}
function showAddOnSubSelector(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var type = jQuery.trim($(e).attr('data-type'));
$('.attrDynamic').attr('data-domain', domain);
$('#addOnHosting').modal('hide');
if(type == 'managedWordPress')
{
$('#addOnHosting_managedWordPress').modal('show');
}
else if(type == 'staticHosting')
{
$('#addOnHosting_staticHosting').modal('show');
}
else if(type == 'easyBuilder')
{
$('#addOnHosting_easyBuilder').modal('show');
}
else if(type == 'cPanelHosting')
{
$('#addOnHosting_cPanelHosting').modal('show');
}
else if(type == 'managedPHP')
{
$('#addOnHosting_managedPHP').modal('show');
}
else if(type == 'managedLinks')
{
$('#addOnHosting_managedLinks').modal('show');
}
}
function showAddOnSelector(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var type = jQuery.trim($(e).attr('data-type'));
$('.attrDynamic').attr('data-domain', domain);
if(type == 'hosting')
{
$('#addOnHosting').modal('show');
}
}
function toggleBlurOverlay(e)
{
if($(e).hasClass('blurOverlay2'))
$(e).removeClass('blurOverlay2');
else
$(e).addClass('blurOverlay2');
}
function resendAccountPhoneVerification()
{
$.post("/api/user/sendPhoneCode", {markUsedUponSuccess: 1},
function(data)
{
if(data['error'] == 1)
{
alert(data['message']);
}
else
{
if(data['hasCurrentVerification'] == 1)
$('#modal_phoneVerify_notice').html("It looks like we recently sent you a verification code. That verification code is good for 30 minutes from the time it was sent. If you need to generate a new verification code, please wait a few minutes before trying again.");
else
$('#modal_phoneVerify_notice').html("Verification codes are good for 30 minutes from the time they are sent.");
$('#modal_phoneVerify').modal('show');
}
}, "json");
}
function resendAccountEmailVerification()
{
$.post("/api/user/sendAccountEmailVerification", {empty:true},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
function resendAccountEmailBackupVerification()
{
$.post("/api/user/sendAccountEmailBackupVerification", {empty:true},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
function processCountry(e, stateId, phoneCodeId)
{
var country = jQuery.trim($(e).val());
$('#specialCountryMessage').hide();
$('#'+stateId).hide();
$('#'+stateId+'_loading').show();
if(phoneCodeId)
$("#"+phoneCodeId+">option[data-countryCode='"+country+"']").prop('selected', true);
else
$("#newAccountPhoneCode>option[data-countryCode='"+country+"']").prop('selected', true);
$.post("/api/user/getStatesByCountry", {country:country},
function(data)
{
$('#'+stateId).html('<option value=""> State');
if(data)
{
for(var i = 0; i < data.length; i++)
{
$('#'+stateId).append('<option value="'+data[i]['state']+'">'+data[i]['state']);
}
if(country == 'NZ')
{
$('#specialCountryMessage').html("🇳🇿 Hi New Zealand! We just want you to know that at xiaofu we always include your country on our maps :)");
$('#specialCountryMessage').slideDown();
}
else if(country == 'CA')
{
$('#specialCountryMessage').html("🇨🇦 Hey Canada! You sure are lookin' good up there ;)");
$('#specialCountryMessage').slideDown();
}
else if(country == 'MX')
{
$('#specialCountryMessage').html("🇲🇽 ¡Hola!");
$('#specialCountryMessage').slideDown();
}
else if(country == 'JP')
{
$('#specialCountryMessage').html("🇯🇵 こんにちは日本");
$('#specialCountryMessage').slideDown();
}
}
$('#'+stateId).show();
$('#'+stateId+'_loading').hide();
}, "json");
}
function checkSedo(string)
{
$.get("/api/domains/checkSedo", {string:string},
function(data)
{
}, 'json');
}
function getAuthCode(domain)
{
var idDomain = domain.replace(/\./g, '_');
$("#modal_additionalVerify_buttons").hide();
$("#modal_additionalVerify_loading").show();
$('#domainManagementDetailsContent_xfer_'+idDomain).hide();
$('#domainManagementDetailsContent_xfer_loading_'+idDomain).show();
var password = jQuery.trim($('#additionalVerifyPassword').val());
var twoFactor = jQuery.trim($('#additionalVerifyTwoFactorLoginCode').val());
$.post("/api/domains/getAuthCode", {domain:domain, domainPassword: password, twoFactor: twoFactor},
function(data)
{
if(data['error'] == '1')
{
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
$('#domainManagementDetailsContent_xfer_'+idDomain).show();
$('#domainManagementDetailsContent_xfer_loading_'+idDomain).hide();
alert(data['message']);
}
else
{
if(data['status'] == 'GETCURRENTPASSWORD')
{
$('#modal_additionalVerify_title').html("DOMAIN PASSWORD PROTECTION");
$('#modal_additionalVerify_info').html(data['message']);
$('#modal_additionalVerify_continueButton').attr('data-domain', domain);
$('#modal_additionalVerify_forgotten').attr('data-domain', domain);
$("#modal_additionalVerify_continueButton").prop("onclick", null).off("click");
$("#modal_additionalVerify_continueButton").click(function(){getAuthCode(domain); return false;});
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
$('#domainManagementDetailsContent_xfer_'+idDomain).show();
$('#domainManagementDetailsContent_xfer_loading_'+idDomain).hide();
$('#modal_additionalVerify').modal('show');
}
else
{
$('#additionalVerifyPassword').val('');
$('#additionalVerifyTwoFactorLoginCode').val('');
$('#modal_additionalVerify_title').html("");
$('#modal_additionalVerify_info').html("");
$('#modal_additionalVerify_continueButton').removeAttr('data-domain');
$('#modal_additionalVerify_forgotten').removeAttr('data-domain');
$('#modal_additionalVerify_continueButton').removeAttr('data-status');
$("#modal_additionalVerify_continueButton").prop("onclick", null).off("click");
$("#modal_additionalVerify_buttons").show();
$('#domainManagementDetailsContent_xfer_'+idDomain).show();
$('#domainManagementDetailsContent_xfer_loading_'+idDomain).hide();
$("#modal_additionalVerify_loading").hide();
$('#modal_additionalVerify').modal('hide');
var authCodeExpireDateHtml = '';
if(data['authPwExpireDate'])
authCodeExpireDateHtml = "<br><br><strong>Auth Code Expiration</strong><br><span class='notranslate'>"+data['authPwExpireDate'];
if(data['pendingTransfer'])
showMessageModal('Transfer Out', "<p>Was it something we said? Did you know you don't have to transfer your domain in order to host it somewhere else? We hate to see you leave, but if you must, we'll make it easy on you.</p><div id='approvePendingTransferMessageContainer' class='alert alert-warning'>Now that your domain is pending transfer to another registrar, you can approve or reject it immediately here.<br><br><div id='approvePendingTransferButtonContainer'><button class='btn btn-xiaofu-white' data-domain='"+domain+"' data-op='reject' onclick='approvePendingTransfer(this);'>Reject Transfer Out</button> <button class='btn btn-xiaofu-white' data-domain='"+domain+"' data-op='approve' onclick='approvePendingTransfer(this);'>Approve Transfer Out</button></div><img id='approvePendingTransferButtonLoadingImage' alt='Loading...' src='/images/loading.small.gif' style='display:none;'></div>");
else
showMessageModal('Transfer Out', "<p>Was it something we said? Did you know you don't have to transfer your domain in order to host it somewhere else? We hate to see you leave, but if you must, we'll make it easy on you.</p><div class='alert alert-info'>"+(data['authCodeChanged'] ? "<br><p><small class='text-danger'><strong>Notice</strong><br>For additional security we have generated a new auth code. Any past auth code for this domain is no longer valid. If you retrieve an auth code in the future, it will invalidate this one.</small></p><br>" : "")+"<strong>Auth Code</strong><br><span class='notranslate'>"+data['authCode']+authCodeExpireDateHtml+"</span></div><p>Once your domain is pending transfer at the gaining registrar you can return here to manually reject or approve it before the default five day waiting period.</p>");
}
}
}, "json");
}
function passwordProtectDomain(e)
{
$("#modal_additionalVerify_buttons").hide();
$("#modal_additionalVerify_loading").show();
var domain = jQuery.trim($(e).attr('data-domain'));
var status = jQuery.trim($(e).attr('data-status'));
var password = jQuery.trim($('#additionalVerifyPassword').val());
var twoFactor = jQuery.trim($('#additionalVerifyTwoFactorLoginCode').val());
var idDomain = domain.replace(/\./g, '_');
if(event)
event.preventDefault();
$.post("/api/domains/passwordProtectDomain", {domain: domain, domainPassword: password, twoFactor: twoFactor},
function(data)
{
if(data['error'] == '0')
{
if(data['status'] == 'GETNEWPASSWORD')
{
$('#modal_additionalVerify_cancelButton').attr('data-action', 'enabled');
$('#modal_additionalVerify_title').html("DOMAIN PASSWORD PROTECTION");
$('#modal_additionalVerify_info').html(data['message']);
$('#modal_additionalVerify_continueButton').attr('data-domain', domain);
$('#modal_additionalVerify_forgotten').attr('data-domain', domain);
$('#modal_additionalVerify_continueButton').attr('data-status', status);
$("#modal_additionalVerify_continueButton").prop("onclick", null).off("click");
$("#modal_additionalVerify_continueButton").click(function(){passwordProtectDomain(e); return false;});
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
$("#modal_additionalVerify_forgotten").hide();
$('#modal_additionalVerify').modal('show');
}
else if(data['status'] == 'GETCURRENTPASSWORD')
{
$('#modal_additionalVerify_cancelButton').attr('data-action', 'enabled');
$('#modal_additionalVerify_title').html("TURN OFF DOMAIN PASSWORD PROTECTION");
$('#modal_additionalVerify_info').html(data['message']);
$('#modal_additionalVerify_continueButton').attr('data-domain', domain);
$('#modal_additionalVerify_forgotten').attr('data-domain', domain);
$('#modal_additionalVerify_continueButton').attr('data-status', status);
$("#modal_additionalVerify_continueButton").prop("onclick", null).off("click");
$("#modal_additionalVerify_continueButton").click(function(){passwordProtectDomain(e); return false;});
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
$("#modal_additionalVerify_forgotten").show();
$('#modal_additionalVerify').modal('show');
}
else if(data['status'] == 'ON')
{
$('#modal_additionalVerify_cancelButton').attr('data-action', '');
$('#additionalVerifyPassword').val('');
$('#additionalVerifyTwoFactorLoginCode').val('');
$('#modal_additionalVerify_title').html("");
$('#modal_additionalVerify_info').html("");
$('#modal_additionalVerify_continueButton').removeAttr('data-domain');
$('#modal_additionalVerify_forgotten').removeAttr('data-domain');
$('#modal_additionalVerify_continueButton').removeAttr('data-status');
$("#modal_additionalVerify_continueButton").prop("onclick", null).off("click");
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
$('#modal_additionalVerify').modal('hide');
$('#domainManagementDomainPasswordIndicator_'+idDomain).show();
}
else if(data['status'] == 'OFF')
{
$('#modal_additionalVerify_cancelButton').attr('data-action', '');
$('#additionalVerifyPassword').val('');
$('#additionalVerifyTwoFactorLoginCode').val('');
$('#modal_additionalVerify_title').html("");
$('#modal_additionalVerify_info').html("");
$('#modal_additionalVerify_continueButton').removeAttr('data-domain');
$('#modal_additionalVerify_forgotten').removeAttr('data-domain');
$('#modal_additionalVerify_continueButton').removeAttr('data-status');
$("#modal_additionalVerify_continueButton").prop("onclick", null).off("click");
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
$('#modal_additionalVerify').modal('hide');
$('#domainManagementDomainPasswordIndicator_'+idDomain).hide();
}
}
else
{
$("#modal_additionalVerify_buttons").show();
$("#modal_additionalVerify_loading").hide();
alert(data['message']);
}
}, "json");
}
function removeHash () {
var scrollV, scrollH, loc = window.location;
if ("pushState" in history)
history.pushState("", document.title, loc.pathname + loc.search);
else {
// Prevent scrolling by storing the page's current scroll offset
scrollV = document.body.scrollTop;
scrollH = document.body.scrollLeft;
loc.hash = "";
// Restore the scroll offset, should be flicker free
document.body.scrollTop = scrollV;
document.body.scrollLeft = scrollH;
}
}
function beaconEvent(action, event, ask)
{
if (!event)
event = window.event;
if(ask)
Beacon("navigate", "/ask");
Beacon(action);
if(event.stopPropagation)
{
event.stopPropagation();
}
if(window.event)
{
window.event.cancelBubble=true;
}
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function playAudio(e)
{
var id = $(e).attr('data-id');
document.getElementById(id).play();
}
function accountCreditAmountChange(e)
{
var cartId = $(e).attr('data-cart-id');
var accountCreditAmount = $('#accountCreditCartCostInput_'+cartId).val();
$.post("/api/user/updateCartAmount", {cartId:cartId, amount:accountCreditAmount},
function(data)
{
if(data['status'] == '1')
{
window.location.reload();
}
else
{
alert(data['message']);
}
}, "json");
}
function showUnsupportedBrowserPopup()
{
$('#modal_unsupportedBrowser').modal('show');
}
function showAffiliateUtm(e)
{
var source = jQuery.trim($(e).attr('data-source'));
var medium = jQuery.trim($(e).attr('data-medium'));
var campaign = jQuery.trim($(e).attr('data-campaign'));
var content = jQuery.trim($(e).attr('data-content'));
window.location.href = "/account/affiliateUtm/"+source+"/"+medium+"/"+campaign+"/"+content;
}
function showMessageContent(id)
{
$.post("/api/loader/getRemoteContent", {id:id},
function(data)
{
if(data['content'])
{
$('#modal_porkMessage').find('.modal-title').html(data['title']);
$('#modal_porkMessage').find('.modal-body').html(data['content']);
$('#modal_porkMessage').modal('show');
}
else
{
}
}, "json");
}
function showMessageContentString(title, content, size)
{
if(size == 'large')
$('#modal_porkMessage').find('.modal-dialog').removeClass('modal-sm').addClass('modal-lg');
else if(size == 'small')
$('#modal_porkMessage').find('.modal-dialog').removeClass('modal-lg').addClass('modal-sm');
else
$('#modal_porkMessage').find('.modal-dialog').removeClass('modal-lg').removeClass('modal-sm');
$('#modal_porkMessage').find('.modal-title').html(title);
$('#modal_porkMessage').find('.modal-body').html(content);
$('#modal_porkMessage').modal('show');
}
function showLandingPageSettings(e)
{
var partnerName = jQuery.trim($(e).attr('data-partnername'));
$.post("/api/user/getPartner", {partnerName:partnerName},
function(data)
{
if(data['error'] == '0')
{
$('#priorityTlds').val(data['partner']['tlds']);
$('#modal_partnerLandingSettings').modal('show');
}
else
{
alert(data['message']);
}
}, "json");
}
function showLandingPageSettingsTld(e)
{
$('#modal_partnerLandingSettingsTld').modal('show');
}
function saveLandingPageSettingsTld(e)
{
var gaTrackingId = jQuery.trim($('#googleAnalytics_trackingId').val());
var awTrackingId = jQuery.trim($('#googleAdwords_trackingId').val());
var awConversionLabel = jQuery.trim($('#googleAdwords_conversionLabel').val());
var fbPixelId = jQuery.trim($('#facebookPixel_trackingId').val());
var twitterPixelId = jQuery.trim($('#twitterPixel_trackingId').val());
var twitterPixelConversionEventId = jQuery.trim($('#twitterPixel_conversionEventId').val());
var tikTokPixelId = jQuery.trim($('#tikTokPixel_trackingId').val());
var linkedinPixelId = jQuery.trim($('#linkedinPixel_trackingId').val());
var pageName = $(e).attr('data-page');
var saveData = {};
$(".editablePageHeaderImage").each(function(i)
{
var elementId = $(this).attr('id');
var elementImage = $(this).css('background-image');
if(!saveData[elementId])
saveData[elementId] = {};
saveData[elementId]['editablePageHeaderImage'] = {};
saveData[elementId]['editablePageHeaderImage']['image'] = elementImage;
});
if(saveData && pageName)
{
$.post("/api/user/saveEditablePage", {page:pageName, saveData:saveData, isHtml:false, fbPixelId:fbPixelId, gaTrackingId:gaTrackingId, awTrackingId:awTrackingId, awConversionLabel:awConversionLabel, twitterPixelId:twitterPixelId, twitterPixelConversionEventId:twitterPixelConversionEventId, tikTokPixelId:tikTokPixelId, linkedinPixelId:linkedinPixelId},
function(data2)
{
window.location.reload();
$('#modal_partnerLandingSettingsTld').modal('hide');
}, "json");
}
}
function saveLandingPageSettings(e)
{
var gaTrackingId = jQuery.trim($('#googleAnalytics_trackingId').val());
var awTrackingId = jQuery.trim($('#googleAdwords_trackingId').val());
var awConversionLabel = jQuery.trim($('#googleAdwords_conversionLabel').val());
var fbPixelId = jQuery.trim($('#facebookPixel_trackingId').val());
var twitterPixelId = jQuery.trim($('#twitterPixel_trackingId').val());
var tikTokPixelId = jQuery.trim($('#tikTokPixel_trackingId').val());
var linkedinPixelId = jQuery.trim($('#linkedinPixel_trackingId').val());
var tlds = jQuery.trim($('#priorityTlds').val());
var partnerName = jQuery.trim($(e).attr('data-partnername'));
var saveData = {};
$(".editablePageHeaderImage").each(function(i)
{
var elementId = $(this).attr('id');
var elementImage = $(this).css('background-image');
if(!saveData[elementId])
saveData[elementId] = {};
saveData[elementId]['editablePageHeaderImage'] = {};
saveData[elementId]['editablePageHeaderImage']['image'] = elementImage;
});
$.post("/api/user/saveLandingPageSettings", {tlds:tlds, partnerName:partnerName, fbPixelId:fbPixelId, gaTrackingId:gaTrackingId, awTrackingId:awTrackingId, awConversionLabel:awConversionLabel, twitterPixelId:twitterPixelId, tikTokPixelId:tikTokPixelId, linkedinPixelId:linkedinPixelId},
function(data)
{
if(data['error'] == '0')
{
if(saveData)
{
$.post("/api/user/saveEditablePage", {page:partnerName, saveData:saveData, isHtml:false},
function(data2)
{
}, "json");
}
if(data['reload'] == 1)
window.location.reload();
$('#modal_partnerLandingSettings').modal('hide');
}
else
{
alert(data['message']);
}
}, "json");
}
function processEditableImageUpload(e)
{
var formData = new FormData($(e).parent().get(0));
var target = $(e).parent().attr('data-target');
var page = $(e).parent().attr('data-page');
formData.append("target", target);
formData.append("page", page);
$.ajax(
{
url: "/api/user/uploadEditablePageImage",
data: formData,
processData: false,
contentType: false,
type: 'POST',
beforeSend:function(jqXHR, Obj)
{
},
success: function(data)
{
$(e).val('');
var response = jQuery.parseJSON(data);
if(response['error'] == 1)
{
alert(response['message']);
}
else
{
if(response['targetType'] == 'background-image')
{
for(var key in response['data']['targets'][target]['css'])
{
var value = response['data']['targets'][target]['css'][key];
$('#'+target).css(key, value);
}
}
else if(response['targetType'] == 'image')
{
if($('#'+target).is('img'))
{
$('#'+target).attr('src', response['data']['targets'][target]['src']);
}
else
{
$('#'+target+'Container').html('<img id="tldPageContentLogo" src="'+(response['data']['targets'][target]['src'])+'" class="img-responsive editable">');
}
}
else
{
alert("Obscure error message: Unrecognized target type.");
}
}
}
});
}
function handleEditableImageUpload(e)
{
var target = $(e).attr('data-target');
$('form[data-target="'+target+'"]').find('input[type="file"]').click();
}
function enableEditablePage(e)
{
var pageName = $(e).attr('data-page');
$.post("/api/user/enableEditablePage", {page:pageName},
function(data)
{
if(data['error'] == '0')
{
if(typeof CKEDITOR !== 'undefined')
{
$(".ckeditable").each(function(i)
{
CKEDITOR.replace($(this).attr('id'));
});
}
$(".emptyHide").show();
$('.draggableImage').addClass('draggableImageEnabled');
$('.editableText').attr('contenteditable', 'true');
$('.editableText').addClass('editableTextEnabled');
$('.editableImage').show();
$('#editableMenuEditIcon').hide();
$('#editableMenuSaveIcon').show();
$('#editableMenuCancelIcon').show();
$('.editableControl').show();
$('#editableContentIsHtml').prop('checked', false);
$('.editableText').addClass('preWrap');
if(data['pageData']['isHtml'])
{
$('#editableContentIsHtml').prop('checked', true)
if(data['pageData']['targets'] && data['pageData']['targets']['tldPageContentText'] && data['pageData']['targets']['tldPageContentText']['html'])
$('#tldPageContentText').html(data['pageData']['targets']['tldPageContentText']['html'].replace(/&/g, '&amp;').replace(/</g, '&lt;'));
if(data['pageData']['targets'] && data['pageData']['targets']['tldPageContentText2'] && data['pageData']['targets']['tldPageContentText2']['html'])
$('#tldPageContentText2').html(data['pageData']['targets']['tldPageContentText2']['html'].replace(/&/g, '&amp;').replace(/</g, '&lt;'));
if(data['pageData']['targets'] && data['pageData']['targets']['tldPageContentText3'] && data['pageData']['targets']['tldPageContentText3']['html'])
$('#tldPageContentText3').html(data['pageData']['targets']['tldPageContentText3']['html'].replace(/&/g, '&amp;').replace(/</g, '&lt;'));
if(data['pageData']['targets'] && data['pageData']['targets']['partnerPageContentText'] && data['pageData']['targets']['partnerPageContentText']['html'])
$('#partnerPageContentText').html(data['pageData']['targets']['partnerPageContentText']['html'].replace(/&/g, '&amp;').replace(/</g, '&lt;'));
if(data['pageData']['targets'] && data['pageData']['targets']['partnerPageContentFooterText'] && data['pageData']['targets']['partnerPageContentFooterText']['html'])
$('#partnerPageContentFooterText').html(data['pageData']['targets']['partnerPageContentFooterText']['html'].replace(/&/g, '&amp;').replace(/</g, '&lt;'));
}
else
{
$('#editableContentIsHtml').prop('checked', false)
}
}
else
{
alert(data['message']);
}
}, "json");
}
function cancelEditablePage(e)
{
var pageName = $(e).attr('data-page');
$.post("/api/user/cancelEditablePage", {page:pageName},
function(data)
{
if(data['error'] == '0')
{
if(typeof CKEDITOR !== 'undefined')
{
for(name in CKEDITOR.instances)
{
CKEDITOR.instances[name].destroy();
}
}
$(".emptyHide").each(function(i)
{
var dataTarget = $(this).attr('data-target');
if(!jQuery.trim($("#"+dataTarget).html()))
{
$(this).hide();
}
});
$('.draggableImage').removeClass('draggableImageEnabled');
$('.editableText').removeAttr('contenteditable');
$('.editableText').removeClass('editableTextEnabled');
$('.editableImage').hide();
$('#editableMenuEditIcon').show();
$('#editableMenuSaveIcon').hide();
$('#editableMenuCancelIcon').hide();
$('.editableControl').hide();
$('#editableContentIsHtml').prop('checked', false);
window.location.reload();
}
else
{
alert(data['message']);
}
}, "json");
}
function saveEditablePage(e)
{
var saveData = {};
$(".editablePageHeaderImage").each(function(i)
{
var elementId = $(this).attr('id');
var elementImage = $(this).css('background-image');
if(!saveData[elementId])
saveData[elementId] = {};
saveData[elementId]['editablePageHeaderImage'] = {};
saveData[elementId]['editablePageHeaderImage']['image'] = elementImage;
});
$(".draggableImage").each(function(i)
{
var elementId = $(this).attr('id');
var elementPosition = $(this).css('background-position');
if(!saveData[elementId])
saveData[elementId] = {};
saveData[elementId]['draggableImage'] = {};
saveData[elementId]['draggableImage']['position'] = elementPosition;
});
$(".editableText").each(function(i)
{
var elementId = $(this).attr('id');
var elementHtml = '';
if(typeof CKEDITOR !== 'undefined' && $('#cke_'+elementId).length)
{
elementHtml = CKEDITOR.instances[elementId].getData();
}
else
{
elementHtml = $(this).html();
}
if(!saveData[elementId])
saveData[elementId] = {};
saveData[elementId]['editableText'] = {};
saveData[elementId]['editableText']['html'] = elementHtml;
});
var pageName = $(e).attr('data-page');
var isHtml = $('#editableContentIsHtml').prop('checked');
isHtml = isHtml ? 1 : 0;
$.post("/api/user/saveEditablePage", {page:pageName, saveData:saveData, isHtml:isHtml},
function(data)
{
if(data['error'] == '0')
{
$("#editableMenuSaveIcon").animate({color: "green" }, function()
{
if(typeof CKEDITOR !== 'undefined')
{
for(name in CKEDITOR.instances)
{
CKEDITOR.instances[name].destroy();
}
}
$(".emptyHide").each(function(i)
{
var dataTarget = $(this).attr('data-target');
if(!jQuery.trim($("#"+dataTarget).html()))
{
$(this).hide();
}
});
$("#editableMenuSaveIcon").css("color", "var(--xiaofu_pink)");
$('.draggableImage').removeClass('draggableImageEnabled');
$('.editableText').removeAttr('contenteditable');
$('.editableText').removeClass('editableTextEnabled');
$('.editableImage').hide();
$('#editableMenuEditIcon').show();
$('#editableMenuSaveIcon').hide();
$('#editableMenuCancelIcon').hide();
$('.editableControl').hide();
$('#editableContentIsHtml').prop('checked', false);
if(isHtml)
window.location.reload();
});
}
else
{
alert(data['message']);
}
}, "json");
}
function handleDomainsPricingTabClick(e)
{
var toggle = $(e).attr('data-toggle');
var method = $(e).attr('data-method');
$('.domainsPricingCategoryPanel').removeClass('active');
$('#'+toggle).addClass('active');
}
function handleBillingModalTabClick(e)
{
var toggle = $(e).attr('data-toggle');
var method = $(e).attr('data-method');
$('.billingModalBillingPanel').removeClass('active');
$('#'+toggle).addClass('active');
$('#billingModalProcessCardButton').show();
$('#billingModalAccountCreditContainer').show();
$('#billingModal_billingAgreement').show();
if(method == 'accountCredit')
{
$('#billingModalAccountCreditContainer').hide();
$('#billingModalProcessCardButton').html('Pay Now');
$('#billingModalProcessCardButton').attr('onclick', 'processCard(this);');
}
else if(method == 'payPal')
{
$('#billingModalAccountCreditContainer').show();
$('#billingModalProcessCardButton').html('Continue to PayPal');
$('#billingModalProcessCardButton').attr('onclick', 'processCard(this);');
}
else if(method == 'alipay')
{
$('#billingModalAccountCreditContainer').show();
$('#billingModalProcessCardButton').html('Continue to Alipay');
$('#billingModalProcessCardButton').attr('onclick', 'processCard(this);');
}
else if(method == 'stripeCheckout')
{
$('#billingModalAccountCreditContainer').show();
$('#billingModalProcessCardButton').html('Continue with Credit Card');
$('#billingModalProcessCardButton').attr('onclick', 'processCard(this);');
}
else if(method == 'crypto')
{
$('#billingModalAccountCreditContainer').show();
$('#billingModalProcessCardButton').hide();
$('#billingModalAccountCreditContainer').hide();
$('#billingModal_billingAgreement').hide();
}
else
{
$('#billingModalAccountCreditContainer').show();
$('#billingModalProcessCardButton').html('Pay Now');
$('#billingModalProcessCardButton').attr('onclick', 'processCard(this);');
}
}
function copyInput(e)
{
var toggleId = $(e).attr('data-target');
var copyText = document.getElementById(toggleId);
$('#'+toggleId).attr('type', 'text');
copyText.select();
copyText.setSelectionRange(0, 99999);
document.execCommand("copy");
$('#'+toggleId).attr('type', 'password');
}
function toggleShowPassword(e)
{
var state = $(e).attr('data-state');
var toggleId = $(e).attr('data-toggle');
if(state == 'off')
{
$('#'+toggleId).attr('type', 'text');
$(e).attr('data-state', 'on');
$(e).find('.fa-eye').removeClass('fa-eye').addClass('fa-eye-slash');
}
else if(state == 'on')
{
$('#'+toggleId).attr('type', 'password');
$(e).attr('data-state', 'off');
$(e).find('.fa-eye-slash').removeClass('fa-eye-slash').addClass('fa-eye');
}
}
function createAccountExec()
{
$("#newAccountPassword").attr('type', 'password');
$(".passwordShowButton[data-toggle='newAccountPassword']").attr('data-state', 'off');
$(".passwordShowButton[data-toggle='newAccountPassword']").find('.fa-eye-slash').removeClass('fa-eye-slash').addClass('fa-eye');
//$("#accountCreateForm").submit();
createAccount();
return(true);
}
function getQueryStringObject(query)
{
var match,
pl = /\+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); };
urlParams = {};
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
return(urlParams);
}
function updateCartPlan(e)
{
var cartId = $(e).attr('data-cart-id');
var level = $(e).attr('data-level');
var domain = $(e).attr('data-domain');
var itemCount = $(e).attr('data-cart-count');
var plan = $(e).val();
$('.durationOptions').hide();
$.post("/api/user/updateCartPlan", {cartId:cartId, plan:plan, level:level, domain:domain},
function(data)
{
if(data['status'] == '1')
{
window.location.reload();
}
else
$('.durationOptions').show();
}, "json");
}
function updateCartCount(e)
{
var cartId = $(e).attr('data-cart-id');
var level = $(e).attr('data-level');
var domain = $(e).attr('data-domain');
var itemCount = $(e).attr('data-cart-count');
var count = $(e).val();
$('.durationOptions').hide();
$.post("/api/user/updateCartCount", {cartId:cartId, count:count, level:level, domain:domain},
function(data)
{
if(data['status'] == '1')
{
window.location.reload();
}
else
$('.durationOptions').show();
}, "json");
}
function porkConfirm(title, body, cancelText, yesText, noFunction, yesFunction)
{
$('#modal_porkConfirm').find('.modal-title').html(title);
$('#modal_porkConfirm').find('.modal-body').html(body);
$('#modal_porkConfirm').find('.porkConfirmCancelButton').html(cancelText);
$('#modal_porkConfirm').find('.porkConfirmYesButton').html(yesText);
$('#modal_porkConfirm').find('.porkConfirmCancelButton').attr('onclick', noFunction);
$('#modal_porkConfirm').find('.porkConfirmYesButton').attr('onclick', yesFunction);
$('#modal_porkConfirm').modal('show');
}
function updateCartDuration(id, all)
{
var e = $('#cartItemSelect_'+id);
var cartId = $(e).attr('data-cart-id');
var level = $(e).attr('data-level');
var domain = $(e).attr('data-domain');
var type = $(e).attr('data-type');
var itemCount = $(e).attr('data-cart-count');
var duration = $(e).val();
$('.durationOptions').hide();
$.post("/api/user/updateCartDuration", {cartId:cartId, duration:duration, level:level, domain:domain, all:all, type:type},
function(data)
{
if(data['status'] == '1')
{
window.location.reload();
}
else if(data['error'] == '1' && data['message'])
{
window.location.reload();
}
else
$('.durationOptions').show();
}, "json");
}
function deleteDomain(domain)
{
domain = domain.toLowerCase();
var domainVerify = jQuery.trim($("#deleteDomainDomain").val()).toLowerCase();
if(domain != domainVerify)
{
alert("The domain you entered does not match the domain you selected to delete.");
return;
}
$('#messageModal_button').hide();
$('#messageModal_loading').show();
$.post("/api/domains/queueDeleteDomain", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
$('#messageModal_button').show();
$('#messageModal_loading').hide();
}
else
{
alert(data['message']);
$('#messageModal').modal('hide');
}
}, "json");
}
function removeDomain(domain)
{
domain = domain.toLowerCase();
var domainVerify = jQuery.trim($("#deleteDomainDomain").val()).toLowerCase();
if(domain != domainVerify)
{
alert("The domain you entered does not match the domain you selected to delete.");
return;
}
$('#messageModal_button').hide();
$('#messageModal_loading').show();
$.post("/api/domains/queueRemoveDomain", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
$('#messageModal_button').show();
$('#messageModal_loading').hide();
}
else
{
alert(data['message']);
window.location = "/account/domainsSpeedy";
}
}, "json");
}
function showDeleteDomain(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var refundable = jQuery.trim($(e).attr('data-refundable'));
$.post("/api/domains/getDomainDeletionInfo", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
if(refundable == "1" && refundable == "0")
showMessageModal('Delete Domain - '+domain, "<div class='alert alert-success' style='display:none;' id='deleteDomainSuccess'></div><div class='alert alert-info'>Sometimes you make a mistake and just need to delete a domain. The recent auto renewal on this domain may qualify for a refund. If you have any questions please contact support.</div><label for='deleteDomainDomain'>Type the domain name to verify:</label><input value='' id='deleteDomainDomain' class='form-control' type='text'><br><div class='alert alert-danger'><strong>WARNING!</strong><p>By continuing you acknowledge that if the domain is outside of the four (4) day grace period for a renewal refund you will not recieve one and that the domain will be removed from your account and made available for registration by others. Additionally, the domain will no longer resolve and any website, email address, or other service attached to it will no longer function.</p><p>The domain will not delete immediately. A confirmation email will be sent to the domain's registrant contact email address.</p></div>", null, "Submit", "deleteDomain(\'"+domain+"\');", "Cancel");
else
showMessageModal('Delete Domain - '+domain, "<div class='alert alert-success' style='display:none;' id='deleteDomainSuccess'></div><div class='alert alert-info'>Sometimes you make a mistake and just need to delete a domain. Although we cannot offer a refund, we do give you the ability to delete them. If you have any questions please contact support.</div><label for='deleteDomainDomain'>Type the domain name to verify:</label><input value='' id='deleteDomainDomain' class='form-control' type='text'><br><div class='alert alert-danger'><strong>WARNING!</strong><p>By continuing you acknowledge that you will not receive a refund and that the domain will be removed from your account and made available for registration by others. Additionally, the domain will no longer resolve and any website, email address, or other service attached to it will no longer function.</p><p>The domain will not delete immediately. A confirmation email will be sent to the domain's registrant contact email address.</p></div>", null, "Submit", "deleteDomain(\'"+domain+"\');", "Cancel");
}
}, "json");
}
function showParkDomain(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
if(!confirm("Are you sure you want to park "+domain+"? The domain's DNS will be modified to point it to our parking pages. Any hosting related root and wildcard records (ALIAS, CNAME, A, AAAA) on our nameservers will be removed."))
return;
$.post("/api/domains/parkDomain", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert("ERROR! "+data['message']);
}
else
{
alert("SUCCESS! "+data['message']);
}
}, "json");
}
function showRemoveDomain(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
$.post("/api/domains/getDomainRemoveInfo", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
showMessageModal('Remove Domain - '+domain, "<div class='alert alert-success' style='display:none;' id='removeDomainSuccess'></div><div class='alert alert-info'>This action will remove the domain from your account and cancel any attached services. If you have any questions please contact support.</div><label for='deleteDomainDomain'>Type the domain name to verify:</label><input value='' id='deleteDomainDomain' class='form-control' type='text'><br><div class='alert alert-danger'><strong>WARNING!</strong><p>By continuing you acknowledge that you will not receive any refunds, that the domain will be removed from your account, and that any attached services will be canceled. Additionally, the domain will no longer resolve and any website, email address, or other service attached to it will no longer function.</p></div>", null, "Submit", "removeDomain(\'"+domain+"\');", "Cancel");
}
}, "json");
}
function htmlEntities(str)
{
if(!str)
return '';
return he.encode(str);
}
function htmlentities(str)
{
if(!str)
return '';
return he.encode(str);
}
function processEditApiSettings(e)
{
var id = $('#editApiSettingsModal_button').attr('data-id');
var title = $('#editApiSettingsModal_title').val();
var redirectUrl = $('#editApiSettingsModal_redirectUrl').val();
var priorityTlds = $('#editApiSettingsModal_priorityTlds').val();
var moreTldAction = $('#editApiSettingsModal_moreTldAction').val();
$('#editApiSettingsModal_button').hide();
$('#editApiSettingsModal_loading').show();
$.post("/api/user/updateWidgetSettings", {id:id, title:title, redirectUrl:redirectUrl, priorityTlds:priorityTlds, moreTldAction:moreTldAction},
function(data)
{
if(data['error'] == '1')
{
$('#editApiSettingsModal_button').show();
$('#editApiSettingsModal_loading').hide();
alert(data['message']);
}
else
{
window.location.href = window.location.protocol+"//"+window.location.hostname+""+window.location.pathname;
}
}, "json");
}
function apiOpenSettings(e)
{
var id = $(e).attr('data-id');
$.post("/api/user/getWidgetSettings", {id:id},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
$('#editApiSettingsModal_button').attr('data-id', id);
$('#editApiSettingsModal_title').val(htmlentities(data['title']));
$('#editApiSettingsModal_redirectUrl').val(htmlentities(data['redirectUrl']));
$('#editApiSettingsModal_priorityTlds').val(htmlentities(data['priorityTlds']));
$('#editApiSettingsModal_moreTldAction_'+htmlentities(data['moreTldAction'])).attr('SELECTED', '');
$('#editApiSettingsModal_button').show();
$('#editApiSettingsModal_loading').hide();
$('#editApiSettingsModal').modal('show');
}
}, "json");
}
function apiGetWidgetCode(e)
{
return;
var id = $(e).attr('data-id');
$.post("/api/user/getWidgetCode", {id:id},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
if(data['refresh'])
{
window.location.href = window.location.protocol+"//"+window.location.hostname+""+window.location.pathname;
return;
}
var code = "";
if(SITE_DOMAIN != "babababa.cloud")
{
code = "\
<script>\n\
var bunCheckerSettings = {url:'https://"+SITE_DOMAIN+"'};\n\
</scr"+"ipt>\n".replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
}
code += "\
<script src='https://"+SITE_DOMAIN+"/js/widgets/checker.js'></scr"+"ipt>\n\
<div id='bunCheckerContainer' style='display:none;'>\n\
<div id='bunChecker' data-sitekey='"+data['siteKey']+"' data-css='yes' data-bootstrap-css='yes' data-search-only='no' style='display:none;'>Loading...</div>\n\
</div>".replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
showMessageModal("Widget Code", "<div class='alert alert-info'><p>Copy and paste the code below where you would like the widget to apear on your site.</p><p>For more information please read our <a href='/widgets' target='_blank'>widget documentation</a>.</p></div><textarea style='width:100%; height:150px; resize:none; font-family:Courier New, monospace; font-size:12px;'>"+code+"</textarea>");
}
}, "json");
}
function changeTypeApiDNSTemplate()
{
var type = $('#editApiDNSTemplateModal_type').val();
if(type == 'MX' || type =='SRV')
{
$('#editApiDNSTemplateModal_priority').prop('disabled', false);
$('#editApiDNSTemplateModal_priority').prop('disabled', false);
}
else
{
$('#editApiDNSTemplateModal_priority').prop('disabled', true);
$('#editApiDNSTemplateModal_priority').val('');
}
}
function addApiDNSTemplate(e)
{
var apiId = $(e).attr('data-id');
$('#editApiDNSTemplateModalAlert').hide();
$('#editApiDNSTemplateModalAlert').html('');
$('#editApiDNSTemplateModal_button').hide();
$('#editApiDNSTemplateModal_loading').show();
var dnsRecord = {};
dnsRecord['type'] = jQuery.trim($('#editApiDNSTemplateModal_type').val()).toUpperCase();
dnsRecord['host'] = jQuery.trim($('#editApiDNSTemplateModal_host').val()).toLowerCase();
dnsRecord['priority'] = jQuery.trim($('#editApiDNSTemplateModal_priority').val()).toLowerCase();
if(dnsRecord['type'] == 'TXT')
dnsRecord['answer'] = jQuery.trim($('#editApiDNSTemplateModal_answer').val());
else
dnsRecord['answer'] = jQuery.trim($('#editApiDNSTemplateModal_answer').val()).toLowerCase();
if(dnsRecord['host'] == '@')
dnsRecord['host'] = '';
$.post("/api/user/addApiDNSTemplate", {id:apiId, dnsRecord: dnsRecord},
function(data)
{
if(data['error'] == '1')
{
$('#editApiDNSTemplateModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editApiDNSTemplateModalAlert').show();
$('#editApiDNSTemplateModal').scrollTop(0);
}
else
{
$('#editApiDNSTemplateModal_host').val('');
$('#editApiDNSTemplateModal_answer').val('');
$('#editApiDNSTemplateModalTable > tbody:last').append('<tr><td>'+dnsRecord['type']+'</td><td>'+htmlentities(dnsRecord['host'])+'</td><td>'+htmlentities(dnsRecord['answer'])+'</td><td>'+dnsRecord['priority']+'</td><td>\
<span class="glyphicon glyphicon-trash pointer deleteDNSDomainIcon" role="button" aria-label="Delete DNS Record" data-dns-type="'+dnsRecord['type']+'" data-dns-domain="'+dnsRecord['domain']+'" data-dns-host="'+dnsRecord['host']+'" data-dns-answer="'+htmlEntities(dnsRecord['answer'])+'" onkeypress="deleteDomainDNS(this);" onclick="deleteDomainDNS(this);"></span>\
</td></tr>');
$('#editApiDNSTemplateModal').scrollTop($('#editApiDNSTemplateModal').prop("scrollHeight"));
}
$('#editApiDNSTemplateModal_loading').hide();
$('#editApiDNSTemplateModal_button').show();
}, "json");
}
function deleteApiDNSTemplate(e)
{
if(confirm("Are you sure you want to delete this DNS record from the template?"))
{
$(e).addClass('icon-white');
$('#editApiDNSTemplateModalAlert').hide();
$('#editApiDNSTemplateAlert').html('');
var dnsRecord = {};
var id = $(e).attr('data-id');
dnsRecord['type'] = jQuery.trim($(e).attr('data-dns-type')).toUpperCase();
dnsRecord['host'] = jQuery.trim($(e).attr('data-dns-host')).toLowerCase();
dnsRecord['answer'] = jQuery.trim($(e).attr('data-dns-answer')).toLowerCase();
$.post("/api/user/deleteApiDNSTemplate", {id: id, dnsRecord: dnsRecord},
function(data)
{
if(data['error'] == '1')
{
$('#editApiDNSTemplateModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editApiDNSTemplateModal').scrollTop(0);
$('#editApiDNSTemplateModalAlert').show();
}
else
{
$('.quickConnectManagementIcon[data-domain="'+dnsRecord['domain']+'"]').removeClass('glyphproOn');
$(e).parent().parent().remove();
}
$(e).removeClass('icon-white');
}, "json");
}
else
{
return;
}
}
function apiDnsTemplate(e)
{
var apiId = $(e).attr('data-id');
$('#editApiDNSTemplateModal_loading').hide();
$('#editApiDNSTemplateModal_contentLoading').show();
$('#editApiDNSTemplateModal_button').show().attr('data-id', apiId);
$('#editApiDNSTemplateModalContainer').html('');
$('#editApiDNSTemplateModalAlert').hide();
$('#editApiDNSTemplateModalAlert').html('');
$('.editApiDNSTemplateModal_domain').html('');
$('#editApiDNSTemplateModal_existingRecordsContainer').show();
$('#editApiDNSTemplateModal_host').val('');
$('#editApiDNSTemplateModal_answer').val('');
$('#editApiDNSTemplateModalContainer').html('<table id="editApiDNSTemplateModalTable" class="table table-bordered"><thead><tr><th>Type</th><th>Subdomain</th><th>Answer</th><th>Priority</th><th>Options</th></tr></thead><tbody></tbody></table>');
$.post("/api/user/getAPIDNSTemplate", {id:apiId},
function(data)
{
if(data['error'] == '1')
{
$('#editApiDNSTemplateModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editApiDNSTemplateModal').scrollTop(0);
$('#editApiDNSTemplateModal_contentLoading').hide();
$('#editApiDNSTemplateModalAlert').show();
return;
}
if(data['dnsRecords'])
{
for(var i = 0; i < data['dnsRecords'].length; i++)
{
var record = data['dnsRecords'][i];
if(record['type'] != 'MX')
{
record['prio'] = '';
}
$('#editApiDNSTemplateModalTable > tbody:last').append('<tr data-dns-index="'+i+'"><td>'+htmlentities(record['type'])+'</td><td>'+htmlentities(record['subdomain'])+'</td><td>'+htmlentities(record['content'])+'</td><td>'+htmlentities(record['prio'])+'</td><td><span class="glyphicon glyphicon-trash pointer deleteDNSDomainIcon" role="button" aria-label="remove" data-index="'+i+'" data-dns-type="'+htmlentities(record['type'])+'" data-dns-host="'+htmlentities(record['subdomain'])+'" data-dns-answer="'+htmlEntities(record['content'])+'" onclick="deleteApiDNSTemplate(this);" data-id="'+apiId+'"></span></td></tr>');
}
}
$('#editApiDNSTemplateModal_contentLoading').hide();
}, "json");
$('#editApiDNSTemplateModal').scrollTop(0);
$('#editApiDNSTemplateModal').modal('show');
}
function accountDomainsFilterLabel(e)
{
var label = $(e).attr('data-value');
window.location.href = window.location.pathname+"?label="+label;
}
function addUserSetting(category, name, value, noReload, e)
{
$.post("/api/domains/addUserSetting", {category:category, name:name, value:value},
function(data)
{
if(data['error'] == '1')
{
$(e).prop( "checked", !$(e).prop( "checked"));
alert(data['message']);
return;
}
if(!noReload)
window.location.reload();
}, "json");
}
function accountDomainsDensity(e)
{
var density = jQuery.trim($(e).val());
$.post("/api/domains/addUserSetting", {category:'domainmanagement', name:'density', value:density},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
window.location.reload();
}, "json");
}
function hideEditDomainLabel()
{
$('#editLabelContainer').hide();
$('#createNewLabelContainer').show();
}
function showEditDomainLabel(e)
{
var labelId = $(e).attr('data-label-id');
$.post("/api/domains/getLabel", {id:labelId},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
var label = data['label'];
$('#editDomainLabelModalEditColor').removeClass().addClass('label').addClass('label-'+label['color']).attr('data-class', label['color'])
$('#editDomainLabelModalEditTitle').val(label['title']);
$('#editDomainLabelModalEditAddButton').attr('data-label-id', label['id']);
$('#editDomainLabelModalEditDeleteButton').attr('data-label-id', label['id']);
$('#createNewLabelContainer').hide();
$('#editLabelContainer').show();
$('#editDomainLabelModalEditTitle').focus();
}, "json");
}
function deleteDomainLabel(e)
{
var labelId = $(e).attr('data-label-id');
if(!confirm("Are you sure you want to delete the label? It will also be removed from any domain it is associated with."))
{
return;
}
$.post("/api/domains/deleteDomainLabel", {labelId:labelId},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
var domains = jQuery.trim($('#editDomainLabelModalNewAddButton').attr('data-domain')).toLowerCase();
if(data['action'] == 'DELETED')
{
$('.domainLabelElement_'+labelId).remove();
}
loadEditLabelsContainer(domains.length, null);
}, "json");
}
function editDomainLabel(e)
{
var id = jQuery.trim($(e).attr('data-label-id'));
var title = jQuery.trim($('#editDomainLabelModalEditTitle_'+id).val());
var color = jQuery.trim($('#editDomainLabelModalEditColor_'+id).find('.createLabelColorSelected').attr('data-color'));
$.post("/api/domains/editDomainLabel", {id:id, title:title, color:color},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
if(data['action'] == 'UPDATED')
{
$('#domainLabelSaveIcon_'+id).addClass('text-success').fadeOut("slow");
$('.availableDomainLabelFilters > .domainLabelElement_'+id).each(function(index)
{
var currentColor = $(this).attr('data-color');
$(this).attr('data-color', color).attr('data-title', title).removeClass('label-'+currentColor).addClass('label-'+color);
$(this).find('.labelFilterCheckbox').attr('data-color', color).attr('data-title', title);
$(this).find('label').attr('data-value', title)
$(this).find('label span').html(title)
});
$('.availableDomainLabels > .domainLabelElement_'+id).each(function(index)
{
var currentColor = $(this).attr('data-color');
$(this).attr('data-color', color).attr('data-title', title).removeClass('label-'+currentColor).addClass('label-'+color);
$(this).find('.labelFilterCheckbox').attr('data-color', color).attr('data-title', title);
$(this).find('label').attr('data-value', title)
$(this).find('label span').html(title)
});
$('.domainManagementDomainLabels > .domainLabelElement_'+id).each(function(index)
{
var currentColor = $(this).attr('data-color');
$(this).removeClass('label-'+currentColor).addClass('label-'+color).html(title);
});
}
}, "json");
}
function toggleDomainLabel(e)
{
if($(e).parent('.availableLabel').length)
{
addDomainLabel(e);
}
else if($(e).parent('.partialLabel').length)
{
addDomainLabel(e);
}
else if($(e).parent('.appliedLabel').length)
{
removeDomainLabel(e);
}
}
function createDomainLabels(e, domainList)
{
var domains = [];
if(e)
{
domains = $(e).attr('data-domain').split(",");
}
else if(domainList)
{
for(var i = 0; i < domainList.length; i++)
{
domains.push(domainList[i]);
}
}
$('#editDomainLabelModalNewAddButton').attr('data-domain', domains.join(","));
$('.editDomainLabelModalDomain').html(domains.slice(0, 5).join(", "));
if(domains.length > 5)
$('.editDomainLabelModalDomain').append(" <span class='text-lowercase'>and "+(domains.length - 5)+" more.</span>");
$('.editDomainLabelModalDomain').append("<br><br>");
if(domains.length < 1)
$('.editDomainLabelModalDomainTitle').html("Create New Label");
else
$('.editDomainLabelModalDomainTitle').html("Create and Apply to: ");
$("#modal_createDomainLabel").modal("show");
var idDomain = null;
if(domains.length == 1)
{
idDomain = domains[0].replace(/\./g, '_');
}
if(domains.length > 0)
{
$('#editDomainLabelModalApplyContainer').show();
}
else
{
$('#editDomainLabelModalApplyContainer').hide();
}
loadEditLabelsContainer(domains.length, idDomain);
}
function editLabelsCheckboxClick()
{
if($('.editLabelsCheckbox:checked').length > 0)
{
//$('#editDomainLabelModalSaveContainer').show();
}
else
{
//$('#editDomainLabelModalSaveContainer').hide();
}
}
function loadEditLabelsContainer(domainCount, idDomain)
{
$.post("/api/domains/getLabels", {empty:true},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
var labels = data['labels'];
$('#currentLabels').html('');
var currentLabelsHtml = '<div class="well">\
<div class="row hidden-xs" style="height:37px;">\
<div class="col-sm-1">\
</div>\
<div class="col-sm-3">\
<label class="uppercase" style="font-size:smaller;">title</label>\
</div>\
<div class="col-sm-4">\
<label class="uppercase" style="font-size:smaller;">color</label>\
</div>\
<div class="col-sm-4">\
<label class="uppercase pull-right" style="font-size:smaller;">options</label>\
</div>\
</div>\
';
for(var i = 0; i < labels.length; i++)
{
currentLabelsHtml += '<div class="row domainLabelElement_'+labels[i]['id']+'" style="position:relative; heightt:37px; margin-bottom:5px;">\
<div class="col-sm-1 col-xs-2" style="height:45px; position:relative;">\
<input aria-label="select label" data-id="'+labels[i]['id']+'" type="checkbox" name="editLabelsCheckbox" class="editLabelsCheckbox" value="" onclick="editLabelsCheckboxClick();" '+(domainCount == 1 && idDomain && $("#labelDomainCheckbox_"+idDomain+"_"+labels[i]['id']).prop('checked') ? "CHECKED" : "")+'>\
</div>\
<div class="col-sm-3 col-xs-10" style="height:45px;">\
<input aria-label="title" onkeydown="showDomainLabelSave(this);" onchange="showDomainLabelSave(this);" id="editDomainLabelModalEditTitle_'+labels[i]['id']+'" style="" type="text" class="form-control" value="'+labels[i]['title']+'" data-label-id="'+labels[i]['id']+'">\
</div>\
<div class="col-sm-4 col-xs-9">\
<div style="margin-top:5px;" id="editDomainLabelModalEditColor_'+labels[i]['id']+'">\
<div role="listbox">\
<span id="labelColor_default_'+labels[i]['id']+'" role="option" aria-selected="'+(labels[i]['color'] == 'default' ? 'true' : 'false')+'" aria-label="click for default color (gray)" tabindex="0" onkeypress="processKeyPress(event, createLabelColorSelect(this));" onclick="showDomainLabelSave(this); createLabelColorSelect(this);" data-label-id="'+labels[i]['id']+'" class="createLabelColorSelect pointer label label-default '+(labels[i]['color'] == 'default' ? 'createLabelColorSelected' : '')+'" style="display:inline-block; width:20px; height:20px;" data-color="default"></span>\
<span id="labelColor_primary_'+labels[i]['id']+'" role="option" aria-selected="'+(labels[i]['color'] == 'default' ? 'true' : 'false')+'" aria-label="click for primary color (dark blue)" tabindex="0" onkeypress="processKeyPress(event, createLabelColorSelect(this));" onclick="showDomainLabelSave(this); createLabelColorSelect(this);" data-label-id="'+labels[i]['id']+'" class="createLabelColorSelect pointer label label-primary '+(labels[i]['color'] == 'primary' ? 'createLabelColorSelected' : '')+'" style="display:inline-block; width:20px; height:20px;" data-color="primary"></span>\
<span id="labelColor_success_'+labels[i]['id']+'" role="option" aria-selected="'+(labels[i]['color'] == 'default' ? 'true' : 'false')+'" aria-label="click for success color (green)" tabindex="0" onkeypress="processKeyPress(event, createLabelColorSelect(this));" onclick="showDomainLabelSave(this); createLabelColorSelect(this);" data-label-id="'+labels[i]['id']+'" class="createLabelColorSelect pointer label label-success '+(labels[i]['color'] == 'success' ? 'createLabelColorSelected' : '')+'" style="display:inline-block; width:20px; height:20px;" data-color="success"></span>\
<span id="labelColor_info_'+labels[i]['id']+'" role="option" aria-selected="'+(labels[i]['color'] == 'default' ? 'true' : 'false')+'" aria-label="click for info color (light blue)" tabindex="0" onkeypress="processKeyPress(event, createLabelColorSelect(this));" onclick="showDomainLabelSave(this); createLabelColorSelect(this);" data-label-id="'+labels[i]['id']+'" class="createLabelColorSelect pointer label label-info '+(labels[i]['color'] == 'info' ? 'createLabelColorSelected' : '')+'" style="display:inline-block; width:20px; height:20px;" data-color="info"></span>\
<span id="labelColor_warning_'+labels[i]['id']+'" role="option" aria-selected="'+(labels[i]['color'] == 'default' ? 'true' : 'false')+'" aria-label="click for warning color (orange)" tabindex="0" onkeypress="processKeyPress(event, createLabelColorSelect(this));" onclick="showDomainLabelSave(this); createLabelColorSelect(this);" data-label-id="'+labels[i]['id']+'" class="createLabelColorSelect pointer label label-warning '+(labels[i]['color'] == 'warning' ? 'createLabelColorSelected' : '')+'" style="display:inline-block; width:20px; height:20px;" data-color="warning"></span>\
<span id="labelColor_danger_'+labels[i]['id']+'" role="option" aria-selected="'+(labels[i]['color'] == 'default' ? 'true' : 'false')+'" aria-label="click for danger color (red)" tabindex="0" onkeypress="processKeyPress(event, createLabelColorSelect(this));" onclick="showDomainLabelSave(this); createLabelColorSelect(this);" data-label-id="'+labels[i]['id']+'" class="createLabelColorSelect pointer label label-danger '+(labels[i]['color'] == 'danger' ? 'createLabelColorSelected' : '')+'" style="display:inline-block; width:20px; height:20px;" data-color="danger"></span>\
</div>\
</div>\
</div>\
<div class="col-sm-4 col-xs-3" style="position:relative; heightt:100%; margin-top:3px;">\
<div class="pull-right" style="position:relative; heightt:100%;">\
<span class="verticalAlignHelper"></span>\
<i tabindex="0" title="save label" id="domainLabelSaveIcon_'+labels[i]['id']+'" class="fa-solid fa-floppy-disk pointer" onkeypress="processKeyPress(event, editDomainLabel(this));" onclick="editDomainLabel(this);" data-label-id="'+labels[i]['id']+'" style="margin-right:5px; display:none;"></i>\
<i tabindex="0" title="delete label" id="domainLabelDeleteIcon_'+labels[i]['id']+'" class="fa-solid fa-trash-can pointer" onkeypress="processKeyPress(event, deleteDomainLabel(this));" onclick="deleteDomainLabel(this);" data-label-id="'+labels[i]['id']+'" style="margin-right:5px;"></i>\
</div>\
</div>\
</div>';
}
currentLabelsHtml += '</div>';
$('#currentLabels').html(currentLabelsHtml);
if(labels.length > 0)
{
$('#editDomainLabelModalCurrentLabelsContainer').show();
}
else
{
$('#editDomainLabelModalCurrentLabelsContainer').hide();
}
if(domainCount > 0 && labels.length > 0)
{
$('.editLabelsCheckboxContainer').show();
$('#editDomainLabelModalSaveContainer').show();
}
else
{
$('.editLabelsCheckboxContainer').hide();
$('#editDomainLabelModalSaveContainer').hide();
}
}, "json");
}
function showDomainLabelSave(e)
{
$('#domainLabelSaveIcon_'+$(e).attr('data-label-id')).show();
}
function manageDomainLabels(e, domainList)
{
var domains = [];
if(e)
{
domains.push($(e).attr('data-domain'));
}
else if(domainList)
{
for(var i = 0; i < domainList.length; i++)
{
domains.push(domainList[i]);
}
}
if(domains.length < 1)
return;
else if(domains.length == 1)
{
$('#currentDomainLabelsContainer').hide();
$('#partialAppliedLabelTitle').hide();
}
else
{
$('#currentDomainLabelsContainer').hide();
$('#partialAppliedLabelTitle').show();
}
$('#editDomainLabelModalNewAddButton').attr('data-domain', domains.join(","));
$('#editDomainLabelModalEditAddButton').attr('data-domain', domains.join(","));
$('#editDomainLabelModalEditDeleteButton').attr('data-domain', domains.join(","));
$('.editDomainLabelModalDomain').html(domains.slice(0, 5).join(", "));
if(domains.length > 5)
$('.editDomainLabelModalDomain').append(" <span class='text-lowercase'>and "+(domains.length - 5)+" more.</span>");
$('#currentDomainLabels').html('');
$('#currentLabels').html('');
$.post("/api/domains/getLabels", {empty:true},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
var labels = data['labels'];
$("#modal_createDomainLabel").modal("show");
for(var i = 0; i < labels.length; i++)
{
$('#currentLabels').append('<div class="row" style="position:relative; height:37px;"><div class="col-md-6">\
<div class="label-'+labels[i]['color']+'" data-color="'+labels[i]['color']+'" data-title="'+labels[i]['title']+'" style="margin: 3px; padding:5px;" data-id="'+labels[i]['id']+'">\
<input onchange="domainManagementApplyLabel(this);" class="labelDomainCheckbox" name="labelDomainCheckbox" id="labelDomainCheckbox_'+labels[i]['id']+'" data-id="'+labels[i]['id']+'" type="checkbox" data-color="'+labels[i]['color']+'" data-title="'+labels[i]['title']+'">\
<label for="labelDomainCheckbox_'+labels[i]['id']+'" style="margin:0;" class="pointer" data-value="'+labels[i]['title']+'"><span style="color:white;">'+labels[i]['title']+'</span></label>\
</div>\
</div><div class="col-md-6" style="position:relative; height:100%;"><div class="pull-right" style="position:relative; height:100%;"><span class="verticalAlignHelper"></span> <i class="glyphicon glyphicon-edit pointer"> <i class="glyphicon glyphicon-trash pointer"></div></div></div>');
}
if(domains.length >= 1)
{
$.post("/api/domains/getDomainsLabels", {domains: domains},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
var domainLabels = data['labels'];
for(var i = 0; i < labels.length; i++)
{
var appliedCount = 0;
for(var domain in domainLabels)
{
if(domainLabels[domain][labels[i]['title']])
{
appliedCount++;
}
}
if(appliedCount == domains.length)
{
var labelHtml = jQuery.trim($('#availableLabel_'+labels[i]['id']).html());
$('#availableLabel_'+labels[i]['id']).html('');
$('#appliedLabel_'+labels[i]['id']).html(labelHtml);
}
else if(appliedCount > 0)
{
var labelHtml = jQuery.trim($('#availableLabel_'+labels[i]['id']).html());
$('#availableLabel_'+labels[i]['id']).html('');
$('#partialLabel_'+labels[i]['id']).html(labelHtml);
}
}
}, "json");
}
}, "json");
}
function processSitebuilderRedirect(e)
{
var redirect = jQuery.trim($(e).attr('data-href'));
var newWindow = window.open(redirect, '_blank');
}
function showSitebuilderRedirectModal(e)
{
var redirect = jQuery.trim($(e).attr('data-href'));
showMessageModal("Site Builder", "By continuing we will redirect you to our site builder powered by Weebly. To edit your site later, add additional services to your domain, or change other settings you can always do so from within your account.<br><br><center><button onclick='processSitebuilderRedirect(this);' class='btn btn-success' data-href='"+redirect+"'>Let's Do This!</button></center>", false, "No Thanks");
}
function accountDomainsSingleAction(e, reload)
{
var isHandshake = jQuery.trim($(e).attr('data-handshake'));
var action = jQuery.trim($(e).attr('data-type'));
var domain = jQuery.trim($(e).attr('data-domain'));
var domainId = $(e).attr('data-domain-id');
var fromSearch = $(e).attr('data-from-search');
var confirmAction = $(e).attr('data-confirm');
var idn = $(e).attr('data-idn');
var tld = jQuery.trim($(e).attr('data-tld'));
var sld = jQuery.trim($(e).attr('data-sld'));
if(confirmAction == "true")
{
if(action == 'sitebuilder')
{
if(!confirm("Are you sure you want to change your plan?"))
{
return;
}
}
}
if(isHandshake == "1")
{
if(!confirm("There are no refunds on Handshake names. No exceptions. Don't even ask. Seriously. If you do not understand what you are buying do not purchase this name.\n\nHandshake is an experimental and permissionless naming protocol that uses blockchain technology to create a decentralized root zone, as opposed to a centralized root zone regulated by ICANN. You can read more about the Handshake protocol at handshake.org\n\nThere are no guarantees with Handshake names. You may not be able to renew Handshake names upon expiration and there's a chance that the TLD you purchase the domain on top of could stop functioning prior to expiration.\n\nBecause Handshake names do not use the same root zone as other domains on the internet they do not currently, and may never, resolve like normal domains. These names require special browser plugins or network configurations. Furthermore, xiaofu services such as email, SSL certificate generation and others don't work on Handshake names.\n\nWith Handshake names there is an inherent risk of collision with names on other blockchains, other naming technology, and with ICANN regulated domains. There are no guarantees that the Handshake names you purchase are unique or that they will not collide now or in the future."))
{
return;
}
}
var oldButtonHtml = $(e).html();
$(e).html('<img src="/media/loading.sml.gif">');
if(fromSearch)
$(e).addClass('disabled');
else
$(e).addClass('disabled').addClass('btn-default').removeClass('btn-success');
if(action == 'accountCredit')
{
var cart = [];
var item = {type:action};
cart.push(item);
$.post("/api/user/addToCart", {cart:cart},
function(data)
{
window.location = "/checkout/cart";
}, "json");
}
else if(action == 'emailForwarding' || action == 'managedPHP' || action == 'emailHostingRenew' || action == 'cPanelHosting' || action == 'staticHosting' || action == 'easyBuilder' || action == 'managedWordPress' || action == 'tldBundle' || action == 'invoice' || action == 'sitebuilder' || action == 'renewal' || action == 'whoisPrivacy' || action == 'emailHosting' || action == 'wordpressHosting' || action == 'webHosting' || action == 'cPanelHosting' || action == 'managedLinks')
{
var cart = [];
var item = {type:action, domain:domain};
if(action == 'emailForwarding')
{
var local = jQuery.trim($('#local').val());
item['local'] = local;
var remote = jQuery.trim($('#remote').val());
item['remote'] = remote;
}
else if(action == 'webHosting' || action == 'cPanelHosting')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'sitebuilder')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'managedWordPress')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'staticHosting')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'easyBuilder')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'managedLinks')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'managedPHP')
{
var plan = jQuery.trim($(e).attr('data-plan'));
item['plan'] = plan;
var planId = jQuery.trim($(e).attr('data-planid'));
item['planId'] = planId;
}
else if(action == 'emailHostingRenew')
{
var id = jQuery.trim($(e).attr('data-id'));
item['id'] = id;
}
else if(action == 'invoice')
{
var invoiceId = jQuery.trim($(e).attr('data-invoice-id'));
item['invoiceId'] = invoiceId;
}
else if(action == 'tldBundle')
{
item['tld'] = tld;
item['sld'] = sld;
}
cart.push(item);
if(cart.length > 0)
{
$.post("/api/user/addToCart", {cart:cart},
function(data)
{
if(reload)
{
window.location.reload();
return;
}
else if(data['status'] == "0")
{
alert(data['message']);
window.location.reload();
}
else if(data['cart']['refresh'] && action == 'sitebuilder')
{
// alert("Your plan has been updated and the expiration date has been adjusted.");
window.location.reload();
}
else
window.location = "/checkout/cart";
}, "json");
}
else
{
$(e).html(oldButtonHtml);
$(e).removeClass('disabled').addClass('btn-success').removeClass('btn-default');
}
}
else if(action == 'marketplace' || action == 'afternic' || action == 'registration' || action == 'preorder')
{
var allocationToken = jQuery.trim($(e).attr('data-allocation-token'));
var step = $('#searchResultRow_'+domainId).attr('data-step');
var dataPageId = $('#searchResultRow_'+domainId).attr('data-page-id');
var trendingSlotId = $('#searchResultRow_'+domainId).attr('data-trending-slot');
var bulkSearch = $('#searchResultRow_'+domainId).attr('data-bulk-search');
var resultCount = $('#searchResultRow_'+domainId).attr('data-result-count');
var resultType = $('#searchResultRow_'+domainId).attr('data-result-type');
var cart = [];
var item = {type:action, domain:domain, trendingSlotId:trendingSlotId, bulkSearch:bulkSearch, resultCount:resultCount, resultType:resultType, allocationToken:allocationToken, idn:idn, dataPageId:dataPageId, step:step};
cart.push(item);
if(cart.length > 0)
{
$.post("/api/user/addToCart", {cart:cart},
function(data)
{
if(data['cart'] && data['cart']['forceMessage'])
{
alert(data['cart']['forceMessage']);
}
if(data['cart'] && data['cart']['messages'])
{
for(var key in data['cart']['messages'])
{
var messagesMessage = data['cart']['messages'][key]['title']+"\n\n";
messagesMessage += data['cart']['messages'][key]['message'];
messagesMessage += "\n\nWe will not show this message again during this session.";
alert(messagesMessage);
}
}
if(data['status'] == '1')
{
if(reload)
{
window.location.reload();
return;
}
if(typeof fbq !== 'undefined')
{
fbq('track', 'AddToCart');
}
if(tld == 'pro')
{
if(typeof window.lintrk !== 'undefined')
window.lintrk('track', { conversion_id: 12189841 });
if(typeof twq !== 'undefined')
twq('event', 'tw-o7kfh-odmbu', {});
}
if(typeof gtag !== 'undefined')
{
gtag('event', 'add', {
'event_category': 'cart',
'event_label': domain,
'value': 1} );
}
if(fromSearch)
{
$(e).removeClass('disabled').removeClass('text-xiaofu').removeClass('searchAddIcon').addClass('searchRemoveIcon');
$(e).html('<span class="glyphicon glyphicon-remove"></span>').attr('onclick', 'removeCartItem(this);');
$('#checkoutButton'+domainId).show();
updateCart(data['cart']);
}
else
{
$(e).removeClass('disabled').addClass('btn-success').addClass('btn-sm').removeClass('btn-default').removeClass('searchAddIcon').addClass('searchRemoveIcon');
$(e).html('<span class="glyphicon glyphicon-remove"></span>').addClass('btn-warning').removeClass('btn-success').attr('onclick', 'removeCartItem(this);');
$('#checkoutButton'+domainId).show();
updateCart(data['cart']);
}
}
else
{
if(data['message'])
{
if(data['message'] == 'Please login or create an account before adding items to your cart.')
{
var redirURL = "/account/login?redir="+encodeURIComponent("/checkout/search/"+domain);
showMessageModal('Create an Account or Login', '<p>Before we can apply your member benefit discount we need you to create a new account or login to an existing one.</p>', null, "OK", 'redirToUrl("'+redirURL+'");', 'Not Now');
}
else
{
alert(data['message']);
}
}
$(e).html(oldButtonHtml);
if(fromSearch)
$(e).removeClass('disabled').removeClass('searchAddIcon').addClass('searchRemoveIcon');
else
$(e).removeClass('disabled').removeClass('btn-sm').addClass('btn-success').removeClass('btn-default').removeClass('searchAddIcon').addClass('searchRemoveIcon');
}
}, "json");
}
else
{
$(e).html(oldButtonHtml);
if(fromSearch)
$(e).removeClass('disabled');
else
$(e).removeClass('disabled').removeClass('btn-sm').addClass('btn-success').removeClass('btn-default');
}
}
else
{
$(e).html(oldButtonHtml);
$(e).removeClass('disabled').removeClass('btn-sm').addClass('btn-success').removeClass('btn-default');
}
}
function accountDomainsSort(e)
{
var field = jQuery.trim($(e).attr('data-name'));
var direction = jQuery.trim($(e).attr('data-direction'));
var sortValue = parseInt(jQuery.trim($(e).attr('data-sort')));
if(direction == 'off')
direction = 'asc';
else if(direction == 'asc')
direction = 'desc';
else if(direction == 'desc')
direction = 'asc';
$('.accountDomainSortIcon').attr('data-direction', 'off');
$(e).attr('data-direction', direction);
$(e).attr('data-sort', (sortValue + 1));
accountDomainsFilter();
}
function getAccountDomainsSort()
{
var sortData = {};
$('.accountDomainSortIcon').each(function(i, obj)
{
var thisField = jQuery.trim($(obj).attr('data-name'));
var thisDirection = jQuery.trim($(obj).attr('data-direction'));
if(thisDirection != 'off')
sortData[thisField] = thisDirection;
});
return(sortData);
}
function accountDomainsFilter()
{
var domain = jQuery.trim($('#accountDomainsFilter').val());
var expDays = jQuery.trim($('#accountExpiringWithin').val());
var sortData = getAccountDomainsSort();
var url = '/account/domains';
var urlParams = {};
if(expDays)
urlParams['expDays'] = expDays;
if(domain)
url = url+'/'+domain;
urlParams['sort'] = {};
for(var field in sortData)
{
var direction = sortData[field];
urlParams['sort'][field] = direction;
}
url = url+'?'+$.param(urlParams);
location.href = url;
}
function configureDefaultNs(e)
{
$('.configureNsButtons').hide();
$('.configureNsLoading').show();
var domain = jQuery.trim($(e).attr('data-domain'));
$.post("/api/domains/configureDefaultNs", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
return;
}
$('.configureNsAlert').removeClass('alert-danger').addClass('alert-success').fadeOut(function()
{
$('.configureNsAlert').removeClass('alert-success').addClass('alert-danger')
$('.configureNsButtons').show();
$('.configureNsLoading').hide();
});
}, "json");
}
function linkDomain(service, domain, extra)
{
$('#finishLinkButton').hide();
$('#finishLinkLoad').show();
$('#linkDomainError').css('display', 'none');
$.post("/api/domains/linkDomain", {service:service, domain:domain, extra:extra},
function(data)
{
if(data['error'] == '1')
{
$('#linkDomainError').html('<strong>ERROR:</strong> '+data['message']);
$('#linkDomainError').show();
window.scrollTo(0, 0);
}
else
{
websiteSetup = true;
window.scrollTo(0, 0);
skipSetupWebsite();
}
$('#finishLinkLoad').hide();
$('#finishLinkButton').show();
}, "json");
}
var substringMatcher = function(strs)
{
return function findMatches(q, cb)
{
var matches, substringRegex;
// an array that will be populated with substring matches
matches = [];
// regex used to determine if a string contains the substring `q`
substrRegex = new RegExp(q, 'i');
// iterate through the pool of strings and for any string that
// contains the substring `q`, add it to the `matches` array
$.each(strs, function(i, str)
{
if (substrRegex.test(str))
{
matches.push(str);
}
});
cb(matches);
};
};
function setupEmailAddress(e)
{
$('#modal_setupxiaofuEmail_loading').show();
$('#modal_setupxiaofuEmail_buttons').hide();
var emailUserId = jQuery.trim($(e).attr('data-id'));
var emailDomain = jQuery.trim($(e).attr('data-domain'));
var freeTrialStatus = jQuery.trim($(e).attr('data-trial-status'));
var emailUsername = jQuery.trim($('#setupxiaofuEmailUsername').val());
var emailPassword = jQuery.trim($('#setupxiaofuEmailPassword').val());
var emailPasswordConfirm = jQuery.trim($('#setupxiaofuEmailPasswordConfirm').val());
$('#setupEmail_button'+emailUserId).hide();
$('#setupEmail_loading'+emailUserId).show();
$.post("/api/user/setupEmailAddress", {emailUserId:emailUserId, emailDomain:emailDomain, emailUsername:emailUsername, emailPassword:emailPassword, emailPasswordConfirm:emailPasswordConfirm},
function(data)
{
if(data['error'] == 1)
{
$('#setupEmail_loading'+emailUserId).hide();
$('#setupEmail_button'+emailUserId).show();
alert(data['message']);
$('#modal_setupxiaofuEmail_loading').hide();
$('#modal_setupxiaofuEmail_buttons').show();
}
else
{
window.location.reload();
}
}, "json");
}
function displayGenericQRCode(string)
{
showMessageModal('QR Code', '<center><img src="/api/user/getGenericQRCode/'+encodeURIComponent(string)+'"><br><br><small class="text-muted">'+string+'</small></center>');
}
function openBitcoinWallet(e)
{
var bitcoinUrl = jQuery.trim($(e).attr('data-bitcoinUrl'));
window.open(bitcoinUrl);
}
function createBitcoinReceiver()
{
$('#bitcoinReceiver_button').hide();
$('#bitcoinReceiver_loading').show();
$('#billingModalButtonContainer').hide();
$('#bitcoinAmountLoading').show();
var email = jQuery.trim($('#bitcoinEmail').val());
$.post("/api/user/createBitcoinReceiver", {email:email},
function(data)
{
if(data['error'])
{
alert(data['message']);
$('#bitcoinReceiver_button').show();
$('#bitcoinReceiver_loading').hide();
$('#billingModalButtonContainer').show();
}
else
{
$('#billingModalProcessCardButton').attr('onclick', 'processCard(this);');
$('#billingModalProcessCardButton').html('Pay Now');
$('#billingModalBitcoinInfo').slideUp();
$('#billingModalBitcoinAction').slideDown();
$('#billingModalBitcoinActionEmail').html(email);
$('#billingModalBitcoinActionAddress').html(data['receiverAddress']);
$('#billingModalBitcoinActionAddress').attr('data-receiver-id', data['receiverId']);
$('#billingModalBitcoinQrCode').html('<img class="img-responsive" src="/api/user/getGenericQRCode/'+encodeURIComponent(data['bitcoinUrl'])+'">');
$('#billingModalBitcoinActionWallet').attr('href', data['bitcoinUrl']);
$('#bitcoinReceived').html((data['bitcoinAmountReceived'] * 0.00000001).toFixed(8));
$('#bitcoinAmount').html((data['bitcoinAmount'] * 0.00000001).toFixed(8));
if(data['filled'] == 'chargeable')
{
$('#bitcoinAmountLoading').hide();
$('#billingModalButtonContainer').show();
$('#billingModalProcessCardButton').click();
}
else
{
var receiverId = data['receiverId'];
startGetBitcoinReceiver(receiverId);
}
}
}, "json");
}
function startGetBitcoinReceiver(receiverId)
{
var getBitcoinIntervalCount = 0;
myGetBitcoinReceiverInterval = setInterval(function()
{
$.post("/api/user/getBitcoinReceiver", {receiverId:receiverId},
function(data)
{
$('#bitcoinReceived').html((data['bitcoinAmountReceived'] * 0.00000001).toFixed(8));
$('#bitcoinAmount').html((data['bitcoinAmount'] * 0.00000001).toFixed(8));
if(data['filled'] == 'chargeable')
{
clearInterval(myGetBitcoinReceiverInterval);
$('#bitcoinAmountLoading').hide();
$('#billingModalButtonContainer').show();
$('#billingModalProcessCardButton').click();
}
if(getBitcoinIntervalCount >= 360)
{
clearInterval(myGetBitcoinReceiverInterval);
alert("We've been waiting for payment for over 1 hour. Please try again.");
window.location.reload();
}
getBitcoinIntervalCount++;
}, "json");
}, 10000);
}
function createAccountSimple()
{
$('#accountCreateButton').prop('disabled', true);
$('#accountCreateButton').html('<img src="/media/loading.sml.gif">');
$('#accountCreateContainer').find('.control-group').removeClass('has-error');
$('#accountCreateErrorAlert').css('display', 'none');
$('#accountCreateErrorAlertMessages').html('');
$('.controlGroupNewAccount').removeClass('error');
$('.newAccountError').html('');
var username = jQuery.trim($('#newAccountUsername').val());
var password = jQuery.trim($('#newAccountPassword').val());
var passwordConfirm = jQuery.trim($('#newAccountPasswordConfirm').val());
var email = jQuery.trim($('#newAccountEmail').val());
var emailConfirm = jQuery.trim($('#newAccountEmailConfirm').val());
var name = jQuery.trim($('#newAccountName').val());
var companyName = jQuery.trim($('#newAccountCompanyName').val());
var address1 = jQuery.trim($('#newAccountAddress1').val());
var address2 = jQuery.trim($('#newAccountAddress2').val());
var address3 = jQuery.trim($('#newAccountAddress3').val());
var city = jQuery.trim($('#newAccountCity').val());
var state = jQuery.trim($('#newAccountState').val());
var country = jQuery.trim($('#newAccountCountry').val());
var zip = jQuery.trim($('#newAccountZip').val());
var phone = cleanPhone(jQuery.trim($('#newAccountPhone').val()));
var fax = cleanPhone(jQuery.trim($('#newAccountFax').val()));
var loginRedir = jQuery.trim($('#loginData').attr('data-redir'));
var simpleCheckoutAgree = $('#simpleCheckoutAgree').prop('checked');
if(simpleCheckoutAgree)
simpleCheckoutAgree = 'YES';
else
simpleCheckoutAgree = 'NO';
$.post("/api/user/create", {"username":username, "password":password, "passwordConfirm":passwordConfirm, "email":email, "emailConfirm":emailConfirm, "name":name, "companyName":companyName, "address1":address1, "address2":address2, "address3":address3, "city":city, "state":state, "country":country, "zip":zip, "phone":phone, "fax":fax, "buyNowPostLogin":'', "simpleCheckoutAgree":simpleCheckoutAgree},
function(data)
{
if(data['error'])
{
for(var field in data['errorFields'])
{
var message = data['errorFields'][field];
$('#accountCreateErrorAlert').css('display', '');
if(field == 'contacts')
{
field = field.replace(/\b[a-z]/g, function(letter) {return letter.toUpperCase();});
for(var i = 0; i < message.length; i++)
{
var theMessage = message[i];
$('#accountCreateErrorAlertMessages').append('<li>'+theMessage+'</li>');
$('#createAccountControlGroup'+field).addClass('has-error');
}
}
else
{
field = field.replace(/\b[a-z]/g, function(letter) {return letter.toUpperCase();});
$('#accountCreateErrorAlertMessages').append('<li>'+message+'</li>');
$('#controlGroupNewAccount'+field).addClass('error');
$('#newAccountError'+field).html(message);
}
}
window.scrollTo(0, 0);
}
else
{
// register a domain or ask for billing info
// no
$.get("/api/user/getCart", {empty:true},
function(data)
{
if(!data['cart'] || !data['cart']['itemCount'] || data['cart']['itemCount'] < 1)
{
alert("Oh no! There doesn't appear to be any items in your cart.");
return;
}
if(data['cart']['totalPrice'] <= 0)
{
$('#billingModalNoChargeExplain').show();
$('#billingModalBitcoinPanel').hide();
$('#billingModalPaypalPanel').hide();
$('#billingModalAccountCreditPanel').hide();
$('#billingModalBillingButton_accountCredit').hide();
$('#billingModalBillingButton_payPal').hide();
$('#billingModalBillingButton_bitcoin').hide();
$('#billingModalBillingButton_alipay').hide();
}
}, "json");
}
$('#accountCreateButton').prop('disabled', false);
$('#accountCreateButton').html('Create Account');
}, "json");
}
var pollOrderInterval = null;
var pollOrderPolling = false;
var pollOrderCount = 0;
function pollOrder(orderId, initData, postFunction, orderInfo)
{
if(pollOrderPolling)
return;
pollOrderCount++;
if(pollOrderCount == 30)
{
showMessageModal("Taking a long time notice", "This is taking a really long time. I'm going to suggest you do something else while we continue processing things in the background. We'll send you an email when we're all done.");
}
pollOrderPolling = true;
$.post("/api/orders/checkOrderStatus", {orderId:orderId},
function(data)
{
if(data['error'] == 1)
{
window.clearInterval(pollOrderInterval);
pollOrderPolling = false;
$('#orderProcessContainer').hide();
showMessageModal('Something went wrong :(', '<div class="alert alert-error">'+data['message']+'</div>');
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else
{
var orderStatus = data['orderStatus'];
var processingStatus = data['processingStatus'];
var itemCount = data['item_count'];
var itemsProcessed = data['items_processed'];
var progress = Math.round((itemsProcessed / itemCount) * 100);
$('#orderProcessingStatus').html(processingStatus+'...');
$('#orderProcessingProgress').find('.progress-bar').css('width', progress+'%');
$('#orderProcessingProgress').find('.sr-only').html(progress+'% Complete');
pollOrderPolling = false;
if(orderStatus == 1)
{
$('#orderProcessingStatus').html('w00t...');
$('#orderProcessingProgress').find('.progress-bar').css('width', '100%');
$('#orderProcessingProgress').find('.sr-only').html('100% Complete');
window.clearInterval(pollOrderInterval);
if(initData.redir)
{
window.location.href = initData.redir;
return;
}
if(postFunction)
{
postFunction(orderId, '');
return;
}
if(orderInfo['productType'] == 'invoice')
window.location.href = '/checkout/invoice/'+orderInfo['invoiceId'];
else
window.location.href = '/checkout/success/'+orderId;
return;
}
}
}, "json");
}
function processCard(e)
{
var type = $(e).attr('data-type');
if(type == 'cart' || type == 'applepay')
processCartOrder(null, e);
else
alert("Hmm, weird! It doesn't look like your processing a cart order.");
}
function processCartOrder(postFunction, e)
{
$('.form-group').removeClass('error');
$('.control-group').removeClass('error');
$('#billingErrorMessageAlert').hide();
var type = $(e).attr('data-type');
var paymentType = $('.billingModalTab.active').attr('data-method');
var subPaymentType = '';
if(paymentType == 'alipay')
{
subPaymentType = 'alipay';
paymentType = 'stripeCheckout';
}
var expireDate = jQuery.trim($('#billingCardExpiration').val());
var expireDateParts = expireDate.split("/");
var expireDateMonth = expireDateParts[0];
var expireDateYear = expireDateParts[1];
var number = jQuery.trim($('#billingCardNumber').val());
var cvc = jQuery.trim($('#billingCardCvc').val());
var name = jQuery.trim($('#billingCardName').val());
var billingModalAgree = $('#billingModalAgree').prop('checked');
var billingModalApplyCredit = $('#billingModalApplyCredit').prop('checked');
var noCharge = $('#billingModalProcessCardButton').attr('data-no-charge');
var paypalid = jQuery.trim($('#billingModalProcessCardButton').attr('data-paypalid'));
var tosAgreement = $('#tosAgreement').prop('checked');
if(!tosAgreement)
{
alert("You must check the box acknowledging that you agree to our terms of service and other policies before continuing.");
return;
}
if(noCharge == 'yes')
{
paymentType = "newCard";
}
var sourceid = jQuery.trim($('#billingModalProcessCardButton').attr('data-sourceid'));
var clientSecret = jQuery.trim($('#billingModalProcessCardButton').attr('data-clientSecret'));
var checkoutId = jQuery.trim($('#billingModalProcessCardButton').attr('data-checkoutId'));
var bitcoinReceiverAddress = jQuery.trim($('#billingModalBitcoinActionAddress').html());
var bitcoinReceiverId = jQuery.trim($('#billingModalBitcoinActionAddress').attr('data-receiver-id'));
var orderInfo = {'orderType':'cart'};
var clientFingerprint = jQuery.trim($('#clientFingerprint').html());
var clientFingersha = jQuery.trim($('#clientFingersha').html());
var address = jQuery.trim($('#billingCardAddress').val());
var zip = jQuery.trim($('#billingCardZip').val());
var owner = {name:name};
orderInfo['tosAgreement'] = tosAgreement;
orderInfo['billingModalApplyCredit'] = billingModalApplyCredit;
orderInfo['clientFingerprint'] = clientFingerprint;
$('#payment_loading').show();
$('#billingModalButtonContainer').hide();
var tldRequirementError = false;
if($('.tldRequirementContainer').length > 0)
{
orderInfo['tldRequirements'] = {};
$('.tldRequirementContainer').each(function(index, element)
{
var requirementDomain = $(element).attr('data-cart-id');
orderInfo['tldRequirements'][requirementDomain] = {};
$(element).find('.tldRequirement').each(function(subindex, subelement)
{
var requirementType = $(subelement).attr('data-type');
var requirementValue = jQuery.trim($(subelement).val());
var requirementRequired = $(subelement).attr('data-required');
if(!requirementValue && requirementRequired == 'true')
{
tldRequirementError = true;
}
orderInfo['tldRequirements'][requirementDomain][requirementType] = requirementValue;
});
});
}
if(tldRequirementError)
{
alert("You must complete all of the additional TLD requirements.");
$('#billingModal').modal('hide');
return;
}
if(tldRequirementError)
return;
if(paymentType == 'stripeCheckout' || paymentType == 'payPal' || paymentType == 'accountCredit' || ((paymentType == 'existingCard' || paymentType == 'newCard') && noCharge == 'yes'))
{
var token = '';
if(paymentType == 'stripeCheckout')
{
token = 'stripeCheckout';
orderInfo['checkoutId'] = checkoutId;
}
else if(paymentType == 'payPal')
{
token = 'paypal';
orderInfo['paypalid'] = paypalid;
}
else if(paymentType == 'accountCredit')
{
token = 'account';
}
else if((paymentType == 'existingCard' || paymentType == 'newCard') && noCharge == 'yes')
{
token = 'account';
}
else
{
token = 'unknown';
}
$.post("/api/orders/process", {token:token, subToken:subPaymentType, card:null, orderInfo:orderInfo, applepay:type},
function(data)
{
var error = data.error;
var message = data.message;
if(error == 0)
{
var orderId = data.orderId;
var redir = data['redir'];
var checkoutSessionId = data['checkoutSessionId'];
if(data.phoneVerify)
{
// return;
}
if(token == 'paypal' && redir)
{
window.location.href = redir;
return;
}
if(token == 'stripeCheckout' && checkoutSessionId)
{
stripe.redirectToCheckout({
sessionId: checkoutSessionId
}).then(function (result) {
alert(result.error.message);
});
return;
}
if(data['poll'] && data['id'])
{
pollOrderCount = 0;
$('#orderProcessingProgress').find('.progress-bar').css('width', '0%');
$('#orderProcessingProgress').find('.sr-only').html('0% Complete');
$('#orderProcessContainer').show();
pollOrderInterval = setInterval(function(){pollOrder(data['id'], data, postFunction, orderInfo);}, 2000);
return;
}
if(data.redir)
{
window.location.href = data.redir;
return;
}
if(postFunction)
{
postFunction(orderId, '');
return;
}
window.location.href = '/checkout/success/'+orderId;
return;
}
else
{
if(data.redir)
{
alert(message);
window.location.href = data.redir;
return;
}
if(postFunction)
{
postFunction(0, message);
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
return;
}
if(data['refresh'] == 1)
{
alert(message);
window.location.reload();
return;
}
else if(data['refresh'] == 2)
{
alert(message);
window.location = "/checkout/cart";
return;
}
showMessageModal('Something went wrong :(', '<div class="alert alert-error">'+message+'</div>');
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
}, "json");
return;
}
$.post("/api/user/createPaymentIntent", {order:1, existing:(paymentType == 'existingCard' ? 1 : 0)},
function(data)
{
if(data['error'] == 1)
{
alert(data['message']);
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
return;
}
else
{
$("#billingModalProcessCardButton").attr("data-secret", data['clientSecret']);
var cardButton = document.getElementById('billingModalProcessCardButton');
var cardButtonClientSecret = cardButton.dataset.secret;
if(paymentType == 'existingCard')
{
stripe.confirmCardPayment(cardButtonClientSecret, {payment_method:data['paymentMethod'], setup_future_usage:"off_session"}).then(function(response)
{
if(response.error)
{
var errorMessage = response.error.message;
var errorType = response.error.type;
var errorParam = response.error.param;
var errorCode = response.error.code;
var errorDeclineCode = response.error.decline_code;
if(response.error.payment_intent && (errorDeclineCode == "pickup_card" || errorDeclineCode == "stolen_card"))
{
$.post("/api/user/stripeTrack", {id:response.error.payment_intent.id},
function(data)
{
}, "json");
}
$('#billingErrorMessageAlert').html(errorMessage);
$('#billingErrorMessageAlert').show();
$('.modal-content').scrollTop(-10);
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else
{
processOrderIntent(response['paymentIntent'] ? response['paymentIntent'] : response, 1, postFunction, orderInfo, data['intentType']);
}
});
}
else
{
if(data['intentType'] == "setup")
{
stripe.confirmCardSetup(cardButtonClientSecret, {payment_method: {card: cardNumberElement, billing_details: {name:name}}}).then(
function(response)
{
confirmStripeResponse(response['setupIntent'] ? response['setupIntent'] : response, postFunction, orderInfo, data['intentType']);
}
);
}
else
{
stripe.confirmCardPayment(cardButtonClientSecret, {payment_method: {card: cardNumberElement, billing_details: {name: name}}, save_payment_method:false, setup_future_usage:"off_session"}).then(
function(response)
{
confirmStripeResponse(response['paymentIntent'] ? response['paymentIntent'] : response, postFunction, orderInfo, data['intentType']);
}
);
}
}
}
}, "json");
}
function confirmStripeResponse(response, postFunction, orderInfo, intentType)
{
if(response.error)
{
var errorMessage = response.error.message;
var errorType = response.error.type;
var errorParam = response.error.param;
var errorCode = response.error.code;
var errorDeclineCode = response.error.decline_code;
if(response.error.payment_intent && (errorDeclineCode == "pickup_card" || errorDeclineCode == "stolen_card"))
{
$.post("/api/user/stripeTrack", {id:response.error.payment_intent.id},
function(data)
{
}, "json");
}
if(errorParam == "number")
{
$('#billingControlGroupCardNumber').addClass('error');
$('#billingCardNumber').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else if(errorParam == "exp_year" || errorParam == "exp_month")
{
$('#billingControlGroupCardExpiration').addClass('error');
$('#billingCardExpiration').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else if(errorParam == "cvc")
{
$('#billingControlGroupCardCvc').addClass('error');
$('#billingCardCvc').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else
{
$('#billingControlGroupCardNumber').addClass('error');
$('#billingCardNumber').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
$('#billingErrorMessageAlert').html(errorMessage);
$('#billingErrorMessageAlert').show();
$('.modal-content').scrollTop(-10);
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else
{
processOrderIntent(response, 0, postFunction, orderInfo, intentType);
}
}
function processOrderIntent(response, existing, postFunction, orderInfo, intentType)
{
if(true)
{
if(response.error)
{
var errorMessage = response.error.message;
var errorType = response.error.type;
var errorParam = response.error.param;
var errorCode = response.error.code;
var errorDeclineCode = response.error.decline_code;
if(response.error.payment_intent && (errorDeclineCode == "pickup_card" || errorDeclineCode == "stolen_card"))
{
$.post("/api/user/stripeTrack", {id:response.error.payment_intent.id},
function(data)
{
}, "json");
}
}
var pid = null;
var sid = null;
if(intentType == 'setup')
sid = response['id'];
else
pid = response['id'];
$.post("/api/user/savePaymentInfo", {pid:pid, sid:sid, existing:existing},
function(data)
{
if(data['error'] == 1)
{
var errorMessage = data['message'];
$('#billingErrorMessageAlert').html(errorMessage);
$('#billingErrorMessageAlert').show();
$('.modal-content').scrollTop(-10);
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
return;
}
else
{
// process order
$.post("/api/orders/process", {pid:pid, sid:sid, orderInfo:orderInfo},
function(data)
{
var error = data.error;
var message = data.message;
if(error == 0)
{
if(data.phoneVerify)
{
$('#orderVerificationReadySubmitButton').attr('data-order-id', data.orderId);
$('#orderVerificationPhoneCode').val('');
$('#orderVerificationPhoneCodeVerifiedContainer').hide();
$('#orderVerificationPhoneCodeContainer').show();
$('#orderVerificationPhoneCodeVerifiedContainer').attr('data-verfied', 'false');
$('#orderVerificationPhoneCodeContainer').hide();
$('#orderVerificationPhoneCodeSendContainer').show();
$('#modal_phoneVerify').modal('show');
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
return;
}
if(data['poll'] && data['id'])
{
pollOrderCount = 0;
$('#orderProcessingProgress').find('.progress-bar').css('width', '0%');
$('#orderProcessingProgress').find('.sr-only').html('0% Complete');
$('#orderProcessContainer').show();
pollOrderInterval = setInterval(function(){pollOrder(data['id'], data, postFunction, orderInfo);}, 2000);
return;
}
var orderId = data.orderId;
if(data.redir)
{
if(data['failed3DSecure'])
alert("We were unable to process your order.");
window.location.href = data.redir;
return;
}
if(postFunction)
{
$('#billingModal').modal('hide');
postFunction(orderId, '');
return;
}
if(orderInfo['productType'] == 'invoice')
window.location.href = '/checkout/invoice/'+orderInfo['invoiceId'];
else
window.location.href = '/checkout/success/'+orderId;
return;
}
else
{
if(data.redir)
{
alert(message);
window.location.href = data.redir;
return;
}
var errorCode = data.code;
if(errorCode == 'invalid_cvc' || errorCode == 'incorrect_cvc')
{
$('#billingControlGroupCardCvc').addClass('error');
$('#billingCardCvc').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else if(errorCode == 'incorrect_number' || errorCode == 'invalid_number')
{
$('#billingControlGroupCardNumber').addClass('error');
$('#billingCardNumber').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
else if(errorCode == 'invalid_expiry_month' || errorCode == 'invalid_expiry_year' || errorCode == 'expired_card')
{
$('#billingControlGroupCardExpiration').addClass('error');
$('#billingCardExpiration').focus();
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
}
showMessageModal('Something went wrong :(', '<div class="alert alert-error">'+message+'</div>');
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
if(data['refresh'] == 1)
{
alert(message);
window.location.reload();
}
else if(data['refresh'] == 2)
{
alert(message);
window.location = "/checkout/cart";
return;
}
return;
}
}, "json");
}
}, "json");
}
}
function processCartPaypalCheckout(paypalid)
{
processCartCheckout('paypal', paypalid);
}
function processCartStripeCheckoutId(checkoutId)
{
processCartCheckout('stripeCheckout', {checkoutId:checkoutId});
}
function processCartCheckout(type, typeId)
{
$('#bitcoinReceiver_button').show();
$('#bitcoinReceiver_loading').hide();
var exit = false;
$(".haveTmNotice").each(function( index )
{
if($(this).attr('data-tm-agree') != 'yes')
{
alert('You must agree to or remove all trademark notices.');
exit = true;
return;
}
});
if(exit)
return;
$.get("/api/user/getCart", {empty:true},
function(data)
{
if(!data['cart'] || !data['cart']['itemCount'] || data['cart']['itemCount'] < 1)
{
alert("Oh no! There doesn't appear to be any items in your cart.");
return;
}
$('#billingModalBillingChoosePaymentMethod').show();
$('#billingModalBillingPanels').show();
$('#billingModalNoCharge').hide();
$('#billingModalProcessCardButton').attr('data-no-charge', 'no');
$('#billingModalNoChargeExplain').hide();
$('#billingModalBitcoinPanel').show();
$('#billingModalPaypalPanel').show();
$('#billingModalAccountCreditPanel').show();
$('#billingModalNewCardForm').show();
$('.cardPanelTagline').html('');
$('.cardPanelTagline').hide();
$('#billingModalProcessCardButton').attr('data-sourceid', '');
$('#billingModalProcessCardButton').attr('data-clientSecret', '');
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
$('.control-group').removeClass('error');
$('#billingErrorMessageAlert').hide();
$('#billingErrorMessageAlert').html('');
$('.form-group').removeClass('error');
$('#billingModalProcessCardButton').attr('data-type', 'cart');
$('#billingModalHeader').html('Billing Information');
$('#billingModalProcessCardButton').attr('data-paypalid', '');
$('#billingModalPaypalPanelTagline').html('Yes, we take PayPal!');
elements = stripe.elements();
$('#billingModalPriceDisplay').html('<div class="cartPriceDisplayContainer"><label class="uppercase">amount being paid</label></div><div><span id="cartPriceDisplayPrice">$'+(parseInt(data['cart']['totalPrice']) / 100).toFixed(2)+'</span><span id="cartPriceDisplayViewCart"><a class="black" href="/checkout/cart">view cart</a></span></div>');
cardNumberElement = elements.create('cardNumber',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardNumberElement.mount('#billingCardNumber');
cardExpiryElement = elements.create('cardExpiry',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardExpiryElement.mount('#billingCardExpiration');
cardCvcElement = elements.create('cardCvc',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardCvcElement.mount('#billingCardCvc');
postalCodeElement = elements.create('postalCode',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
postalCodeElement.mount('#billingCardZip');
if(type == 'paypal' && typeId)
{
$('#billingModalPaypalPanelTagline').html('We are now processing your PayPal order. Prepare to be amazed!');
//$('#billingModalAgree').prop("checked", true);
$('#billingModalProcessCardButton').attr('data-paypalid', typeId);
$('#billingModal').modal('show');
processCard($('#billingModalProcessCardButton'));
}
else if(type == 'stripeCheckout' && typeId)
{
$('#billingModalNewCardForm').hide();
$('#billingModalStripeCheckoutPanelTagline').hide();
$('.cardPanelTagline').html('<center class="lead">We are now processing your order. Prepare to be awestruck!</center>');
$('.cardPanelTagline').show();
//$('#billingModalAgree').prop("checked", true);
$('#billingModalProcessCardButton').attr('data-checkoutId', typeId.checkoutId);
$('#billingModal').modal('show');
processCard($('#billingModalProcessCardButton'));
}
else
{
if(data['cart']['totalPrice'] <= 0)
{
if(data['NOCCREMOTEIP'] || data['NOCCCOUPONGROUP'])
{
$('#accountCredit').collapse('show');
$('#billingModalAccountCreditContainer').hide();
$('#billingModalBillingPanels').hide();
$('#billingModalBillingChoosePaymentMethod').hide();
$('#billingModalNoCharge').show();
$('#billingModalProcessCardButton').attr('data-no-charge', 'yes');
}
else
{
$('#billingModalNoChargeExplain').show();
$('#billingModalBillingButton_crypto').hide();
$('#billingModalBitcoinPanel').hide();
$('#billingModalPaypalPanel').hide();
$('#billingModalAccountCreditPanel').hide();
$('#billingModalBillingButton_accountCredit').hide();
$('#billingModalBillingButton_payPal').hide();
$('#billingModalBillingButton_bitcoin').hide();
$('#billingModalBillingButton_alipay').hide();
}
}
$('#billingModal').modal('show');
}
}, "json");
}
function processApplyCartCoupon()
{
var couponCode = jQuery.trim($('#cartCouponCode').val());
$(".modal-footer-loading").show();
$(".modal-footer-buttons").hide();
$.post("/api/user/applyCartCoupon", {couponCode: couponCode},
function(data)
{
if(data['status'] == '1')
{
window.location.href = window.location.href;
}
else
{
$(".modal-footer-loading").hide();
$(".modal-footer-buttons").show();
alert("We were unable to apply the coupon. Perhaps it's already been applied?");
}
}, "json");
}
function processEmptyCart()
{
if(confirm("Are you sure you want to remove all items from your cart?"))
{
$.post("/api/user/emptyCart", {empty:true},
function(data)
{
window.location.reload();
}, "json");
}
}
function removeCartItem(e)
{
var cartId = $(e).attr('data-cart-id');
var domainId = $(e).attr('data-domain-id');
var level = $(e).attr('data-level');
var domain = $(e).attr('data-domain');
var fromSearch = $(e).attr('data-from-search');
if(true)
{
var oldButtonHtml = $(e).html();
if($('#addCartButton'+domainId).length > 0)
{
$('#addCartButton'+domainId).html('<img src="/media/loading.sml.gif">');
if(fromSearch)
$('#addCartButton'+domainId).addClass('disabled');
else
$('#addCartButton'+domainId).addClass('disabled').addClass('btn-default').removeClass('btn-warning');
}
$.post("/api/user/removeCartItem", {cartId:cartId, level:level, domain:domain},
function(data)
{
if(data['status'] == '1')
{
if(typeof gtag !== 'undefined')
{
gtag('event', 'remove', {
'event_category': 'cart',
'event_label': domain,
'value': 1} );
}
$('#cartRow'+cartId).fadeOut(300, function()
{
$(this).remove();
if(isEmpty($('#cartRow'+domainId)))
{
$('#cartRow'+domainId).remove();
}
});
var cart = data['cart'];
if($('#addCartButton'+domainId).length > 0)
{
if(fromSearch)
{
$(e).removeClass('disabled').addClass('text-xiaofu').removeClass('searchRemoveIcon').addClass('searchAddIcon');
$(e).html('<span class="glyphicon glyphicon-plus"></span>').attr('onclick', 'accountDomainsSingleAction(this);');
$('#checkoutButton'+domainId).hide();
}
else
{
$('#addCartButton'+domainId).removeClass('disabled').removeClass('btn-default').addClass('btn-warning').removeClass('searchRemoveIcon').addClass('searchAddIcon');
$('#addCartButton'+domainId).html('Add To Cart').removeClass('btn-sm').addClass('btn-success').removeClass('btn-warning').attr('onclick', 'accountDomainsSingleAction(this);');
$('#checkoutButton'+domainId).hide();
}
}
updateCart(cart);
}
else
{
if(fromSearch)
{
$(e).removeClass('disabled').removeClass('text-xiaofu').removeClass('searchRemoveIcon').addClass('searchAddIcon');
$(e).html('<span class="glyphicon glyphicon-plus"></span>').attr('onclick', 'accountDomainsSingleAction(this);');
$('#checkoutButton'+domainId).hide();
}
else
{
$('#addCartButton'+domainId).removeClass('disabled').removeClass('btn-default').addClass('btn-warning').removeClass('searchRemoveIcon').addClass('searchAddIcon');
$('#addCartButton'+domainId).html('Add To Cart').removeClass('btn-sm').addClass('btn-success').removeClass('btn-warning').attr('onclick', 'accountDomainsSingleAction(this);');
$('#checkoutButton'+domainId).hide();
}
updateCart(cart);
}
if($('#addCartButton'+domainId).length == 0)
window.location.reload();
}, "json");
}
}
function isEmpty( el )
{
return !$.trim(el.html())
}
function updateCart(cart)
{
var totalPrice = cart['totalPrice'];
var itemCount = cart['itemCount'];
var items = cart['items'];
if(itemCount)
{
$('#cartTotalDisplay').html((parseInt(totalPrice) / 100).toFixed(2));
$('.cartMetaPrice').html('$'+(parseInt(totalPrice) / 100).toFixed(2));
$('#cartTab').slideDown();
}
else
{
$('.cartMetaPrice').html('$'+(parseInt(0) / 100).toFixed(2));
$('#cartTab').hide();
}
}
function redirToUrl(url)
{
window.location = url;
}
function accountDomainsBulkAction(e, csrfName, csrfHash, action, bulkId)
{
$('#bulkManagementButtonsContainer').hide();
$('#bulkManagementButtonsLoading').show();
if(!action)
action = jQuery.trim($(e).val()) || jQuery.trim($(e).attr('data-action'));
if(action == 'deleteAllHostingOnly')
{
var promptVal = prompt("This will delete all hosting only domains (domains not registered at xiaofu) from your account and cancel any services associated with them. This cannot be undone.\n\nEnter \"DELETE\" below and click the OK button to confirm. ");
if(promptVal == "DELETE")
{
$.post("/api/user/deleteAllHostingOnly", {empty:true},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
else if(promptVal != null)
{
alert("You did not enter the correct confirmation code.");
}
$(e)[0].selectedIndex = 0;
}
else if(action == 'csvNoAuth')
{
if(confirm("Please note that Renewal prices in CSV are estimates based on current renewal rates. Also, this might take a while."))
{
$.post("/api/user/getAccountCsvFile", {'noAuth':true},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
$(e)[0].selectedIndex = 0;
}
else if(action == 'csv')
{
if(confirm("Due to a change in how authorization codes are retrieved, clicking OK for this list will generate new authorization codes for most of your domains. We'll indicate in the CSV which auth codes were changed. Renewal prices in CSV are estimates based on current renewal rates. Also, this might take a while."))
{
$.post("/api/user/getAccountCsvFile", {empty:true},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
$(e)[0].selectedIndex = 0;
}
else if(action == 'afterniccsv')
{
if(confirm("This will download an Afternic formated CSV file of all your domains. Domains listed in the xiaofu Marketplace will have their price already set. You can set Afternic categories for each domain under the \"Details\" dropdown."))
{
$.post("/api/user/getAfternicCsvFile", {empty:true},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
$(e)[0].selectedIndex = 0;
}
else if(action == 'dnscsv')
{
if(confirm("This will download a CSV file of DNS records for domains in your account. This process typically finishes in about 15 minutes."))
{
$.post("/api/user/getAccountDnsCsvFile", {empty:true},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
$(e)[0].selectedIndex = 0;
}
else if(action == 'urlfcsv')
{
if(confirm("This will download a CSV file of URL forwarding settings for domains in your account. This process typically finishes in about 15 minutes."))
{
$.post("/api/user/getAccountUrlfCsvFile", {empty:true},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
}, "json");
}
$(e)[0].selectedIndex = 0;
}
else if(action == 'waxOn' || action == 'waxOff')
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(action == 'waxOn')
alert("Very good Danielson. Wax on, right hand. Wax off, left hand. Next you accomplish paint fence.");
else if(action == 'waxOff')
alert("Very good Danielson. Wax on, right hand. Wax off, left hand. Remember deal, no questions!");
}
else if(action == 'lockOn' || action == 'lockOff')
{
var prevHtml = $(e).html();
var domains = [];
if(bulkId)
{
}
else if($('[type="checkbox"].bulkActionCheckbox').length)
{
$('[type="checkbox"].bulkActionCheckbox').each(function()
{
if(this.checked)
{
domains.push($(this).val());
}
});
}
else if($('#bulkManagementDomains').length)
{
var domains = jQuery.trim($('#bulkManagementDomains').val());
domains = domains.split("\n");
$(e).html('<img alt="Loading..." src="/images/loading.small.gif">').prop("disabled",true);
$('#bulkDomainManagementSuccessMessage').hide();
}
$.post("/api/domains/enableDisableDomainLockBulk", {bulkId: bulkId, domains: domains, action:(action == 'lockOn' ? "on" : "off")},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
$('#bulkDomainManagementSuccessMessage').html(data['message']);
$('#bulkDomainManagementSuccessMessage').show();
}
$(e).html(prevHtml).prop("disabled", false);
window.scrollTo(0, 0);
}, "json");
}
else if(action == 'autoRenewOn' || action == 'autoRenewOff')
{
var prevHtml = $(e).html();
var domains = [];
if(bulkId)
{
}
else if($('[type="checkbox"].bulkActionCheckbox').length)
{
$('[type="checkbox"].bulkActionCheckbox').each(function()
{
if(this.checked)
{
domains.push($(this).val());
}
});
}
else if($('#bulkManagementDomains').length)
{
var domains = jQuery.trim($('#bulkManagementDomains').val());
domains = domains.split("\n");
$(e).html('<img alt="Loading..." src="/images/loading.small.gif">').prop("disabled",true);
}
$.post("/api/domains/enableDisableAutoRenewBulk", {bulkId: bulkId, domains: domains, action:(action == 'autoRenewOn' ? "on" : "off")},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
$('#bulkDomainManagementSuccessMessage').html(data['message']);
$('#bulkDomainManagementSuccessMessage').show();
}
$(e).html(prevHtml).prop("disabled", false);
window.scrollTo(0, 0);
}, "json");
}
else if(action == 'apiOn' || action == 'apiOff')
{
var prevHtml = $(e).html();
var domains = [];
if(bulkId)
{
}
else if($('[type="checkbox"].bulkActionCheckbox').length)
{
$('[type="checkbox"].bulkActionCheckbox').each(function()
{
if(this.checked)
{
domains.push($(this).val());
}
});
}
else if($('#bulkManagementDomains').length)
{
var domains = jQuery.trim($('#bulkManagementDomains').val());
domains = domains.split("\n");
$(e).html('<img alt="Loading..." src="/images/loading.small.gif">').prop("disabled",true);
}
$.post("/api/domains/apiAccessDomainToggleBulk", {bulkId: bulkId, domains: domains, action:(action == 'apiOn' ? "on" : "off")},
function(data)
{
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
$('#bulkDomainManagementSuccessMessage').html(data['message']);
$('#bulkDomainManagementSuccessMessage').show();
}
$(e).html(prevHtml).prop("disabled", false);
window.scrollTo(0, 0);
}, "json");
}
else if(action == 'bulk')
{
var domains = [];
$('[type="checkbox"].bulkActionCheckbox').each(function()
{
if(this.checked)
{
domains.push($(this).val());
}
});
if(domains.length > 0)
{
var form = "<form action='/account/bulk' method='POST' id='hiddenForm'><input type='hidden' name='domains' value='"+domains.join(",")+"'><input type='hidden' name='"+csrfTokenName+"' value='"+csrfTokenHash+"' /></form>";
$('#hiddenFormDiv').html(form);
$('#hiddenForm').submit();
}
else
{
window.location = '/account/bulk';
}
$(e)[0].selectedIndex = 0;
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
}
else if(action == 'label')
{
var domains = [];
$('[type="checkbox"].bulkActionCheckbox').each(function()
{
if(this.checked)
{
domains.push($(this).val());
}
});
createDomainLabels(null, domains);
$(e)[0].selectedIndex = 0;
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
}
else if(action == 'renewal')
{
var cart = [];
if($('[type="checkbox"].bulkActionCheckbox').length)
{
$('[type="checkbox"].bulkActionCheckbox').each(function()
{
if(this.checked)
{
var item = {type:'renewal', domain:$(this).val()};
cart.push(item);
}
});
}
else if($('#bulkManagementDomains').length)
{
var domains = jQuery.trim($('#bulkManagementDomains').val());
domains = domains.split("\n");
if(domains)
{
for(var i = 0; i < domains.length; i++)
{
var item = {type:'renewal', domain:domains[i]};
cart.push(item);
}
}
}
if(cart.length > 0)
{
$('.bulkActionButton').hide();
$('.bulkActionLoading').show();
$.post("/api/user/addToCart", {cart:cart},
function(data)
{
window.location = "/checkout/cart";
}, "json");
}
else
alert("You must select domains to manage by using the checkboxes to the left of them.");
$(e)[0].selectedIndex = 0;
$('#bulkManagementButtonsContainer').show();
$('#bulkManagementButtonsLoading').hide();
}
else
{
alert("That's an invalid bulk action.");
}
}
function disableApiKey(e)
{
var apiKey = jQuery.trim($(e).attr('data-api-key'));
if(!apiKey)
return;
if(confirm("Are you sure you want to disable this API key?"))
{
$.post("/api/user/disableApiKey", {apiKey:apiKey},
function(data)
{
window.location = window.location.protocol+"//"+window.location.hostname+""+window.location.pathname
}, "json");
}
}
function cancelGoogleApps(e)
{
$('#gappsError').hide();
var domain = jQuery.trim($(e).attr('data-domain'));
if(!confirm("Are you sure you want to cancel your Google Apps subscription?"))
{
return;
}
$("#cancelGoogleAppsLoading").show();
$("#cancelGoogleAppsButton").hide();
$.post("/api/domains/cancelGapps", {domain:domain},
function(data)
{
if(data['error'] == '1')
{
$('#gappsErrorMessage').html(data['message']);
$('#gappsError').show();
window.scrollTo(500, 0);
$("#cancelGoogleAppsLoading").hide();
$("#cancelGoogleAppsButton").show();
}
else
{
window.location.href = window.location.href;
}
}, "json");
}
function deleteGappsUser(e)
{
$('#gappsError').hide();
var domain = jQuery.trim($(e).attr('data-domain'));
var email = jQuery.trim($(e).attr('data-email'));
var id = jQuery.trim($(e).attr('data-id'));
if(!confirm("Are you sure you want to delete the Google Apps email address "+email+"?"))
{
return;
}
$("#deleteLoading_"+id).show();
$("#delete_"+id).hide();
$.post("/api/domains/deleteGappsUser", {domain:domain, email:email},
function(data)
{
if(data['error'] == '1')
{
$('#gappsErrorMessage').html(data['message']);
$('#gappsError').show();
window.scrollTo(500, 0);
$("#deleteLoading_"+id).hide();
$("#delete_"+id).show();
}
else
{
window.location.href = window.location.href;
}
}, "json");
}
function processGappsUser()
{
$('#gappsError').hide();
$('#gappsUserProcessButton').hide();
$('#gappsUserLoading').show();
var domain = jQuery.trim($('#gappsUserProcessButton').attr('data-domain'));
var user = jQuery.trim($('#gappsUserEmail').val());
var password = jQuery.trim($('#gappsUserPassword').val());
var passwordConfirm = jQuery.trim($('#gappsUserPasswordConfirm').val());
var firstName = jQuery.trim($('#gappsUserFirstName').val());
var lastName = jQuery.trim($('#gappsUserLastName').val());
$.post("/api/domains/createGappsUser", {domain:domain, user:user, password:password, passwordConfirm:passwordConfirm, firstName:firstName, lastName:lastName},
function(data)
{
if(data['error'] == '1')
{
$('#gappsErrorMessage').html(data['message']);
$('#gappsError').show();
window.scrollTo(500, 0);
$('#gappsUserLoading').hide();
$('#gappsUserProcessButton').show();
}
else
{
window.location.href = window.location.href;
}
}, "json");
}
function showMoreFree()
{
$('#showMoreFreeRow').slideUp(function()
{
$('.searchResultRowLocalTld').show();
});
}
function showMoreDomainOptions()
{
showingMoreDomainOptions = true;
$('#showMoreDomainOptionsRow').slideUp(function()
{
$('.weight_0').show();
});
}
function startBuildingCheckout(e)
{
var domain = jQuery.trim($(e).attr('data-domain')).toLowerCase();
var domainType = jQuery.trim($(e).attr('data-domain-type')).toLowerCase();
if(domainType == 'localtld')
{
var subdomain = jQuery.trim($(e).attr('data-subdomain')).toLowerCase();
showMessageModal("Site Builder", "By continuing we will redirect you to our site builder powered by Weebly. The free domain will be manageable from within your account.<br><br><small><input type=\"checkbox\" id=\"siteBuilderModalAgree\" name=\"siteBuilderModalAgree\"> I acknowledge that I have read and agree to the <a target=\"_new\" href=\"/legal/agreement/domain_name_registration_agreement\">Domain Name Registration Agreement</a>, <a target=\"_new\" href=\"/legal/agreement/product_terms_of_service\">Product Terms of Service</a>, and <a target=\"_new\" href=\"/legal/agreement/privacy_policy\">Privacy Policy</a>.</small><br><center><a id=\"siteBuilderModalLink\" class='btn btn-success' target='_new' onclick='checkSiteBuilderModalAgree(\""+domain+"\", \""+subdomain+"\");'>Let's Do This!</a></center>", false, "No Thanks");
}
else if(domainType == 'registration')
{
showMessageModal("Site Builder", "By continuing we will redirect you to our site builder powered by Weebly. To edit your site later, add additional services to your domain such as email, or change other settings you can always come back here and do so from within your account.<br><br><center><a class='btn btn-success' href='/sitebuilder/setup/"+domain+"' target='_new'>Let's Do This!</a></center>", false, "No Thanks");
}
}
function checkSiteBuilderModalAgree(domain, subdomain)
{
if($('#siteBuilderModalAgree').prop('checked'))
{
$('#siteBuilderModalLink').attr('href', '/sitebuilder/free/create/'+domain+'/'+subdomain+'?step=1');
window.location.href="/account/domains/"+domain+"";
return true;
}
else
{
alert("You must agree to our terms and conditions.");
return false;
}
}
function connectSiteBuilderDomain(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var newDomain = jQuery.trim($('#domainSelect').val());
if(!domain || !newDomain)
return;
if(!confirm("Are you sure you want to move "+domain+" to "+newDomain+"?"))
{
return;
}
$('#connectSiteButton').hide();
$('#connectSiteLoad').show();
$.post("/api/domains/connectSiteBuilderDomain", {domain:domain, newDomain:newDomain},
function(data)
{
if(data['error'] == '1')
{
$('#connectSiteLoad').hide();
$('#connectSiteButton').show();
alert(data['message']);
}
else
{
window.location.href = '/sitebuilder/upgrade/'+newDomain;
}
}, "json");
}
function processEditContacts()
{
$('#editContactsModal_loading').show();
$('#editContactsModal_button').hide();
$('.controlGroupEditContactsModal').removeClass('has-error');
$('.editContactsModalError').html('');
$('#editContactsModalErrorMessage').html('').hide();
$('#editContactsModalNoticeMessage').html('').hide();
var contacts = {'registrant':[], 'administrative':[], 'technical':[], 'billing':[]};
var domain = $('#editContactsModal').attr('data-domain');
var bulkId = $('#editContactsModal').attr('data-bulkId');
var individualy = $('#editContactsModalIndividualy').prop('checked');
var all = $('#editContactsModalAll').prop('checked');
var idDomain = domain.replace(/\./g, '_');
var bulk = domain == 'BULK';
var bulkDomains = null;
if(bulk && bulkId)
{
}
else if(bulk)
{
bulkDomains = jQuery.trim($('#bulkManagementDomains').val());
}
for(var type in contacts)
{
if(!individualy && type != 'registrant')
{
contacts[type] = contacts['registrant'];
continue;
}
var contact = {};
contact.firstName = jQuery.trim($('#editContactsModalFirstName_'+type).val());
contact.lastName = jQuery.trim($('#editContactsModalLastName_'+type).val());
contact.companyName = jQuery.trim($('#editContactsModalCompanyName_'+type).val());
contact.address1 = jQuery.trim($('#editContactsModalAddress1_'+type).val());
contact.address2 = jQuery.trim($('#editContactsModalAddress2_'+type).val());
contact.address3 = jQuery.trim($('#editContactsModalAddress3_'+type).val());
contact.city = jQuery.trim($('#editContactsModalCity_'+type).val());
contact.state = jQuery.trim($('#editContactsModalState_'+type).val());
contact.country = jQuery.trim($('#editContactsModalCountry_'+type).val());
contact.postal = jQuery.trim($('#editContactsModalPostal_'+type).val());
contact.email = jQuery.trim($('#editContactsModalEmail_'+type).val());
contact.emailConfirm = jQuery.trim($('#editContactsModalEmailConfirm_'+type).val());
contact.phone = cleanPhone(jQuery.trim($('#editContactsModalPhone_'+type).val()));
contact.phoneCC = jQuery.trim($('#editContactsModalPhoneCode_'+type).val());
contact.fax = cleanPhone(jQuery.trim($('#editContactsModalFax_'+type).val()));
contact.subType = jQuery.trim($('#editContactsModalSubType_'+type).val());
contact.level = domain ? 'domain' : 'account';
$('#editContactsModalExtra_'+type).find('select').each(function ()
{
if(!contact.extended) contact.extended = {};
contact.extended[$(this).attr('data-requirementname')] = this.value;
});
contacts[type] = contact;
}
$.post("/api/user/createContacts", {bulkId: bulkId, domain: domain, contacts: contacts, all: all, bulkDomains: bulkDomains, contactVerify: $('#editContactsModal').attr('contactVerify')},
function(data)
{
$('#editContactsModal').removeAttr('contactVerify');
var error = data['error'];
var message = data['message'];
var errorFields = data['errorFields'];
if(error == 0)
{
if(domain || all || bulk)
{
if(typeof getDomainManagementDetails === "function")
getDomainManagementDetails(domain, idDomain);
$("#domainManagementDetailsContent_dnsRecords_"+idDomain).find('.domainManagementDetailsContent_dnsRecords_content').html(($('#editDNSModalTable >tbody >tr').length / 2)+" records set");
showMessageModal('Success :)', '<div class="alert alert-success">'+message+'</div>');
$('#editContactsModal').modal('hide');
}
else
window.location.reload();
}
else if(data['notice'])
{
if(data['contactVerify'])
{
$('#editContactsModal').attr('contactVerify', 1);
if(data['contacts'])
{
for(var type in data['contacts'])
{
var contact = data['contacts'][type];
$('#editContactsModalAddress1_'+type).val(contact['address1']);
$('#editContactsModalAddress2_'+type).val(contact['address2']);
$('#editContactsModalCity_'+type).val(contact['city']);
$('#editContactsModalState_'+type).val(contact['state']);
$('#editContactsModalPostal_'+type).val(contact['postal']);
}
}
}
$('#editContactsModal_loading').hide();
$('#editContactsModal_button').show();
$('#editContactsModalNoticeMessage').html(message).show();
window.scrollTo(0, 0);
}
else
{
$('#editContactsModal_loading').hide();
$('#editContactsModal_button').show();
if(errorFields)
{
$('#editContactsModalErrorMessage').html(message).show();
for(var field in data['errorFields'])
{
var message = data['errorFields'][field];
$('#controlGroupEditContactsModal'+field).addClass('has-error');
$('#editContactsModalError'+field).html(message);
}
window.scrollTo(0, 0);
}
else
showMessageModal('Something went wrong :(', '<div class="alert alert-error">'+message+'</div>');
}
}, "json");
}
function processTransfer()
{
$('#transferProcessButton').hide();
$('#transferProcessLoading').show();
var domainList = [];
$("#transferListTable tr").each(function()
{
var domain = jQuery.trim($(this).find('.transferDomainCell').html().toLowerCase());
var authcode = jQuery.trim($(this).find('.transferAuthcodeCell').html());
var languageTag = null;
if($(this).find('.transferLanguageCell').length > 0)
languageTag = jQuery.trim($(this).find('.transferLanguageCell').val().toLowerCase());
domainList.push({domain:domain, authcode:authcode, languageTag:languageTag});
});
var noWhoisPrivacy = $('#transferProcessNoWhoisPrivacy').prop('checked') ? 'true' : null;
var noAutoRenew = $('#transferProcessNoAutoRenew').prop('checked') ? 'true' : null;
if(domainList.length)
{
$.post("/api/transfer/initialize", {domainList:domainList, noWhoisPrivacy:noWhoisPrivacy, noAutoRenew:noAutoRenew},
function(data)
{
if(data['error'] == '1')
{
$('#transferProcessLoading').hide();
$('#transferProcessButton').show();
alert('Uh Oh! '+data['message']);
return;
}
else
{
window.location.href = "/checkout/cart";
}
}, "json");
}
}
function checkTransfer()
{
$('#transferAlert').hide();
$('#transferAlert').html('');
var domains = [];
$('.transferButton').hide();
$('.transferLoading').show();
if($('#bulkTransferContainer').css('display') != 'none')
{
// bulk form
var list = jQuery.trim($("#transferBulkInput").val());
if(!list)
{
$('.transferLoading').hide();
$('.transferButton').show();
return;
}
list = list.split("\n");
for(var i = 0; i < list.length; i++)
{
var line = list[i];
var firstCommaPos = -1;
var domain = '';
var authCode = '';
if(line.indexOf("\t") > -1)
{
firstCommaPos = line.indexOf("\t");
domain = jQuery.trim(line.substring(0, firstCommaPos));
authCode = jQuery.trim(line.substring(firstCommaPos+1));
}
else if(line.indexOf(" ") > -1)
{
firstCommaPos = line.indexOf(" ");
domain = jQuery.trim(line.substring(0, firstCommaPos));
authCode = jQuery.trim(line.substring(firstCommaPos+1));
}
else if(line.indexOf(",") > -1 || line.indexOf(",") > -1)
{
firstCommaPos = line.indexOf(",");
domain = jQuery.trim(line.substring(0, firstCommaPos));
authCode = jQuery.trim(line.substring(firstCommaPos+1));
}
if(!domain || !authCode)
{
alert("Please provide one domain name and auth code per line, separated by a comma, tab, or space. (002)");
$('.transferLoading').hide();
$('.transferButton').show();
return;
}
domains.push({'domain':domain, 'authCode':authCode});
}
}
else
{
// single form
var domain = jQuery.trim($('#transferDomain').val()).toLowerCase();
var authCode = jQuery.trim($('#transferAuthCode').val());
if(!domain || !authCode)
{
alert("You must provide both a domain name and an auth code.");
$('.transferLoading').hide();
$('.transferButton').show();
return;
}
domains.push({'domain':domain, 'authCode':authCode});
}
$.post("/api/transfer/check", {domains:domains},
function(data)
{
if(data['error'] == '1')
{
$('.transferLoading').hide();
$('.transferButton').show();
alert(data['message']);
return;
}
for(var domain in data)
{
var item = data[domain];
var error = item['error']
var message = item['message'];
var authPw = item['authPw'];
if(error == '1')
{
$('#transferAlert').show();
$('#transferAlert').append("<strong>"+domain+"</strong>: "+message+"<br>");
}
else if(authPw)
{
var alreadyListed = false;
$(".transferDomainCell").filter(function()
{
if($(this).text() === domain)
alreadyListed = true;
});
if(alreadyListed)
{
}
else
{
$('#transferDomain').val('');
$('#transferAuthCode').val('');
$('#transferBulkInput').val('');
$('#transferListContainer').show();
var row = "<tr><td class='transferDomainCell'>"+domain+"</td><td class='transferIDN' style='display:"+(item['idnLanguages'] ? '' : 'none')+";'>";
if(item['idnLanguages'])
{
$(".transferIDN").show();
row += "<select class='form-control transferLanguageCell'>";
for(var languageString in item['idnLanguages'])
{
row += "<option value='"+item['idnLanguages'][languageString]+"'>"+languageString;
}
row += "</select>";
}
row += "</td><td class='transferAuthcodeCell'>"+HtmlEncode(authPw)+"</td><td style='text-align:center;'><span class='glyphicon glyphicon-remove pointer' role='button' aria-label='remove' onclick='$(this).parent().parent().remove();'></span></td></tr>";
$("#transferListTable").prepend(row);
}
}
$("#transferListContainer").animate({ scrollTop: 0 }, "slow");
$('.transferLoading').hide();
$('.transferButton').show();
}
}, "json");
}
function HtmlEncode(s)
{
var el = document.createElement("div");
el.innerText = el.textContent = s;
s = el.innerHTML;
return s;
}
function approvePendingTransfer(e)
{
var domain = $(e).attr('data-domain');
var op = $(e).attr('data-op');
if(!confirm("Are you sure you want to "+op+" the transfer out for this domain?"))
return;
$('#approvePendingTransferButtonContainer').hide();
$('#approvePendingTransferButtonLoadingImage').show();
$.post("/api/domains/approvePendingTransfer", {domain:domain, op:op},
function(data)
{
alert(data['message']);
if(data['error'] == '1')
{
$('#approvePendingTransferButtonContainer').show();
$('#approvePendingTransferButtonLoadingImage').hide();
}
else
{
$('#approvePendingTransferMessageContainer').hide();
location.reload();
}
}, "json");
}
function swapEditContactsModalTabs()
{
var individualy = $('#editContactsModalIndividualy').prop('checked');
if(individualy)
{
$('#editContactsModalTabs').show();
$('#editContactsModal').scrollTop(0);
}
else
{
$('#editContactsModalTabs').hide();
$('#editContactsModal').scrollTop(0);
}
}
function deleteEmailForward(e)
{
if(confirm("Are you sure you want to delete this email forward?"))
{
$(e).addClass('icon-white');
$('#emailHostingAlert').hide();
$('#emailHostingAlert').html('');
var domain = jQuery.trim($(e).attr('data-domain')).toLowerCase();
var local = jQuery.trim($(e).attr('data-local')).toLowerCase();
var remote = jQuery.trim($(e).attr('data-remote')).toLowerCase();
$.post("/api/domains/deleteEmailForward", {domain:domain, local:local, remote:remote},
function(data)
{
if(data['error'] == '1')
{
$('#emailHostingAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#emailHostingAlert').show();
window.scrollTo(0, 0);
}
else
{
location.reload();
return;
}
$(e).removeClass('icon-white');
}, "json");
}
else
{
return;
}
}
function processEmailForwarding(e)
{
var domain = jQuery.trim($(e).attr('data-domain')).toLowerCase();
var local = jQuery.trim($("#local").val()).toLowerCase();
var remote = jQuery.trim($("#remote").val()).toLowerCase();
$('#emailHostingAlert').hide();
$('#emailForwardingLoad').show();
$('#emailForwardingSubmit').hide();
$.post("/api/domains/addEmailForward", {domain:domain, local:local, remote:remote},
function(data)
{
if(data['error'] == '1')
{
$('#emailHostingAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#emailHostingAlert').show();
window.scrollTo(0, 0);
}
else
{
location.reload();
return;
}
$('#emailForwardingLoad').hide();
$('#emailForwardingSubmit').show();
}, "json");
}
function addDomainDNS()
{
var dnsRecord = {};
dnsRecord['domain'] = jQuery.trim($('#editDNSModal_domain').html()).toLowerCase();
dnsRecord['type'] = jQuery.trim($('#editDNSModal_type').val()).toUpperCase();
dnsRecord['host'] = jQuery.trim($('#editDNSModal_host').val()).toLowerCase();
dnsRecord['ttl'] = jQuery.trim($('#editDNSModal_ttl').val()).toLowerCase();
dnsRecord['priority'] = jQuery.trim($('#editDNSModal_priority').val()).toLowerCase();
dnsRecord['notes'] = jQuery.trim($('#editDNSModal_notes').val());
if(dnsRecord['type'] == 'NS')
{
if(!confirm("You almost certainly do not want to add an NS record. To change your domain's nameservers, edit “Authoritative Nameservers” in Domain Management instead.\n\nIf you know what you're doing please carry on. Otherwise, are you sure you want to continue?"))
{
return;
}
}
$('#editDNSModalAlert').hide();
$('#editDNSModalAlert').html('');
$('#editDNSModal_button').hide();
$('#editDNSModal_loading').show();
var idDomain = dnsRecord['domain'].replace(/\./g, '_');
if(dnsRecord['type'] == 'TXT')
dnsRecord['answer'] = jQuery.trim($('#editDNSModal_answer_long').val());
else
dnsRecord['answer'] = jQuery.trim($('#editDNSModal_answer').val()).toLowerCase();
if(dnsRecord['host'] == '@')
dnsRecord['host'] = '';
var host = dnsRecord['host'] ? dnsRecord['host']+'.'+dnsRecord['domain'] : dnsRecord['domain'];
var bulk = dnsRecord['domain'] == 'bulk';
var bulkDomains = null;
if(bulk)
{
bulkDomains = jQuery.trim($('#bulkManagementDomains').val());
}
$.post("/api/domains/addDomainDNS", {dnsRecord: dnsRecord, bulkDomains: bulkDomains},
function(data)
{
if(data['error'] == '1')
{
$('#editDNSModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editDNSModalAlert').show();
$('#editDNSModal').scrollTop(0);
}
else
{
if(bulk)
{
showMessageModal('Success :)', '<div class="alert alert-success">'+data['message']+'</div>');
$('#editDNSModal').modal('hide');
return;
}
var counter = getUniqId()+($('#editDNSModalTable tbody tr').length + 1);
var domain = dnsRecord['domain'];
$('#editDNSModal_notes').val('');
$('#editDNSModal_host').val('');
$('#editDNSModal_answer').val('');
$('#editDNSModal_answer_long').val('').html('');
var appendString = '<tr class="editDNSSortItem" data-type="'+dnsRecord['type']+'" data-host="'+htmlentities(data['host'])+'" data-answer="'+htmlentities(data['answer'])+'" data-ttl="'+dnsRecord['ttl']+'" data-priority="'+htmlentities(dnsRecord['priority'])+'" data-dns-index="'+counter+'"><td id="dnsRecordType'+counter+'">'+dnsRecord['type']+'</td><td style="word-wrap:break-word; max-width:200px;" id="dnsRecordName'+counter+'">'+htmlentities(data['host'])+'</td><td style="word-wrap:break-word; max-width:200px;" id="dnsRecordContent'+counter+'">'+htmlentities(data['answer'])+'</td><td id="dnsRecordTtl'+counter+'">'+dnsRecord['ttl']+'</td><td id="dnsRecordPrio'+counter+'">'+htmlentities(dnsRecord['priority'])+'</td>\
<td>\
<div id="dnsOptionsContainer'+counter+'">\
<span class="glyphicon glyphicon-pencil pointer editDNSDomainIcon" role="button" aria-label="edit dns record" data-id="'+data['id']+'" data-index="'+counter+'" data-dns-type="'+dnsRecord['type']+'" data-dns-domain="'+domain+'" data-dns-host="'+htmlentities(data['host'])+'" data-dns-answer="'+htmlentities(data['answer'])+'" onkeypress="editDomainDNS(this);" onclick="editDomainDNS(this);"></span>\
<span class="glyphicon glyphicon-trash pointer deleteDNSDomainIcon" role="button" aria-label="delete dns record" data-id="'+data['id']+'" data-index="'+counter+'" data-dns-type="'+dnsRecord['type']+'" data-dns-domain="'+domain+'" data-dns-host="'+htmlentities(data['host'])+'" data-dns-answer="'+htmlentities(data['answer'])+'" onkeypress="deleteDomainDNS(this);" onclick="deleteDomainDNS(this);"></span>\
</div>\
<div id="dnsEditContainer'+counter+'" style="display:none;">\
<span tabindex="0" data-id="'+data['id']+'" data-domain="'+domain+'" data-index="'+counter+'" class="glyphicon glyphicon-floppy-disk pointer" onclick="dnsEditSave(this);" role="button" aria-label="save dns edit"></span>\
<span tabindex="0" data-index="'+counter+'" class="glyphicon glyphicon-backward pointer" onkeypress="dnsEditCancel(this);" onclick="dnsEditCancel(this);" role="button" aria-label="cancel dns edit"></span>\
</div>\
<img id="dnsEditLoading'+counter+'" alt="Loading..." src="/images/loading.small.gif" class="" style="margin-top:30px; display:none;">\
</td></tr>';
appendString += '<tr style="'+(dnsRecord['notes'] && dnsRecord['notes'].length > 0 ? '' : 'display:none;')+'" class="editDNSSortItem editDNSNotes" data-type="'+dnsRecord['type']+'" data-host="'+htmlentities(data['host'])+'" data-answer="'+htmlentities(data['answer'])+'" data-ttl="'+dnsRecord['ttl']+'" data-priority="'+htmlentities(dnsRecord['priority'])+'" data-dns-index="'+counter+'"><td><small class="text-muted">notes</small></td><td colspan=5><small id="dnsRecordNotes'+counter+'" class="text-muted">'+htmlEntities(dnsRecord['notes'])+'</small></td></tr>';
$('#editDNSModalTable > tbody:last').append(appendString);
$('.quickConnectManagementIcon[data-domain="'+dnsRecord['domain']+'"]').removeClass('glyphproOn');
$("#domainManagementDetailsContent_dnsRecords_"+idDomain).find('.domainManagementDetailsContent_dnsRecords_content').html(($('#editDNSModalTable >tbody >tr').length / 2)+" records set");
tinysort('.editDNSSortItem', {attr:lastDnsManagementSort_attrName, order:lastDnsManagementSort_sortOrder});
}
$('#editDNSModal_loading').hide();
$('#editDNSModal_button').show();
}, "json");
}
function getUniqId()
{
return '_' + Math.random().toString(36).substr(2, 9);
}
function enableCloudflare(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var idDomain = jQuery.trim($(e).attr('data-domain-id'));
if(!confirm("Are you sure you want to migrate your xiaofu DNS to Cloudflare? You will still manage your DNS records via xiaofu but Cloudflare will provide the DNS service. A full migration due to DNS cacheing may take up to 48 hours. While we anticipate no downtime during this process, some downtime may occur in rare instances."))
{
return;
}
$("#domainManagementDetailsContent_loading_cloudflare_"+idDomain).show();
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).hide();
$.post("/api/domains/enableCloudflare", {domain: domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
nameservers = data['nameservers'];
$("#domainManagementCloudflareIcon_"+idDomain).show();
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).attr('onclick', '');
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).unbind('click');
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).attr('onclick', 'disableCloudflare(this);');
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).html('Disable');
$("#domainManagementDetailsContent_badge_cloudflare_"+idDomain).show();
if(nameservers)
$("#domainManagementDetailsContent_nameservers_"+idDomain).find('.domainManagementDetailsContent_nameservers_content').html(nameservers.join("<br>"));
else
$("#domainManagementDetailsContent_nameservers_"+idDomain).find('.domainManagementDetailsContent_nameservers_content').html("");
}
$("#domainManagementDetailsContent_loading_cloudflare_"+idDomain).hide();
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).show();
}, "json");
}
function disableCloudflare(e)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var idDomain = jQuery.trim($(e).attr('data-domain-id'));
if(!confirm("Are you sure you want to disable your DNS on Cloudflare and move back to your previous name servers? A full migration due to DNS cacheing may take up to 48 hours. While we anticipate no downtime during this process, some downtime may occur in rare instances."))
{
return;
}
$("#domainManagementDetailsContent_loading_cloudflare_"+idDomain).show();
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).hide();
$.post("/api/domains/disableCloudflare", {domain: domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
nameservers = data['nameservers'];
$("#domainManagementCloudflareIcon_"+idDomain).hide();
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).attr('onclick', '');
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).unbind('click');
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).attr('onclick', 'enableCloudflare(this);');
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).html('Enable');
$("#domainManagementDetailsContent_badge_cloudflare_"+idDomain).hide();
if(nameservers)
$("#domainManagementDetailsContent_nameservers_"+idDomain).find('.domainManagementDetailsContent_nameservers_content').html(nameservers.join("<br>"));
else
$("#domainManagementDetailsContent_nameservers_"+idDomain).find('.domainManagementDetailsContent_nameservers_content').html("");
}
$("#domainManagementDetailsContent_loading_cloudflare_"+idDomain).hide();
$("#domainManagementDetailsContent_edit_cloudflare_"+idDomain).show();
}, "json");
}
function deleteUrlForwardingItem(e)
{
if(!confirm("Are you sure you want to delete this URL forwarding record?"))
{
return;
}
var id = jQuery.trim($(e).attr('data-id'));
var domain = jQuery.trim($(e).attr('data-domain'));
var idDomain = domain.replace(/\./g, '_');
$("#editUrlForwardingCurrentRowDeleteLoading_"+id).show();
$("#editUrlForwardingCurrentRowDelete_"+id).hide();
$.post("/api/domains/deleteDomainForwarding", {id:id, domain:domain},
function(data)
{
if(data['error'] == '1')
{
alert(data['message']);
}
else
{
$("#editUrlForwardingCurrentRow_"+id).remove();
}
$("#editUrlForwardingCurrentRowDeleteLoading_"+id).hide();
$("#editUrlForwardingCurrentRowDelete_"+id).show();
}, "json");
}
function viewUrlForwarding(domain, bulkId)
{
$('#editUrlForwardingNsConfigure').hide();
$('#editUrlForwardingModalAlert').hide();
$('#editUrlForwardingModalAlert').html('');
$('#editUrlForwardingModal_loading').show();
$('#editUrlForwardingModal_button').hide();
$('#editUrlForwardingModal').attr('data-domain', domain);
$('#editUrlForwardingModal').attr('data-bulkId', bulkId);
$('.editUrlForwardingDomainContainer').html(domain);
$('input[name=redirectType]').prop('checked', false);
$('#includePath').prop('checked', false);
$('#forwardTo').val('');
$("#editUrlForwardingCurrentTbody").html('');
$('#redirectType307').prop('checked', true);
if(domain == 'BULK')
{
$('#editUrlForwardingModal_loading').hide();
$('#editUrlForwardingModal_button').show();
$('#editUrlForwardingCurrentContainer').hide();
}
else if(domain)
{
$('#editUrlForwardingCurrentContainer').show();
$.post("/api/domains/getDomainForwarding", {domain: domain, display: 1},
function(data)
{
var forwarding = data['forwarding'];
var urlForwarding = forwarding['urlForwarding'];
if(urlForwarding)
{
for(var i = 0; i < urlForwarding.length; i++)
{
var urlForwardingItem = urlForwarding[i];
var html = "<tr id='editUrlForwardingCurrentRow_"+urlForwardingItem['id']+"' style='font-size:smaller;'><td>"+urlForwardingItem['hostname']+"</td><td>"+urlForwardingItem['location']+"</td><td>"+urlForwardingItem['type']+"</td><td>"+urlForwardingItem['include_path']+"</td><td>"+urlForwardingItem['wildcard']+"</td><td><img id='editUrlForwardingCurrentRowDeleteLoading_"+urlForwardingItem['id']+"' alt='Loading...' src='/images/loading.small.gif' class='' style='display:none;'><i id='editUrlForwardingCurrentRowDelete_"+urlForwardingItem['id']+"' class='fas fa-trash text-xiaofu pointer' data-id='"+urlForwardingItem['id']+"' data-domain='"+urlForwardingItem['domain']+"' onclick='deleteUrlForwardingItem(this);'></i></td></tr>";
$("#editUrlForwardingCurrentTbody").append(html);
}
}
if(!forwarding['nsConfigured'])
{
if(forwarding['notLocal'] == "1")
{
$(".localDomainOnly").hide();
$(".externalDomainOnly").show();
}
else
{
$(".localDomainOnly").show();
$(".externalDomainOnly").hide();
}
$('#editUrlForwardingNsConfigure').find('#configureNsButtonsUpdate').attr('data-domain', domain);
$('#editUrlForwardingNsConfigure').show();
$('.configureNsAlert').show();
}
var hasError = false;
if(forwarding['dnsSet'])
{
$('#editUrlForwardingModalAlert').append((hasError ? '<br><br>' : '')+'<p><strong>WARNING:</strong> Your domain already has DNS records for another service. Enabling URL forwarding may disable this service and enable URL forwarding.</p>');
$('#editUrlForwardingModalAlert').show();
hasError = true;
}
$('#editUrlForwardingModal_loading').hide();
$('#editUrlForwardingModal_button').show();
}, "json");
}
$('#editUrlForwardingModal').modal('show');
$('#editUrlForwardingModal').scrollTop(0);
$('#editUrlForwardingModalBody').scrollTop(0);
$('#forwardTo').focus();
}
function processEditUrlForwarding()
{
var domain = jQuery.trim($('#editUrlForwardingModal').attr('data-domain'));
var bulkId = jQuery.trim($('#editUrlForwardingModal').attr('data-bulkId'));
var noDeleteDNSURLF = $('#noDeleteDNSURLF').prop('checked');
var includePath = $('#includePath').prop('checked');
var redirectType = jQuery.trim($("input[type='radio'][name='redirectType']:checked").val());
var wildcard = $('#editUrlForwardingWildcard').prop('checked');
var subDomain = jQuery.trim($('#editUrlForwardingSubdomain').val());
var forwardTo = jQuery.trim($('#forwardTo').val());
var multiLocation = jQuery.trim($('#multiLocation').val());
if(!domain)
{
domain = 'BULK';
}
if(wildcard)
wildcard = "wildcard";
else
wildcard = "subdomain";
$('#editUrlForwardingModal_loading').show();
$('#editUrlForwardingModal_button').hide();
var bulkDomains = null;
if(domain == 'BULK')
{
bulkDomains = jQuery.trim($('#bulkManagementDomains').val());
if(!bulkDomains && !bulkId)
{
alert("Looks like you're performing a bulk edit but didn't provide any domains.");
return;
}
if(multiLocation)
{
domain = "BULKMULTI";
wildcard = 'wildcard';
}
}
$.post("/api/domains/updateDomainForwarding", {bulkId: bulkId, subDomain: subDomain, wildcard: wildcard, domain: domain, forwardTo: forwardTo, redirectType: redirectType, bulkDomains: bulkDomains, noDeleteDNSURLF: noDeleteDNSURLF, includePath:includePath},
function(data)
{
if(data['error'] == "1")
{
$('#editUrlForwardingModal_loading').hide();
$('#editUrlForwardingModal_button').show();
$('#editUrlForwardingModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editUrlForwardingModalAlert').show();
}
else
{
$("#editUrlForwardingSubdomain").val('');
if(domain == 'BULK' || domain == 'BULKMULTI')
{
$('#editUrlForwardingModal_loading').hide();
$('#editUrlForwardingModal_button').show();
showMessageModal('Success :)', '<div class="alert alert-success">'+data['message']+'</div>');
$('#editUrlForwardingModal').modal('hide');
$("#bulkManagementDomains").val('');
return;
}
$('.quickConnectManagementIcon[data-domain="'+domain+'"]').removeClass('glyphproOn');
//$('#editUrlForwardingModal').modal('hide');
viewUrlForwarding(domain);
}
}, "json");
}
function viewNameservers(domain, bulkId)
{
$('#editNameserversModalAll').prop('checked', false);
$('#editNameserversModalNameservers').html('');
$('#editNameserversModalNameservers').val('');
$('#editNameserversModalAlert').hide();
$('#editNameserversModalAlert').html('');
$('#editNameserversModal_loading').show();
$('#editNameserversModal_button').hide();
$('#editNameserversModal').attr('data-domain', domain);
$('#editNameserversModal').attr('data-bulkId', bulkId);
$("#editNameserversModal_eu_de_Info").hide();
if(domain == 'BULK')
{
$('#editNameserversModal').find('#prefillDefaultNs').show();
$('#editNameserversModalAllContainer').hide();
$('#editNameserversModal_loading').hide();
$('#editNameserversModal_button').show();
$('#editNameserversModal').modal('show');
$('#editNameserversModal').attr('data-bulkId', bulkId);
}
else if(domain)
{
$.post("/api/domains/getDomainNameservers", {domain: domain},
function(data)
{
if(data['error'] == "1")
{
alert(data['message']);
return;
}
var nameservers = data['nameservers'];
var nameserverIps = data['nameserverIps'];
var bodyHtml = '';
if(!data['nsConfigured'])
$('#editNameserversModal').find('#prefillDefaultNs').show();
else
$('#editNameserversModal').find('#prefillDefaultNs').hide();
if(!nameservers)
{
$('#editNameserversModalNameservers').html('');
$('#editNameserversModalNameservers').val('');
}
else
{
for(var i = 0; i < nameservers.length; i++)
{
if(nameserverIps && nameserverIps[nameservers[i]])
{
var ips = nameserverIps[nameservers[i]];
for(var j = 0; j < ips.length; j++)
{
nameservers[i] += "|"+ips[j];
}
}
bodyHtml += nameservers[i]+'\n';
}
$('#editNameserversModalNameservers').html(bodyHtml);
$('#editNameserversModalNameservers').val(bodyHtml);
}
$('#editNameserversModal_loading').hide();
$('#editNameserversModal_button').show();
if(data['tld'] == 'eu' || data['tld'] == 'de')
{
$("#editNameserversModal_eu_de_Info").show();
}
$('#editNameserversModal').modal('show');
}, "json");
}
}
function processEditNameservers()
{
$('#editNameserversModalAlert').hide();
$('#editNameserversModalAlert').html('');
$('#editNameserversModal_loading').show();
$('#editNameserversModal_button').hide();
var all = $('#editNameserversModalAll').prop('checked');
var nameservers = jQuery.trim($('#editNameserversModalNameservers').val());
var domain = $('#editNameserversModal').attr('data-domain');
var bulkId = $('#editNameserversModal').attr('data-bulkId');
var idDomain = domain.replace(/\./g, '_');
var bulkDomains = null;
if(domain == 'BULK')
{
bulkDomains = jQuery.trim($('#bulkManagementDomains').val());
}
$.post("/api/domains/updateDomainNameservers", {bulkId: bulkId, domain: domain, nameservers: nameservers, all: all, bulkDomains: bulkDomains},
function(data)
{
if(data['error'] == 1)
{
var message = '';
for(var i = 0; i < data['message'].length; i++)
{
var errorMessage = data['message'][i];
message += "<div>"+errorMessage+"</div>";
}
$('#editNameserversModalAlert').html(message);
$('#editNameserversModalAlert').show();
$('#editNameserversModal_loading').hide();
$('#editNameserversModal_button').show();
}
else
{
if(data['dnssecRemovedRegistry'])
{
$('#domainManagementDetailsContent_dnssec_'+idDomain+' .domainManagementDetailsContent_dnssec_content').html("0 records");
}
if(data['dnssecRemovedCloudflare'])
{
$('#domainManagementDetailsContentRow_dnssec_cloudflare_'+idDomain).hide();
}
$("#domainManagementDetailsContent_nameservers_"+idDomain).find('.domainManagementDetailsContent_nameservers_content').html(nameservers.split(/,?\s+/).join("<br>"));
if(domain == 'BULK')
{
showMessageModal('Success :)', '<div class="alert alert-success">'+data['message']+'</div>');
$('#editNameserversModal').modal('hide');
return;
}
if(!data['defaultNs'])
$('.quickConnectManagementIcon[data-domain="'+domain+'"]').removeClass('glyphproOn');
$('#editNameserversModal').modal('hide');
}
}, "json");
}
function changeVideoPlayer(e)
{
var v = $(e).attr('data-v');
if(v)
{
$('#videoPlayer').attr('src', 'https://www.youtube.com/embed/'+v);
$('#howtoVideoDate').html($(e).find('.splashVideosDate').html());
$('#howtoVideoTitle').html($(e).find('.splashVideosTitle').html());
}
}
function focusSearch(placeHolder)
{
$('#domainSearchInput').attr('placeholder', placeHolder);
$('#domainSearchInput').focus();
scrollToAnchor('search');
}
function scrollToAnchor(aid)
{
var aTag = $("a[name='"+ aid +"']");
if(aTag && aTag.offset())
$('html,body').animate({scrollTop: aTag.offset().top},'fast');
}
function domainBuyNow(e)
{
var type = jQuery.trim($(e).attr('data-type'));
$.post("/api/user/isLoggedIn", {empty:true},
function(data)
{
var accountId = data.accountId;
var contacts = data.contacts;
var accountCredit = data.accountCredit;
if(!accountId)
{
// redirect to login page
window.location.href = '/account/login?redir=/checkout/billing/'+domain;
}
else if(accountId && (!contacts || contacts.length == 0))
{
alert("Uh oh. It looks like your account has no contacts associated with it. Please visit your account page and add contacts under the \"Default Contacts\" section and try placing your order again.");
return;
}
else
{
if(type == 'transfer')
{
var processCode = jQuery.trim($(e).attr('data-process-code'));
var transferId = jQuery.trim($(e).attr('data-id'));
$.post("/api/domains/getTransfer", {transferId: transferId, processCode: processCode},
function(data)
{
if(data['error'] == '1')
{
showMessageModal('Error :(', data['message']);
return;
}
var price = 0;
for(var i = 0; i < data['domains'].length; i++)
{
price += parseFloat(data['domains'][i]['price']);
}
$('#billingModal').attr('data-type', 'transfer');
if(parseInt(accountCredit))
$('#billingModaAccountCreditValue').html(parseInt(accountCredit) / 100);
else
{
$('#billingModaAccountCreditValue').html(0);
$('#billingModalAccountCreditPanel').hide();
}
if(plan)
{
$('#billingModalAccountCreditPanel').hide();
$('#billingModalProcessCardButton').attr('data-plan', plan);
}
$('#billingModalProcessCardButton').attr('data-type', 'transfer');
var transferInfo = {};
transferInfo.price = price;
transferInfo.domain = 'Transfer ID: '+transferId;
transferInfo.transferId = transferId;
transferInfo.processCode = processCode;
showBuyNowBillingModal(transferInfo);
}, "json");
}
else if(type == 'whoisPrivacy' || type == 'gapps' || type == 'sitebuilder' || type == 'standAlone' || type == 'packages' || type == 'renewal' || type == 'registration' || type == 'preregistration' || type == 'eap')
{
var domain = jQuery.trim($(e).attr('data-domain')).toLowerCase();
var planId = jQuery.trim($(e).attr('data-planid'));
var cnisId = jQuery.trim($(e).attr('data-cnisId'));
var closeWindow = jQuery.trim($(e).attr('data-close-window'));
var whoisPrivacy = $('#addWhoisPrivacy').prop('checked');
var whoisPrivacyPrice = jQuery.trim($('#addWhoisPrivacy').attr('data-whois-privacy-price'));
if(type == 'whoisPrivacy')
{
whoisPrivacy = true;
whoisPrivacyPrice = jQuery.trim($(e).attr('data-whois-privacy-price'));
}
buyNowPostLogin = domain;
var plan = '';
if(type == 'standAlone' || type == 'packages' || type == 'sitebuilder' || type == 'gapps')
{
plan = planId;
}
$.post("/api/domains/getDomainPricing", {domain:domain, type:type, plan:plan},
function(data)
{
if(data['error'])
{
showMessageModal('Error :(', data['message']);
return;
}
var price = data['price'];
var discount = data['discount'];
var pricePerYear = data['pricePerYear'];
var minYears = data['minYears'];
var maxYears = data['maxYears'];
var tldRequirements = data['tldRequirements'];
var tld = data['tld'];
var plan = data['plan'];
var planInterval = data['planInterval'];
var planDescription = data['planDescription'];
var discountAmount = 0;
if(discount)
{
discountAmount = parseInt(price) - parseInt(discount);
price = parseInt(price) - discountAmount;
pricePerYear = parseInt(pricePerYear) - discountAmount;
}
if(whoisPrivacy)
{
price = parseInt(whoisPrivacyPrice) + parseInt(price);
pricePerYear = parseInt(whoisPrivacyPrice) + parseInt(pricePerYear);
}
if(tldRequirements)
{
var bodyHtml = getTldRequirementsFormParts(tldRequirements, domain);
showMessageModal('Additional TLD Requirements: '+tld.toUpperCase(), bodyHtml, 'none', 'Submit', processTldRequirements);
}
else
{
var domainInfo = {};
domainInfo.domain = domain;
domainInfo.whoisPrivacy = whoisPrivacy;
domainInfo.price = price;
domainInfo.discount = discount;
domainInfo.pricePerYear = pricePerYear;
domainInfo.minYears = minYears;
domainInfo.maxYears = maxYears;
domainInfo.plan = plan;
domainInfo.planInterval = planInterval;
domainInfo.planDescription = planDescription;
if(cnisId) domainInfo.cnisId = cnisId;
if(closeWindow) domainInfo.closeWindow = closeWindow;
if(type == 'renewal' && (maxYears == 0 || !maxYears))
{
showMessageModal('Uh oh!', '<div class="alert alert-error">The domain appears to already be registered for the maximum time allowed.</div>');
return;
}
$('#billingModal').attr('data-type', type);
if(parseInt(accountCredit) && !plan)
$('#billingModaAccountCreditValue').html(parseInt(accountCredit) / 100);
else
{
$('#billingModaAccountCreditValue').html(0);
$('#billingModalAccountCreditPanel').hide();
}
if(plan)
{
$('#billingModalAccountCreditPanel').hide();
$('#billingModalProcessCardButton').attr('data-plan', plan);
domainInfo.plan_price = domainInfo.price;
domainInfo.price = null;
}
$('#billingModalProcessCardButton').attr('data-domain', domain);
if(whoisPrivacy) $('#billingModalProcessCardButton').attr('data-whoisPrivacy', whoisPrivacy);
$('#billingModalProcessCardButton').attr('data-type', type);
showBuyNowBillingModal(domainInfo);
}
}, "json");
}
else if(type == 'invoice')
{
var invoiceId = jQuery.trim($(e).attr('data-invoice-id'));
$.post("/api/domains/getInvoice", {invoiceId: invoiceId},
function(data)
{
if(data['error'] == '1')
{
showMessageModal('Error :(', data['message']);
return;
}
var price = data['price'];
$('#billingModal').attr('data-type', 'invoice');
if(parseInt(accountCredit))
$('#billingModaAccountCreditValue').html(parseInt(accountCredit) / 100);
else
{
$('#billingModaAccountCreditValue').html(0);
$('#billingModalAccountCreditPanel').hide();
}
if(plan)
{
$('#billingModalAccountCreditPanel').hide();
$('#billingModalProcessCardButton').attr('data-plan', plan);
}
$('#billingModalProcessCardButton').attr('data-type', 'invoice');
var invoiceInfo = {};
invoiceInfo.price = price;
invoiceInfo.domain = 'Invoice ID: '+invoiceId;
invoiceInfo.invoiceId = invoiceId;
elements = stripe.elements();
cardNumberElement = elements.create('cardNumber',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardNumberElement.mount('#billingCardNumber');
cardExpiryElement = elements.create('cardExpiry',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardExpiryElement.mount('#billingCardExpiration');
cardCvcElement = elements.create('cardCvc',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
cardCvcElement.mount('#billingCardCvc');
postalCodeElement = elements.create('postalCode',
{
style:
{
base:
{
color:'#555',
fontSize:'21px',
'::placeholder':{color:'#b6b6b6'}
}
},
classes:
{
focus:'StripeElementFocus'
}
});
postalCodeElement.mount('#billingCardZip');
showBuyNowBillingModal(invoiceInfo);
}, "json");
}
}
}, "json");
}
function cancelWordpress(domain)
{
var messageHtml = 'Are you sure you want to cancel your WordPress subscription for '+domain+'?<br><br><small class="text-error"><strong>WARNING:</strong> Any time left on your subscription will be lost, any data may be deleted immediately, and your payment plan for this subscription will be cancelled. This cannot be undone. However; your domain registration will remain in effect and can be managed via babababa.cloud.</small>';
showMessageModal('<span class="text-error">Cancel Subscription</span>', messageHtml, null, 'Yes, cancel my subscription.', 'processCancelService();', 'No');
$('#messageModal').attr('data-domain', domain);
$('#messageModal').attr('data-app', 'wordpressHosting');
}
function cancelService(domain, id, app)
{
var messageHtml = 'Are you sure you want to cancel your subscription for '+domain+'?<br><br><small class="text-error"><strong>WARNING:</strong> Any time left on your subscription will be lost, any data may be deleted immediately, and your payment plan for this subscription will be cancelled. This cannot be undone. However; your domain registration will remain in effect and can be managed via babababa.cloud.</small>';
showMessageModal('<span class="text-error">Cancel Subscription</span>', messageHtml, 'none', 'Yes, cancel my subscription.', 'processCancelService();', 'No');
$('#messageModal').attr('data-domain', domain);
$('#messageModal').attr('data-id', id);
$('#messageModal').attr('data-app', app);
}
function disconnectService(domain, id, app)
{
var messageHtml = 'Are you sure you want to disconnect your service for '+domain+'?';
showMessageModal('<span class="text-error">Cancel Subscription</span>', messageHtml, null, 'Yes, disconnect my service.', 'processCancelService();', 'No');
$('#messageModal').attr('data-domain', domain);
$('#messageModal').attr('data-id', id);
$('#messageModal').attr('data-app', app);
}
function processCancelService()
{
$('#messageModal_alert').hide();
$('#messageModal_loading').show();
$('#messageModal_button').hide();
$('#messageModal_closeButton').hide();
var domain = $('#messageModal').attr('data-domain');
var id = $('#messageModal').attr('data-id');
var app = $('#messageModal').attr('data-app');
$.post("/api/user/cancelService", {'domain':domain, 'id':id, 'app':app},
function(data)
{
if(data['status'] == 1)
{
if(data['siteBuilderDomain'] == 1)
location.href = '/account/domains';
else
location.reload();
}
else if(data['status'] == 0 && data['code'] == 'not_logged_in')
{
window.location.href = '/account/login?redir=/account/domains';
return;
}
else
{
$('#messageModal_alert').html('<strong>ERROR:</strong> '+data['message']);
$('#messageModal_alert').show();
$('#messageModal_loading').hide();
$('#messageModal_button').show();
$('#messageModal_closeButton').show();
window.scrollTo(0, 0);
}
}, "json");
}
function resetTwoFactorKey(confirm)
{
if(!confirm)
{
$('#resetTwoFactorKeyModal_loading').hide();
$('#resetTwoFactorKeyModal_button').show();
$('#resetTwoFactorKeyModal').modal('show');
}
else
{
$('#resetTwoFactorKeyModal_loading').show();
$('#resetTwoFactorKeyModal_button').hide();
$.post("/api/user/resetTwoFactorKey", {empty:true},
function(data)
{
if(data['result'])
{
$('.totpKey').html(data['totpKey']);
$('.totpImage').attr('src', '/api/user/getTOTPQRCode/'+data['totpKey']);
$('#twoFactorSwitch').bootstrapSwitch('setState', false);
$('#resetTwoFactorKeyModal').modal('hide');
$('#twoFactorSwitch').prop('checked', false);
}
else if(data['error'] == 1)
{
alert(data['message']);
$('#resetTwoFactorKeyModal_loading').hide();
$('#resetTwoFactorKeyModal_button').show();
//$('#twoFactorSwitch').prop('checked', true);
}
else
{
$('#resetTwoFactorKeyModal_loading').hide();
$('#resetTwoFactorKeyModal_button').show();
//$('#twoFactorSwitch').prop('checked', true);
}
}, "json");
}
}
function changeTypeDomainDNS()
{
var type = $('#editDNSModal_type').val();
$('#editDNSModal_answer').show();
$('#editDNSModal_answer_long').hide();
if(type == 'Minecraft')
{
$('#editDNSModal_priority').prop('disabled', false);
}
else if(type == 'MX' || type =='SRV')
{
$('#editDNSModal_priority').prop('disabled', false);
}
else if(type == 'TXT')
{
$('#editDNSModal_priority').prop('disabled', true);
$('#editDNSModal_priority').val('');
$('#editDNSModal_answer').hide();
$('#editDNSModal_answer_long').show();
}
else
{
$('#editDNSModal_priority').prop('disabled', true);
$('#editDNSModal_priority').val('');
}
if(type =='SRV')
{
$('#editDNSModal_answer').attr('placeholder', 'weight port target (5 5060 sip.example.com)');
}
else if(type =='CAA')
{
$('#editDNSModal_answer').attr('placeholder', 'flags tag "value" (0 issue "letsencrypt.org")');
}
else if(type =='TLSA')
{
$('#editDNSModal_host').attr('placeholder', '_port._protocol (_100._tcp)');
$('#editDNSModal_answer').attr('placeholder', '');
}
else
{
$('#editDNSModal_answer').attr('placeholder', '');
}
}
function processEditDomainHosts()
{
$('#editDomainHostsModal_loading').show();
$('#editDomainHostsModal_button').hide();
var host = $('#editDomainHostsModalHost').val();
var domain = $('#editDomainHostsModalDomain').html();
var ips = $('#editDomainHostsModalIps').val();
$.post("/api/domains/updateDomainHosts", {gluehost: host, domain: domain, ips: ips},
function(data)
{
if(data['error'] == "1")
{
alert(data['message']);
}
else
{
$('#editDomainHostsModalHost').val('');
$('#editDomainHostsModalIps').val('');
if(data['action'] == "CREATED" || data['action'] == "UPDATED")
{
$("#existingHost"+(((host ? host+'.' : '')+domain).toLowerCase()).replace(/\./g, '_')).remove();
$("#editDomainHostsModalExistingHosts").show();
ips = data['ips'];
var ipsString = '';
for(var i = 0; i < ips.length; i++)
{
ipsString += ips[i]+"<br>";
}
var row = "\
<div id='existingHost"+(((host ? host+'.' : '')+domain).toLowerCase()).replace(/\./g, '_')+"' class='well well-sm'>\
<div class='row' style='padding-top:5px; padding-bottom:5px;'>\
<div class='col-md-9'><strong>"+((host ? host+'.' : '')+domain)+"</strong></div>\
<div class='col-md-3'><span onclick='editExistingDomainHost(\""+domain+"\", \""+(host ? host+'.' : '')+domain+"\");' class='glyphicon glyphicon-edit pointer' style='color:black;'></span><span onclick='deleteExistingDomainHost(\""+domain+"\", \""+(host ? host+'.' : '')+domain+"\");' class='glyphicon glyphicon-trash pointer' style='color:black;'></span></div>\
</div>\
<div class='row'>\
<div class='col-md-12'>"+ipsString+"</div>\
</div>\
</div>";
$("#editDomainHostsModalExistingHostsContainer").append(row);
}
$("#existingHost"+(((host ? host+'.' : '')+domain).toLowerCase()).replace(/\./g, '_')).css("background-color", "green");
$("#existingHost"+(((host ? host+'.' : '')+domain).toLowerCase()).replace(/\./g, '_')).animate({backgroundColor: "#f5f5f5"}, 'slow');
}
$('#editDomainHostsModal_loading').hide();
$('#editDomainHostsModal_button').show();
}, "json");
$('#editDomainHostsModal').modal('show');
}
function editExistingDomainHost(domain, host)
{
$.post("/api/domains/getHostIps", {domain: domain, gluehost:host},
function(data)
{
if(data['error'] == "1")
{
alert(data['message']);
return;
}
var ips = data['ips'];
if(ips)
{
$("#editDomainHostsModalIps").val(ips.join("\n"));
$("#editDomainHostsModalHost").val(data['host']);
$("#editDomainHostsModalHost").focus();
}
}, "json");
}
function deleteExistingDomainHost(domain, host)
{
if(!confirm("Are you sure you want to delete the host "+host+"?"))
{
return;
}
$.post("/api/domains/deleteDomainHost", {domain: domain, gluehost:host},
function(data)
{
if(data['error'] == "1" && data['code'] == 'ASKFORCE')
{
$prompt = prompt("We were unable to delete the host. Chances are that one or more domains are using it as one of its nameservers and deleting it will cause resolution issues for those domains. Would you like us to attempt to force delete it? If you read this warning and would like to continue, type DELETE into the text box below.");
if($prompt == 'DELETE')
{
$.post("/api/domains/deleteDomainHost", {domain:domain, gluehost:host, force:1},
function(data)
{
if(data['error'] == "1")
{
alert("We were unable to delete the host Please contact support if you feel you are receiving this message in error.");
return;
}
$("#existingHost"+(host.toLowerCase()).replace(/\./g, '_')).css("background-color", "red");
$("#existingHost"+(host.toLowerCase()).replace(/\./g, '_')).animate({backgroundColor: "#f5f5f5"}, 'slow', function ()
{
$("#existingHost"+(host.toLowerCase()).replace(/\./g, '_')).remove();
});
return;
}, "json");
return;
}
else
return;
}
else if(data['error'] == "1")
{
alert(data['message']);
return;
}
$("#existingHost"+(host.toLowerCase()).replace(/\./g, '_')).css("background-color", "red");
$("#existingHost"+(host.toLowerCase()).replace(/\./g, '_')).animate({backgroundColor: "#f5f5f5"}, 'slow', function ()
{
$("#existingHost"+(host.toLowerCase()).replace(/\./g, '_')).remove();
});
}, "json");
}
function viewDomainHosts(domain)
{
$('#editDomainHostsModalIps').html('');
$('#editDomainHostsModalIps').val('');
$('#editDomainHostsModalAlert').hide();
$('#editDomainHostsModalAlert').html('');
$('#editDomainHostsModal_loading').show();
$('#editDomainHostsModal_button').hide();
$('#editDomainHostsModal').attr('data-domain', domain);
$("#editDomainHostsModalExistingHostsContainer").html('');
$("#editDomainHostsModalHost").val('');
$.post("/api/domains/getDomainHosts", {domain: domain},
function(data)
{
if(data['error'] == "1")
{
alert(data['message']);
return;
}
var hosts = data['hosts'];
if(hosts)
{
$("#editDomainHostsModalExistingHosts").show();
// editDomainHostsModalExistingHosts
for(var i = 0; i < hosts.length; i++)
{
var ipsString = "";
for(var type in hosts[i][1])
{
var ips = hosts[i][1][type];
for(var j = 0; j < ips.length; j++)
{
ipsString += ips[j]+"<br>";
}
}
var row = "\
<div id='existingHost"+(hosts[i][0].toLowerCase()).replace(/\./g, '_')+"' class='well well-sm'>\
<div class='row' style='padding-top:5px; padding-bottom:5px;'>\
<div class='col-md-9'><strong>"+hosts[i][0]+"</strong></div>\
<div class='col-md-3'><span onclick='editExistingDomainHost(\""+domain+"\", \""+hosts[i][0]+"\");' class='glyphicon glyphicon-edit pointer' style='color:black;'></span><span onclick='deleteExistingDomainHost(\""+domain+"\", \""+hosts[i][0]+"\");' class='glyphicon glyphicon-trash pointer' style='color:black;'></span></div>\
</div>\
<div class='row'>\
<div class='col-md-12'>"+ipsString+"</div>\
</div>\
</div>";
$("#editDomainHostsModalExistingHostsContainer").append(row);
}
}
$('#editDomainHostsModalDomain').html(domain);
$('#editDomainHostsModal_loading').hide();
$('#editDomainHostsModal_button').show();
$('#editDomainHostsModal').modal('show');
}, "json");
}
function viewDomainEns(domain)
{
$('#modal_editDomainEns_buttons').show();
$('#modal_editDomainEns_loading').hide();
$("#modal_editDomainEns_address").val('');
$('#modal_editDomainEns_domain').html(domain);
$('#modal_editDomainEns').modal('show');
}
function viewDomainDNS(domain, e)
{
$("#quickDnsAlert").hide();
$("#quickDnsAlertContent").html('');
$('#editDNSModalCloudflareBadge').hide();
$('#editDnsNsConfigure').hide();
$('#editDNSModal_loading').hide();
$('#editDNSModal_contentLoading').show();
$('#editDNSModal_button').show();
$('#editDNSModalContainer').html('');
$('#editDNSModalAlert').hide();
$('#editDNSModalAlert').html('');
$('#editDNSModal').attr('data-domain', domain);
$('.editDNSModal_domain').html(domain);
$('.editDNSModal_dataDomain').attr('data-domain', domain);
$('#editDNSModal_existingRecordsContainer').show();
$('#editDNSModal_host').val('');
$('#editDNSModal_answer').val('');
$('#editDNSModalContainer').html('<table id="editDNSModalTable" class="table table-bordered"><thead><tr>\
<th><span data-name="type" data-sort-attr="data-type" data-sort-order="asc" class="uppercase fakeLink black" onclick="dnsManagementSort(this)" tabindex="0" onkeypress="processKeyPress(event, dnsManagementSort(this));" aria-label="sort records by type">Type</span> \
<i data-name="type" data-order="asc" class="dnsSortIcon fas fa-sort-alpha-down"></i>\
<i data-name="type" data-order="desc" class="dnsSortIcon fas fa-sort-alpha-up" style="display:none;"></i>\
</th>\
<th><span data-name="host" data-sort-attr="data-host" class="uppercase fakeLink black" onclick="dnsManagementSort(this)" tabindex="0" onkeypress="processKeyPress(event, dnsManagementSort(this));" aria-label="sort records by host">Host</span> \
<i data-name="host" data-order="asc" class="dnsSortIcon fas fa-sort-alpha-down" style="display:none;"></i>\
<i data-name="host" data-order="desc" class="dnsSortIcon fas fa-sort-alpha-up" style="display:none;"></i>\
</th>\
<th><span data-name="answer" data-sort-attr="data-answer" class="uppercase fakeLink black" onclick="dnsManagementSort(this)" tabindex="0" onkeypress="processKeyPress(event, dnsManagementSort(this));" aria-label="sort records by answer">Answer</span> \
<i data-name="answer" data-order="asc" class="dnsSortIcon fas fa-sort-alpha-down" style="display:none;"></i>\
<i data-name="answer" data-order="desc" class="dnsSortIcon fas fa-sort-alpha-up" style="display:none;"></i>\
</th>\
<th><span data-name="ttl" data-sort-attr="data-ttl" class="uppercase fakeLink black" onclick="dnsManagementSort(this)" tabindex="0" onkeypress="processKeyPress(event, dnsManagementSort(this));" aria-label="sort records by ttl">TTL</span> \
<i data-name="ttl" data-order="asc" class="dnsSortIcon fas fa-sort-numeric-down" style="display:none;"></i>\
<i data-name="ttl" data-order="desc" class="dnsSortIcon fas fa-sort-numeric-up" style="display:none;"></i>\
</th>\
<th><span data-name="priority" data-sort-attr="data-priority" class="uppercase fakeLink black" onclick="dnsManagementSort(this)" tabindex="0" onkeypress="processKeyPress(event, dnsManagementSort(this));" aria-label="sort records by priority">Priority</span> \
<i data-name="priority" data-order="asc" class="dnsSortIcon fas fa-sort-numeric-down" style="display:none;"></i>\
<i data-name="priority" data-order="desc" class="dnsSortIcon fas fa-sort-numeric-up" style="display:none;"></i>\
</th>\
<th><span class="uppercase">Options</span>\
</th>\
</tr></thead><tbody></tbody></table>');
if(domain == 'BULK')
{
$('#editDNSModal_existingRecordsContainer').hide();
$('#editDNSModal_contentLoading').hide();
}
else if(domain)
{
$.post("/api/domains/getDomainDNS", {domain: domain},
function(data)
{
if(data['cloudflareId'])
$('#editDNSModalCloudflareBadge').show();
if(data['error'] == '1')
{
$('#editDNSModalAlert').html('<strong>ERROR:</strong> '+data['message']);
$('#editDNSModal').scrollTop(0);
$('#editDNSModal_contentLoading').hide();
$('#editDNSModalAlert').show();
return;
}
if(!data['nsConfigured'] && !data['cloudflareId'])
{
if(data['notLocal'] == "1")
{
$(".localDomainOnly").hide();
$(".externalDomainOnly").show();
}
else
{
$(".localDomainOnly").show();
$(".externalDomainOnly").hide();
}
$('#editDnsNsConfigure').find('#configureNsButtonsUpdate').attr('data-domain', domain);
$('#editDnsNsConfigure').show();
$('.configureNsAlert').show();
}
if(data['fromTransfer'])
{
$('#editDnsFromTransfer').show();
}
var counter = 0;
for(var i = 0; i < data['dnsRecords'].length; i++)
{
var record = data['dnsRecords'][i];
if((record['name'] == domain && record['type'] == 'NS' && record['content'].indexOf('.babababa.cloud') != -1) || record['type'] == 'SOA')
continue;
counter++;
if(record['type'] != 'MX' && record['type'] != 'SRV')
{
record['prio'] = '';
}
var uniqId = getUniqId()+"C"+counter;
var appendString = '<tr class="editDNSSortItem" data-type="'+record['type']+'" data-host="'+htmlEntities(record['name'])+'" data-answer="'+htmlEntities(record['content'])+'" data-ttl="'+record['ttl']+'" data-priority="'+record['prio']+'" data-dns-index="'+uniqId+'"><td id="dnsRecordType'+uniqId+'">'+record['type']+'</td><td style="word-wrap:break-word; max-width:200px;" id="dnsRecordName'+uniqId+'">'+htmlEntities(record['name'])+'</td><td style="word-wrap:break-word; max-width:200px;" id="dnsRecordContent'+uniqId+'">'+htmlEntities(record['content'])+'</td><td id="dnsRecordTtl'+uniqId+'">'+record['ttl']+'</td><td id="dnsRecordPrio'+uniqId+'">'+record['prio']+'</td>\
<td>\
<div id="dnsOptionsContainer'+uniqId+'">\
<span class="glyphicon glyphicon-pencil pointer editDNSDomainIcon" tabindex="0" role="button" aria-label="edit dns record" data-id="'+record['id']+'" data-index="'+uniqId+'" data-dns-type="'+record['type']+'" data-dns-domain="'+domain+'" data-dns-host="'+htmlEntities(record['name'])+'" data-dns-answer="'+htmlEntities(record['content'])+'" onkeypress="editDomainDNS(this);" onclick="editDomainDNS(this);"></span>\
<span class="glyphicon glyphicon-trash pointer deleteDNSDomainIcon" tabindex="0" role="button" aria-label="delete dns record" data-id="'+record['id']+'" data-index="'+uniqId+'" data-dns-type="'+record['type']+'" data-dns-domain="'+domain+'" data-dns-host="'+htmlEntities(record['name'])+'" data-dns-answer="'+htmlEntities(record['content'])+'" onkeypress="deleteDomainDNS(this);" onclick="deleteDomainDNS(this);"></span>';
if(record['cloudflare'] && record['cloudflare']['proxiable'])
{
//appendString += '<span class="editDNSDomainIcon pointer" tabindex="0" role="button" aria-label="toggle cloudflare proxy" data-cloudplare-proxied="'+(record['cloudflare']['proxied'] ? "on" : "off")+'" data-id="'+record['id']+'" data-index="'+uniqId+'" data-dns-type="'+record['type']+'" data-dns-domain="'+domain+'" onkeypress="toggleCloudflareDomainDNS(this);" onclick="toggleCloudflareDomainDNS(this);" style="margin-left:5px;"><i class="fab fa-cloudflare cloudflareProxiedIcon '+(record['cloudflare']['proxied'] ? "text-cloudflare-on" : "")+'"></i></span>';
}
appendString += '</div>\
<div id="dnsEditContainer'+uniqId+'" style="display:none;">\
<span tabindex="0" data-id="'+record['id']+'" data-domain="'+domain+'" data-index="'+uniqId+'" class="glyphicon glyphicon-floppy-disk pointer" onclick="dnsEditSave(this);" role="button" aria-label="save dns edit"></span>\
<span tabindex="0" data-index="'+uniqId+'" class="glyphicon glyphicon-backward pointer" onkeypress="dnsEditCancel(this);" onclick="dnsEditCancel(this);" role="button" aria-label="cancel dns edit"></span>\
</div>\
<img alt="Loading..." id="dnsEditLoading'+uniqId+'" src="/images/loading.small.gif" class="" style="margin-top:30px; display:none;">\
</td></tr>';
appendString += '<tr style="'+(record['notes'] && record['notes'].length > 0 ? '' : 'display:none;')+'" class="editDNSSortItem editDNSNotes" data-type="'+record['type']+'" data-host="'+htmlEntities(record['name'])+'" data-answer="'+htmlEntities(record['content'])+'" data-ttl="'+record['ttl']+'" data-priority="'+record['prio']+'" data-dns-index="'+uniqId+'"><td><small class="text-muted">notes</small></td><td colspan=5><small id="dnsRecordNotes'+uniqId+'" class="text-muted">'+htmlEntities(record['notes'])+'</small></td></tr>';
$('#editDNSModalTable > tbody:last').append(appendString);
}
$('#editDNSModal_contentLoading').hide();
}, "json");
}
$('#editDNSModal').scrollTop(0);
$('#editDNSModal').modal('show');
}
function showEditContactsModal(e, domain, bulkId)
{
//var type = $(e).attr('data-type');
var type = 'registrant';
if(!domain)
domain = $(e).attr('data-domain');
$('#editContactsModalTabs').hide();
$('#editContactsModalIndividualy').prop('checked', false);
$('#editContactsModalAll').prop('checked', false);
$('#editContactsModal_tabs_'+type).tab('show');
$('#editContactsModalAlert').hide();
$('#editContactsModal_loading').show();
$('#editContactsModal_button').hide();
$('#editContactsModalHeader').html($(e).attr('data-name'));
$('#editContactsModalExtra').html('');
$('#editContactsModal').attr('data-domain', '');
$('#editContactsModal').attr('data-bulkId', '');
$('#editContactsModalExtra_registrant').html('');
$('#editContactsModalExtra_administrative').html('');
$('#editContactsModalExtra_technical').html('');
$('#editContactsModalExtra_billing').html('');
if(domain && domain == 'BULK')
{
$('#editContactsModalTitleDomain').html(" - "+domain.toUpperCase());
$('#editContactsModal').attr('data-domain', domain);
$('#editContactsModal').attr('data-bulkId', bulkId);
$('#editContactsModal_loading').hide();
$('#editContactsModal_button').show();
$('#editContactsModal').modal('show');
}
if(domain)
{
$('#editContactsModalTitleDomain').html(" - "+domain.toUpperCase());
$('#editContactsModal').attr('data-domain', domain);
$.post("/api/domains/getDomainContacts", {domain: domain},
function(data)
{
if(data['error'])
{
alert(data['message']);
return;
}
if(data['tld'] == 'de')
{
$('#editContactsModalIndividualyContainer').hide();
}
else
{
$('#editContactsModalIndividualyContainer').show();
}
for(var type in data['contacts'])
{
var contact = data['contacts'][type];
$('#editContactsModalFirstName_'+type).val(contact['first_name']);
$('#editContactsModalLastName_'+type).val(contact['last_name']);
$('#editContactsModalCompanyName_'+type).val(contact['company_name']);
$('#editContactsModalAddress1_'+type).val(contact['address_1']);
$('#editContactsModalAddress2_'+type).val(contact['address_2']);
$('#editContactsModalAddress3_'+type).val(contact['address_3']);
$('#editContactsModalCity_'+type).val(contact['city']);
$('#editContactsModalCountry_'+type).val(contact['country']);
$('#editContactsModalPostal_'+type).val(contact['postal_code']);
$('#editContactsModalEmail_'+type).val(contact['email']);
$('#editContactsModalEmailConfirm_'+type).val(contact['email']);
$('#editContactsModalPhoneCode_'+type+' option[value^="'+contact['phone_cc']+'"]:first').prop('selected', true);
$('#editContactsModalPhone_'+type).val(contact['phone']);
$('#editContactsModalFax_'+type).val(contact['fax']);
if(contact['tldRequirements'])
{
var tldRequirementsHtml = getTldRequirementsFormParts(contact['tldRequirements'], domain, contact['extended']);
$('#editContactsModalExtra_'+type).html(tldRequirementsHtml);
}
$('#editContactsModalState_'+type).html('<option value=""> State');
if(contact['states'])
{
for(var i = 0; i < contact['states'].length; i++)
{
var selected = '';
if(contact['states'][i]['state'] == contact['state'])
selected = 'SELECTED';
$('#editContactsModalState_'+type).append('<option value="'+contact['states'][i]['state']+'" '+selected+'>'+contact['states'][i]['state']);
}
}
}
$('#editContactsModal_loading').hide();
$('#editContactsModal_button').show();
$('#editContactsModal').modal('show');
}, "json");
}
else
{
$('#editContactsModal_loading').hide();
$('#editContactsModal_button').show();
$('#editContactsModal').modal('show');
}
}
function fillContactFormWithDefault()
{
$.post("/api/user/getAccountContacts", {empty:true},
function(data)
{
if(data['error'])
{
alert(data['message']);
return;
}
for(var type in data['contacts'])
{
var contact = data['contacts'][type];
$('#editContactsModalFirstName_'+type).val(contact['first_name']);
$('#editContactsModalLastName_'+type).val(contact['last_name']);
$('#editContactsModalCompanyName_'+type).val(contact['company_name']);
$('#editContactsModalAddress1_'+type).val(contact['address_1']);
$('#editContactsModalAddress2_'+type).val(contact['address_2']);
$('#editContactsModalAddress3_'+type).val(contact['address_3']);
$('#editContactsModalCity_'+type).val(contact['city']);
$('#editContactsModalCountry_'+type).val(contact['country']);
$('#editContactsModalPostal_'+type).val(contact['postal_code']);
$('#editContactsModalEmail_'+type).val(contact['email']);
$('#editContactsModalEmailConfirm_'+type).val(contact['email']);
$('#editContactsModalPhoneCode_'+type+' option[value^="'+contact['phone_cc']+'"]:first').prop('selected', true);
$('#editContactsModalPhone_'+type).val(contact['phone']);
$('#editContactsModalFax_'+type).val(contact['fax']);
$('#editContactsModalState_'+type).html('<option value=""> State');
if(contact['states'])
{
for(var i = 0; i < contact['states'].length; i++)
{
var selected = '';
if(contact['states'][i]['state'] == contact['state'])
selected = 'SELECTED';
$('#editContactsModalState_'+type).append('<option value="'+contact['states'][i]['state']+'" '+selected+'>'+contact['states'][i]['state']);
}
}
}
}, "json");
}
var autoRenewOffNoticeShown = false;
function enableDisableAutoRenew(domain, event)
{
var idDomain = domain.replace(/\./g, '_');
$('#utilitarianControlAutoRenew_'+idDomain).hide().parent().append('<img alt="Loading..." src="/images/loading.sml.gif" id="utilitarianLoadingAutoRenew_'+idDomain+'">');
if(event)
event.preventDefault();
$('.autoRenewIcon[data-domain="'+domain+'"]').addClass('pendingBackground');
$.post("/api/domains/enableDisableAutoRenew", {domain: domain},
function(data)
{
var error = data['error'];
$('.autoRenewIcon[data-domain="'+domain+'"]').removeClass('pendingBackground');
$('#utilitarianLoadingAutoRenew_'+idDomain).remove();
$('#utilitarianControlAutoRenew_'+idDomain).show();
if(error == 0)
{
var status = data['status'];
if(status == 1)
{
$('#utilitarianControlAutoRenew_'+idDomain).prop("checked",true);
$('#domainManagementIconButton_renewal_'+idDomain).removeClass('btn-default').addClass('btn-success-light');
$('.autoRenewLink[data-domain="'+domain+'"]').html('Disable Auto Renew');
$('#domainManagementDetailsContent_autoRenew_switch_'+idDomain).prop('checked', true);
}
else if(status == 0)
{
if(!autoRenewOffNoticeShown)
{
alert("Please be aware that additional products attached to a domain such as email and web hosting will continue to renew independantly from the domain renewal. Hosting products must be cancelled separately to prevent auto renewal.");
autoRenewOffNoticeShown = true;
}
$('#utilitarianControlAutoRenew_'+idDomain).prop("checked",false);
$('#domainManagementIconButton_renewal_'+idDomain).removeClass('btn-success-light').addClass('btn-default');
$('.autoRenewLink[data-domain="'+domain+'"]').html('Enable Auto Renew');
$('#domainManagementDetailsContent_autoRenew_switch_'+idDomain).prop('checked', false);
}
}
else if(error == 1)
{
var message = data['message'];
alert(message);
$('#utilitarianControlAutoRenew_'+idDomain).prop("checked", $('#utilitarianControlAutoRenew_'+idDomain).prop("checked") ? false : true);
}
return(false);
}, "json");
}
function disableWhoisProtection(e, event)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var idDomain = domain.replace(/\./g, '_');
var status = jQuery.trim($(e).attr('data-status'));
var oldStatus = jQuery.trim($(e).attr('data-old-status'));
var type = jQuery.trim($(e).attr('data-type'));
if(event)
event.preventDefault();
if(!confirm("Warning! By selecting “Make Public,” all private contact info for this domain such as your phone number, email address, and postal address will be made public for anyone to see, including spammers. Although many registries will still redact your data, it also may reveal previously undisclosed personal information to the registry for this domain's TLD. Are you absolutely sure you wish to do this?"))
{
return;
}
$('#utilitarianControlWhoisPrivacy_'+idDomain).hide().parent().append('<img alt="Loading..." src="/images/loading.sml.gif" id="utilitarianLoadingWhoisPrivacy_'+idDomain+'">');
$('#domainManagementIconButton_whois_'+idDomain).addClass('pendingBackground').css('pointer-events', 'none');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').hide();
$('#domainManagementIconButton_whois_'+idDomain).append('<img alt="Loading..." src="/images/loading.sml.gif" class="domainManagementIconLoading">');
$.post("/api/domains/disableWhoisProtection", {domain: domain},
function(data)
{
var error = data['error'];
$('#domainManagementIconButton_whois_'+idDomain).removeClass('pendingBackground').css('pointer-events', '');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIconLoading').remove();
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').show();
$('#utilitarianLoadingWhoisPrivacy_'+idDomain).remove();
$('#utilitarianControlWhoisPrivacy_'+idDomain).show();
if(error == "0")
{
$(e).parent().parent().find(".selectedWhoisDisplayItem").hide();
$(e).find(".selectedWhoisDisplayItem").show();
$('.domainManagementDetailsContent_whoisPrivacy_status[data-domain="'+domain+'"]').html('publicly available');
$(e).attr('data-status', 'public');
$('#domainManagementIconButton_whois_'+idDomain).removeClass('btn-success-light').addClass('btn-default');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').removeClass('fa-user-shield').removeClass('fa-eye').addClass('fa-tower-broadcast');
}
else if(error == "1")
{
var message = data['message'];
alert(message);
$('#utilitarianControlWhoisPrivacy_'+idDomain).val(oldStatus);
}
}, "json");
}
function enableWhoisProtection(e, event)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var status = jQuery.trim($(e).attr('data-status'));
var oldStatus = jQuery.trim($(e).attr('data-old-status'));
var type = jQuery.trim($(e).attr('data-type'));
var idDomain = domain.replace(/\./g, '_');
if(event)
event.preventDefault();
if(type == 'redacted')
{
if(!confirm("Redaction protects most of your private information from xiaofu's public WHOIS server with the exception of \"Company Name\" (aka \"Organization\"), \"State/Province\", and \"Country\" which is still shown. Instead of your email address, WHOIS instead displays a link to an anonymized web contact form. Unlike WHOIS Privacy, your actual contact data will still be sent to the registry (for instance, .tech or .design.) Even though most registries won't publish your data, we cannot guarantee the registry won’t publish your private data in their public WHOIS database if you select this option. Redaction is sometimes the correct option for those who wish to publicly assert ownership of their domain while protecting their personal information from spammers and fraudsters in instances where the registry won't publish data."))
{
return;
}
}
$('#utilitarianControlWhoisPrivacy_'+idDomain).hide().parent().append('<img alt="Loading..." src="/images/loading.sml.gif" id="utilitarianLoadingWhoisPrivacy_'+idDomain+'">');
$('#domainManagementIconButton_whois_'+idDomain).addClass('pendingBackground').css('pointer-events', 'none');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').hide();
$('#domainManagementIconButton_whois_'+idDomain).append('<img alt="Loading..." src="/images/loading.sml.gif" class="domainManagementIconLoading">');
if(type == 'private')
{
$.post("/api/domains/enableWhoisProtection", {domain: domain, type: type},
function(data)
{
var error = data['error'];
$('#domainManagementIconButton_whois_'+idDomain).removeClass('pendingBackground').css('pointer-events', '');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIconLoading').remove();
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').show();
$('#utilitarianLoadingWhoisPrivacy_'+idDomain).remove();
$('#utilitarianControlWhoisPrivacy_'+idDomain).show();
if(error == "0")
{
$(e).parent().parent().find(".selectedWhoisDisplayItem").hide();
$(e).find(".selectedWhoisDisplayItem").show();
$('.domainManagementDetailsContent_whoisPrivacy_status[data-domain="'+domain+'"]').html('using privacy');
$(e).attr('data-status', 'private');
$('#domainManagementIconButton_whois_'+idDomain).removeClass('btn-default').addClass('btn-success-light');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').removeClass('fa-user-shield').removeClass('fa-tower-broadcast').addClass('fa-eye');
}
else if(error == "1")
{
var message = data['message'];
alert(message);
$('#utilitarianControlWhoisPrivacy_'+idDomain).val(oldStatus);
}
}, "json");
}
else if(type == 'redacted')
{
$.post("/api/domains/enableWhoisProtection", {domain: domain, type: type},
function(data)
{
var error = data['error'];
$('#domainManagementIconButton_whois_'+idDomain).removeClass('pendingBackground').css('pointer-events', '');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIconLoading').remove();
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').show();
$('#utilitarianLoadingWhoisPrivacy_'+idDomain).remove();
$('#utilitarianControlWhoisPrivacy_'+idDomain).show();
if(error == "0")
{
$(e).parent().parent().find(".selectedWhoisDisplayItem").hide();
$(e).find(".selectedWhoisDisplayItem").show();
$('.domainManagementDetailsContent_whoisPrivacy_status[data-domain="'+domain+'"]').html('is redacted');
$(e).attr('data-status', 'redacted');
$('#domainManagementIconButton_whois_'+idDomain).removeClass('btn-default').addClass('btn-success-light');
$('#domainManagementIconButton_whois_'+idDomain+' .domainManagementIcon').removeClass('fa-eye').removeClass('fa-tower-broadcast').addClass('fa-user-shield');
}
else if(error == "1")
{
var message = data['message'];
alert(message);
$('#utilitarianControlWhoisPrivacy_'+idDomain).val(oldStatus);
}
}, "json");
}
}
function lockUnlockDomain(e, event)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var status = jQuery.trim($(e).attr('data-status'));
var idDomain = domain.replace(/\./g, '_');
if(event)
event.preventDefault();
if(status == 'on')
{
}
$('#utilitarianControlSecurityLock_'+idDomain).hide().parent().append('<img alt="Loading..." src="/images/loading.sml.gif" id="utilitarianLoadingSecurityLock_'+idDomain+'">');
// $('.lockUnlockDomainIcon[data-domain="'+domain+'"]').addClass('pendingBackground');
$('#domainManagementIconButton_lock_'+idDomain).addClass('pendingBackground').css('pointer-events', 'none');
$('#domainManagementIconButton_lock_'+idDomain+' .domainManagementIcon').hide();
$('#domainManagementIconButton_lock_'+idDomain).append('<img alt="Loading..." src="/images/loading.sml.gif" class="domainManagementIconLoading">');
$.post("/api/domains/lockUnlock", {domain: domain},
function(data)
{
var error = data['error'];
// $('.lockUnlockDomainIcon[data-domain="'+domain+'"]').removeClass('pendingBackground');
$('#domainManagementIconButton_lock_'+idDomain).removeClass('pendingBackground').css('pointer-events', '');
$('#domainManagementIconButton_lock_'+idDomain+' .domainManagementIconLoading').remove();
$('#domainManagementIconButton_lock_'+idDomain+' .domainManagementIcon').show();
$('#utilitarianLoadingSecurityLock_'+idDomain).remove();
$('#utilitarianControlSecurityLock_'+idDomain).show();
if(error == 0)
{
var lockStatus = data['status'];
var statuses = "";
for(var status in data['statuses'])
{
var statusLink = data['statuses'][status];
statuses += "<a href='"+statusLink+"' target='_NEW'>"+status+" <i class='fas fa-external-link-alt'></i></a><br>";
}
$('#domainManagementDetailsContent_statuses_'+idDomain+' .domainManagementDetailsContent_statuses_content').html(statuses);
if(lockStatus == 1)
{
$('#utilitarianControlSecurityLock_'+idDomain).prop("checked",true);
$(e).attr('data-status', 'on');
$('#domainManagementIconButton_lock_'+idDomain).attr('aria-label', "unlock domain for "+domain);
$('#domainManagementIconButton_lock_'+idDomain).removeClass('btn-default').addClass('btn-success-light');
$('#domainManagementIconButton_lock_'+idDomain).find('.fa-lock-open').removeClass('fa-lock-open').addClass('fa-lock');
$('#domainManagementDetailsContent_domainLock_switch_'+idDomain).prop('checked', true);
}
else if(lockStatus == 0)
{
$('#utilitarianControlSecurityLock_'+idDomain).prop("checked",false);
$(e).attr('data-status', 'off');
$('#domainManagementIconButton_lock_'+idDomain).attr('aria-label', "lock domain for "+domain);
$('#domainManagementIconButton_lock_'+idDomain).removeClass('btn-success-light').addClass('btn-default');
$('#domainManagementIconButton_lock_'+idDomain).find('.fa-lock').removeClass('fa-lock').addClass('fa-lock-open');
$('#domainManagementDetailsContent_domainLock_switch_'+idDomain).prop('checked', false);
}
}
else if(error == 1)
{
var message = data['message'];
alert(message);
$('#utilitarianControlSecurityLock_'+idDomain).prop("checked", $('#utilitarianControlSecurityLock_'+idDomain).prop("checked") ? false : true);
}
}, "json");
}
function cloudflareDnssecDomainToggle(e, event)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var status = jQuery.trim($(e).attr('data-status'));
var idDomain = domain.replace(/\./g, '_');
if(event)
event.preventDefault();
var dnssecRegistryRecords = $('#domainManagementDetailsContent_dnssec_cloudflare_switch_'+idDomain).data('dnssecRecords');
$.post("/api/domains/cloudflareDnssecDomainToggle", {domain: domain, status: status, dnssecRegistryRecords:dnssecRegistryRecords},
function(data)
{
var error = data['error'];
if(error == 0)
{
if(data['status'] == 'on')
{
$('.domainManagementDetailsContent_dnssec_cloudflare_switch[data-domain="'+domain+'"]').bootstrapSwitch('setState', true, true);
$(e).attr('data-status', 'on');
if(data['displaySetupRecords'])
{
$message = "<p>DNSSEC has been enabled in DNS but before it will function correctly you need to configure DNSSEC for your domain at your registrar. Below are the configuration values. Please note that some registries will not use all values and each registrar may have a different name for them in their interface.</p>";
$message += "<p>";
for(var key in data['dnssecRecords'])
{
if(key == 'modified_on' || key == 'status')
continue;
$message += "<strong>"+key+"</strong><br>";
$message+= "<pre>"+data['dnssecRecords'][key]+"</pre><br>";
}
$message += "</p>";
showMessageModal('DNSSEC Configuration', $message);
}
$('#domainManagementDetailsContent_dnssec_'+idDomain+' .domainManagementDetailsContent_dnssec_content').html("1 record");
$('#domainManagementDetailsContent_dnssec_cloudflare_switch_'+idDomain).data('dnssecRecords', data['dnssecRecords']);
}
else if(data['status'] == 'off')
{
$('.domainManagementDetailsContent_dnssec_cloudflare_switch[data-domain="'+domain+'"]').bootstrapSwitch('setState', false, true);
$(e).attr('data-status', 'off');
$('#domainManagementDetailsContent_dnssec_'+idDomain+' .domainManagementDetailsContent_dnssec_content').html("0 records");
$('#domainManagementDetailsContent_dnssec_cloudflare_switch_'+idDomain).data('dnssecRecords', data['dnssecRecords']);
}
}
else if(error == 1)
{
var message = data['message'];
alert(message);
}
}, "json");
}
function apiAccessDomainToggle(e, event)
{
var domain = jQuery.trim($(e).attr('data-domain'));
var status = jQuery.trim($(e).attr('data-status'));
var idDomain = domain.replace(/\./g, '_');
if(event)
event.preventDefault();
$('.apiAccessIcon[data-domain="'+domain+'"]').addClass('pendingBackground');
$.post("/api/domains/apiAccessDomainToggle", {domain: domain},
function(data)
{
var error = data['error'];
$('.apiAccessIcon[data-domain="'+domain+'"]').removeClass('pendingBackground');
if(error == 0)
{
var apiAccessStatus = data['status'];
if(apiAccessStatus == 1)
{
$('.domainManagementDetailsContent_apiAccess_switch[data-domain="'+domain+'"]').bootstrapSwitch('setState', true, true);
$(e).attr('data-status', 'on');
$('.apiAccessIcon[data-domain="'+domain+'"]').removeClass('offBackground').addClass('onBackground');
}
else if(apiAccessStatus == 0)
{
$('.domainManagementDetailsContent_apiAccess_switch[data-domain="'+domain+'"]').bootstrapSwitch('setState', false, true);
$(e).attr('data-status', 'off');
$('.apiAccessIcon[data-domain="'+domain+'"]').removeClass('onBackground').addClass('offBackground');
}
}
else if(error == 1)
{
var message = data['message'];
alert(message);
}
}, "json");
}
function processUpdateBillingProfileSource(sourceid, clientSecret)
{
$('#updateBillingModal_button').attr('data-sourceid', sourceid);
$('#updateBillingModal_button').attr('data-clientSecret', clientSecret);
showUpdateBillingModal();
$("#updateBillingModalTagline").html('<p class="lead">We are updating your card. Please stand by...</p>');
$("#updateBillingModalTagline").show();
$("#updateBillingModalForm").hide();
processUpdateBillingProfile();
}
function processUpdateBillingProfile()
{
$('#updateBillingModalAlert').hide();
$('.control-group').removeClass('error');
var name = jQuery.trim($('#updateBillingModal_cardName').val());
$(".form-group").removeClass('error');
$("#updateBillingModalAlert").hide();
$('#updateBillingModal_loading').show();
$('#updateBillingModal_button').hide();
$.post("/api/user/createPaymentIntent", {empty:1},
function(data)
{
if(data['error'] == 1)
{
$('#updateBillingModalAlert').html(data['message']).show();
$('#updateBillingModal_loading').hide();
$('#updateBillingModal_button').show();
return;
}
else
{
$("#updateBillingModal_button").attr("data-secret", data['clientSecret']);
var cardButton = document.getElementById('updateBillingModal_button');
var cardButtonClientSecret = cardButton.dataset.secret;
$(".form-group").removeClass('error');
$("#updateBillingModalAlert").hide();
$('#updateBillingModal_loading').show();
$('#updateBillingModal_button').hide();
var owner = {name:name};
stripe.confirmCardSetup(cardButtonClientSecret, {payment_method:{card:cardNumberElement, billing_details:{name:name}}}).then(function(response)
{
if(response.error)
{
// billing error, track for fraud
var errorMessage = response.error.message;
var errorType = response.error.type;
var errorParam = response.error.param;
var errorCode = response.error.code;
var errorDeclineCode = response.error.decline_code;
if(response.error.payment_intent && (errorDeclineCode == "pickup_card" || errorDeclineCode == "stolen_card"))
{
$.post("/api/user/stripeTrack", {id:response.error.payment_intent.id},
function(data)
{
}, "json");
}
$("#updateBillingModalAlert").html(errorMessage).show();
$('#updateBillingModal_loading').hide();
$('#updateBillingModal_button').show();
if(errorParam == "owner[name]")
{
$('#updateBillingModalControlGroup_cardName').addClass('error');
$('#updateBillingModal_cardName').focus();
return;
}
else if(errorParam == "number")
{
$('#updateBillingModalControlGroup_cardNumber').addClass('error');
$('#updateBillingModal_cardNumber').focus();
return;
}
else if(errorParam == "exp_year" || errorParam == "exp_month")
{
$('#updateBillingModalControlGroup_expires').addClass('error');
$('#updateBillingModal_expires').focus();
return;
}
else if(errorParam == "cvc")
{
$('#updateBillingModalControlGroup_cardCode').addClass('error');
$('#updateBillingModal_cardCode').focus();
return;
}
else
{
errorParam = 'number';
$('#updateBillingModalControlGroup_cardNumber').addClass('error');
$('#updateBillingModal_cardNumber').focus();
return;
}
}
else
{
var sid = response['setupIntent']['id'];
$.post("/api/user/savePaymentInfo", {sid:sid},
function(data)
{
if(data['error'] == 0)
{
window.location.reload();
}
else
{
$('#updateBillingModalAlert').html(data['message']).show();
$('#updateBillingModal_loading').hide();
$('#updateBillingModal_button').show();
}
}, "json");
}
});
}
}, "json");
}
function deleteBillingProfile(e)
{
if(confirm("Are you sure you want to delete your card? Your products will not automatically renew."))
{
$.post("/api/user/deleteBillingProfile", {empty:true},
function(data)
{
var error = data.error;
var message = data.message;
if(error == 0)
{
window.location.reload();
}
else
{
alert(message);
}
}, "json");
}
}
function showBuyNowBillingModal(domainInfo)
{
var durationDropDownHtml = '';
if(domainInfo['minYears'] && domainInfo['maxYears'])
{
durationDropDownHtml = '<select class="form-control" id="billingModal_duration" style="margin-top:7px; '+(domainInfo['minYears'] == domainInfo['maxYears'] ? 'display:none;' : '')+'" onchange="getBillingModalPriceDisplay();">';
for(var i = domainInfo['minYears']; i < (domainInfo['maxYears'] + 1); i++)
{
durationDropDownHtml += '<option value="'+i+'">'+i+' year(s)';
}
durationDropDownHtml += '</select> ';
}
$('#payment_loading').hide();
$('#billingModalButtonContainer').show();
$('#billingModal_billingAgreement').show();
if(domainInfo['closeWindow']) $('#checkoutOrderInfo').attr('data-close-window', domainInfo['closeWindow']);
$('#checkoutOrderInfo').attr('data-orderType', 'buyNow');
$('#checkoutOrderInfo').attr('data-orderType', 'buyNow');
$('#checkoutOrderInfo').attr('data-domain', domainInfo['domain']);
$('#checkoutOrderInfo').attr('data-invoice-id', domainInfo['invoiceId']);
$('#checkoutOrderInfo').attr('data-transfer-id', domainInfo['transferId']);
$('#checkoutOrderInfo').attr('data-process-code', domainInfo['processCode']);
if(domainInfo['cnisId']) $('#checkoutOrderInfo').attr('data-cnisId', domainInfo['cnisId']);
$('#billingModalHeader').html(domainInfo['domain'].toUpperCase());
if(domainInfo.discount)
// $('#billingModalHeader').append('<input type="hidden" id="billingModal_pricePerYear" value="'+(domainInfo.discount / 100)+'">');
$('#billingModalHeader').append('<input type="hidden" id="billingModal_pricePerYear" value="'+(domainInfo.pricePerYear / 100)+'">');
else if(domainInfo.pricePerYear)
$('#billingModalHeader').append('<input type="hidden" id="billingModal_pricePerYear" value="'+(domainInfo.pricePerYear / 100)+'">');
if(domainInfo['discount'])
// $('#billingModalHeader').append('<br><p class="muted "><small>'+durationDropDownHtml+'$<span id="billingModal_priceDisplay">'+(domainInfo['discount'] / 100).toFixed(2)+'</span></small></p>');
$('#billingModalHeader').append('<br><p class="muted "><small>'+durationDropDownHtml+'$<span id="billingModal_priceDisplay">'+(domainInfo['price'] / 100).toFixed(2)+'</span></small></p>');
else if(domainInfo['price'])
$('#billingModalHeader').append('<br><p class="muted "><small>'+durationDropDownHtml+'$<span id="billingModal_priceDisplay">'+(domainInfo['price'] / 100).toFixed(2)+'</span></small></p>');
else if(domainInfo['plan_price'])
$('#billingModalHeader').append('<br><p class="muted "><small>'+(domainInfo['planDescription'] ? domainInfo['planDescription']+'<br>' : '')+'$<span id="billingModal_priceDisplay">'+(domainInfo['plan_price'] / 100).toFixed(2)+(domainInfo['planInterval'] ? ' / '+domainInfo['planInterval'] : '')+'</span></small></p>');
if(domainInfo['plan'] && domainInfo['plan_price'] == 0)
{
//$('#billingModalAgree').prop('checked', true);
$('#billingModalProcessCardButton').click();
}
else
$('#billingModal').modal('show');
}
function checkCardNumber(e)
{
var number = jQuery.trim($(e).val());
//var cardType = Stripe.cardType(number);
var cardType = 'Unknown';
var iconId = $(e).attr('data-iconId');
if(cardType != "Unknown")
{
$('#'+iconId).html('<img src="/images/'+cardType.replace(" ", "_")+'.png" style="height:18px;">');
}
else
{
$('#'+iconId).html('');
}
}
function handleWebAuthnChallenge(webAuthnChallenge, handler)
{
webauthnAuthenticate(webAuthnChallenge, function(success, info)
{
if(success)
{
$('.accountLoginButton').prop('disabled', true);
$('.accountLoginButton').html('<img src="/media/loading.sml.gif"> XOXO');
$.post("/api/user/webauthnAuthenticate", {"webAuthnInfo":info},
function(data)
{
if(data['error'] == 1)
{
alert(data['message']);
}
else
{
handler();
return;
}
}, "json");
}
else
{
if(info != "abort")
alert(info);
}
});
}
function updateAccount(passwordOnly)
{
//$('#updateAccountButton').hide();
//$('#updateAccountLoading').show();
$('.controlGroupUpdateAccount').removeClass('error');
$('.updateAccountError').html('');
var username = jQuery.trim($('#updateAccountUsername').val());
var password = jQuery.trim($('#updateAccountPassword').val());
var passwordConfirm = jQuery.trim($('#updateAccountPasswordConfirm').val());
var email = jQuery.trim($('#updateAccountEmail').val());
var emailBackup = jQuery.trim($('#updateAccountEmailBackup').val());
var emailConfirm = jQuery.trim($('#updateAccountEmailConfirm').val());
var vat = jQuery.trim($('#updateAccountVAT').val());
var phone = jQuery.trim($('#updateAccountPhone').val());
var phoneCode = jQuery.trim($('#updateAccountPhoneCode').val());
var name = jQuery.trim($('#updateAccountName').val());
var companyName = jQuery.trim($('#updateAccountCompanyName').val());
var address = jQuery.trim($('#updateAccountAddress').val());
var passwordVerify = jQuery.trim($('#updateAccountVerifyPassword').val());
var twoFactorLoginCodeVerify = jQuery.trim($('#updateAccountVerifyTwoFactorLoginCode').val());
if(passwordOnly)
passwordOnly = 1;
$('#updateAccountVerifyPassword').val('');
username = null;
$.post("/api/user/update", {"passwordOnly":passwordOnly, "passwordVerify":passwordVerify, "twoFactorLoginCodeVerify":twoFactorLoginCodeVerify, "username":username, "password":password, "passwordConfirm":passwordConfirm, "email":email, "emailBackup":emailBackup, "emailConfirm":emailConfirm, "vat":vat, "phone":phone, "name":name, "address":address, "phoneCode":phoneCode, "companyName":companyName},
function(data)
{
if(data['error'])
{
if(data['message'])
{
alert(data['message']);
return;
}
for(var field in data['errorFields'])
{
var message = data['errorFields'][field];
if(field == 'none')
{
$('#controlGroupUpdateAccountNone').addClass('error');
$('#updateAccountErrorNone').html(message);
}
if(field == 'username')
{
$('#controlGroupUpdateAccountUsername').addClass('error');
$('#updateAccountErrorUsername').html(message);
}
if(field == 'email')
{
$('#controlGroupUpdateAccountEmail').addClass('error');
$('#updateAccountErrorEmail').html(message);
}
if(field == 'emailBackup')
{
$('#controlGroupUpdateAccountEmailBackup').addClass('error');
$('#updateAccountErrorEmailBackup').html(message);
}
if(field == 'password')
{
$('#controlGroupUpdateAccountPassword').addClass('error');
$('#updateAccountErrorPassword').html(message);
}
if(field == 'vat')
{
$('#controlGroupUpdateAccountVAT').addClass('error');
$('#updateAccountErrorVAT').html(message);
}
if(field == 'phone')
{
$('#controlGroupUpdateAccountPhone').addClass('error');
$('#updateAccountErrorPhone').html(message);
}
if(field == 'phoneCode')
{
$('#controlGroupUpdateAccountPhoneCode').addClass('error');
$('#updateAccountErrorPhoneCode').html(message);
}
if(field == 'name')
{
$('#controlGroupUpdateAccountName').addClass('error');
$('#updateAccountErrorName').html(message);
}
if(field == 'address')
{
$('#controlGroupUpdateAccountAddress').addClass('error');
$('#updateAccountErrorAddress').html(message);
}
}
$('#updateAccountButton').show();
$('#updateAccountLoading').hide();
$('#updateAccountVerifyPassword').val('');
$('#updateAccountVerifyTwoFactorLoginCode').val('');
$('#accountUpdateTwoFactorContainer').hide();
$('#modal_updateAccount').modal('hide');
window.scrollTo(0, 0);
}
else
{
if(data['webAuthnChallenge'])
{
handleWebAuthnChallenge(data['webAuthnChallenge'], function()
{
updateAccount(passwordOnly);
});
return;
}
if(data['verify'])
{
$('#updateAccountVerifyPassword').val('');
$('#updateAccountVerifyTwoFactorLoginCode').val('');
$('#accountUpdateTwoFactorContainer').hide();
$('#modal_updateAccount').modal('show');
return;
}
if(data['twoFactor'])
{
$('#accountUpdateTwoFactorContainer').slideDown();
return;
}
$('#updateAccountVerifyPassword').val('');
$('#updateAccountVerifyTwoFactorLoginCode').val('');
$('#accountUpdateTwoFactorContainer').hide();
if(passwordOnly)
{
alert("Your account password has been updated.");
window.location = "/account/domains";
}
else
{
alert("Your account settings have been updated.");
window.location.reload();
}
}
}, "json");
}
function toggleUpdateAccountHidden()
{
$('#updateAccountHidden').toggle(function()
{
if($('#updateAccountHidden').css('display') != 'none')
{
$('#updateAccountUsername').removeAttr('disabled');
$('#updateAccountEmail').removeAttr('disabled');
$('#updateAccountUsername').focus();
}
else
{
$('#updateAccountUsername').attr('disabled', 'disabled');
$('#updateAccountEmail').attr('disabled', 'disabled');
}
});
}
function processTldRequirements()
{
$('#messageModal_loading').show();
$('#messageModal_button').hide();
var tldRequirements = {};
var type = $('#tldRequirement').attr('data-type');
var subType = $('#tldRequirement').attr('data-subType');
var domain = $('#tldRequirement').attr('data-domain');
$('.tldRequirement').each(function(i, obj)
{
var requirement = $(obj).attr('data-requirementname');
var value = $(obj).val();
if(!tldRequirements[type]) tldRequirements[type] = {};
if(!tldRequirements[type][subType]) tldRequirements[type][subType] = {};
tldRequirements[type][subType][requirement] = value;
});
$.post("/api/user/processTldRequirements", {tldRequirements: tldRequirements, domain: domain},
function(data)
{
var error = data['error'];
var message = data['message'];
if(error == 0)
{
$('#messageModal').one('hidden', function()
{
if(buyNowPostLogin.length > 0)
{
domainBuyNow(buyNowPostLogin, 'registration');
}
});
$('#messageModal').modal('hide');
}
else
{
$('#tldRequirements_alert').html(message).removeClass('alert-info').addClass('alert-error');
$('#messageModal_loading').hide();
$('#messageModal_button').show();
}
}, "json");
}
function getTldRequirementsFormParts(tldRequirements, domain, extended)
{
var bodyHtml = '';
for(var requirementType in tldRequirements)
{
if(requirementType == 'contact')
{
for(var subRequirementType in tldRequirements[requirementType])
{
bodyHtml += '<div id="tldRequirements_alert" class="alert alert-info">Some domain registries have additional registration requirements. Please provide the following information.';
bodyHtml += '<h2>'+subRequirementType+' '+requirementType+'</h2>';
bodyHtml += '<input type="hidden" id="tldRequirement" data-type="'+requirementType+'" data-subType="'+subRequirementType+'" data-domain="'+domain+'">';
var requirements = tldRequirements[requirementType][subRequirementType];
for(var i = 0; i < requirements.length; i++)
{
var requirement = requirements[i];
var requirementName = requirement['name'];
var requirementDisplay = requirement['display'];
var requirementValues = requirement['values'];
bodyHtml += '<label>'+requirementDisplay+'</label>';
bodyHtml += '<select data-requirementName="'+requirementName+'" class="tldRequirement form-control">';
for(var requirementPartValue in requirementValues)
{
var requirementPart = requirementValues[requirementPartValue];
var requirementPartValue = requirementPart['value'];
var requirementPartDisplay = requirementPart['display'];
bodyHtml += '<option value="'+requirementPartValue+'" '+((extended && extended[requirementName] == requirementPartValue) ? 'SELECTED' : '')+'>'+requirementPartDisplay+'</option>';
}
bodyHtml += '</select>';
}
bodyHtml += '</div>';
}
}
}
return(bodyHtml);
}
function showMessageModal(header, body, dataDismiss, buttonHtml, buttonOnclick, showClose, closeButtonOnclick)
{
$('#messageModal_alert').hide();
$('#messageModal_alert').html('');
$('#messageModal_loading').hide();
$('#messageModal_button').show();
$('#messageModal_closeButton').hide();
$('#messageModal').on('hidden', function()
{
});
dataDismiss = dataDismiss ? dataDismiss : 'modal';
buttonHtml = buttonHtml ? buttonHtml : 'Close';
buttonOnclick = buttonOnclick ? buttonOnclick : '';
closeButtonOnclick = closeButtonOnclick ? closeButtonOnclick : '';
$('#messageModal_button').attr('data-dismiss', dataDismiss);
$('#messageModal_button').html(buttonHtml);
if(buttonOnclick)
{
$('#messageModal_button').attr('onclick','').unbind('click');
$('#messageModal_button').click(buttonOnclick);
$('#messageModal_button').attr('onclick', buttonOnclick);
}
else
$('#messageModal_button').attr('onclick','').unbind('click');
if(closeButtonOnclick)
{
$('#messageModal_closeButton').attr('onclick','').unbind('click');
$('#messageModal_closeButton').click(closeButtonOnclick);
$('#messageModal_closeButton').attr('onclick', closeButtonOnclick);
}
else
$('#messageModal_closeButton').attr('onclick','').unbind('click');
if(showClose)
{
$('#messageModal_closeButton').html(showClose);
$('#messageModal_closeButton').show();
$('#messageModal_button').removeAttr('data-dismiss');
}
$('#messageModalHeader').html(header);
$('#messageModalBody').html(body);
$('#messageModal').modal('show');
}
function processPhone(t, e)
{
if (e && ((e.which && e.which == 37) || (e.keyCode && e.keyCode == 37) || (e.which && e.which == 39) || (e.keyCode && e.keyCode == 39)))
return;
var number = jQuery.trim($(t).val());
var country = jQuery.trim($('#newAccountPhoneCode').val());
if(!country)
country = jQuery.trim($('#editContactsModalPhoneCode_registrant').val());
if(country.indexOf(':') > -1)
{
country = country.split(':');
country = country[1];
}
if(!country || country.length != 2)
country = 'US';
jQuery.trim($(t).val(formatInternational(country, cleanPhone(number))));
}
function showAccountContactsModal()
{
$('#accountContactsModal_loading').hide();
$('#accountContactsModal_button').show();
$('#accountContactsModal').modal('show');
}
function getBillingModalPriceDisplay()
{
var duration = $('#billingModal_duration').val();
var pricePerYear = $('#billingModal_pricePerYear').val();
var price = (pricePerYear * duration).toFixed(2);
$('#billingModal_priceDisplay').html(price);
}
function processSearchSubmit()
{
var searchString = jQuery.trim($('#domainSearchInput').val());
var checkTlds = jQuery.trim($('#domainSearchButton').attr('data-checkTlds'));
if(searchString)
{
document.location.href = "/checkout/search/"+encodeURIComponent(searchString)+(checkTlds ? '?tlds='+checkTlds : '');
}
}
var processingChecks = false;
var processingChecksDone = false;
function processCheck(checkId, searchString, searchTld, addToCart, searchHash)
{
var counter = 0;
var maxCount = 50;
$(".hideUponSearchResults").slideUp();
var getChecksInterval = setInterval(function ()
{
if(!processingChecks)
{
if(counter >= maxCount || processingChecksDone)
{
window.clearInterval(getChecksInterval);
$('.pendingDomain').removeClass('pendingDomain').addClass('unavailableDomain');
$('.searchResultRowOptionsPending').html('');
$('.searchResultRowPricePending').html('&nbsp;<br><small class="text-muted">timeout</small>');
$('#searchResultsHeader').not('.searchResultsHeaderSet').html('');
$.post("/api/domains/clearChecks", {checkId: checkId, searchHash: searchHash},
function(datas)
{
}, "json");
}
else
{
counter++;
getChecks(checkId, searchString, searchTld, addToCart, searchHash);
}
}
}, 1000);
}
function toggleShowAftermarketDomains()
{
$(".searchResultItem_afternic_hidden").toggle();
$(".searchResultItem_marketplace_hidden").toggle();
if($("#aftermarketShowMoreLink").html() == "show more aftermarket domains")
{
$("#aftermarketShowMoreLink").html("show less aftermarket domains");
}
else
{
$("#aftermarketShowMoreLink").html("show more aftermarket domains");
}
}
var haveAfternic = false;
var haveTruename = false;
var haveMarketplace = false;
var haveDaxauction = false;
function getChecks(checkId, searchString, searchTld, addToCart, searchHash)
{
processingChecks = true;
$.post("/api/domains/getChecks", {checkId: checkId, addToCart: addToCart, searchHash: searchHash},
function(datas)
{
if(addToCart)
{
$.get("/api/user/getCart", {empty:true},
function(data)
{
if(data['cart'])
updateCart(data['cart']);
}, "json");
}
var havePending = false;
var exactMatch = false;
var foundExactMatch = false;
if(!checkId && (!datas || datas.length < 1))
{
window.location.reload();
return;
}
if(!datas || datas.length < 1)
{
return;
processingChecks = false;
}
var hideUnavailable = "off";
if(datas['settings'])
{
hideUnavailable = datas['settings']['hideUnavailable'];
datas = datas['results'];
}
var skipDomains = {};
var aftermarketShowMoreLinkShowing = false;
for(var i = 0; i < datas.length; i++)
{
$('.sortByPriceButton').show();
var data = datas[i];
var result = data['result'];
var domain = data['domain'];
var domainTld = data['tld'];
var price = parseInt(data['extended']['price']);
var hostingBundle = data['extended']['hostingBundle'];
var regularPrice = parseInt(data['extended']['regularPrice']);
var discount = parseInt(data['extended']['discount']);
var tld = data['extended']['tld'];
var subdomain = data['extended']['subdomain'];
var available = data['result'];
var premium = data['extended']['premium'];
var type = data['type'];
var eapAvailable = data['eapAvailable'];
var idDomain = domain.replace(/\./g,"_");
var weight = data['weight'];
var firstYearPromo = data['extended']['firstYearPromo'];
var allocationToken = '';
var maxPerUser = '';
var idn = '';
var truenameCount = 0;
var afternicCount = 0;
var exactMatchAfternicCount = 0;
var exactMatchTruenameCount = 0;
var marketplaceCount = 0;
var daxauctionCount = 0;
var exactMatchMarketplaceCount = 0;
var exactMatchDaxauctionCount = 0;
var haveAftermarket = false;
var afternicTotal = 0;
var truenameTotal = 0;
var marketplaceTotal = 0;
var daxauctionTotal = 0;
var inCart = '0';
var optionsHTML = '';
var renewalPrice = price;
var salePrice = price;
if(data['extended']['allocationToken'])
allocationToken = data['extended']['allocationToken'];
if(weight < 18)
$(".searchResultsSectionLabelHidden").show();
if(result == 'PENDING')
{
havePending = true;
continue;
}
if(type == 'truenamee')
{
if(haveTruename)
continue;
haveTruename = true;
if(data['extended'] && data['extended']['domains'])
{
for (var key in data['extended']['domains'])
{
truenameCount++;
idDomain = key.replace(/\./g,"_");
if($("#searchResultRow_"+idDomain).length)
{
$("#searchResultRow_"+idDomain).appendTo("#searchResultContainer_truename");
$("#searchResultRowDomain_"+idDomain).append('<img style="margin-left:10px;" width="20" height="20" class="toolTip" src="/images/true_name_logo.png" data-toggle="tooltip" data-placement="top" title="" data-original-title="Truename provides extra security to protect against phishing and counterfeit domains.">');
$("#searchResultRow_"+data['extended']['keyword']).remove();
}
else
{
}
}
}
if(truenameCount)
{
$('.toolTip').tooltip({});
$('.searchResultsSectionContainer_truename').show();
}
continue;
}
var aftermarketShowMoreLink = "";
aftermarketShowMoreLink = '<p><small tabindex="0" role="button" id="aftermarketShowMoreLink" style="display:none;" class=\'fakeLink black\' onclick=\'toggleShowAftermarketDomains();\' onkeypress=\'processKeyPress(event, toggleShowAftermarketDomains());\'>show more aftermarket domains</small></p>';
if(!aftermarketShowMoreLinkShowing)
{
$('#searchResultContainer_afternic').append(aftermarketShowMoreLink);
aftermarketShowMoreLinkShowing = true;
}
if(type == 'afternic' && !haveAfternic)
{
var haveExactMatchAfternic = false;
haveAfternic = true;
if(data['extended'] && data['extended']['domains'])
{
for (var key in data['extended']['domains'])
{
skipDomains[key] = true;
var exactMatchAfternic = searchString.toLowerCase() == key.toLowerCase();
var idDomain = key.replace(/\./g, '_');
var fastTransfer = data['extended']['domains'][key]['fastTransfer'];
inCart = "0";
if(data['extended']['domains'][key]['inCart'])
inCart = data['extended']['domains'][key]['inCart'];
if(fastTransfer)
fastTransfer = ' <span class="badge badge-white pointer" onclick="showMessageModal(\'Fast Transfer\', \'This aftermarket domain supports fast transfer. Although it can sometimes take longer, this usually means that the domain will be transferred into your account within several minutes.\');"><i class="fas fa-bolt"></i></span>';
else
fastTransfer = "";
if($('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').length)
{
if(inCart == '0')
optionsHTML = '\
<a aria-label="Checkout." class="" id="checkoutButton'+idDomain+'" href="/checkout/cart" style="display:none;"><span class="glyphicon glyphicon-shopping-cart"></span></a> \
<button data-handshake="'+(data['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Add '+key+' to cart." class="searchAddRemoveIconSideBar searchAddIcon fontLarger text-xiaofu btn btn-default" onkeypress="processKeyPress(event, accountDomainsSingleAction(this));" onclick="accountDomainsSingleAction(this);" data-idn="'+idn+'" data-trending-slot="" data-from-search="1" data-type="afternic" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-plus"></span></button>';
else
optionsHTML = '\
<a aria-label="Checkout." class="" id="checkoutButton'+idDomain+'" href="/checkout/cart"><span class="glyphicon glyphicon-shopping-cart"></span></a> \
<button data-handshake="'+(data['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Remove '+key+' from cart." class="searchAddRemoveIconSideBar searchRemoveIcon fontLarger btn btn-default" onkeypress="processKeyPress(event, removeCartItem(this));" onclick="removeCartItem(this);" data-idn="'+idn+'" data-from-search="1" data-type="afternic" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-remove"></span></button>';
}
else
{
if(inCart == '0')
optionsHTML = '\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart" style="display:none;"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-handshake="'+(data['extended']['domains'][key]['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Add '+key+' to cart." class="searchAddRemoveIcon searchAddIcon fontLarger text-xiaofu pointer btn btn-default" onkeypress="processKeyPress(event, accountDomainsSingleAction(this));" onclick="accountDomainsSingleAction(this);" data-idn="" data-trending-slot="" data-from-search="1" data-type="afternic" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-plus"></span></button>';
else
optionsHTML = '\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-handshake="'+(data['extended']['domains'][key]['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Remove '+key+' from cart." class="searchAddRemoveIcon searchRemoveIcon fontLarger pointer btn btn-default" onkeypress="processKeyPress(event, removeCartItem(this));" onclick="removeCartItem(this);" data-idn="" data-from-search="1" data-type="afternic" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-remove"></span></button>';
}
if(exactMatchAfternic)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").hide();
haveExactMatchAfternic = true;
exactMatchAfternicCount++;
}
var haveMatchAfternic = false;
if($('#searchResultRow_'+idDomain+":not(.availableDomainRow)").length)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").hide();
haveMatchAfternic = true;
}
var aftermarketAppendHtml = '<div class="well well-sm well-sm-margin weight_'+weight+' searchResultItem_afternic '+(haveMatchAfternic ? '' : 'searchResultItem_afternic_hidden')+'" style="'+(haveMatchAfternic ? '' : 'display:none;')+'">\
<div id="searchResultRow_'+idDomain+'" class="searchResultRow" data-in-cart="'+inCart+'" data-bulk-search="" data-trending-slot="" data-result-type="other" data-result-count="1" data-processed="yes">\
<div class="row searchResultRowTable">\
<div id="searchResultRowDomain_'+idDomain+'" class="col-md-5 searchResultRowDomainAftermarket searchResultRowCell availableDomain">'+key+'</div>\
<div id="searchResultRowPrice_'+idDomain+'" class="col-md-4 searchResultRowPrice searchResultRowCell">\
<span class="childContent">\
<span class="pull-left">\
<span class="badge badge-xiaofu">Aftermarket</span>'+fastTransfer+'\
</span>\
$'+data['extended']['domains'][key]['priceDisplay']+'<br><small class="text-muted">+ transfer fee</small> \
</span>\
</div>\
<div id="searchResultRowOptions_'+idDomain+'" class="col-md-3 searchResultRowOptions searchResultRowCell">\
<span class="childContent"><div class="pull-right searchOptionsContainer">'+optionsHTML+'</div></span>\
</div>\
</div>\
</div>\
</div>';
// owen
if(haveMatchAfternic)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").parent().removeClass('well well-sm well-sm-margin');
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").after(aftermarketAppendHtml);
}
else if($('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').length)
{
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').attr('data-populated', 'afternic').attr('data-time1', Date.now());
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').find('#searchResultRowPrice_'+idDomain+'').html('<span class="badge badge-xiaofu">Aftermarket</span><br><div style="line-height:14px; margin-top:10px; margin-bottom:5px;">$'+data['extended']['domains'][key]['priceDisplay']+'<br><small class="text-muted renewsAtContainer">+ transfer fee</small></div>');
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').find('#searchResultRowOptions_'+idDomain).find('.searchOptionsContainer').html(optionsHTML);
}
else
$('#searchResultContainer_afternic').append(aftermarketAppendHtml);
afternicCount++;
}
}
if(afternicCount)
{
$('.searchResultsSectionContainer_afternic').show();
}
continue;
}
if(type == 'marketplace' && !haveMarketplace)
{
var haveExactMatchMarketplace = false;
haveMarketplace = true;
if(data['extended'] && data['extended']['domains'])
{
for (var key in data['extended']['domains'])
{
skipDomains[key] = true;
var exactMatchMarketplace = searchString.toLowerCase() == key.toLowerCase();
var idDomain = key.replace(/\./g, '_');
var fastTransfer = ' <span class="badge badge-white pointer" onclick="showMessageModal(\'Fast Transfer\', \'This aftermarket domain supports fast transfer. Although it can sometimes take longer, this usually means that the domain will normally be transferred into your account within several minutes.\');"><i class="fas fa-bolt"></i></span>';
inCart = "0";
if(data['extended']['domains'][key]['inCart'])
inCart = data['extended']['domains'][key]['inCart'];
if($('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').length)
{
if(inCart == '0')
optionsHTML = '\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart" style="display:none;"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-handshake="'+(data['extended']['domains'][key]['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Add '+key+' to cart." class="searchAddRemoveIconSideBar searchAddIcon fontLarger text-xiaofu pointer btn btn-default" onkeypress="processKeyPress(event, accountDomainsSingleAction(this));" onclick="accountDomainsSingleAction(this);" data-idn="" data-trending-slot="" data-from-search="1" data-type="marketplace" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-plus"></span></button>';
else
optionsHTML = '\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-handshake="'+(data['extended']['domains'][key]['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Remove '+key+' from cart." class="searchAddRemoveIconSideBar searchRemoveIcon fontLarger pointer btn btn-default" onkeypress="processKeyPress(event, removeCartItem(this));" onclick="removeCartItem(this);" data-idn="" data-from-search="1" data-type="marketplace" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-remove"></span></button>';
}
else
{
if(inCart == '0')
optionsHTML = '\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart" style="display:none;"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-handshake="'+(data['extended']['domains'][key]['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Add '+key+' to cart." class="searchAddRemoveIcon searchAddIcon fontLarger text-xiaofu pointer btn btn-default" onkeypress="processKeyPress(event, accountDomainsSingleAction(this));" onclick="accountDomainsSingleAction(this);" data-idn="" data-trending-slot="" data-from-search="1" data-type="marketplace" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-plus"></span></button>';
else
optionsHTML = '\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-handshake="'+(data['extended']['domains'][key]['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Remove '+key+' from cart." class="searchAddRemoveIcon searchRemoveIcon fontLarger pointer btn btn-default" onkeypress="processKeyPress(event, removeCartItem(this));" onclick="removeCartItem(this);" data-idn="" data-from-search="1" data-type="marketplace" data-domain="'+key+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-remove"></span></button>';
}
if(exactMatchMarketplace)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").hide();
haveExactMatchMarketplace = true;
exactMatchMarketplaceCount++;
}
var haveMatchAfternic = false;
if($('#searchResultRow_'+idDomain+":not(.availableDomainRow)").length)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").hide();
haveMatchAfternic = true;
}
var aftermarketAppendHtml = '<div class="well well-sm well-sm-margin weight_'+weight+' searchResultItem_afternic '+(haveMatchAfternic ? '' : 'searchResultItem_afternic_hidden')+'" style="'+(haveMatchAfternic ? '' : 'display:none;')+'">\
<div id="searchResultRow_'+idDomain+'" class="searchResultRow" data-in-cart="'+inCart+'" data-bulk-search="" data-trending-slot="" data-result-type="other" data-result-count="1" data-processed="yes">\
<div class="row searchResultRowTable">\
<div id="searchResultRowDomain_'+idDomain+'" class="col-md-5 searchResultRowDomainAftermarket searchResultRowCell availableDomain">'+key+'</div>\
<div id="searchResultRowPrice_'+idDomain+'" class="col-md-4 searchResultRowPrice searchResultRowCell">\
<span class="childContent">\
<span class="pull-left">\
<span class="badge badge-xiaofu">xiaofu Marketplace</span> <span class="badge badge-white pointer"><a href="/marketplace?q='+searchString+'" target="_NEW" style="color:gray;"><i class="fas fa-search"></i></a></span> '+fastTransfer+'\
</span>\
$'+data['extended']['domains'][key]['priceDisplay']+' \
</span>\
</div>\
<div id="searchResultRowOptions_'+idDomain+'" class="col-md-3 searchResultRowOptions searchResultRowCell">\
<span class="childContent"><div class="pull-right searchOptionsContainer">'+optionsHTML+'</div></span>\
</div>\
</div>\
</div>\
</div>';
if(haveMatchAfternic)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").parent().removeClass('well well-sm well-sm-margin');
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").after(aftermarketAppendHtml);
}
else if($('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').length)
{
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').attr('data-populated', 'marketplace').attr('data-time1', Date.now());
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').find('#searchResultRowPrice_'+idDomain+'').html('<span class="badge badge-xiaofu">Marketplace</span><br><div style="line-height:14px; margin-top:10px; margin-bottom:5px;">$'+data['extended']['domains'][key]['priceDisplay']+'</div>');
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').find('#searchResultRowOptions_'+idDomain).find('.searchOptionsContainer').html(optionsHTML);
}
else
$('#searchResultContainer_afternic').append(aftermarketAppendHtml);
marketplaceCount++;
}
}
if(marketplaceCount)
{
$('.searchResultsSectionContainer_afternic').show();
}
continue;
}
if(type == 'daxauction' && !haveDaxauction)
{
var haveExactMatchDaxauction = false;
haveDaxauction = true;
if(data['extended'] && data['extended']['domains'])
{
for (var key in data['extended']['domains'])
{
skipDomains[key] = true;
var exactMatchDaxauction = searchString.toLowerCase() == key.toLowerCase();
var idDomain = key.replace(/\./g, '_');
var fastTransfer = '';
inCart = "0";
if(data['extended']['domains'][key]['inCart'])
inCart = data['extended']['domains'][key]['inCart'];
// owen
if(inCart == '0')
optionsHTML = '\
<a href="/auctions?q='+key+'#bid=1" target="_blank" aria-label="Add '+key+' to cart." class="btn btn-xiaofu-white btn-xs">See Auction</a>';
if(exactMatchDaxauction)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").hide();
haveExactMatchDaxauction = true;
exactMatchDaxauctionCount++;
}
var haveMatchAfternic = false;
if($('#searchResultRow_'+idDomain+":not(.availableDomainRow)").length)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").hide();
haveMatchAfternic = true;
}
var aftermarketAppendHtml = '<div class="well well-sm well-sm-margin weight_'+weight+' searchResultItem_afternic '+(haveMatchAfternic ? '' : 'searchResultItem_afternic_hidden')+'" style="'+(haveMatchAfternic ? '' : 'display:none;')+'">\
<div id="searchResultRow_'+idDomain+'" class="searchResultRow" data-in-cart="'+inCart+'" data-bulk-search="" data-trending-slot="" data-result-type="other" data-result-count="1" data-processed="yes">\
<div class="row searchResultRowTable">\
<div id="searchResultRowDomain_'+idDomain+'" class="col-md-5 searchResultRowDomainAftermarket searchResultRowCell availableDomain">'+key+'</div>\
<div id="searchResultRowPrice_'+idDomain+'" class="col-md-4 searchResultRowPrice searchResultRowCell">\
<span class="childContent">\
<span class="pull-left">\
<span class="badge badge-xiaofu">xiaofu Auction</span> \
</span>\
$'+data['extended']['domains'][key]['priceDisplay']+' \
<br><small class="text-muted renewsAtContainer">current bid</small> \
</span>\
</div>\
<div id="searchResultRowOptions_'+idDomain+'" class="col-md-3 searchResultRowOptions searchResultRowCell">\
<span class="childContent"><div class="pull-right searchOptionsContainer">'+optionsHTML+'</div></span>\
</div>\
</div>\
</div>\
</div>';
if(haveMatchAfternic)
{
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").parent().removeClass('well well-sm well-sm-margin');
$('#searchResultRow_'+idDomain+":not(.availableDomainRow)").after(aftermarketAppendHtml);
}
else if($('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').length)
{
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').attr('data-populated', 'daxauction').attr('data-time1', Date.now());
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').find('#searchResultRowPrice_'+idDomain+'').html('<span class="badge badge-xiaofu">Auction</span><br><div style="line-height:14px; margin-top:10px; margin-bottom:5px;">$'+data['extended']['domains'][key]['priceDisplay']+'<br><small class="text-muted renewsAtContainer">current bid</small></div>');
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').find('#searchResultRowOptions_'+idDomain).find('.searchOptionsContainer').html(""+optionsHTML+"");
}
else
$('#searchResultContainer_afternic').append(aftermarketAppendHtml);
daxauctionCount++;
}
}
if(marketplaceCount)
{
$('.searchResultsSectionContainer_afternic').show();
}
continue;
}
$('.toolTip').tooltip({});
if((haveMarketplace || haveAfternic))
{
$('#aftermarketShowMoreLink').show();
haveAftermarket = true;
}
if($("#searchResultRow_".idDomain).length > 0)
continue;
if(skipDomains[domain])
continue;
if(data['extended'] && data['extended']['idn'])
idn = data['extended']['idn'];
if(data['extended'] && data['extended']['pricing'] && data['extended']['pricing']['maxPerUser'])
maxPerUser = data['extended']['pricing']['maxPerUser'];
if(data['extended']['typePricing'] && data['extended']['typePricing']['renewal'] && data['extended']['typePricing']['renewal']['regularPrice'])
{
renewalPrice = (parseInt(data['extended']['typePricing']['renewal']['regularPrice']) / 100).toFixed(2);
salePrice = (parseInt(data['extended']['typePricing']['renewal']['price']) / 100).toFixed(2);
}
else if(data['extended']['typePricing'] && data['extended']['typePricing']['renewal'])
{
renewalPrice = (parseInt(data['extended']['typePricing']['renewal']['price']) / 100).toFixed(2);
salePrice = (parseInt(data['extended']['typePricing']['renewal']['price']) / 100).toFixed(2);
}
if(result != 'PENDING')
{
if($('#searchResultRow_'+idDomain).attr('data-processed') == 'yes')
continue;
$('#searchResultRow_'+idDomain).attr('data-processed', 'yes');
}
var priceDescription = '';
if(price)
price = price / 100;
else
price = 0;
if(discount)
discount = discount / 100;
else
discount = 0;
var priceBadge = "";
var finalPrice = price;
if(price == 0 || price - discount == 0)
{
finalPrice = 0;
if(discount)
price = '<small class="text-muted"><s>$'+price.toFixed(2)+'</s></small> <strong>FREE</strong>';
else
price = 'FREE';
}
else if(price && price != 'FREE')
{
if(discount)
{
finalPrice = price - discount;
priceBadge += '<span class="badge badge-xiaofu">Discount!</span> ';
if(price.toFixed(2) > (price - discount).toFixed(2))
// price = '<small class="text-muted"><s class="struckPrice2">$'+price.toFixed(2)+'</s></small> <strong>$'+(price - discount).toFixed(2)+'</strong>';
price = '<strong>$'+(price - discount).toFixed(2)+'</strong>';
else
price = '$'+(price - discount).toFixed(2);
//alert(price);
}
else
price = '$'+price.toFixed(2);
}
finalPrice = finalPrice.toFixed(2);
exactMatch = (searchString.toLowerCase() == domain.toLowerCase() || searchString.toLowerCase()+'.'+searchTld.toLowerCase() == domain.toLowerCase());
inCart = "0";
if(data['inCart'])
inCart = data['inCart'];
else
inCart = $('#searchResultRow_'+idDomain).attr('data-in-cart');
if(type != 'registration')
{
continue;
}
if(result == 'AVAILABLE')
{
optionsHTML = '';
if(premium)
priceDescription = '<small class="text-muted"><span onclick="showMessageModal(\'Premium Domains\', \'You may have noticed that certain domains are listed for a higher amount than the rate shown on our pricing page. These higher-priced domains are known as premium (or &quot;registry premium&quot;) domains.<br><br><a href=&quot;https://kb.babababa.cloud/article/41-what-are-premium-domains&quot; target=&quot;_new&quot;>Learn More</a>\')" class="glyphicon glyphicon-question-sign pointer" aria-hidden="more information"></span> premium / </small> ';
if(data['sideBar'])
{
if(inCart == '0')
optionsHTML = '\
<div class="searchOptionsContainer">\
<a aria-label="Checkout." class="" id="checkoutButton'+idDomain+'" href="/checkout/cart" style="display:none;"><span class="glyphicon glyphicon-shopping-cart"></span></a> \
<button data-tld="'+domainTld+'" data-handshake="'+(data['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Add '+domain+' to cart." class="searchAddRemoveIconSideBar searchAddIcon fontLarger text-xiaofu btn btn-default" onkeypress="processKeyPress(event, accountDomainsSingleAction(this));" onclick="accountDomainsSingleAction(this);" data-idn="'+idn+'" data-trending-slot="" data-from-search="1" data-type="registration" data-domain="'+domain+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-plus"></span></button> \
</div>';
else
optionsHTML = '\
<div class="searchOptionsContainer">\
<a aria-label="Checkout." class="" id="checkoutButton'+idDomain+'" href="/checkout/cart"><span class="glyphicon glyphicon-shopping-cart"></span></a> \
<button data-tld="'+domainTld+'" data-handshake="'+(data['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Remove '+domain+' from cart." class="searchAddRemoveIconSideBar searchRemoveIcon fontLarger btn btn-default" onkeypress="processKeyPress(event, removeCartItem(this));" onclick="removeCartItem(this);" data-idn="'+idn+'" data-from-search="1" data-type="registration" data-domain="'+domain+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-remove"></span></button> \
</div>';
if(renewalPrice)
{
if(parseFloat(salePrice) < parseFloat(renewalPrice))
{
priceDescription += '<small class="text-muted renewsAtContainer">renews at <s>$'+renewalPrice+'</s> SALE! $'+salePrice+'</small>';
}
else
priceDescription += '<small class="text-muted renewsAtContainer">renews at $'+renewalPrice+'</small>';
}
priceBadge += '<div style="margin-bottom:5px;">'+(regularPrice || firstYearPromo ? '<span class="badge badge-xiaofu">'+(maxPerUser && maxPerUser > 0 ? maxPerUser+' Per Customer ' : '')+(maxPerUser && maxPerUser > 0 && firstYearPromo ? '<br>' : '')+(firstYearPromo ? '1st Year ' : '')+'Sale!</span> ' : '')+'</div>';
var priceHtml = '<div style="line-height:14px; margin-top:10px; margin-bottom:5px;"><div style="">'+(regularPrice ? '<span><small class="text-muted"><s>$'+(regularPrice / 100).toFixed(2)+'</s></small></span> ' : '')+(regularPrice ? ''+price+'' : price)+' <small class="text-muted">/ year</small> '+priceDescription+'</div></div>';
$('#searchResultRow_'+idDomain).parent().attr('data-price', finalPrice);
$('#searchResultRow_'+idDomain).addClass('availableDomainRow');
$('#searchResultRowDomain_'+idDomain).addClass('availableDomain').removeClass('pendingDomain');
$('#searchResultRowPrice_'+idDomain).removeClass('searchResultRowPricePending').find('.childContent').html((priceBadge ? "<span class=''>"+priceBadge+"</span>" : "")+priceHtml);
$('#searchResultRowOptions_'+idDomain).removeClass('searchResultRowOptionsPending').find('.childContent').html(optionsHTML);
}
else
{
if(inCart == '0')
optionsHTML = '\
<div class="pull-right searchOptionsContainer">\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart" style="display:none;"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-tld="'+domainTld+'" data-allocation-token="'+allocationToken+'" data-handshake="'+(data['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Add '+domain+' to cart." class="searchAddRemoveIcon searchAddIcon fontLarger text-xiaofu pointer btn btn-default" onkeypress="processKeyPress(event, accountDomainsSingleAction(this));" onclick="accountDomainsSingleAction(this);" data-idn="'+idn+'" data-trending-slot="" data-from-search="1" data-type="registration" data-domain="'+domain+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-plus"></span></button> \
</div>';
else
optionsHTML = '\
<div class="pull-right searchOptionsContainer">\
<a aria-label="Checkout." class="btn btn-sm btn-default" id="checkoutButton'+idDomain+'" href="/checkout/cart"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Checkout</a> \
<button data-tld="'+domainTld+'" data-allocation-token="'+allocationToken+'" data-handshake="'+(data['isHandshakeDomain'])+'" id="addCartButton'+idDomain+'" aria-label="Remove '+domain+' from cart." class="searchAddRemoveIcon searchRemoveIcon fontLarger pointer btn btn-default" onkeypress="processKeyPress(event, removeCartItem(this));" onclick="removeCartItem(this);" data-idn="'+idn+'" data-from-search="1" data-type="registration" data-domain="'+domain+'" data-domain-id="'+idDomain+'" data-level="parent"><span class="glyphicon glyphicon-remove"></span></button> \
</div>';
if(renewalPrice)
{
if(parseFloat(salePrice) < parseFloat(renewalPrice))
{
priceDescription += '<small class="text-muted renewsAtContainer">renews at <s>$'+renewalPrice+'</s> SALE! $'+salePrice+'</small>';
}
else
priceDescription += '<small class="text-muted renewsAtContainer">renews at $'+renewalPrice+'</small>';
}
priceBadge += (regularPrice || firstYearPromo ? '<span class="badge badge-xiaofu">'+(maxPerUser && maxPerUser > 0 ? maxPerUser+' Per Customer ' : '')+(maxPerUser && maxPerUser > 0 && firstYearPromo ? '<br>' : '')+(firstYearPromo ? '1st Year ' : '')+'Sale!</span> ' : '');
var priceHtml = ''+(regularPrice ? '<span><small class="text-muted"><s class="struckPrice1">$'+(regularPrice / 100).toFixed(2)+'</s></small></span> ' : '')+(regularPrice ? ''+price+'' : price)+' <small class="text-muted">/ year</small><br>'+priceDescription+'';
if(hostingBundle)
{
renewalPrice = +renewalPrice + +(hostingBundle['price']/100).toFixed(2);
priceBadge = '<span class="badge badge-xiaofu">'+hostingBundle['name']+' Bundle</span>';
priceHtml = "$"+finalPrice+"<br><small class='text-muted renewsAtContainer'>bundle renews at $"+renewalPrice+"</small>";
}
$('#searchResultRow_'+idDomain).parent().attr('data-price', finalPrice);
$('#searchResultRow_'+idDomain).addClass('availableDomainRow');
$('#searchResultRowDomain_'+idDomain).addClass('availableDomain').removeClass('pendingDomain');
$('#searchResultRowPrice_'+idDomain).removeClass('searchResultRowPricePending').find('.childContent').html((priceBadge ? "<span class='pull-left'>"+priceBadge+"</span>" : "")+priceHtml);
$('#searchResultRowOptions_'+idDomain).removeClass('searchResultRowOptionsPending').find('.childContent').html(optionsHTML);
}
}
else if(result == 'UNAVAILABLE')
{
optionsHTML = '';
if(data['sideBar'] && !$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').attr('data-populated'))
{
$('#searchResultRowDomain_'+idDomain+'.sideBarSearchResults').attr('data-time2', Date.now());
//optionsHTML = '<a style="margin-top:35px;" data-original-title="You can work with a professional domain broker to try and buy this domain from its current owner." data-toggle="tooltip" class="toolTip btn btn-sm btn-default" target="_blank" href="https://buy.saw.com/registrar-landing-page?registrarId=ae76038e-6424-46a1-a40b-5098f8aae4fb&domainName='+domain+'">Make Offer</a>';
optionsHTML = '<br><small class="text-muted">unavailable</small>';
$('#searchResultRowDomain_'+idDomain).find('.searchOptionsContainer').html(optionsHTML);
$('#searchResultRowDomain_'+idDomain).appendTo('#searchResultsDomainContainerSide');
}
else
{
if(hideUnavailable == "on")
{
$('#searchResultRow_'+idDomain).addClass('unavailableDomainHidden');
}
price = '&nbsp;';
priceDescription = '<br><small class="text-muted">unavailable</small> <span class="text-muted glyphicon glyphicon-question-sign pointer" data-trigger="click" data-toggle="popover" data-placement="top" data-content="renews&nbsp;at&nbsp;$'+renewalPrice+'"></span>';
$('#searchResultRow_'+idDomain).addClass('unavailableDomainRow');
$('#searchResultRowDomain_'+idDomain).addClass('unavailableDomain').removeClass('pendingDomain');
$('#searchResultRowPrice_'+idDomain).removeClass('searchResultRowPricePending').find('.childContent').html(price+priceDescription);
if(weight == '15' || weight == '10' || weight == '0' || weight == '8' || weight == '19')
{
//optionsHTML = '<a data-original-title="You can work with a professional domain broker to try and buy this domain from its current owner." data-toggle="tooltip" class="toolTip pull-right btn btn-sm btn-default" target="_blank" href="https://buy.saw.com/registrar-landing-page?registrarId=ae76038e-6424-46a1-a40b-5098f8aae4fb&domainName='+domain+'">Make Offer</a>';
optionsHTML = '';
}
$('#searchResultRowOptions_'+idDomain).addClass('hhidden-xs').removeClass('searchResultRowOptionsPending').find('.childContent').html(optionsHTML);
}
}
else
{
price = '&nbsp;';
priceDescription = '<br><small class="text-muted">error</small>';
$('#searchResultRowDomain_'+idDomain).addClass('unavailableDomain').removeClass('pendingDomain');
$('#searchResultRowPrice_'+idDomain).removeClass('searchResultRowPricePending').find('.childContent').html(price+priceDescription);
$('#searchResultRowOptions_'+idDomain).removeClass('searchResultRowOptionsPending').find('.childContent').html('');
}
if($('#searchResultRow_'+idDomain).attr('data-result-type') == 'truename' || $('#searchResultRow_'+idDomain).attr('data-result-type') == 'exact' || data['sideBar'])
$('.toolTip').tooltip({});
}
if((haveMarketplace || haveAfternic))
{
$('#aftermarketShowMoreLink').show();
haveAftermarket = true;
}
if(!foundExactMatch)
{
// $('#notAvailableNoticeHref').attr('href', '/namespinner?nameSpinnerString='+searchString);
// $('#notAvailableNotice').slideDown();
}
$('#searchResultsHeader').not('.searchResultsHeaderSet').html('');
processingChecks = false;
if(!havePending)
{
processingChecksDone = true;
}
$('[data-toggle="popover"]').popover();
$(document).on('click', function (e)
{
$('[data-toggle="popover"],[data-original-title]').each(function ()
{
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0)
{
(($(this).popover('hide').data('bs.popover')||{}).inState||{}).click = false
}
});
});
}, "json");
}
function googleLoginInit(authResult)
{
if(authResult['access_token'])
{
var inviteCode = jQuery.trim($('#newAccountInvitationCode').val());
var googleAccessToken = authResult.access_token;
$.post("/api/user/googleApi", {"url":"https://www.googleapis.com/oauth2/v1/tokeninfo?access_token="+googleAccessToken},
function(response)
{
if(response)
{
var socialData = {};
socialData.id = response.user_id;
socialData.verified = response.verified_email;
socialData.email = response.email;
socialData.accessToken = googleAccessToken;
socialData.network = 'google';
socialData.inviteCode = inviteCode;
gapi.client.load('plus','v1', function()
{
var request = gapi.client.plus.people.get({'userId': response.user_id});
request.execute(function(resp)
{
if(resp)
{
socialData.username = resp.displayName;
socialData.name = resp.displayName;
socialLogin(socialData);
}
else
{
socialData.username = socialData.email;
socialData.name = socialData.email;
socialLogin(socialData);
}
});
});
}
}, "json");
}
else if (authResult['error'])
{
}
}
function fbLoginInit()
{
var inviteCode = jQuery.trim($('#newAccountInvitationCode').val());
FB.login(function(response)
{
if(response.authResponse)
{
var fbAccessToken = response.authResponse.accessToken;
FB.api('/me', function(response)
{
var socialData = {};
socialData.id = response.id;
socialData.verified = response.verified;
socialData.username = response.username;
socialData.name = response.name;
socialData.email = response.email;
socialData.accessToken = fbAccessToken;
socialData.network = 'facebook';
socialData.inviteCode = inviteCode;
socialLogin(socialData);
});
}
}, {scope: 'email'});
}
function logIn()
{
$('#twoFactorLoginContainer').hide();
$('#twoFactorLoginContainerEmail').hide();
$('#twoFactorLoginContainerEmailNoCookie').hide();
if(typeof Beacon != "undefined")
{
Beacon("logout", {endActiveChat: true});
}
$('.accountLoginButton').prop('disabled', true);
$('.accountLoginButton').html('<img src="/media/loading.sml.gif"> XOXO');
$('#accountLoginContainer').find('.control-group').removeClass('has-error');
$('#accountLoginErrorAlert').css('display', 'none');
$('#accountLoginErrorAlertMessages').html('');
$('.controlGroupLogin').removeClass('error');
$('.loginError').html('');
var pbshcToken = $("#pbSimpleHumanCheckerContainer_login .pbSimpleHumanInput").val();
var pbshcControl = $("#pbSimpleHumanCheckerContainer_login .pbSimpleHumanInputControl").val();
var username = jQuery.trim($('#loginUsername').val());
var password = jQuery.trim($('#loginPassword').val());
var twoFactorLoginCode = jQuery.trim($('#twoFactorLoginCode').val());
if(!twoFactorLoginCode || twoFactorLoginCode == '') twoFactorLoginCode = jQuery.trim($('#twoFactorLoginCode2').val());
var twoFactorLoginCodeEmail = jQuery.trim($('#twoFactorLoginCodeEmail').val());
if(!twoFactorLoginCodeEmail || twoFactorLoginCodeEmail == '') twoFactorLoginCodeEmail = jQuery.trim($('#twoFactorLoginCodeEmail2').val());
if(!twoFactorLoginCodeEmail || twoFactorLoginCodeEmail == '') twoFactorLoginCodeEmail = jQuery.trim($('#twoFactorLoginCodeEmailNoCookie').val());
var loginRedir = jQuery.trim($('#loginData').attr('data-redir'));
var domain = jQuery.trim($('#loginData').attr('data-domain'));
var type = jQuery.trim($('#loginData').attr('data-type'));
var loginAction = jQuery.trim($('#accountLoginButton').attr('data-login-action'));
var pbrf = jQuery.trim($('#loginForm').attr('data-pbrf'));
var rememberMe = $('#rememberMe').prop("checked");
$.post(atob(lep), {"twoFactorLoginCodeEmail":twoFactorLoginCodeEmail, "twoFactorLoginCode":twoFactorLoginCode, "username":username, "password":password, "uri":location.pathname, "buyNowPostLogin":buyNowPostLogin, "pbrf":pbrf, "pbshcToken":pbshcToken, "pbshcControl":pbshcControl, "rememberMe":rememberMe},
function(data)
{
if(data['passedCaptcha'])
{
$('#loginCaptcha').hide();
}
if(data['error'])
{
$("#pbSimpleHumanCheckerContainer_login .pbSimpleHumanCheckbox").prop("checked", false);
var haveErrorFieldMessage = false;
for(var field in data['errorFields'])
{
var message = data['errorFields'][field];
if(field == 'twoFactorLoginCodeEmailNoCookie')
{
$('#twoFactorLoginContainerEmailNoCookie').slideDown();
$('#controlGroupLoginTwoFactorLoginCodeEmailNoCookie').addClass('error');
$('#loginErrorTwoFactorLoginCodeEmailNoCookie').html(message);
$('#twoFactorLoginCodeEmailNoCookie').focus();
haveErrorFieldMessage = true;
}
else if(field == 'twoFactorLoginCodeEmail')
{
$('#twoFactorLoginContainerEmail').slideDown();
$('#controlGroupLoginTwoFactorLoginCodeEmail').addClass('error');
$('#loginErrorTwoFactorLoginCodeEmail').html(message);
$('#twoFactorLoginCodeEmail').focus();
haveErrorFieldMessage = true;
}
else if(field == 'twoFactorLoginCode')
{
$('#twoFactorLoginContainer').slideDown();
$('#controlGroupLoginTwoFactorLoginCode').addClass('error');
$('#loginErrorTwoFactorLoginCode').html(message);
$('#twoFactorLoginCode').focus();
haveErrorFieldMessage = true;
}
if(field == 'username')
{
$('#controlGroupLoginUsername').addClass('error');
$('#loginErrorUsername').html(message);
haveErrorFieldMessage = true;
}
if(field == 'password')
{
$('#controlGroupLoginPassword').addClass('error');
$('#loginErrorPassword').html(message);
haveErrorFieldMessage = true;
}
}
if(!haveErrorFieldMessage && data['message'])
{
$('#accountLoginErrorAlertMessages').html(data['message']);
$('#accountLoginErrorAlert').show();
}
if(data['suspended'])
{
$('#accountLoginErrorAlertMessages').html(data['message']);
$('#accountLoginErrorAlert').show();
}
if(data['webAuthnChallenge'])
{
webauthnAuthenticate(data['webAuthnChallenge'], function(success, info)
{
if(success)
{
$('.accountLoginButton').prop('disabled', true);
$('.accountLoginButton').html('<img src="/media/loading.sml.gif"> XOXO');
$.post(atob(lep), {"webAuthnInfo":info, "username":username, "password":password, "uri":location.pathname, "buyNowPostLogin":buyNowPostLogin, "pbrf":pbrf, "pbshcToken":pbshcToken, "pbshcControl":pbshcControl, "rememberMe":rememberMe},
function(data)
{
if(data['error'] == 1)
{
$('.accountLoginButton').prop('disabled', false);
$('.accountLoginButton').html('Continue');
alert(data['message']);
}
else
{
if(data['hibp'])
{
alert("We've detected that you're using a password which was previously compromised due to another website's data breach in the past. Please change your password. For more information you can visit https://haveibeenpwned.com/ or contact support.");
}
loggedInAccountId = data['id'];
if(loginAction)
window[loginAction]();
else if(domain)
window.location.href = '/checkout/billing/'+domain;
else if(domain && type)
window.location.href = '/checkout/billing/'+domain+'/'+type;
else if(data['loginRedir'])
window.location.href = 'https://'+window.location.hostname+data['loginRedir'];
else if(data['redirect'])
window.location.href = 'https://'+window.location.hostname+data['redirect'];
else
window.location.href = "/account/domains";
return;
}
}, "json");
}
else
{
if(info != "abort")
alert(info);
}
});
}
}
else
{
if(data['hibp'])
{
alert("We've detected that you're using a password which was previously compromised due to another website's data breach in the past. Please change your password. For more information you can visit https://haveibeenpwned.com/ or contact support.");
}
loggedInAccountId = data['id'];
if(loginAction)
window[loginAction]();
else if(domain)
window.location.href = '/checkout/billing/'+domain;
else if(domain && type)
window.location.href = '/checkout/billing/'+domain+'/'+type;
else if(data['loginRedir'])
window.location.href = 'https://'+window.location.hostname+data['loginRedir'];
else if(data['redirect'])
window.location.href = 'https://'+window.location.hostname+data['redirect'];
else
window.location.href = "/account/domains";
return;
}
$('.accountLoginButton').prop('disabled', false);
$('.accountLoginButton').html('Continue');
}, "json");
}
function logOut()
{
if(typeof Beacon != "undefined")
{
Beacon("logout", { endActiveChat: true });
}
$.get("/api/user/logout", {empty:true},
function(data)
{
window.location.reload();
}, "json");
}
function createAccount()
{
$('#accountCreateButton').prop('disabled', true);
$('#accountCreateButton').html('<img src="/media/loading.sml.gif">');
$('#accountCreateContainer').find('.control-group').removeClass('has-error');
$('#accountCreateErrorAlert').css('display', 'none');
$('#accountCreateErrorAlertMessages').html('');
$('.controlGroupNewAccount').removeClass('error');
$('.newAccountError').html('');
var memberId = jQuery.trim($('#newAccountMemberId').val());
var newAccountMemberCheckbox = $('#newAccountMemberCheckbox').prop('checked');
if(newAccountMemberCheckbox)
newAccountMemberCheckbox = 'YES';
else
newAccountMemberCheckbox = 'NO';
var username = jQuery.trim($('#newAccountUsername').val());
var password = jQuery.trim($('#newAccountPassword').val());
var passwordConfirm = jQuery.trim($('#newAccountPasswordConfirm').val());
var email = jQuery.trim($('#newAccountEmail').val());
var emailConfirm = jQuery.trim($('#newAccountEmailConfirm').val());
var firstName = jQuery.trim($('#newAccountFirstName').val());
var lastName = jQuery.trim($('#newAccountLastName').val());
var companyName = jQuery.trim($('#newAccountCompanyName').val());
var address1 = jQuery.trim($('#newAccountAddress1').val());
var address2 = jQuery.trim($('#newAccountAddress2').val());
var address3 = jQuery.trim($('#newAccountAddress3').val());
var city = jQuery.trim($('#newAccountCity').val());
var state = jQuery.trim($('#newAccountState').val());
var country = jQuery.trim($('#newAccountCountry').val());
var zip = jQuery.trim($('#newAccountZip').val());
var phone = cleanPhone(jQuery.trim($('#newAccountPhone').val()));
var fax = cleanPhone(jQuery.trim($('#newAccountFax').val()));
var loginRedir = jQuery.trim($('#loginData').attr('data-redir'));
var billingModalAgree = $('#billingModalAgree').prop('checked');
var newAccountSubscribe = jQuery.trim($('input[name=newAccountSubscribe]:checked').val());
var clientFingerprint = jQuery.trim($('#clientFingerprint').html());
var clientFingersha = jQuery.trim($('#clientFingersha').html());
$.post("/api/user/create", {"newAccountSubscribe":newAccountSubscribe, "billingModalAgree":billingModalAgree, "newAccountMemberCheckbox":newAccountMemberCheckbox, "memberId":memberId, "username":username, "password":password, "passwordConfirm":passwordConfirm, "email":email, "emailConfirm":emailConfirm, "firstName":firstName, "lastName":lastName, "companyName":companyName, "address1":address1, "address2":address2, "address3":address3, "city":city, "state":state, "country":country, "zip":zip, "phone":phone, "fax":fax, "buyNowPostLogin":buyNowPostLogin, clientFingerprint:clientFingerprint, contactVerify: $('#createAccountContainer').attr('contactVerify')},
function(data)
{
$('#createAccountContainer').removeAttr('contactVerify');
if(data['notice'])
{
if(data['contactVerify'])
{
$('#createAccountContainer').attr('contactVerify', 1);
if(data['contacts'])
{
var contact = data['contacts'][0];
$('#newAccountAddress1').val(contact['address1']);
$('#newAccountAddress2').val(contact['address2']);
$('#newAccountCity').val(contact['city']);
$('#newAccountState').val(contact['state']);
$('#newAccountZip').val(contact['postal']);
}
}
$('#accountCreateErrorAlert').html(data['message']).show();
window.scrollTo(0, 0);
}
else if(data['error'])
{
for(var field in data['errorFields'])
{
var message = data['errorFields'][field];
$('#accountCreateErrorAlert').css('display', '');
if(field == 'contacts')
{
field = field.replace(/\b[a-z]/g, function(letter) {return letter.toUpperCase();});
for(var i = 0; i < message.length; i++)
{
var theMessage = message[i];
$('#accountCreateErrorAlertMessages').append('<li>'+theMessage+'</li>');
$('#createAccountControlGroup'+field).addClass('has-error');
}
}
else
{
field = field.replace(/\b[a-z]/g, function(letter) {return letter.toUpperCase();});
$('#accountCreateErrorAlertMessages').append('<li>'+message+'</li>');
$('#controlGroupNewAccount'+field).addClass('error');
$('#newAccountError'+field).html(message);
}
}
window.scrollTo(0, 0);
}
else
{
if(data['additionalPartnerNotify'])
{
alert("\
Thank you for creating your account. We would just like to remind you that when you want to manage your account, domains, and other products you can do so by going to http://"+data['baseDomain']+" and logging in with the following credentials:\n\n\
Username: "+username+"\n\
Password: the password you used when you created your account\n\n\
If you have any questions please feel free to contact us.\
");
}
if(data['loginRedir'])
window.location = 'https://'+window.location.hostname+data['loginRedir'];
else if(data['redirect'])
window.location = 'https://'+window.location.hostname+data['redirect'];
else
window.location.href = "/checkout/search";
}
$('#accountCreateButton').prop('disabled', false);
$('#accountCreateButton').html('Create Account');
}, "json");
}
function loginCreateFormShow()
{
window.scrollTo(0, 0);
if($('#loginCreateForm').css('display') == 'none')
$('#loginCreateForm').slideDown();
else
$('#loginCreateForm').slideUp();
}
function checkKeyPress(e)
{
if(!e)
return false;
if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
{
return true;
}
return false;
}
function processKeyPress(e, f)
{
if(!e || !f)
return false;
if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
{
return f();
}
return true;
}