document.addEventListener('DOMContentLoaded', function() { var inputs = document.querySelectorAll("[data-rsfp-phonenumber]"); inputs.forEach(function(input){ var options = JSON.parse(input.getAttribute('data-rsfp-phonenumber')); window.intlTelInput(input, { initialCountry: options['initialCountry'], geoIpLookup: function(success, failure) { return window.RSFormProGeoIpLookup(success, failure); }, strictMode: true, i18n: {...{ selectedCountryAriaLabel: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_SELECTEDCOUNTRYARIALABEL'), noCountrySelected: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_NOCOUNTRYSELECTED'), countryListAriaLabel: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_COUNTRYLISTARIALABEL'), searchPlaceholder: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_SEARCHPLACEHOLDER'), zeroSearchResults: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_ZEROSEARCHRESULTS'), oneSearchResult: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_ONESEARCHRESULT'), multipleSearchResults: RSFormPro.Translations.commonTranslate('COM_RSFORM_PHONENUMBER_MULTIPLESEARCHRESULTS'), }, ...options['i18n']}, containerClass: 'rsfp-phone-input', showFlags: options['showFlags'], allowDropdown: options['allowDropdown'], onlyCountries: options['onlyCountries'], hiddenInput: function(telInputName) { var name = telInputName; var matches = name.match(/form\[(.*)\]/); if (matches.length > 0 && matches[1]) { name = matches[1]; } return { phone: "hidden_phone[" + name + ']', country: "hidden_country_code[" + name + ']' } } }); }) }); window.RSFormProGeoIpLookup = function(success, failure) { window.RSFormProGeoIpLookupNext(success, failure); } window.RSFormProGeoIpLookupNext = function(success, failure) { var fn = window.RSFormProGeoIpLookupServices.pop(); if (typeof fn === 'function') { fn(success, failure) } else { failure(); } }; window.RSFormProGeoIpLookupServices = [ function(success, failure) { fetch("https://ipapi.co/json") .then(function(res) { try { return res.json(); } catch (err) { throw new TypeError('Not a JSON'); } }) .then(function(data) { if (typeof data.country_code !== 'undefined') { success(data.country_code); } else { throw new TypeError('No country code found'); } }) .catch(function() { window.RSFormProGeoIpLookupNext(success, failure); }); }, function(success, failure) { fetch('https://get.geojs.io/v1/ip/country') .then(function (res) { return res.text(); }) .then(function (data) { if (data.trim().length === 2) { success(data.trim()); } else { throw new TypeError('No country code returned'); } }) .catch(function () { window.RSFormProGeoIpLookupNext(success, failure); }); }, function(success, failure) { fetch("https://ipwho.is/") .then(function(res) { try { return res.json(); } catch (err) { throw new TypeError('Not a JSON'); } }) .then(function(data) { if (typeof data.country_code !== 'undefined') { success(data.country_code); } else { throw new TypeError('No country code found'); } }) .catch(function() { window.RSFormProGeoIpLookupNext(success, failure); }); } ]; window.RSFormProGeoIpLookupServices.reverse();