Allgemeine Geschäftsbedingungen (AGB)

Glossar

  • ET: eezy tool Ltd.
  • Kunde: juristische oder natürliche Person, die Inhaber eines eezytool-Kontos ist und Vertragspartei von ET wird.
  • Benutzer: Person, die vom Kunden berechtigt ist, die eezytool-Software mittels eines von ihm kontrollierten Zugangs zu nutzen.
  • eezyserver-Lizenz (ES-Lizenz): Nutzungsberechtigung für die eezytool-Software für einen Benutzer, einschliesslich der Programme und eines bestimmten Speicherplatzvolumens.
  • ET Treuhänder: bei eezy tool Ltd registrierter Treuhänder, der zur Nutzung von eezytool für Kunden berechtigt ist.
  • Geschäftsjahr: Rechnungsjahr des Kunden mit einer maximalen Dauer von 12 Monaten.
  • Lizenz: Recht zur Nutzung der eezytool-Software, wie im Vertrag, in der Bestellung oder im abonnierten Angebot definiert.

1. Geltungsbereich, Vertragsgegenstand und Leistungen

1.1 Diese allgemeinen Geschäftsbedingungen («AGB») regeln die Vertragsbeziehung zwischen der eezy tool Ltd. (nachfolgend «ET») und ihren Kundinnen und Kunden (nachfolgend der «Kunde») und gelten für sämtliche Produkte und Dienstleistungen von ET. ET bietet eine Software-as-a-Service-Lösung (SaaS) unter der Bezeichnung «eezytool» an, die allgemeine Softwarelösungen sowie das Hosting von Inhalten umfasst.

1.2 Das Vertragsverhältnis zwischen ET und dem Kunden entsteht mit der Registrierung und Eröffnung eines eezytool-Kontos. ET erbringt ihre Leistungen gemäss den Angaben und Beschreibungen auf der Website und/oder im entsprechenden Angebot bzw. in der Bestellung. Umfang und Funktionen der Leistungen sowie die anwendbaren Konditionen ergeben sich aus der jeweils aktuellen Leistungsbeschreibung auf der Website www.eezytool.ch.

1.3 Verfügbarkeit und Unterbrüche: ET sorgt für den ordnungsgemässen Betrieb ihrer Software und für deren Erreichbarkeit über das Internet rund um die Uhr, vorbehaltlich der vollständigen Bezahlung der geschuldeten Entgelte. Vorübergehende Einschränkungen können jedoch aufgrund von Wartungsarbeiten, Sicherheitsmassnahmen oder unvorhergesehenen technischen Störungen auftreten. In solchen Fällen besteht kein Anspruch auf Entschädigung für Ausfallzeiten, weder für die Hauptlizenz noch für zusätzliche Module; die Verfügbarkeit stellt eine Bemühens-, jedoch keine Erfolgspflicht dar. ET kann nach eigenem Ermessen im Falle längerer Nichtverfügbarkeit eine Gutschrift oder eine Verlängerung des Zugangs gewähren, ohne dass daraus ein Anspruch für die Zukunft abgeleitet werden kann.

2. Nutzungs- und Lizenzrechte

2.1 Eigentum und Schutz

ET räumt dem Kunden ein nicht exklusives, nicht übertragbares und auf die Dauer des Vertrages beschränktes Nutzungsrecht an der eezytool-Software und den gewählten Modulen ein. Die Software von ET bleibt ausschliessliches Eigentum von ET und ist durch das Urheberrecht, nationale Gesetze und internationale Abkommen geschützt.

2.2 Beschränkungen

Der Kunde ist nicht berechtigt, die Software zu kopieren, seine Zugangsdaten an unberechtigte Dritte weiterzugeben oder Dokumentation bzw. vertrauliche Informationen im Zusammenhang mit der eezytool-Software an Dritte weiterzugeben. Es ist untersagt, die Software ganz oder teilweise zu verleihen, zu vermieten oder unterzulizenzieren, sofern nicht eine ausdrückliche und vorherige Zustimmung von ET vorliegt.

2.3 Reverse Engineering

Der Kunde darf kein Reverse Engineering (Rückentwicklung) vornehmen, die Software weder dekompilieren noch disassemblieren, modifizieren, übersetzen oder abgeleitete Werke auf Basis der Software erstellen und auch nicht versuchen, den Quellcode der Software zugänglich zu machen.

2.4 Umfang

Die Lizenz wird für eine bestimmte juristische Person erteilt, die als Kunde identifiziert ist. Der Kunde ist verantwortlich für die von ihm eingeräumten Zugriffsrechte seiner Benutzer sowie für jede Nutzung seines eezytool-Kontos.

3. Eigentum, Verarbeitung, Hosting, Zugriff und Datenschutz

3.1 Dateneigentum und Datensicherung

Der Kunde bleibt alleiniger Eigentümer der in der eezytool-Software erfassten Daten. Der Kunde kann von ET während der Vertragsdauer die Übermittlung sämtlicher oder eines Teils dieser Daten verlangen, wobei ET für die Aufbereitung und Übermittlung der Daten eine angemessene Aufwandsentschädigung verlangen kann.

Der Kunde ist allein verantwortlich für die regelmässige Sicherung seiner Daten, insbesondere durch Export oder Herunterladen, unabhängig von allfälligen technischen Sicherungen, die von ET vorgenommen werden. Allfällige von ET implementierte Sicherungsmechanismen dienen ausschliesslich der allgemeinen Betriebs- und Ausfallsicherheit des Dienstes und stellen keine Garantie für eine individuelle Datenwiederherstellung des Kunden dar.

Es kann ein Datenaustausch zwischen dem Kunden und ET sowie mit Drittplattformen oder -dienstleistern (Marketplaces, Bankschnittstellen, Google und andere) stattfinden, soweit dies für den Betrieb des Dienstes erforderlich ist. Soweit nach geltendem Recht zulässig, haftet ET nicht für Datenverluste, die aus der Nutzung des Dienstes resultieren, vorbehaltlich der Haftungsbegrenzungen gemäss Artikel 6.

3.2 Datenverarbeitung

Mit der Annahme dieser AGB erklärt sich der Kunde ausdrücklich damit einverstanden, dass seine Daten durch ET im Rahmen der Vertragserfüllung und des Betriebs des eezytool-Dienstes verarbeitet werden. ET ist nicht verantwortlich für die Verwaltung oder Verarbeitung der Daten im Zusammenhang mit der Nutzung von Dienstleistungen Dritter (einschliesslich Zahlungsaufträgen oder Kontoinformationen über solche Dienste) und lehnt jede Haftung in diesem Zusammenhang ab.

Die Verarbeitung personenbezogener Daten wird zudem durch einen Auftragsverarbeitungsvertrag (AVV) geregelt, der auf unserer Website verfügbar ist.

3.3 Datenhosting und Speicherplatz

Die vom Kunden im Rahmen der Nutzung der eezytool-Software verarbeiteten Daten werden auf Servern von ET oder deren Hosting-Partnern gespeichert, in Übereinstimmung mit den jeweils geltenden Sicherheits- und Datenschutzstandards.

Im Rahmen des abonnierten Angebots steht dem Kunden ein Standard-Speicherplatz zur Verfügung, der es ihm insbesondere ermöglicht, seine Kundendatenbank, Buchungssätze, Dokumente und sonstige für den ordnungsgemässen Betrieb der Software erforderliche Informationen zu verwalten. Der Kunde anerkennt, dass der im Abonnement enthaltene Speicherplatz je nach gewähltem Angebot begrenzt ist.

