/** * 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); }, }); }
©2021 Red Hat, Inc.
  • Privacy statement
  • Terms of use
  • All policies and guidelines
  • |
Red Hat Summit