/**
* options: {
* enableLogs: Boolean,
* intervalFrequency: Number,
* logIdentifier: String,
* maxIterations: Number,
* onSuccess: () => void,
* successCheck: () => Boolean,
* }
*/
function waitForX(options) {
var log = function log() {
if (options.enableLogs)
console.log.apply(console, arguments)
}
var logSuffix = options.logIdentifier ? ' -- [' + options.logIdentifier + ']' : ''
var intervalFrequency = options.intervalFrequency || 100
var maxIterations = options.maxIterations || 100
// Do 1 immediate check before the interval starts.
if (options.successCheck()) {
log('SUCCESS (immediate), no interval needed' + logSuffix)
options.onSuccess()
return;
}
log('every ' + intervalFrequency + 'ms, for ' + intervalFrequency * maxIterations + 'ms' + logSuffix)
var iterations = 0
var waitTimer = window.setInterval(function () {
if (options.successCheck.apply(options)) {
log('SUCCESS, waited: ' + ((iterations + 1) * intervalFrequency) + 'ms (' + (iterations + 1) + ' iterations)' + logSuffix)
options.onSuccess.apply(options)
window.clearInterval(waitTimer);
log('cleared interval' + logSuffix)
}
if (iterations >= maxIterations) {
log('TIMED OUT' + logSuffix)
// Safety net to ensure this interval won't run forever.
window.clearInterval(waitTimer)
log('cleared interval' + logSuffix)
}
iterations++
}, options.intervalFrequency)
}
var autocompleteScript = document.createElement('script')
autocompleteScript.src = 'https://api.demandbase.com/autocomplete/widget.js'
document.body.appendChild(autocompleteScript)
var DEMANDBASE_FORM_SCRIPT_ID = 'demandbaseFormScript'
if (data.page === 'attendeeInfo') {
waitForX({
intervalFrequency: 100,
maxIterations: 150,
onSuccess: function () {
if (!document.querySelector('#' + DEMANDBASE_FORM_SCRIPT_ID)) {
var formScript = document.createElement('script')
formScript.src = 'https://events.rainfocus.com/pages/redhat/global/demandbaseform'
formScript.id = DEMANDBASE_FORM_SCRIPT_ID
document.body.appendChild(formScript)
} else {
// This is terrible, but it's the only way to re-initialize the autocomplete on a SPA.
// Fortunately, it is an uncommon use case.
window.Demandbase.CompanyAutocomplete.setup = false
window.Demandbase.CompanyAutocomplete.initialized = false
window.DemandbaseForm.formConnector.form = document.querySelector('#myDynamicForm')
window.DemandbaseForm.formConnector.init()
}
},
successCheck: function () {
return document.querySelector('#formAttendee-companyname');
},
});
}
// v2
var INTERVAL_DELAY = 100;
var MAX_INTERVAL_ITERATIONS = 150; // 15s at 100ms intervals
var FORM_ID = 'myDynamicForm';
var rfLocale = window.rfLocale || { lang: 'en', region: 'US' };
// Only set the initial NC value once.
var initialNCValueSet = false
var countryOptInMap = {
AF: {
email: 'opt-out',
phone: 'opt-out',
},
AX: {
email: 'opt-in',
phone: 'opt-out',
},
AL: {
email: 'opt-in',
phone: 'opt-out',
},
DZ: {
email: 'opt-in',
phone: 'opt-out',
},
AS: {
email: 'opt-out',
phone: 'opt-out',
},
AD: {
email: 'opt-in',
phone: 'opt-out',
},
AO: {
email: 'opt-in',
phone: 'opt-out',
},
AR: {
email: 'opt-in',
phone: 'opt-out',
},
AM: {
email: 'opt-in',
phone: 'opt-in',
},
AU: {
email: 'opt-in',
phone: 'opt-out',
},
AT: {
email: 'opt-in',
phone: 'opt-in',
},
AZ: {
email: 'opt-in',
phone: 'opt-in',
},
BH: {
email: 'opt-out',
phone: 'opt-out',
},
BD: {
email: 'opt-out',
phone: 'opt-out',
},
BY: {
email: 'opt-in',
phone: 'opt-out',
},
BE: {
email: 'opt-in',
phone: 'opt-out',
},
BZ: {
email: 'opt-out',
phone: 'opt-out',
},
BJ: {
email: 'opt-in',
phone: 'opt-out',
},
BT: {
email: 'opt-out',
phone: 'opt-out',
},
BO: {
email: 'opt-out',
phone: 'opt-out',
},
BA: {
email: 'opt-in',
phone: 'opt-out',
},
BW: {
email: 'opt-in',
phone: 'opt-out',
},
BV: {
email: 'opt-in',
phone: 'opt-out',
},
BR: {
email: 'opt-out',
phone: 'opt-out',
},
IO: {
email: 'opt-in',
phone: 'opt-out',
},
BN: {
email: 'opt-out',
phone: 'opt-out',
},
BG: {
email: 'opt-in',
phone: 'opt-in',
},
BF: {
email: 'opt-in',
phone: 'opt-out',
},
BI: {
email: 'opt-in',
phone: 'opt-out',
},
KH: {
email: 'opt-out',
phone: 'opt-out',
},
CM: {
email: 'opt-in',
phone: 'opt-out',
},
CA: {
email: 'opt-in',
phone: 'opt-out',
},
CV: {
email: 'opt-in',
phone: 'opt-out',
},
CF: {
email: 'opt-in',
phone: 'opt-out',
},
TD: {
email: 'opt-in',
phone: 'opt-out',
},
CL: {
email: 'opt-out',
phone: 'opt-out',
},
CN: {
email: 'opt-out',
phone: 'opt-out',
},
CX: {
email: 'opt-out',
phone: 'opt-out',
},
CC: {
email: 'opt-out',
phone: 'opt-out',
},
CO: {
email: 'opt-in',
phone: 'opt-in',
},
KM: {
email: 'opt-in',
phone: 'opt-out',
},
CG: {
email: 'opt-in',
phone: 'opt-out',
},
CD: {
email: 'opt-in',
phone: 'opt-out',
},
CK: {
email: 'opt-out',
phone: 'opt-out',
},
CR: {
email: 'opt-out',
phone: 'opt-out',
},
HR: {
email: 'opt-in',
phone: 'opt-out',
},
CY: {
email: 'opt-in',
phone: 'opt-in',
},
CZ: {
email: 'opt-in',
phone: 'opt-in',
},
DK: {
email: 'opt-in',
phone: 'opt-out',
},
DJ: {
email: 'opt-in',
phone: 'opt-out',
},
DO: {
email: 'opt-out',
phone: 'opt-out',
},
EC: {
email: 'opt-out',
phone: 'opt-out',
},
EG: {
email: 'opt-out',
phone: 'opt-out',
},
SV: {
email: 'opt-out',
phone: 'opt-out',
},
GQ: {
email: 'opt-in',
phone: 'opt-out',
},
ER: {
email: 'opt-in',
phone: 'opt-out',
},
EE: {
email: 'opt-in',
phone: 'opt-out',
},
ET: {
email: 'opt-out',
phone: 'opt-out',
},
FK: {
email: 'opt-in',
phone: 'opt-out',
},
FO: {
email: 'opt-in',
phone: 'opt-out',
},
FJ: {
email: 'opt-out',
phone: 'opt-out',
},
FI: {
email: 'opt-in',
phone: 'opt-out',
},
FR: {
email: 'opt-in',
phone: 'opt-out',
},
GF: {
email: 'opt-out',
phone: 'opt-out',
},
PF: {
email: 'opt-in',
phone: 'opt-out',
},
TF: {
email: 'opt-out',
phone: 'opt-out',
},
GA: {
email: 'opt-in',
phone: 'opt-out',
},
GM: {
email: 'opt-in',
phone: 'opt-out',
},
GE: {
email: 'opt-in',
phone: 'opt-out',
},
DE: {
email: 'opt-in',
phone: 'opt-in',
},
GH: {
email: 'opt-in',
phone: 'opt-out',
},
GI: {
email: 'opt-in',
phone: 'opt-out',
},
GR: {
email: 'opt-in',
phone: 'opt-out',
},
GL: {
email: 'opt-in',
phone: 'opt-out',
},
GP: {
email: 'opt-out',
phone: 'opt-out',
},
GU: {
email: 'opt-out',
phone: 'opt-out',
},
GT: {
email: 'opt-out',
phone: 'opt-out',
},
GG: {
email: 'opt-in',
phone: 'opt-out',
},
GN: {
email: 'opt-in',
phone: 'opt-out',
},
GW: {
email: 'opt-in',
phone: 'opt-out',
},
HT: {
email: 'opt-out',
phone: 'opt-out',
},
HM: {
email: 'opt-out',
phone: 'opt-out',
},
VA: {
email: 'opt-in',
phone: 'opt-in',
},
HN: {
email: 'opt-out',
phone: 'opt-out',
},
HK: {
email: 'opt-out',
phone: 'opt-out',
},
HU: {
email: 'opt-in',
phone: 'opt-out',
},
IS: {
email: 'opt-in',
phone: 'opt-out',
},
IN: {
email: 'opt-out',
phone: 'opt-out',
},
ID: {
email: 'opt-in',
phone: 'opt-out',
},
IQ: {
email: 'opt-out',
phone: 'opt-out',
},
IE: {
email: 'opt-in',
phone: 'opt-out',
},
IM: {
email: 'opt-in',
phone: 'opt-out',
},
IL: {
email: 'opt-in',
phone: 'opt-out',
},
IT: {
email: 'opt-in',
phone: 'opt-in',
},
CI: {
email: 'opt-out',
phone: 'opt-out',
},
JM: {
email: 'opt-out',
phone: 'opt-out',
},
JP: {
email: 'opt-in',
phone: 'opt-out',
},
JE: {
email: 'opt-in',
phone: 'opt-out',
},
JO: {
email: 'opt-out',
phone: 'opt-out',
},
KZ: {
email: 'opt-in',
phone: 'opt-out',
},
KE: {
email: 'opt-in',
phone: 'opt-out',
},
KI: {
email: 'opt-out',
phone: 'opt-out',
},
KR: {
email: 'opt-in',
phone: 'opt-in',
},
KW: {
email: 'opt-out',
phone: 'opt-out',
},
KG: {
email: 'opt-in',
phone: 'opt-out',
},
LA: {
email: 'opt-out',
phone: 'opt-out',
},
LV: {
email: 'opt-in',
phone: 'opt-in',
},
LB: {
email: 'opt-out',
phone: 'opt-out',
},
LS: {
email: 'opt-in',
phone: 'opt-out',
},
LR: {
email: 'opt-in',
phone: 'opt-out',
},
LY: {
email: 'opt-in',
phone: 'opt-out',
},
LI: {
email: 'opt-in',
phone: 'opt-out',
},
LT: {
email: 'opt-in',
phone: 'opt-in',
},
LU: {
email: 'opt-in',
phone: 'opt-in',
},
MO: {
email: 'opt-out',
phone: 'opt-out',
},
MK: {
email: 'opt-in',
phone: 'opt-out',
},
MG: {
email: 'opt-in',
phone: 'opt-out',
},
MW: {
email: 'opt-in',
phone: 'opt-out',
},
MY: {
email: 'opt-in',
phone: 'opt-out',
},
MV: {
email: 'opt-out',
phone: 'opt-out',
},
ML: {
email: 'opt-in',
phone: 'opt-out',
},
MT: {
email: 'opt-in',
phone: 'opt-in',
},
MH: {
email: 'opt-out',
phone: 'opt-out',
},
MQ: {
email: 'opt-out',
phone: 'opt-out',
},
MR: {
email: 'opt-in',
phone: 'opt-out',
},
MU: {
email: 'opt-out',
phone: 'opt-out',
},
YT: {
email: 'opt-in',
phone: 'opt-out',
},
MX: {
email: 'opt-out',
phone: 'opt-out',
},
FM: {
email: 'opt-out',
phone: 'opt-out',
},
MD: {
email: 'opt-in',
phone: 'opt-out',
},
MC: {
email: 'opt-out',
phone: 'opt-out',
},
MN: {
email: 'opt-out',
phone: 'opt-out',
},
ME: {
email: 'opt-in',
phone: 'opt-out',
},
MA: {
email: 'opt-in',
phone: 'opt-out',
},
MZ: {
email: 'opt-in',
phone: 'opt-out',
},
MM: {
email: 'opt-out',
phone: 'opt-out',
},
NA: {
email: 'opt-in',
phone: 'opt-out',
},
NR: {
email: 'opt-out',
phone: 'opt-out',
},
NP: {
email: 'opt-out',
phone: 'opt-out',
},
NL: {
email: 'opt-in',
phone: 'opt-out',
},
NC: {
email: 'opt-in',
phone: 'opt-out',
},
NZ: {
email: 'opt-in',
phone: 'opt-out',
},
NI: {
email: 'opt-out',
phone: 'opt-out',
},
NE: {
email: 'opt-in',
phone: 'opt-out',
},
NG: {
email: 'opt-in',
phone: 'opt-out',
},
NU: {
email: 'opt-out',
phone: 'opt-out',
},
NF: {
email: 'opt-out',
phone: 'opt-out',
},
MP: {
email: 'opt-out',
phone: 'opt-out',
},
NO: {
email: 'opt-in',
phone: 'opt-out',
},
OM: {
email: 'opt-out',
phone: 'opt-out',
},
PK: {
email: 'opt-in',
phone: 'opt-out',
},
PW: {
email: 'opt-out',
phone: 'opt-out',
},
PS: {
email: 'opt-out',
phone: 'opt-out',
},
PA: {
email: 'opt-out',
phone: 'opt-out',
},
PG: {
email: 'opt-out',
phone: 'opt-out',
},
PY: {
email: 'opt-out',
phone: 'opt-out',
},
PE: {
email: 'opt-in',
phone: 'opt-in',
},
PH: {
email: 'opt-in',
phone: 'opt-out',
},
PN: {
email: 'opt-in',
phone: 'opt-out',
},
PL: {
email: 'opt-in',
phone: 'opt-in',
},
PT: {
email: 'opt-in',
phone: 'opt-in',
},
PR: {
email: 'opt-out',
phone: 'opt-out',
},
QA: {
email: 'opt-in',
phone: 'opt-out',
},
RE: {
email: 'opt-out',
phone: 'opt-out',
},
RO: {
email: 'opt-in',
phone: 'opt-out',
},
RU: {
email: 'opt-in',
phone: 'opt-in',
},
RW: {
email: 'opt-in',
phone: 'opt-in',
},
ST: {
email: 'opt-in',
phone: 'opt-out',
},
SH: {
email: 'opt-in',
phone: 'opt-out',
},
LC: {
email: 'opt-out',
phone: 'opt-out',
},
PM: {
email: 'opt-out',
phone: 'opt-out',
},
WS: {
email: 'opt-out',
phone: 'opt-out',
},
SM: {
email: 'opt-in',
phone: 'opt-out',
},
SA: {
email: 'opt-in',
phone: 'opt-in',
},
SN: {
email: 'opt-in',
phone: 'opt-out',
},
RS: {
email: 'opt-in',
phone: 'opt-out',
},
SC: {
email: 'opt-in',
phone: 'opt-out',
},
SL: {
email: 'opt-in',
phone: 'opt-out',
},
SG: {
email: 'opt-in',
phone: 'opt-in',
},
SK: {
email: 'opt-in',
phone: 'opt-out',
},
SI: {
email: 'opt-in',
phone: 'opt-in',
},
SB: {
email: 'opt-out',
phone: 'opt-out',
},
SO: {
email: 'opt-in',
phone: 'opt-out',
},
ZA: {
email: 'opt-in',
phone: 'opt-out',
},
GS: {
email: 'opt-in',
phone: 'opt-out',
},
ES: {
email: 'opt-in',
phone: 'opt-in',
},
LK: {
email: 'opt-out',
phone: 'opt-out',
},
SJ: {
email: 'opt-in',
phone: 'opt-out',
},
SZ: {
email: 'opt-in',
phone: 'opt-out',
},
SE: {
email: 'opt-in',
phone: 'opt-out',
},
CH: {
email: 'opt-in',
phone: 'opt-out',
},
TW: {
email: 'opt-out',
phone: 'opt-out',
},
TJ: {
email: 'opt-in',
phone: 'opt-out',
},
TZ: {
email: 'opt-out',
phone: 'opt-out',
},
TH: {
email: 'opt-in',
phone: 'opt-out',
},
TL: {
email: 'opt-out',
phone: 'opt-out',
},
TG: {
email: 'opt-in',
phone: 'opt-out',
},
TK: {
email: 'opt-out',
phone: 'opt-out',
},
TO: {
email: 'opt-out',
phone: 'opt-out',
},
TN: {
email: 'opt-in',
phone: 'opt-out',
},
TR: {
email: 'opt-in',
phone: 'opt-out',
},
TM: {
email: 'opt-in',
phone: 'opt-out',
},
TV: {
email: 'opt-out',
phone: 'opt-out',
},
UG: {
email: 'opt-in',
phone: 'opt-in',
},
UA: {
email: 'opt-in',
phone: 'opt-out',
},
AE: {
email: 'opt-out',
phone: 'opt-out',
},
GB: {
email: 'opt-in',
phone: 'opt-out',
},
US: {
email: 'opt-out',
phone: 'opt-out',
},
UY: {
email: 'opt-out',
phone: 'opt-out',
},
UZ: {
email: 'opt-in',
phone: 'opt-out',
},
VU: {
email: 'opt-in',
phone: 'opt-out',
},
VE: {
email: 'opt-out',
phone: 'opt-out',
},
VN: {
email: 'opt-in',
phone: 'opt-out',
},
VI: {
email: 'opt-out',
phone: 'opt-out',
},
WF: {
email: 'opt-in',
phone: 'opt-out',
},
EH: {
email: 'opt-in',
phone: 'opt-out',
},
YE: {
email: 'opt-out',
phone: 'opt-out',
},
ZM: {
email: 'opt-in',
phone: 'opt-out',
},
ZW: {
email: 'opt-in',
phone: 'opt-out',
},
};
function setCheckbox(box, value) {
if ((box.checked && !value) || (!box.checked && value))
box.click()
}
function applyNoticeChoice(e) {
var selectedCountry = e.target.value;
var notifyMeBox = document.getElementById('1611958810124001h2d6');
var doNotNotifyMeBox = document.getElementById('1611958810124002hjoY');
var countryDefaults = countryOptInMap[selectedCountry] || {
email: '',
phone: '',
};
setTimeout(function () {
switch (countryDefaults.email) {
case 'opt-in':
setCheckbox(notifyMeBox, false);
setCheckbox(doNotNotifyMeBox, false);
break;
case 'opt-out':
setCheckbox(notifyMeBox, true);
setCheckbox(doNotNotifyMeBox, false);
break;
}
})
}
/**
* options: {
* enableLogs: Boolean,
* intervalFrequency: Number,
* logIdentifier: String,
* maxIterations: Number,
* onSuccess: () => void,
* successCheck: () => Boolean,
* }
*/
function waitForX(options) {
var log = function log() {
if (options.enableLogs)
console.log.apply(console, arguments)
}
var logSuffix = options.logIdentifier ? ' -- [' + options.logIdentifier + ']' : ''
var intervalFrequency = options.intervalFrequency || 100
var maxIterations = options.maxIterations || 100
// Do 1 immediate check before the interval starts.
if (options.successCheck()) {
log('SUCCESS (immediate), no interval needed' + logSuffix)
options.onSuccess()
return;
}
log('every ' + intervalFrequency + 'ms, for ' + intervalFrequency * maxIterations + 'ms' + logSuffix)
var iterations = 0
var waitTimer = window.setInterval(function () {
if (options.successCheck.apply(options)) {
log('SUCCESS, waited: ' + ((iterations + 1) * intervalFrequency) + 'ms (' + (iterations + 1) + ' iterations)' + logSuffix)
options.onSuccess.apply(options)
window.clearInterval(waitTimer);
log('cleared interval' + logSuffix)
}
if (iterations >= maxIterations) {
log('TIMED OUT' + logSuffix)
// Safety net to ensure this interval won't run forever.
window.clearInterval(waitTimer)
log('cleared interval' + logSuffix)
}
iterations++
}, options.intervalFrequency)
}
if (data.page === 'contactInfo' || data.page === 'createaccount' || data.page === 'attendeeInfo') {
waitForX({
intervalFrequency: INTERVAL_DELAY,
maxIterations: MAX_INTERVAL_ITERATIONS,
onSuccess: function () {
var countrySelectBox = document.querySelector('#formAttendee-countryId');
if (countrySelectBox) {
if (!initialNCValueSet) {
initialNCValueSet = true
applyNoticeChoice({ target: countrySelectBox })
}
countrySelectBox.addEventListener('change', applyNoticeChoice);
}
},
successCheck: function () {
return document.querySelector('#' + FORM_ID);
},
});
}