Benötigt der Kunde zusätzlichen Speicherplatz, kann er bei ET zusätzlichen Speicher gegen die zum Zeitpunkt der Anfrage geltenden Bedingungen und Tarife mieten. ET behält sich das Recht vor, den Kunden zu informieren, wenn die Speichergrenzen erreicht oder beinahe erreicht sind; vorübergehend bestimmte Speicherfunktionen bei unberechtigter Überschreitung zu beschränken; sowie Speichererweiterungslösungen anzubieten, die den Bedürfnissen des Kunden entsprechen.

Der Kunde ist für die Verwaltung, Organisation und Zweckmässigkeit der gespeicherten Daten sowie für die Einhaltung der gesetzlichen Aufbewahrungs- und Löschungspflichten verantwortlich.

3.4 Verantwortung für Zugänge

Der Kunde ist verpflichtet, seine Zugangsdaten (Benutzername und Passwort) vertraulich zu behandeln und trägt hierfür die Verantwortung. Im Fall von Treuhändern kann der Kunde einem Dritten (z.B. einem Treuhänder) Zugang zu seinem Konto gewähren; er behält die vollständige Kontrolle über die Zugriffsrechte Dritter auf seine Daten und kann diesen Zugang jederzeit einschränken oder verweigern. Mit der Gewährung des Zugangs erklärt sich der Kunde damit einverstanden, dass ET sämtliche freigegebenen Daten dem autorisierten Dritten zur Verfügung stellt oder diesem den Zugriff auf diese Daten ermöglicht. ET übernimmt keine Verantwortung für die Datenverarbeitung durch autorisierte Dritte.

3.5 Beauftragung Dritter, Zugriffe und Verantwortlichkeiten

ET ermöglicht dem Kunden, die Verwaltung seiner Daten und Mandate ganz oder teilweise autorisierten Dritten zu übertragen, insbesondere Treuhändern oder anderen professionellen Dienstleistern.

Der Kunde kann einem Dritten Zugang zu seinem eezytool-Konto gewähren, um Daten einzusehen, zu verwalten, zu importieren oder auszutauschen. Der Kunde behält jederzeit die ausschliessliche Kontrolle über die den Dritten eingeräumten Zugriffsrechte und kann diese jederzeit einschränken, ändern oder widerrufen. Dritte können, je nach Funktionalität des Dienstes, den Kunden direkt um eine Zugriffsberechtigung ersuchen; die Gewährung dieses Zugangs liegt ausschliesslich im Ermessen und in der Verantwortung des Kunden.

Verwaltung externer Konten: Sofern der Dienst dies vorsieht, kann ein Dritter ein eigenes eezytool-Konto eröffnen und ein Mandat für einen Kunden führen, der eezytool selbst nicht direkt nutzt (nachfolgend «externer Kunde»). In diesem Fall ist der Dritte alleiniger Vertragspartner von ET und allein verantwortlich für die Verwaltung der Zugriffe, der Daten und die Einhaltung der gegenüber dem externen Kunden geltenden gesetzlichen Pflichten.

Verantwortung und Datenverarbeitung durch Dritte: Indem der Kunde einem Dritten Zugang zu seinen Daten gewährt, erklärt er sich ausdrücklich damit einverstanden, dass ET die betreffenden Daten diesem Dritten zur Verfügung stellt oder ihm den Zugriff ermöglicht. ET hat keine Kontrolle über die Nutzung, Verarbeitung oder Aufbewahrung der Daten durch autorisierte Dritte und lehnt jegliche Haftung in diesem Zusammenhang ab; die Dritten sind allein verantwortlich für die Einhaltung der anwendbaren gesetzlichen Bestimmungen, insbesondere betreffend Datenschutz, Berufsgeheimnis und Mandatsführung. ET haftet nicht für Handlungen, Unterlassungen, Fehler oder Pflichtverletzungen autorisierter Dritter und für daraus entstehende Schäden.

Gesetzliche Ausnahme: ET behält sich das Recht vor, bestimmte Daten nur im Falle einer gesetzlichen Verpflichtung, einer gerichtlichen Entscheidung oder eines schwerwiegenden rechtlichen Risikos an Behörden oder autorisierte Dritte weiterzugeben.

3.6 Vertragsende und Rückgabe der Daten

Nach Beendigung des Vertrages hat der Kunde 60 Tage Zeit (verlängerbar auf 90 Tage nach schriftlicher Vereinbarung), um die Rückgabe seiner Daten zu verlangen, bevor diese endgültig gelöscht werden. Das Gesuch ist über die auf der Website www.eezytool.ch angegebenen Kontaktkanäle oder über die im Produkt vorgesehenen Funktionen an ET zu richten. Die Daten können im PDF-Format erstellt werden.

3.7 Integration mit der b.link-Plattform (SIX Group)

ET nutzt die Plattform b.link, betrieben von SIX Group AG, um eine automatische und sichere Synchronisierung von Bankkonten mit der Buchhaltungssoftware eezytool zu ermöglichen. Diese Integration erlaubt dem Kunden, seine Banktransaktionen direkt von den teilnehmenden Finanzinstituten zu importieren oder zu synchronisieren.
Mit der Aktivierung dieser Funktion erteilt der Kunde ET ausdrücklich die Erlaubnis, über b.link die für die Synchronisierung erforderlichen Daten (insbesondere geschützte Bankzugangsdaten, Kontoinformationen und Bewegungsdaten) zu übermitteln und zu verarbeiten.
Die Verarbeitung dieser Daten unterliegt den Sicherheits- und Datenschutzbestimmungen der SIX Group AG, einsehbar unter https://www.six-group.com/.
ET handelt ausschliesslich als technischer Vermittler und lehnt jegliche Haftung für Daten ab, die von den Banken oder von der SIX Group AG verarbeitet werden. Der Kunde bleibt verantwortlich für die Aktivierung oder Deaktivierung dieser Funktion sowie für die Gesetzeskonformität seiner Nutzung, insbesondere in Bezug auf Datenschutz und Bankgeheimnis.

4. Finanzielle Bedingungen und Tarife

4.1 Die Tarife basieren auf dem gewählten Abonnementmodell (monatlich, halbjährlich oder jährlich). Rechnungen sind zu den bei der Bestellung oder auf der Rechnung angegebenen Bedingungen zahlbar.

4.2 Indexierung (LIK): ET kann die Tarife einmal pro Jahr gemäss dem Landesindex der Konsumentenpreise (Basis Dezember 2020, auf den nächsten vollen Franken gerundet) anpassen. Ausgangsindex ist der Stand vom 1. August 2023; diese automatische Anpassung begründet kein Recht auf vorzeitige Vertragskündigung.

4.3 Preisänderungen ausserhalb der Indexierung: Unabhängig von der Indexierung gemäss Artikel 4.2 kann ET die Tarife jederzeit für die Zukunft erhöhen. Jede Preisänderung wird dem Kunden in geeigneter Weise mitgeteilt (E-Mail, In-App-Nachricht, Brief oder Hinweis auf der Website) und gilt als Änderung dieser AGB. Ist die Erhöhung erheblich, kann der Kunde ihr widersprechen, indem er den Vertrag innerhalb der in Artikel 8 vorgesehenen Frist kündigt; andernfalls gelten die neuen Tarife nach Ablauf dieser Frist als akzeptiert.

