[{"command":"settings","settings":{"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"ajax":[],"user":{"uid":0,"permissionsHash":"7812394870e5e699e7d5721e740902b1c48e212a7273d2e324629bc9692c3f15"}},"merge":true},{"command":"add_css","data":[{"rel":"stylesheet","media":"all","href":"\/sites\/michaelpage.de\/files\/css\/css_d-Bki0VeEQEI5fHcbzul9S-WpTHd2LcIHEhlAVP-uoQ.css?delta=0\u0026language=de\u0026theme=mp_theme\u0026include=eJzLLYgvyUjNTdVPrSjQTc7JL03RTcsvytVNLi4GAJMICmc"}]},{"command":"add_js","selector":"body","data":[{"src":"\/core\/assets\/vendor\/jquery\/jquery.min.js?v=3.7.1"},{"src":"\/sites\/michaelpage.de\/files\/languages\/de_mBfgKoeAMX44tYwlxLyk7GNH5leXz2FG56iRDW_UtWI.js?tcx45j"},{"src":"\/core\/misc\/drupalSettingsLoader.js?v=10.5.8"},{"src":"\/core\/misc\/drupal.js?v=10.5.8"},{"src":"\/core\/misc\/drupal.init.js?v=10.5.8"},{"src":"\/modules\/custom\/mp_experience_cloud\/js\/mp-exp-cloud-form.js?v=10.0.14"}]},{"command":"openDialog","selector":"#drupal-modal","settings":null,"data":"\n\n\u003C!-- Subtitle for popup --\u003E\n\n\u003C!-- Thank you message --\u003E\n\u003Cdiv id=\u0022ty-msg-wrapper\u0022\u003E\n  \u003Ch4 id=\u0022ty-msg\u0022\u003EThank you for submitting the form\u003Ch4\u003E\n\u003C\/div\u003E\n\n\u003C!-- Skeleton Loader --\u003E\n\u003Cdiv class=\u0022skeletal-loader\u0022 id=\u0022loader\u0022\u003E\n  \u003Cdiv class=\u0022xc-desktop-skeleton loader-view\u0022\u003EDesktop skeleton\u003C\/div\u003E\n  \u003Cdiv class=\u0022xc-popup-skeleton loader-view\u0022\u003ETablet skeleton\u003C\/div\u003E\n  \u003Cdiv class=\u0022xc-sidebar-skeleton loader-view\u0022\u003EMobile skeleton\u003C\/div\u003E\n\u003C\/div\u003E\n\n\u003C!-- Constants --\u003E\n\u003Cscript\u003E\n  let targetIntentCaptchaClassName = \u0027\u0027;\n  let targetIntentCaptcha = \u0027\u0027;\n  let captchaWidget;\n  let isObjectFound = false;\n  let componentCreated = false;\n  let reCaptchaVersion = \u0027V3\u0027;\n  let xcCaptchaKey = \u00226LcQXGIsAAAAAHdghLxUZm9pB1MwAVC8yrhJ0xHi\u0022;\n  let v2CaptchaKey = \u00226LceXGIsAAAAALLCvg7Cgbk3hc8zoq8lQoLzu\\u002DHw\u0022;\n  let submissionBehavior = \u0022redirect\u0022;\n  let successMessage = \u0022\u0022;\n  let onSubmissionUrl = \u0022https\\u003A\\\/\\\/www.michaelpage.de\\\/thank\\u002Dyou\\u002Djob\\u002Dspec\u0022;\n  let autoResponderUrl = \u0022\u0022;\n  let onCandidateUrl = \u0022https\\u003A\\\/\\\/www.michaelpage.de\\\/job\\u002Dsearch\u0022;\n  let tyDiv = document.getElementById(\u0027ty-msg-wrapper\u0027);\n  let tyMsg = document.getElementById(\u0027ty-msg\u0027);\n\n  let myCallbackFunction = function(){\n    if (tyMsg) tyMsg.innerHTML = successMessage;\n    document.getElementById(\u0027lightning-out\u0027).innerHTML = \u0027\u0027;\n    if (tyDiv) {\n      tyDiv.style.display = \u0027flex\u0027;\n      const y = tyDiv.getBoundingClientRect().top + window.pageYOffset - 120;\n      window.scrollTo({ top: y, behavior: \u0027smooth\u0027 });\n    }\n  }\n\n  var paramsInUrl = new URLSearchParams(window.location.search);\n  \/\/ added for UTM tracking.\n  var utmSource = paramsInUrl.get(\u0027utm_source\u0027);\n  var utmMedium = paramsInUrl.get(\u0027utm_medium\u0027);\n  var utmCampaign = paramsInUrl.get(\u0027utm_campaign\u0027);\n  var contactId = getContactId();\n  var source_url = location.origin + location.pathname;\n  var advice_node = false;\n  var popupView = false;\n\n  const jobFormParams = {\n    formId : \u0022a35d3448\\u002Df91e\\u002D4073\\u002D8c1c\\u002D2d3f76c8690a\u0022,\n    formType : \u0022Contact\\u0020Form\u0022,\n    variant : \u0022\u0022,\n    campaignId : \u0022CA\\u002DCO\\u00200003095\u0022,\n    onSubmissionUrl : onSubmissionUrl,\n    autoResponderUrl : autoResponderUrl,\n    onCandidateUrl : onCandidateUrl,\n    language : \u0022de\\u002DDE\u0022,\n    brand : \u0022MP\u0022,\n    country : \u0022DE\u0022,\n    multiCountry : \u0022false\u0022,\n    contactId : contactId,\n    utmSource : utmSource,\n    utmMedium : utmMedium,\n    utmCampaign : utmCampaign,\n    sourceUrl : source_url,\n    submissionBehavior : submissionBehavior,\n    onSuccessCallback : myCallbackFunction,\n    v3Success: true\n  }\n\n  function getContactId() {\n    let cid = paramsInUrl.get(\u0027cid\u0027);\n    if (!cid) {\n      cid = getCookie(\u0027contactId\u0027);\n    }\n    return cid || null;\n  }\n\n  function getCookie(name) {\n    return Object.fromEntries(\n      document.cookie.split(\u0022; \u0022).map(c =\u003E c.split(\u0022=\u0022))\n    )[name] || null;\n  }\n\u003C\/script\u003E\n\n\u003C!-- Lightning Out Container (Initially Hidden) --\u003E\n\u003Cdiv style=\u0022display:none;\u0022 id=\u0022lightning-out\u0022\u003E\n  \u003Cp id=\u0022temp-text\u0022\u003EThis text is added to make the div non-empty for escaping empty div filters.\u003C\/p\u003E\n\u003C\/div\u003E\n\n\u003C!-- Main Logic --\u003E\n\u003Cscript\u003E\n  function tryLout() {\n    const localeLanguage = new Intl.Locale(jobFormParams.language);\n    const localeLanguageCode = localeLanguage.language;\n    if (jobFormParams.country !== \u0027CN\u0027) {\n      \/\/ Add google captcha for all sites except China.\n      const V3script = document.createElement(\u0027script\u0027);\n      V3script.src = `https:\/\/www.google.com\/recaptcha\/api.js?hl=${localeLanguageCode}\u0026render=${xcCaptchaKey}`;\n      V3script.async = true;\n      V3script.defer = true;\n      document.head.appendChild(V3script);\n    }\n\n    $Lightning.use(\u0027c:CAP_XC_globalJobFormOutApp\u0027, function () {\n      $Lightning.createComponent(\n        \u0027c:CAP_XC_globalJobFormAura\u0027,\n        { jobFormParams: jobFormParams },\n        \u0027lightning-out\u0027,\n        function (cmp) {\n          componentCreated = true;\n          document.getElementById(\u0027temp-text\u0027).remove();\n          document.getElementById(\u0027lightning-out\u0027).style.display = \u0027block\u0027;\n          const loader = document.getElementById(\u0027loader\u0027);\n          if (loader) loader.remove();\n          if(popupView == true){\n            setTimeout(function() {\n              document.dispatchEvent(new CustomEvent(\u0027xc_focus_into_form\u0027));\n            }, 100);\n          }\n        }\n      );\n    }, \u0027https:\/\/pagegroup.my.site.com\/globalform\u0027);\n  }\n\n  function insertIntoShadowDOM(retries = 3, delay = 1000) {\n    const allHosts = document.querySelectorAll(\u0027*\u0027);\n    const recapContainers = []; \/\/ Store all matching containers\n\n    for (const host of allHosts) {\n      if (host.shadowRoot) {\n        const allElems = host.shadowRoot.querySelectorAll(\u0027*\u0027);\n        for (const elem of allElems) {\n          if (elem.shadowRoot) {\n            const deepFound = elem.shadowRoot.querySelector(targetIntentCaptcha);\n            if (deepFound \u0026\u0026 deepFound.className === targetIntentCaptchaClassName) {\n              recapContainers.push(deepFound);\n            }\n          }\n        }\n      }\n    }\n  \tif (recapContainers.length \u003E 0) {\n      recapContainers.forEach((container, index) =\u003E {\n        const uniqueId = \u0027captcha-\u0027 + index;\n        container.innerHTML = `\u003Cdiv id=\u0022${uniqueId}\u0022 class=\u0022g-recaptcha\u0022\n          data-sitekey=\u0022${v2CaptchaKey}\u0022\n          data-callback=\u0022onCaptchaSuccess\u0022\n          data-expired-callback=\u0022onCaptchaExpired\u0022\u003E\n        \u003C\/div\u003E`;\n        captchaWidget = window.grecaptcha.render(container.querySelector(`#${uniqueId}`), {\n          sitekey: v2CaptchaKey\n        });\n\t\t  });\n      document.getElementById(\u0027lightning-out\u0027).style.display = \u0027block\u0027;\n      const loader = document.getElementById(\u0027loader\u0027);\n\t\t  if (loader) loader.remove();\n\t  }\n    else if (retries \u003E 0) {\n      setTimeout(() =\u003E insertIntoShadowDOM(retries - 1, delay), delay);\n\t  }\n    else {\n      const CaptchaErrorEvent = new CustomEvent(\u0027CaptchaErrorEvent\u0027,{detail:{message:\u0027CaptchaError\u0027}});\n\t\t  document.dispatchEvent(CaptchaErrorEvent );\n    }\n  }\n\n  function onCaptchaSuccess(token) {\n    reCaptchaVersion=\u0027V2\u0027;\n    const V2token = token;\n    if(V2token == \u0027\u0027){\n      grecaptcha.reset();\n    }\n    else{\n      const event = new CustomEvent(\u0027V2captchaToken\u0027, {\n        detail: { V2captchaToken: V2token }\n      });\n      document.dispatchEvent(event);\n    }\n  }\n\n  function onCaptchaExpired() {\n    window.parent.postMessage({ captchaExpired: true }, \u0027*\u0027);\n  }\n\n  document.addEventListener(\u0027submitEvent\u0027, function (e) {\n    const submittedIntentType = e.detail.submitIntentSelected;\n    if (e.detail.action === \u0027submitClicked\u0027) {\n      targetIntentCaptchaClassName = e.detail.captchaDivClass;\n      targetIntentCaptcha =\u0027.\u0027+targetIntentCaptchaClassName;\n      if(reCaptchaVersion == \u0027V3\u0027){\n        grecaptcha.ready(() =\u003E {\n          grecaptcha.execute(xcCaptchaKey, { action: \u0027submit\u0027 }).then((submitToken) =\u003E {\n            document.dispatchEvent(new CustomEvent(\u0027captchaV3TokenOnSubmit\u0027, { detail: { V3token: submitToken, submittedIntent:submittedIntentType } }));\n          })\n          .catch((error) =\u003E {\n            document.dispatchEvent(new CustomEvent(\u0027CaptchaErrorEvent\u0027,{detail:{eMessage:\u0027CaptchaError\u0027}}));\n          });\n        });\n      }\n      else {\n        const V2token = grecaptcha.getResponse(captchaWidget);\n        const V2Submitevent = new CustomEvent(\u0027V2CaptchaTokenOnSubmit\u0027,{detail:{V2captchaToken:V2token , submittedIntent:submittedIntentType}});\n        document.dispatchEvent(V2Submitevent );\n      }\n    }\n  });\n\n  window.addEventListener(\u0027error\u0027,function(e){\n    if(e.message.toLowerCase().includes(\u0022recaptcha\u0022) ||e.filename.toLowerCase().includes(\u0022recaptcha\u0022)){\n      const CaptchaErrorEvent = new CustomEvent(\u0027CaptchaErrorEvent\u0027,{detail:{message:\u0027CaptchaError\u0027}});\n        document.dispatchEvent(CaptchaErrorEvent);\n    }\n  });\n\n  document.addEventListener(\u0027V3ResultOnSubmit\u0027, function (e) {\n    if (!e.detail) {\n      jobFormParams.v3Success = false;\n      insertIntoShadowDOM(targetIntentCaptcha);\n    }\n  });\n\n  document.addEventListener(\u0027intentchange\u0027, function (e) {\n    if (advice_node) {\n      Drupal.changeRelatedArticlesPosition(true);\n    }\n  });\n\u003C\/script\u003E\n\n\u003C!-- Load Lightning Out Script --\u003E\n\u003Cscript\u003E\n  if (document.querySelector(\u0027script[src=\u0022https:\/\/pagegroup.my.site.com\/globalform\/lightning\/lightning.out.js\u0022]\u0027)) {\n    tryLout();\n  }\n\u003C\/script\u003E\n\n\u003Cscript\u003E\n  document.addEventListener(\u0027DOMContentLoaded\u0027, function() {\n    var contactId = getContactId();\n    var formId = \u0022a35d3448\\u002Df91e\\u002D4073\\u002D8c1c\\u002D2d3f76c8690a\u0022;\n    var formType = \u0022Contact\\u0020Form\u0022;\n    var variant = \u0022\u0022;\n    var campaignId = \u0022CA\\u002DCO\\u00200003095\u0022;\n    var language = \u0022de\\u002DDE\u0022;\n    var brand = \u0022MP\u0022;\n    var country = \u0022DE\u0022;\n    var multiCountry = \u0022false\u0022;\n\n    if (document.body.classList.contains(\u0027page-node-type-advice\u0027)) {\n      advice_node = true;\n    }\n  });\n\n  document.addEventListener(\u0027xc_focus_dialog_close\u0027, function (e) {\n    var $dialog = $(\u0027.ui-dialog:visible\u0027).last();\n    \/\/ Find the close button inside the dialog\n    var $close = $dialog.find(\u0027.ui-dialog-titlebar-close\u0027);\n\n    if ($close.length) {\n      $close.focus();\n    }\n  });\n\n  document.addEventListener(\u0027focusin\u0027, function (e) {\n    const el = e.target;\n    if (!el.classList || !el.classList.contains(\u0027ui-dialog-titlebar-close\u0027)) return;\n    \/\/ Remove any previous handler (store it on the element)\n    if (el._xcKeydown) {\n      el.removeEventListener(\u0027keydown\u0027, el._xcKeydown);\n      el._xcKeydown = null;\n    }\n    \/\/ Bind the Tab handler\n    el._xcKeydown = function (ev) {\n      if (ev.key === \u0027Tab\u0027) {\n        ev.preventDefault();\n        document.dispatchEvent(new CustomEvent(\u0027xc_focus_into_form\u0027));\n      }\n    };\n    el.addEventListener(\u0027keydown\u0027, el._xcKeydown);\n  });\n\u003C\/script\u003E\n","dialogOptions":{"dialogClass":"xcform-modal","width":"800","height":"500","modal":true,"title":"Jetzt Kontakt aufnehmen","classes":{"ui-dialog":"xcform-modal"}}}]