
Media
Newsroom
- Featured Story

02 Jun 2026
02 Jun 2026
Reports & Publications


Subscribe to our Newsletter
Receive the latest news, insights, announcements, and more.
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width: 600px;}
(function($) {
window.fnames = new Array(); window.ftypes = new Array();
fnames[0]=’EMAIL’;ftypes[0]=’email’;
fnames[7]=’MMERGE7′;ftypes[7]=’radio’;
fnames[1]=’FNAME’;ftypes[1]=’text’;
fnames[2]=’LNAME’;ftypes[2]=’text’;
fnames[3]=’ADDRESS’;ftypes[3]=’address’;
fnames[4]=’PHONE’;ftypes[4]=’phone’;
fnames[5]=’BIRTHDAY’;ftypes[5]=’birthday’;
fnames[6]=’COMPANY’;ftypes[6]=’text’;
}(jQuery));
var $mcj = jQuery.noConflict(true);
if(!window.MC) {
window.MC = {};
}
window.MC.smsPhoneData = {
defaultCountryCode: ‘SG’,
programs: [],
smsProgramDataCountryNames: []
};
function getCountryUnicodeFlag(countryCode) {
return countryCode.toUpperCase().replace(/./g, (char) => String.fromCodePoint(char.charCodeAt(0) + 127397))
};
function sanitizeHtml(str) {
if (typeof str !== ‘string’) return ”;
return str
.replace(/&/g, ‘&’)
.replace(//g, ‘>’)
.replace(/”/g, ‘"’)
.replace(/’/g, ‘'’)
.replace(/\//g, ‘/’);
}
function sanitizeUrl(url) {
if (typeof url !== ‘string’) return ”;
const trimmedUrl = url.trim().toLowerCase();
if (trimmedUrl.startsWith(‘javascript:’)) return ‘#’;
if (trimmedUrl.startsWith(‘data:’)) return ‘#’;
if (trimmedUrl.startsWith(‘vbscript:’)) return ‘#’;
return url;
}
const getBrowserLanguage = () => {
if (window) {
if (window.navigator) {
if (window.navigator.language) {
var parts = window.navigator.language.split(‘-‘);
if (!parts[1]) {
return window.navigator.language.toUpperCase();
}
return parts[1];
}
}
}
return null;
};
function getDefaultCountryProgram(defaultCountryCode, smsProgramData) {
if (!smsProgramData) return null;
if (smsProgramData.length === 0) return null;
const browserLanguage = getBrowserLanguage();
if (browserLanguage) {
const foundProgram = smsProgramData.find(function(program){
return program.countryCode === browserLanguage;
});
if (foundProgram) {
return foundProgram;
}
}
if (defaultCountryCode) {
const foundProgram = smsProgramData.find(function(program){
return program.countryCode === defaultCountryCode;
});
if (foundProgram) {
return foundProgram;
}
}
return smsProgramData[0];
}
function updateSmsLegalText(countryCode, fieldName) {
if (!countryCode) return;
if (!fieldName) return;
const programs = window.MC.smsPhoneData.programs;
if (!programs) return;
if (!Array.isArray(programs)) return;
const program = programs.find(function(program){
return program.countryCode === countryCode;
});
if (!program) return;
if (!program.requiredTemplate) return;
const legalTextElement = document.querySelector(‘#legal-text-‘ + fieldName);
if (!legalTextElement) return;
const divRegex = new RegExp(‘?[div][^>]*>’, ‘gi’);
const template = program.requiredTemplate.replace(divRegex, ”);
legalTextElement.textContent = ”;
const parts = template.split(/(.*?)/g);
parts.forEach(function(part) {
if (!part) return;
const anchorMatch = part.match(/(.*?)/);
if (anchorMatch) {
const linkElement = document.createElement(‘a’);
linkElement.href = sanitizeUrl(anchorMatch[1]);
linkElement.target = sanitizeHtml(anchorMatch[2]);
linkElement.textContent = sanitizeHtml(anchorMatch[3]);
legalTextElement.appendChild(linkElement);
} else {
legalTextElement.appendChild(document.createTextNode(part));
}
});
}
function generateDropdownOptions(smsProgramData) {
if (!smsProgramData) return ”;
if (smsProgramData.length === 0) return ”;
return smsProgramData.map(function(program) {
const flag = getCountryUnicodeFlag(program.countryCode);
const countryName = getCountryName(program.countryCode);
const callingCode = program.countryCallingCode || ”;
const sanitizedCountryCode = sanitizeHtml(program.countryCode || ”);
const sanitizedCountryName = sanitizeHtml(countryName || ”);
const sanitizedCallingCode = sanitizeHtml(callingCode || ”);
return ‘‘;
}).join(”);
}
function getCountryName(countryCode) {
if (window.MC.smsPhoneData.smsProgramDataCountryNames) {
if (Array.isArray(window.MC.smsPhoneData.smsProgramDataCountryNames)) {
for (let i = 0; i < window.MC.smsPhoneData.smsProgramDataCountryNames.length; i++) {
if (window.MC.smsPhoneData.smsProgramDataCountryNames[i].code === countryCode) {
return window.MC.smsPhoneData.smsProgramDataCountryNames[i].name;
}
}
}
}
return countryCode;
}
function getDefaultPlaceholder(countryCode) {
if (!countryCode) return '+1 000 000 0000';
if (typeof countryCode !== 'string') return '+1 000 000 0000';
var mockPlaceholders = [
{ countryCode: 'US', placeholder: '+1 000 000 0000' },
{ countryCode: 'GB', placeholder: '+44 0000 000000' },
{ countryCode: 'CA', placeholder: '+1 000 000 0000' },
{ countryCode: 'AU', placeholder: '+61 000 000 000' }
];
const selectedPlaceholder = mockPlaceholders.find(function(item) {
return item.countryCode === countryCode;
});
if (selectedPlaceholder) {
return selectedPlaceholder.placeholder;
}
return mockPlaceholders[0].placeholder;
}
function updatePlaceholder(countryCode, fieldName) {
if (!countryCode) return;
if (!fieldName) return;
const phoneInput = document.querySelector('#mce-' + fieldName);
if (!phoneInput) return;
const placeholder = getDefaultPlaceholder(countryCode);
if (placeholder) {
phoneInput.placeholder = placeholder;
}
}
function updateCountryCodeInstruction(countryCode, fieldName) {
updatePlaceholder(countryCode, fieldName);
}
function initializeSmsPhoneDropdown(fieldName) {
if (!fieldName) return;
if (typeof fieldName !== 'string') return;
const dropdown = document.querySelector('#country-select-' + fieldName);
const displayFlag = document.querySelector('#flag-display-' + fieldName);
if (!dropdown) return;
if (!displayFlag) return;
const smsPhoneData = window.MC.smsPhoneData;
if (smsPhoneData) {
if (smsPhoneData.programs) {
if (Array.isArray(smsPhoneData.programs)) {
dropdown.innerHTML = generateDropdownOptions(smsPhoneData.programs);
}
}
}
const defaultProgram = getDefaultCountryProgram(smsPhoneData.defaultCountryCode, smsPhoneData.programs);
if (defaultProgram) {
if (defaultProgram.countryCode) {
dropdown.value = defaultProgram.countryCode;
const flagSpan = displayFlag.querySelector('#flag-emoji-' + fieldName);
if (flagSpan) {
flagSpan.textContent = getCountryUnicodeFlag(defaultProgram.countryCode);
flagSpan.setAttribute('aria-label', sanitizeHtml(defaultProgram.countryCode) + ' flag');
}
updateSmsLegalText(defaultProgram.countryCode, fieldName);
updatePlaceholder(defaultProgram.countryCode, fieldName);
updateCountryCodeInstruction(defaultProgram.countryCode, fieldName);
}
}
var smsNotRequiredRemoveCountryCodeEnabled = true;
var smsField = Object.values({"EMAIL":{"name":"EMAIL","type":"email","required":true},"MMERGE7":{"name":"MMERGE7","type":"radio","required":true}}).find(function(f) { return f.name === fieldName; });
var isRequired = false;
if (smsField) {
isRequired = smsField.required;
}
var shouldAppendCountryCode = true;
if (smsNotRequiredRemoveCountryCodeEnabled) {
shouldAppendCountryCode = isRequired;
}
var phoneInput = document.querySelector('#mce-' + fieldName);
if (phoneInput) {
if (defaultProgram) {
if (defaultProgram.countryCallingCode) {
if (shouldAppendCountryCode) {
phoneInput.value = defaultProgram.countryCallingCode;
}
}
}
}
if (displayFlag) {
displayFlag.addEventListener('click', function(e) {
dropdown.focus();
});
}
if (dropdown) {
dropdown.addEventListener('change', function() {
const selectedCountry = this.value;
if (!selectedCountry) return;
if (typeof selectedCountry !== 'string') return;
const flagSpan = displayFlag.querySelector('#flag-emoji-' + fieldName);
if (flagSpan) {
flagSpan.textContent = getCountryUnicodeFlag(selectedCountry);
flagSpan.setAttribute('aria-label', sanitizeHtml(selectedCountry) + ' flag');
}
const selectedProgram = window.MC.smsPhoneData.programs.find(function(program) {
return program.countryCode === selectedCountry;
});
var smsField = Object.values({"EMAIL":{"name":"EMAIL","type":"email"},"MMERGE7":{"name":"MMERGE7","type":"radio"}}).find(function(f) { return f.name === fieldName; });
var isRequired = false;
if (smsField) {
isRequired = smsField.required;
}
var shouldAppendCountryCode = true;
if (smsNotRequiredRemoveCountryCodeEnabled) {
shouldAppendCountryCode = isRequired;
}
var phoneInput = document.querySelector('#mce-' + fieldName);
if (phoneInput) {
if (selectedProgram) {
if (selectedProgram.countryCallingCode) {
if (shouldAppendCountryCode) {
phoneInput.value = selectedProgram.countryCallingCode;
}
}
}
}
updateSmsLegalText(selectedCountry, fieldName);
updatePlaceholder(selectedCountry, fieldName);
updateCountryCodeInstruction(selectedCountry, fieldName);
});
}
}
document.addEventListener('DOMContentLoaded', function() {
const smsPhoneFields = document.querySelectorAll('[id^="country-select-"]');
smsPhoneFields.forEach(function(dropdown) {
if (dropdown) {
const fieldName = dropdown.id.replace('country-select-', '');
initializeSmsPhoneDropdown(fieldName);
}
});
// — :rocket: NEW LOADING & SUCCESS LOGIC —
var submitBtn = document.getElementById('mc-embedded-subscribe');
var formEl = document.getElementById('mc-embedded-subscribe-form');
var successNode = document.getElementById('mce-success-response');
var errorNode = document.getElementById('mce-error-response');
var customSuccessUi = document.getElementById('custom-success-ui');
var customSuccessText = document.getElementById('custom-success-text');
var signup_form = document.getElementById('mc_embed_signup')
// 1. Trigger Loader when button clicked
if (submitBtn) {
if (formEl) {
submitBtn.addEventListener('click', function(e) {
// Ensure browser validation passes before spinning
if (formEl.checkValidity()) {
submitBtn.classList.add('is-loading');
}
});
}
}
// 2. Watch Mailchimp's hidden response boxes
var observerConfig = { attributes: true, childList: true, subtree: true, attributeFilter: ['style'] };
var mcObserver = new MutationObserver(function(mutations) {
// — SUCCESS HAPPENS —
if (successNode) {
var hasText = false;
if (successNode.innerHTML.trim() !== '') {
hasText = true;
}
var isVisible = false;
if (successNode.style.display === 'block') {
isVisible = true;
}
if (hasText) {
triggerSuccess();
} else if (isVisible) {
triggerSuccess();
}
}
// — ERROR HAPPENS (e.g., already subscribed) —
if (errorNode) {
var hasErrorText = false;
if (errorNode.innerHTML.trim() !== '') {
hasErrorText = true;
}
var isErrorVisible = false;
if (errorNode.style.display === 'block') {
isErrorVisible = true;
}
if (hasErrorText) {
triggerError();
} else if (isErrorVisible) {
triggerError();
}
}
});
// Execute Success Changes
function triggerSuccess() {
if (submitBtn) {
submitBtn.classList.remove('is-loading');
}
if(signup_form) {
signup_form.classList.add('submitted')
}
if (formEl) {
formEl.style.display = 'none';
}
if (customSuccessUi) {
if (customSuccessText) {
if (successNode) {
customSuccessText.innerHTML = successNode.innerHTML;
}
}
customSuccessUi.style.display = 'block';
}
}
// Execute Error Changes
function triggerError() {
if (submitBtn) {
submitBtn.classList.remove('is-loading');
}
}
// Start Observers
if (successNode) {
mcObserver.observe(successNode, observerConfig);
}
if (errorNode) {
mcObserver.observe(errorNode, observerConfig);
}
});