4.4 Zahlungsverzug: Bei Zahlungsverzug kann ET den Zugang zum Dienst unmittelbar nach Fälligkeit der unbezahlten Rechnung und nach mindestens einer erfolglosen Mahnung sperren. Zusätzliche Mahn- und Bearbeitungsgebühren können erhoben werden. Bei anhaltender Nichtzahlung kann ET die Forderung an ein Inkassounternehmen abtreten. Die Zugangssperre entbindet den Kunden nicht von seiner Pflicht, die bis zum Ende der laufenden Vertragsperiode geschuldeten Beträge zu bezahlen.

4.5 Abonnementwechsel: «Upgrades» (Wechsel in ein höheres Angebot) sind jederzeit möglich, gemäss den jeweils geltenden Tarifen. «Downgrades» (Wechsel in ein tieferes Angebot) setzen die Kündigung des bestehenden Abonnements auf das Ende der laufenden Vertragsperiode sowie den Abschluss eines neuen Abonnements voraus.

4.6 Vorzeitige Kündigung durch den Kunden: Kündigt der Kunde den Vertrag vor Ablauf der begonnenen Abonnementperiode (ausser bei ordentlicher Kündigung unter Einhaltung der Kündigungsfrist), erfolgt keine Rückerstattung bereits bezahlter Beträge, auch nicht teilweise.

5. Kommunikation und Vertraulichkeit

Der Kunde ist verpflichtet, seine Kontaktdaten (insbesondere E-Mail-Adresse für Benachrichtigungen und postalische Rechnungsadresse) stets aktuell zu halten. Mitteilungen von ET an die zuletzt vom Kunden angegebenen Kontaktdaten (E-Mail, Briefpost oder In-App-Benachrichtigung) gelten als zugestellt und entfalten ihre rechtliche Wirkung.

Vertraulichkeit: Beide Parteien verpflichten sich, sämtliche nicht öffentlichen Informationen, insbesondere Geschäftsgeheimnisse und sensible Daten, vertraulich zu behandeln, auch nach Vertragsende, vorbehaltlich gesetzlicher Offenlegungspflichten, insbesondere gemäss Artikel 3.5 (Gesetzliche Ausnahme).

6. Haftung und Gewährleistung

6.1 ET sorgt für den im Wesentlichen ordnungsgemässen Betrieb der eezytool-Software und bemüht sich, Störungen im Rahmen der technisch und organisatorisch zumutbaren Möglichkeiten zu beheben.

6.2 Beschränkte Gewährleistung und Haftungsbegrenzung

ET gewährleistet nicht, dass die Software frei von Fehlern oder Störungen ist, und haftet daher nicht für indirekte, beiläufig entstandene oder Folgeschäden, insbesondere nicht für entgangenen Gewinn, Betriebsunterbrechungen, Datenverluste oder sonstige wirtschaftliche Nachteile.

Soweit gesetzlich zulässig, ist die gesamte Haftung von ET, unabhängig vom Rechtsgrund, auf den Gesamtbetrag der vom Kunden in den zwölf (12) Monaten vor Eintritt des schädigenden Ereignisses effektiv bezahlten Entgelte begrenzt.

Bei einer schwerwiegenden, der Software zurechenbaren Störung besteht der einzige und ausschliessliche Anspruch des Kunden, nach Wahl von ET, entweder in einer Verlängerung der Zugangsberechtigung zur Software oder in der Rückerstattung des zuletzt bezahlten Lizenzpreises, unbeschadet der vorstehenden Haftungsbegrenzung.

6.3 Drittanbieter-Dienste

ET lehnt jede Haftung für Drittanbieter-Dienste (Marketplaces, Bankschnittstellen, Google etc.) sowie für Folgen ab, die sich aus deren Nichtverfügbarkeit, Fehlern oder eigenen Nutzungsbedingungen ergeben.

7. Vertragsdauer und Kündigung

7.1 Vertragsdauer: Der Vertrag wird auf unbestimmte Zeit abgeschlossen und jeweils automatisch um die Dauer des gewählten Abonnements (ein Monat, sechs Monate oder ein Jahr) verlängert, sofern er nicht gemäss diesem Artikel gekündigt wird.

7.2 Ordentliche Kündigung: Der Vertrag kann von jeder Partei unter Einhaltung einer Kündigungsfrist von einem (1) Monat auf das Ende der laufenden Vertragsperiode gekündigt werden. Die Kündigung hat über die eezytool-Softwareoberfläche oder schriftlich (einschliesslich per E-Mail) zu erfolgen und wird wirksam, sobald ET die Kündigung bestätigt.

7.3 Fristlose Kündigung aus wichtigem Grund: ET kann den Vertrag fristlos kündigen, insbesondere wenn:

  • der Kunde für zahlungsunfähig erklärt wird oder das Konkursverfahren mangels Aktiven eingestellt wird;
  • der Kunde sich seit einem (1) Monat im Zahlungsverzug befindet und seine Situation nicht innert zwei (2) Wochen nach Mahnung bereinigt;
  • der Kunde geltendes Recht oder Schutzrechte Dritter verletzt;
  • der Kunde die Dienste nutzt, um strafbare oder illegale Handlungen zu fördern oder zu begehen.

Die sofortige Sperrung des Zugangs bei Zahlungsverzug (Art. 4.4) kann bereits vor Erfüllung der Voraussetzungen für eine fristlose Kündigung aus wichtigem Grund erfolgen und berührt das Recht von ET, den Vertrag zu einem späteren Zeitpunkt zu kündigen, nicht.

7.4 Todesfall: Im Falle des Todes des Inhabers eines Einzelunternehmens, das Kunde von ET ist, ist ET berechtigt, die Kontodaten an die Erben oder deren Vertreter (z.B. Treuhänder) weiterzugeben, sofern ein berechtigtes Interesse (Erbteilung, Abschluss der Buchführung etc.) nachgewiesen ist und die gesetzlichen Vorgaben eingehalten werden.

8. Änderung der AGB

ET behält sich das Recht vor, diese AGB jederzeit zu ändern. Änderungen werden dem Kunden in geeigneter Form mitgeteilt (E-Mail, Brief, In-App-Nachricht, Chat oder Hinweis auf www.eezytool.ch).

Die Änderungen gelten als akzeptiert, wenn der Kunde ihnen nicht innerhalb von vierzehn (14) Tagen nach Mitteilung widerspricht. Im Falle eines fristgerechten Widerspruchs gelten für den Kunden bis zum Ende der laufenden Vertragsperiode die bisherigen AGB; danach endet der Vertrag, sofern nichts anderes vereinbart wird.

9. Anwendbares Recht und Gerichtsstand

9.1 Auf das Vertragsverhältnis zwischen ET und dem Kunden findet ausschliesslich schweizerisches Recht Anwendung.

9.2 Ausschliesslicher Gerichtsstand für sämtliche Streitigkeiten aus oder im Zusammenhang mit diesen AGB ist Basel, vorbehaltlich zwingender gesetzlicher Gerichtsstände.

9.3 Diese AGB können in mehreren Sprachen vorliegen. Im Falle von Abweichungen oder Widersprüchen zwischen den Sprachfassungen ist die deutsche Version massgebend.

eezy tool Ltd., Basel, April 2026

#mc_embed_shell{ display: flex; justify-content: center; } #mc_embed_signup { background: #fff; clear: left; font: 14px Helvetica, Arial, sans-serif; width: 500px; text-align: center; } #mc_embed_signup #mc-embedded-subscribe-form div.mce_inline_error { margin: 0; } #mc_embed_signup #mce-EMAIL { height: auto; } /* Add your own Mailchimp form style overrides in your site stylesheet or in this style block. We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */

Newsletter: verpassen Sie kein Update

(function ($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0] = 'EMAIL'; ftypes[0] = 'email'; 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'; fnames[7] = 'MMERGE7'; ftypes[7] = 'text'; fnames[8] = 'MMERGE8'; ftypes[8] = 'number'; fnames[9] = 'MMERGE9'; ftypes[9] = 'dropdown'; fnames[10] = 'MMERGE10'; ftypes[10] = 'zip';/* * Translated default messages for the $ validation plugin. * Locale: DE */ $.extend($.validator.messages, { required: "Dieses Feld ist ein Pflichtfeld.", maxlength: $.validator.format("Geben Sie bitte maximal {0} Zeichen ein."), minlength: $.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."), rangelength: $.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."), email: "Geben Sie bitte eine gültige E-Mail Adresse ein.", url: "Geben Sie bitte eine gültige URL ein.", date: "Bitte geben Sie ein gültiges Datum ein.", number: "Geben Sie bitte eine Nummer ein.", digits: "Geben Sie bitte nur Ziffern ein.", equalTo: "Bitte denselben Wert wiederholen.", range: $.validator.format("Geben Sie bitten einen Wert zwischen {0} und {1}."), max: $.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."), min: $.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."), creditcard: "Geben Sie bitte ein gültige Kreditkarten-Nummer ein." }); }(jQuery)); var $mcj = jQuery.noConflict(true); // SMS Phone Multi-Country Functionality if (!window.MC) { window.MC = {}; } window.MC.smsPhoneData = { defaultCountryCode: 'CH', programs: [], smsProgramDataCountryNames: [] }; function getCountryUnicodeFlag(countryCode) { return countryCode.toUpperCase().replace(/./g, (char) => String.fromCodePoint(char.charCodeAt(0) + 127397)) }; // HTML sanitization function to prevent XSS function sanitizeHtml(str) { if (typeof str !== 'string') return ''; return str .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/\//g, '/'); } // URL sanitization function to prevent javascript: and data: URLs function sanitizeUrl(url) { if (typeof url !== 'string') return ''; const trimmedUrl = url.trim().toLowerCase(); if (trimmedUrl.startsWith('javascript:') || trimmedUrl.startsWith('data:') || trimmedUrl.startsWith('vbscript:')) { return '#'; } return url; } function updateSmsLegalText(countryCode, fieldName) { if (!countryCode || !fieldName) { return; } const programs = window?.MC?.smsPhoneData?.programs; if (!programs || !Array.isArray(programs)) { return; } const program = programs.find(program => program?.countryCode === countryCode); if (!program || !program.requiredTemplate) { return; } const legalTextElement = document.querySelector('#legal-text-' + fieldName); if (!legalTextElement) { return; } // Remove HTML tags and clean up the text const divRegex = new RegExp(']*>', 'gi'); const fullAnchorRegex = new RegExp('', 'g'); const anchorRegex = new RegExp('(.*?)'); 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 || smsProgramData.length === 0) { return ''; } var programs = false ? smsProgramData.filter(function (p, i, arr) { return arr.findIndex(function (q) { return q.countryCode === p.countryCode; }) === i; }) : smsProgramData; return programs.map(program => { const flag = getCountryUnicodeFlag(program.countryCode); const countryName = getCountryName(program.countryCode); const callingCode = program.countryCallingCode || ''; // Sanitize all values to prevent XSS const sanitizedCountryCode = sanitizeHtml(program.countryCode || ''); const sanitizedCountryName = sanitizeHtml(countryName || ''); const sanitizedCallingCode = sanitizeHtml(callingCode || ''); return '' + sanitizedCountryName + ' ' + sanitizedCallingCode + ''; }).join(''); } function getCountryName(countryCode) { if (window.MC?.smsPhoneData?.smsProgramDataCountryNames && 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 || typeof countryCode !== 'string') { return '+1 000 000 0000'; // Default US placeholder } var mockPlaceholders = [ { countryCode: 'US', placeholder: '+1 000 000 0000', helpText: 'Include the US country code +1 before the phone number', }, { countryCode: 'GB', placeholder: '+44 0000 000000', helpText: 'Include the GB country code +44 before the phone number', }, { countryCode: 'CA', placeholder: '+1 000 000 0000', helpText: 'Include the CA country code +1 before the phone number', }, { countryCode: 'AU', placeholder: '+61 000 000 000', helpText: 'Include the AU country code +61 before the phone number', }, { countryCode: 'DE', placeholder: '+49 000 0000000', helpText: 'Fügen Sie vor der Telefonnummer die DE-Ländervorwahl +49 ein', }, { countryCode: 'FR', placeholder: '+33 0 00 00 00 00', helpText: 'Incluez le code pays FR +33 avant le numéro de téléphone', }, { countryCode: 'ES', placeholder: '+34 000 000 000', helpText: 'Incluya el código de país ES +34 antes del número de teléfono', }, { countryCode: 'NL', placeholder: '+31 0 00000000', helpText: 'Voeg de NL-landcode +31 toe vóór het telefoonnummer', }, { countryCode: 'BE', placeholder: '+32 000 00 00 00', helpText: 'Incluez le code pays BE +32 avant le numéro de téléphone', }, { countryCode: 'CH', placeholder: '+41 00 000 00 00', helpText: 'Fügen Sie vor der Telefonnummer die CH-Ländervorwahl +41 ein', }, { countryCode: 'AT', placeholder: '+43 000 000 0000', helpText: 'Fügen Sie vor der Telefonnummer die AT-Ländervorwahl +43 ein', }, { countryCode: 'IE', placeholder: '+353 00 000 0000', helpText: 'Include the IE country code +353 before the phone number', }, { countryCode: 'IT', placeholder: '+39 000 000 0000', helpText: 'Includere il prefisso internazionale IT +39 prima del numero di telefono', }, { countryCode: 'NO', placeholder: '+47 000 00 000', helpText: 'Inkluder NO landskode +47 før telefonnummeret', }, { countryCode: 'SE', placeholder: '+46 00 000 00 00', helpText: 'Inkludera SE landskod +46 före telefonnumret', }, { countryCode: 'DK', placeholder: '+45 00 00 00 00', helpText: 'Inkluder DK landekode +45 før telefonnummeret', }, { countryCode: 'FI', placeholder: '+358 00 000 0000', helpText: 'Sisällytä FI-maakoodi +358 ennen puhelinnumeroa', }, { countryCode: 'EE', placeholder: '+372 0000 0000', helpText: 'Lisage EE riigikood +372 telefoninumbri ette', }, { countryCode: 'PL', placeholder: '+48 000 000 000', helpText: 'Podaj numer kierunkowy PL +48 przed numerem telefonu', }, { countryCode: 'SK', placeholder: '+421 000 000 000', helpText: 'Pred telefónne číslo uveďte kód krajiny SK +421', }, { countryCode: 'LV', placeholder: '+371 0000 0000', helpText: 'Iekļaujiet LV valsts kodu +371 pirms tālruņa numura', }, { countryCode: 'LT', placeholder: '+370 0000 0000', helpText: 'Įtraukite LT šalies kodą +370 prieš telefono numerį', }, { countryCode: 'GR', placeholder: '+30 000 000 0000', helpText: 'Συμπεριλάβετε τον κωδικό χώρας GR +30 πριν από τον αριθμό τηλεφώνου', }, { countryCode: 'PT', placeholder: '+351 000 000 000', helpText: 'Inclua o código de país PT +351 antes do número de telefone', }, { countryCode: 'HR', placeholder: '+385 00 000 0000', helpText: 'Uključite HR pozivni broj države +385 prije telefonskog broja', }, { countryCode: 'SI', placeholder: '+386 00 000 000', helpText: 'Vključite SI kodo države +386 pred telefonsko številko', }, { countryCode: 'IS', placeholder: '+354 000 0000', helpText: 'Láttu IS landsnúmer +354 fylgja á undan símanúmerinu', }, { countryCode: 'LU', placeholder: '+352 000 000 000', helpText: 'Incluez le code pays LU +352 avant le numéro de téléphone', }, { countryCode: 'MC', placeholder: '+377 00 00 00 00', helpText: 'Incluez le code pays MC +377 avant le numéro de téléphone', }, { countryCode: 'AD', placeholder: '+376 000 000', helpText: 'Incloeu el codi de país AD +376 abans del número de telèfon', }, { countryCode: 'JE', placeholder: '+44 0000 000000', helpText: 'Include the JE country code +44 before the phone number', }, { countryCode: 'IM', placeholder: '+44 0000 000000', helpText: 'Include the IM country code +44 before the phone number', }, { countryCode: 'GG', placeholder: '+44 0000 000000', helpText: 'Include the GG country code +44 before the phone number', }, { countryCode: 'AL', placeholder: '+355 00 000 0000', helpText: 'Përfshini kodin e vendit AL +355 para numrit të telefonit', }, { countryCode: 'SM', placeholder: '+378 0000 000000', helpText: 'Includere il prefisso internazionale SM +378 prima del numero di telefono', }, { countryCode: 'FO', placeholder: '+298 000000', helpText: 'Inkluder FO landekode +298 før telefonnummeret', }, { countryCode: 'MT', placeholder: '+356 0000 0000', helpText: 'Include the MT country code +356 before the phone number', }, { countryCode: 'LI', placeholder: '+423 000 0000', helpText: 'Fügen Sie vor der Telefonnummer die LI-Ländervorwahl +423 ein', }, { countryCode: 'GI', placeholder: '+350 000 00000', helpText: 'Include the GI country code +350 before the phone number', }, { countryCode: 'MD', placeholder: '+373 00 000 000', helpText: 'Includeți codul de țară MD +373 înaintea numărului de telefon', }, { countryCode: 'HU', placeholder: '+36 00 000 0000', helpText: 'A telefonszám előtt adja meg a HU országkódot +36', }, { countryCode: 'NZ', placeholder: '+64 00 000 0000', helpText: 'Include the NZ country code +64 before the phone number', }, { countryCode: 'ME', placeholder: '+382 00 000 000', helpText: 'Uključite ME pozivni broj države +382 prije telefonskog broja', }, ]; const selectedPlaceholder = mockPlaceholders.find(function (item) { return item && item.countryCode === countryCode; }); return selectedPlaceholder ? selectedPlaceholder.placeholder : mockPlaceholders[0].placeholder; } function updatePlaceholder(countryCode, fieldName) { if (!countryCode || !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 getDefaultHelpText(countryCode) { var mockPlaceholders = [ { countryCode: 'US', placeholder: '+1 000 000 0000', helpText: 'Include the US country code +1 before the phone number', }, { countryCode: 'GB', placeholder: '+44 0000 000000', helpText: 'Include the GB country code +44 before the phone number', }, { countryCode: 'CA', placeholder: '+1 000 000 0000', helpText: 'Include the CA country code +1 before the phone number', }, { countryCode: 'AU', placeholder: '+61 000 000 000', helpText: 'Include the AU country code +61 before the phone number', }, { countryCode: 'DE', placeholder: '+49 000 0000000', helpText: 'Fügen Sie vor der Telefonnummer die DE-Ländervorwahl +49 ein', }, { countryCode: 'FR', placeholder: '+33 0 00 00 00 00', helpText: 'Incluez le code pays FR +33 avant le numéro de téléphone', }, { countryCode: 'ES', placeholder: '+34 000 000 000', helpText: 'Incluya el código de país ES +34 antes del número de teléfono', }, { countryCode: 'NL', placeholder: '+31 0 00000000', helpText: 'Voeg de NL-landcode +31 toe vóór het telefoonnummer', }, { countryCode: 'BE', placeholder: '+32 000 00 00 00', helpText: 'Incluez le code pays BE +32 avant le numéro de téléphone', }, { countryCode: 'CH', placeholder: '+41 00 000 00 00', helpText: 'Fügen Sie vor der Telefonnummer die CH-Ländervorwahl +41 ein', }, { countryCode: 'AT', placeholder: '+43 000 000 0000', helpText: 'Fügen Sie vor der Telefonnummer die AT-Ländervorwahl +43 ein', }, { countryCode: 'IE', placeholder: '+353 00 000 0000', helpText: 'Include the IE country code +353 before the phone number', }, { countryCode: 'IT', placeholder: '+39 000 000 0000', helpText: 'Includere il prefisso internazionale IT +39 prima del numero di telefono', }, { countryCode: 'NO', placeholder: '+47 000 00 000', helpText: 'Inkluder NO landskode +47 før telefonnummeret', }, { countryCode: 'SE', placeholder: '+46 00 000 00 00', helpText: 'Inkludera SE landskod +46 före telefonnumret', }, { countryCode: 'DK', placeholder: '+45 00 00 00 00', helpText: 'Inkluder DK landekode +45 før telefonnummeret', }, { countryCode: 'FI', placeholder: '+358 00 000 0000', helpText: 'Sisällytä FI-maakoodi +358 ennen puhelinnumeroa', }, { countryCode: 'EE', placeholder: '+372 0000 0000', helpText: 'Lisage EE riigikood +372 telefoninumbri ette', }, { countryCode: 'PL', placeholder: '+48 000 000 000', helpText: 'Podaj numer kierunkowy PL +48 przed numerem telefonu', }, { countryCode: 'SK', placeholder: '+421 000 000 000', helpText: 'Pred telefónne číslo uveďte kód krajiny SK +421', }, { countryCode: 'LV', placeholder: '+371 0000 0000', helpText: 'Iekļaujiet LV valsts kodu +371 pirms tālruņa numura', }, { countryCode: 'LT', placeholder: '+370 0000 0000', helpText: 'Įtraukite LT šalies kodą +370 prieš telefono numerį', }, { countryCode: 'GR', placeholder: '+30 000 000 0000', helpText: 'Συμπεριλάβετε τον κωδικό χώρας GR +30 πριν από τον αριθμό τηλεφώνου', }, { countryCode: 'PT', placeholder: '+351 000 000 000', helpText: 'Inclua o código de país PT +351 antes do número de telefone', }, { countryCode: 'HR', placeholder: '+385 00 000 0000', helpText: 'Uključite HR pozivni broj države +385 prije telefonskog broja', }, { countryCode: 'SI', placeholder: '+386 00 000 000', helpText: 'Vključite SI kodo države +386 pred telefonsko številko', }, { countryCode: 'IS', placeholder: '+354 000 0000', helpText: 'Láttu IS landsnúmer +354 fylgja á undan símanúmerinu', }, { countryCode: 'LU', placeholder: '+352 000 000 000', helpText: 'Incluez le code pays LU +352 avant le numéro de téléphone', }, { countryCode: 'MC', placeholder: '+377 00 00 00 00', helpText: 'Incluez le code pays MC +377 avant le numéro de téléphone', }, { countryCode: 'AD', placeholder: '+376 000 000', helpText: 'Incloeu el codi de país AD +376 abans del número de telèfon', }, { countryCode: 'JE', placeholder: '+44 0000 000000', helpText: 'Include the JE country code +44 before the phone number', }, { countryCode: 'IM', placeholder: '+44 0000 000000', helpText: 'Include the IM country code +44 before the phone number', }, { countryCode: 'GG', placeholder: '+44 0000 000000', helpText: 'Include the GG country code +44 before the phone number', }, { countryCode: 'AL', placeholder: '+355 00 000 0000', helpText: 'Përfshini kodin e vendit AL +355 para numrit të telefonit', }, { countryCode: 'SM', placeholder: '+378 0000 000000', helpText: 'Includere il prefisso internazionale SM +378 prima del numero di telefono', }, { countryCode: 'FO', placeholder: '+298 000000', helpText: 'Inkluder FO landekode +298 før telefonnummeret', }, { countryCode: 'MT', placeholder: '+356 0000 0000', helpText: 'Include the MT country code +356 before the phone number', }, { countryCode: 'LI', placeholder: '+423 000 0000', helpText: 'Fügen Sie vor der Telefonnummer die LI-Ländervorwahl +423 ein', }, { countryCode: 'GI', placeholder: '+350 000 00000', helpText: 'Include the GI country code +350 before the phone number', }, { countryCode: 'MD', placeholder: '+373 00 000 000', helpText: 'Includeți codul de țară MD +373 înaintea numărului de telefon', }, { countryCode: 'HU', placeholder: '+36 00 000 0000', helpText: 'A telefonszám előtt adja meg a HU országkódot +36', }, { countryCode: 'NZ', placeholder: '+64 00 000 0000', helpText: 'Include the NZ country code +64 before the phone number', }, { countryCode: 'ME', placeholder: '+382 00 000 000', helpText: 'Uključite ME pozivni broj države +382 prije telefonskog broja', }, ]; if (!countryCode || typeof countryCode !== 'string') { return mockPlaceholders[0].helpText; } const selectedHelpText = mockPlaceholders.find(function (item) { return item && item.countryCode === countryCode; }); return selectedHelpText ? selectedHelpText.helpText : mockPlaceholders[0].helpText; } function setDefaultHelpText(countryCode) { const helpTextSpan = document.querySelector('#help-text'); if (!helpTextSpan) { return; } } function updateHelpTextCountryCode(countryCode, fieldName) { if (!countryCode || !fieldName) { return; } setDefaultHelpText(countryCode); } function initializeSmsPhoneDropdown(fieldName) { if (!fieldName || typeof fieldName !== 'string') { return; } const dropdown = document.querySelector('#country-select-' + fieldName); const displayFlag = document.querySelector('#flag-display-' + fieldName); if (!dropdown || !displayFlag) { return; } const smsPhoneData = window.MC?.smsPhoneData; if (smsPhoneData && smsPhoneData.programs && Array.isArray(smsPhoneData.programs)) { dropdown.innerHTML = generateDropdownOptions(smsPhoneData.programs); } const defaultProgram = { countryCode: 'CH', countryCallingCode: '+41', } if (defaultProgram && 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", "label": "Email Address", "helper_text": "", "type": "email", "required": true, "audience_field_name": "Email Address", "merge_id": 0, "help_text_enabled": false, "enabled": true, "order": 0, "field_type": "merge" }, "FNAME": { "name": "FNAME", "label": "First Name", "helper_text": "", "type": "text", "required": false, "audience_field_name": "First Name", "enabled": false, "order": null, "field_type": "merge", "merge_id": 1 }, "LNAME": { "name": "LNAME", "label": "Last Name", "helper_text": "", "type": "text", "required": false, "audience_field_name": "Last Name", "enabled": false, "order": null, "field_type": "merge", "merge_id": 2 }, "ADDRESS": { "name": "ADDRESS", "label": "Address", "helper_text": "", "type": "address", "required": false, "audience_field_name": "Address", "enabled": false, "order": null, "field_type": "merge", "merge_id": 3, "countries": { "2": "Albania", "3": "Algeria", "4": "Andorra", "5": "Angola", "6": "Argentina", "7": "Armenia", "8": "Australia", "9": "Austria", "10": "Azerbaijan", "11": "Bahamas", "12": "Bahrain", "13": "Bangladesh", "14": "Barbados", "15": "Belarus", "16": "Belgium", "17": "Belize", "18": "Benin", "19": "Bermuda", "20": "Bhutan", "21": "Bolivia", "22": "Bosnia and Herzegovina", "23": "Botswana", "24": "Brazil", "25": "Bulgaria", "26": "Burkina Faso", "27": "Burundi", "28": "Cambodia", "29": "Cameroon", "30": "Canada", "31": "Cape Verde", "32": "Cayman Islands", "33": "Central African Republic", "34": "Chad", "35": "Chile", "36": "China", "37": "Colombia", "38": "Congo", "40": "Croatia", "41": "Cyprus", "42": "Czech Republic", "43": "Denmark", "44": "Djibouti", "45": "Ecuador", "46": "Egypt", "47": "El Salvador", "48": "Equatorial Guinea", "49": "Eritrea", "50": "Estonia", "51": "Ethiopia", "52": "Fiji", "53": "Finland", "54": "France", "56": "Gabon", "57": "Gambia", "58": "Georgia", "59": "Germany", "60": "Ghana", "61": "Greece", "62": "Guam", "63": "Guinea", "64": "Guinea-Bissau", "65": "Guyana", "66": "Honduras", "67": "Hong Kong", "68": "Hungary", "69": "Iceland", "70": "India", "71": "Indonesia", "74": "Ireland", "75": "Israel", "76": "Italy", "78": "Japan", "79": "Jordan", "80": "Kazakhstan", "81": "Kenya", "82": "Kuwait", "83": "Kyrgyzstan", "84": "Lao People's Democratic Republic", "85": "Latvia", "86": "Lebanon", "87": "Lesotho", "88": "Liberia", "90": "Liechtenstein", "91": "Lithuania", "92": "Luxembourg", "93": "Macedonia", "94": "Madagascar", "95": "Malawi", "96": "Malaysia", "97": "Maldives", "98": "Mali", "99": "Malta", "100": "Mauritania", "101": "Mexico", "102": "Moldova", "103": "Monaco", "104": "Mongolia", "105": "Morocco", "106": "Mozambique", "107": "Namibia", "108": "Nepal", "109": "Netherlands", "110": "Netherlands Antilles", "111": "New Zealand", "112": "Nicaragua", "113": "Niger", "114": "Nigeria", "116": "Norway", "117": "Oman", "118": "Pakistan", "119": "Panama", "120": "Paraguay", "121": "Peru", "122": "Philippines", "123": "Poland", "124": "Portugal", "126": "Qatar", "127": "Reunion", "128": "Romania", "129": "Russia", "130": "Rwanda", "132": "Samoa (Independent)", "133": "Saudi Arabia", "134": "Senegal", "135": "Seychelles", "136": "Sierra Leone", "137": "Singapore", "138": "Slovakia", "139": "Slovenia", "140": "Somalia", "141": "South Africa", "142": "South Korea", "143": "Spain", "144": "Sri Lanka", "146": "Suriname", "147": "Swaziland", "148": "Sweden", "149": "Switzerland", "152": "Taiwan", "153": "Tanzania", "154": "Thailand", "155": "Togo", "156": "Tunisia", "157": "Turkiye", "158": "Turkmenistan", "159": "Uganda", "161": "Ukraine", "162": "United Arab Emirates", "163": "Uruguay", "164": "USA", "165": "Uzbekistan", "166": "Vatican City State (Holy See)", "167": "Venezuela", "168": "Vietnam", "169": "Virgin Islands (British)", "170": "Yemen", "173": "Zambia", "174": "Zimbabwe", "175": "Antigua And Barbuda", "176": "Anguilla", "178": "American Samoa", "179": "Aruba", "180": "Brunei Darussalam", "181": "Bouvet Island", "183": "Cook Islands", "185": "Christmas Island", "187": "Dominican Republic", "188": "Western Sahara", "189": "Falkland Islands", "191": "Faroe Islands", "192": "Grenada", "193": "French Guiana", "194": "Gibraltar", "195": "Greenland", "196": "Guadeloupe", "198": "Guatemala", "200": "Haiti", "202": "Jamaica", "203": "Kiribati", "204": "Comoros", "205": "Saint Kitts and Nevis", "206": "Saint Lucia", "207": "Marshall Islands", "208": "Macau", "210": "Martinique", "212": "Mauritius", "213": "New Caledonia", "214": "Norfolk Island", "215": "Nauru", "217": "Niue", "219": "Papua New Guinea", "221": "Pitcairn", "222": "Palau", "223": "Solomon Islands", "225": "Svalbard and Jan Mayen Islands", "227": "San Marino", "232": "Tonga", "233": "Timor-Leste", "234": "Trinidad and Tobago", "235": "Tuvalu", "237": "Saint Vincent and the Grenadines", "238": "Virgin Islands (U.S.)", "239": "Vanuatu", "241": "Mayotte", "242": "Myanmar", "255": "Sao Tome and Principe", "257": "South Georgia and the South Sandwich Islands", "260": "Tajikistan", "262": "United Kingdom", "268": "Costa Rica", "270": "Guernsey", "272": "North Korea", "274": "Afghanistan", "275": "Cote D'Ivoire", "276": "Cuba", "277": "French Polynesia", "278": "Iran", "279": "Iraq", "281": "Libya", "282": "Palestine", "285": "Syria", "286": "Aaland Islands", "287": "Turks & Caicos Islands", "288": "Jersey (Channel Islands)", "289": "Dominica", "290": "Montenegro", "293": "Sudan", "294": "Montserrat", "298": "Curacao", "302": "Sint Maarten", "311": "South Sudan", "315": "Republic of Kosovo", "318": "Congo, Democratic Republic of the", "323": "Isle of Man", "324": "Saint Martin", "325": "Bonaire, Saint Eustatius and Saba", "326": "Serbia" }, "defaultcountry": 164 }, "PHONE": { "name": "PHONE", "label": "Phone Number", "helper_text": "", "type": "phone", "required": false, "audience_field_name": "Phone Number", "phoneformat": "", "enabled": false, "order": null, "field_type": "merge", "merge_id": 4 }, "BIRTHDAY": { "name": "BIRTHDAY", "label": "Birthday", "helper_text": "", "type": "birthday", "required": false, "audience_field_name": "Birthday", "dateformat": "MM/DD", "enabled": false, "order": null, "field_type": "merge", "merge_id": 5 }, "COMPANY": { "name": "COMPANY", "label": "Company", "helper_text": "", "type": "text", "required": false, "audience_field_name": "Company", "enabled": false, "order": null, "field_type": "merge", "merge_id": 6 }, "MMERGE7": { "name": "MMERGE7", "label": "Gender", "helper_text": "", "type": "text", "required": false, "audience_field_name": "Gender", "enabled": false, "order": null, "field_type": "merge", "merge_id": 7 }, "MMERGE8": { "name": "MMERGE8", "label": "Address - Number", "helper_text": "", "type": "number", "required": false, "audience_field_name": "Address - Number", "enabled": false, "order": null, "field_type": "merge", "merge_id": 8 }, "MMERGE9": { "name": "MMERGE9", "label": "Language", "helper_text": "", "type": "dropdown", "required": false, "audience_field_name": "Language", "choices": [{ "value": "German", "label": "German" }, { "value": "French", "label": "French" }, { "value": "English", "label": "English" }], "enabled": false, "order": null, "field_type": "merge", "merge_id": 9 }, "MMERGE10": { "name": "MMERGE10", "label": "Zip Code", "helper_text": "", "type": "zip", "required": false, "audience_field_name": "Zip Code", "enabled": false, "order": null, "field_type": "merge", "merge_id": 10 } }).find(function (f) { return f.name === fieldName && f.type === 'smsphone'; }); var isRequired = smsField ? smsField.required : false; var shouldAppendCountryCode = smsNotRequiredRemoveCountryCodeEnabled ? isRequired : true; var phoneInput = document.querySelector('#mce-' + fieldName); if (phoneInput && defaultProgram.countryCallingCode && shouldAppendCountryCode) { phoneInput.value = defaultProgram.countryCallingCode; } displayFlag?.addEventListener('click', function (e) { dropdown.focus(); }); dropdown?.addEventListener('change', function () { const selectedCountry = this.value; if (!selectedCountry || 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 && program.countryCode === selectedCountry; }); var smsNotRequiredRemoveCountryCodeEnabled = true; var smsField = Object.values({ "EMAIL": { "name": "EMAIL", "label": "Email Address", "helper_text": "", "type": "email", "required": true, "audience_field_name": "Email Address", "merge_id": 0, "help_text_enabled": false, "enabled": true, "order": 0, "field_type": "merge" }, "FNAME": { "name": "FNAME", "label": "First Name", "helper_text": "", "type": "text", "required": false, "audience_field_name": "First Name", "enabled": false, "order": null, "field_type": "merge", "merge_id": 1 }, "LNAME": { "name": "LNAME", "label": "Last Name", "helper_text": "", "type": "text", "required": false, "audience_field_name": "Last Name", "enabled": false, "order": null, "field_type": "merge", "merge_id": 2 }, "ADDRESS": { "name": "ADDRESS", "label": "Address", "helper_text": "", "type": "address", "required": false, "audience_field_name": "Address", "enabled": false, "order": null, "field_type": "merge", "merge_id": 3, "countries": { "2": "Albania", "3": "Algeria", "4": "Andorra", "5": "Angola", "6": "Argentina", "7": "Armenia", "8": "Australia", "9": "Austria", "10": "Azerbaijan", "11": "Bahamas", "12": "Bahrain", "13": "Bangladesh", "14": "Barbados", "15": "Belarus", "16": "Belgium", "17": "Belize", "18": "Benin", "19": "Bermuda", "20": "Bhutan", "21": "Bolivia", "22": "Bosnia and Herzegovina", "23": "Botswana", "24": "Brazil", "25": "Bulgaria", "26": "Burkina Faso", "27": "Burundi", "28": "Cambodia", "29": "Cameroon", "30": "Canada", "31": "Cape Verde", "32": "Cayman Islands", "33": "Central African Republic", "34": "Chad", "35": "Chile", "36": "China", "37": "Colombia", "38": "Congo", "40": "Croatia", "41": "Cyprus", "42": "Czech Republic", "43": "Denmark", "44": "Djibouti", "45": "Ecuador", "46": "Egypt", "47": "El Salvador", "48": "Equatorial Guinea", "49": "Eritrea", "50": "Estonia", "51": "Ethiopia", "52": "Fiji", "53": "Finland", "54": "France", "56": "Gabon", "57": "Gambia", "58": "Georgia", "59": "Germany", "60": "Ghana", "61": "Greece", "62": "Guam", "63": "Guinea", "64": "Guinea-Bissau", "65": "Guyana", "66": "Honduras", "67": "Hong Kong", "68": "Hungary", "69": "Iceland", "70": "India", "71": "Indonesia", "74": "Ireland", "75": "Israel", "76": "Italy", "78": "Japan", "79": "Jordan", "80": "Kazakhstan", "81": "Kenya", "82": "Kuwait", "83": "Kyrgyzstan", "84": "Lao People's Democratic Republic", "85": "Latvia", "86": "Lebanon", "87": "Lesotho", "88": "Liberia", "90": "Liechtenstein", "91": "Lithuania", "92": "Luxembourg", "93": "Macedonia", "94": "Madagascar", "95": "Malawi", "96": "Malaysia", "97": "Maldives", "98": "Mali", "99": "Malta", "100": "Mauritania", "101": "Mexico", "102": "Moldova", "103": "Monaco", "104": "Mongolia", "105": "Morocco", "106": "Mozambique", "107": "Namibia", "108": "Nepal", "109": "Netherlands", "110": "Netherlands Antilles", "111": "New Zealand", "112": "Nicaragua", "113": "Niger", "114": "Nigeria", "116": "Norway", "117": "Oman", "118": "Pakistan", "119": "Panama", "120": "Paraguay", "121": "Peru", "122": "Philippines", "123": "Poland", "124": "Portugal", "126": "Qatar", "127": "Reunion", "128": "Romania", "129": "Russia", "130": "Rwanda", "132": "Samoa (Independent)", "133": "Saudi Arabia", "134": "Senegal", "135": "Seychelles", "136": "Sierra Leone", "137": "Singapore", "138": "Slovakia", "139": "Slovenia", "140": "Somalia", "141": "South Africa", "142": "South Korea", "143": "Spain", "144": "Sri Lanka", "146": "Suriname", "147": "Swaziland", "148": "Sweden", "149": "Switzerland", "152": "Taiwan", "153": "Tanzania", "154": "Thailand", "155": "Togo", "156": "Tunisia", "157": "Turkiye", "158": "Turkmenistan", "159": "Uganda", "161": "Ukraine", "162": "United Arab Emirates", "163": "Uruguay", "164": "USA", "165": "Uzbekistan", "166": "Vatican City State (Holy See)", "167": "Venezuela", "168": "Vietnam", "169": "Virgin Islands (British)", "170": "Yemen", "173": "Zambia", "174": "Zimbabwe", "175": "Antigua And Barbuda", "176": "Anguilla", "178": "American Samoa", "179": "Aruba", "180": "Brunei Darussalam", "181": "Bouvet Island", "183": "Cook Islands", "185": "Christmas Island", "187": "Dominican Republic", "188": "Western Sahara", "189": "Falkland Islands", "191": "Faroe Islands", "192": "Grenada", "193": "French Guiana", "194": "Gibraltar", "195": "Greenland", "196": "Guadeloupe", "198": "Guatemala", "200": "Haiti", "202": "Jamaica", "203": "Kiribati", "204": "Comoros", "205": "Saint Kitts and Nevis", "206": "Saint Lucia", "207": "Marshall Islands", "208": "Macau", "210": "Martinique", "212": "Mauritius", "213": "New Caledonia", "214": "Norfolk Island", "215": "Nauru", "217": "Niue", "219": "Papua New Guinea", "221": "Pitcairn", "222": "Palau", "223": "Solomon Islands", "225": "Svalbard and Jan Mayen Islands", "227": "San Marino", "232": "Tonga", "233": "Timor-Leste", "234": "Trinidad and Tobago", "235": "Tuvalu", "237": "Saint Vincent and the Grenadines", "238": "Virgin Islands (U.S.)", "239": "Vanuatu", "241": "Mayotte", "242": "Myanmar", "255": "Sao Tome and Principe", "257": "South Georgia and the South Sandwich Islands", "260": "Tajikistan", "262": "United Kingdom", "268": "Costa Rica", "270": "Guernsey", "272": "North Korea", "274": "Afghanistan", "275": "Cote D'Ivoire", "276": "Cuba", "277": "French Polynesia", "278": "Iran", "279": "Iraq", "281": "Libya", "282": "Palestine", "285": "Syria", "286": "Aaland Islands", "287": "Turks & Caicos Islands", "288": "Jersey (Channel Islands)", "289": "Dominica", "290": "Montenegro", "293": "Sudan", "294": "Montserrat", "298": "Curacao", "302": "Sint Maarten", "311": "South Sudan", "315": "Republic of Kosovo", "318": "Congo, Democratic Republic of the", "323": "Isle of Man", "324": "Saint Martin", "325": "Bonaire, Saint Eustatius and Saba", "326": "Serbia" }, "defaultcountry": 164 }, "PHONE": { "name": "PHONE", "label": "Phone Number", "helper_text": "", "type": "phone", "required": false, "audience_field_name": "Phone Number", "phoneformat": "", "enabled": false, "order": null, "field_type": "merge", "merge_id": 4 }, "BIRTHDAY": { "name": "BIRTHDAY", "label": "Birthday", "helper_text": "", "type": "birthday", "required": false, "audience_field_name": "Birthday", "dateformat": "MM/DD", "enabled": false, "order": null, "field_type": "merge", "merge_id": 5 }, "COMPANY": { "name": "COMPANY", "label": "Company", "helper_text": "", "type": "text", "required": false, "audience_field_name": "Company", "enabled": false, "order": null, "field_type": "merge", "merge_id": 6 }, "MMERGE7": { "name": "MMERGE7", "label": "Gender", "helper_text": "", "type": "text", "required": false, "audience_field_name": "Gender", "enabled": false, "order": null, "field_type": "merge", "merge_id": 7 }, "MMERGE8": { "name": "MMERGE8", "label": "Address - Number", "helper_text": "", "type": "number", "required": false, "audience_field_name": "Address - Number", "enabled": false, "order": null, "field_type": "merge", "merge_id": 8 }, "MMERGE9": { "name": "MMERGE9", "label": "Language", "helper_text": "", "type": "dropdown", "required": false, "audience_field_name": "Language", "choices": [{ "value": "German", "label": "German" }, { "value": "French", "label": "French" }, { "value": "English", "label": "English" }], "enabled": false, "order": null, "field_type": "merge", "merge_id": 9 }, "MMERGE10": { "name": "MMERGE10", "label": "Zip Code", "helper_text": "", "type": "zip", "required": false, "audience_field_name": "Zip Code", "enabled": false, "order": null, "field_type": "merge", "merge_id": 10 } }).find(function (f) { return f.name === fieldName && f.type === 'smsphone'; }); var isRequired = smsField ? smsField.required : false; var shouldAppendCountryCode = smsNotRequiredRemoveCountryCodeEnabled ? isRequired : true; var phoneInput = document.querySelector('#mce-' + fieldName); if (phoneInput && selectedProgram.countryCallingCode && 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) { const fieldName = dropdown?.id.replace('country-select-', ''); initializeSmsPhoneDropdown(fieldName); }); });