(function (global){
"use strict";
var STORAGE_KEY="dp_hubspot_lead_email";
var THANKYOU_PATH="/landing/richiesta-ricevuta/";
var EMAIL_FIELD_KEYS=["email", "email_evodent", "email_address", "work_email"];
function buildLandingThankyouUrl(email, submissionGuid){
var redirectUrl=new URL(THANKYOU_PATH, global.location.origin);
var emailParam=getPersistedLeadEmail(email);
redirectUrl.searchParams.set("submit_from", global.location.pathname);
if(emailParam){
redirectUrl.searchParams.set("email", emailParam);
}
if(submissionGuid){
redirectUrl.searchParams.set("submissionGuid", submissionGuid);
}
return redirectUrl.toString();
}
function redirectToLandingThankyou(email, submissionGuid){
persistLeadEmail(email);
global.location.assign(buildLandingThankyouUrl(null, submissionGuid));
}
function resolveEmailFromV4FieldValues(fieldValues){
var email="";
var i;
var j;
if(!fieldValues||!fieldValues.length){
return "";
}
for (i=0; i < fieldValues.length; i++){
var fieldName=fieldValues[i].name||"";
var shortName=fieldName.indexOf("/")!==-1 ? fieldName.split("/").pop():fieldName;
for (j=0; j < EMAIL_FIELD_KEYS.length; j++){
if(shortName===EMAIL_FIELD_KEYS[j]){
email=fieldValues[i].value||"";
break;
}}
if(email){
break;
}}
return typeof email==="string" ? email.trim():"";
}
function bindHubSpotV4Listeners(){
if(global.__dpHubSpotV4Bound){
return;
}
global.__dpHubSpotV4Bound=true;
global.addEventListener("hs-form-event:on-submission:success", function (event){
if(!global.HubSpotFormsV4||typeof global.HubSpotFormsV4.getFormFromEvent!=="function"){
return;
}
var form;
try {
form=global.HubSpotFormsV4.getFormFromEvent(event);
} catch (e){
return;
}
if(!form||typeof form.getFormFieldValues!=="function"){
return;
}
form
.getFormFieldValues()
.then(function (fieldValues){
var email=resolveEmailFromV4FieldValues(fieldValues);
var submissionGuid =
typeof form.getConversionId==="function" ? form.getConversionId()||"":"";
redirectToLandingThankyou(email, submissionGuid);
})
.catch(function (){
redirectToLandingThankyou("", "");
});
});
}
bindHubSpotV4Listeners();
function resolveSubmissionEmail(form, data){
var submissionValues=(data&&data.submissionValues)||{};
var email="";
var i;
for (i=0; i < EMAIL_FIELD_KEYS.length; i++){
if(submissionValues[EMAIL_FIELD_KEYS[i]]){
email=submissionValues[EMAIL_FIELD_KEYS[i]];
break;
}}
if(!email&&form&&typeof form.find==="function"){
for (i=0; i < EMAIL_FIELD_KEYS.length; i++){
var emailInput=form.find('input[name="' + EMAIL_FIELD_KEYS[i] + '"]');
if(emailInput.length){
email=emailInput.val()||"";
if(email){
break;
}}
}}
return typeof email==="string" ? email.trim():"";
}
function persistLeadEmail(email){
if(!email){
return;
}
try {
global.sessionStorage.setItem(STORAGE_KEY, email);
} catch (e){
}}
function getPersistedLeadEmail(fallback){
var email=fallback||"";
try {
email=global.sessionStorage.getItem(STORAGE_KEY)||email;
} catch (e){
}
return typeof email==="string" ? email.trim():"";
}
function buildThankyouRedirectUrl(data, email){
var submissionGuid=(data&&data.conversionId)||"";
return buildLandingThankyouUrl(email, submissionGuid);
}
function onAcfEmbedSubmitted(form, data){
var email=resolveSubmissionEmail(form, data);
persistLeadEmail(email);
var redirectUrl=buildThankyouRedirectUrl(data, email);
if(data){
data.redirectUrl=redirectUrl;
}
return redirectUrl;
}
function patchFormsCreate(){
if(!global.hbspt||!global.hbspt.forms||typeof global.hbspt.forms.create!=="function"){
return false;
}
if(global.hbspt.forms.create.__dpAcfWrapper===true){
return true;
}
var originalCreate=global.hbspt.forms.create;
var wrappedCreate=function (options){
options=options||{};
if(options.__dpHubSpotShortcode===true){
return originalCreate.call(this, options);
}
var userOnSubmitted=options.onFormSubmitted;
options.onFormSubmitted=function (form, data){
var userResult;
if(typeof userOnSubmitted==="function"){
userResult=userOnSubmitted.apply(this, arguments);
if(userResult!==undefined){
return userResult;
}}
return onAcfEmbedSubmitted(form, data);
};
return originalCreate.call(this, options);
};
wrappedCreate.__dpAcfWrapper=true;
global.hbspt.forms.create=wrappedCreate;
return true;
}
var hbsptValue=global.hbspt;
try {
Object.defineProperty(global, "hbspt", {
configurable: true,
enumerable: true,
get: function (){
return hbsptValue;
},
set: function (value){
hbsptValue=value;
patchFormsCreate();
},
});
} catch (e){
}
if(hbsptValue){
patchFormsCreate();
}
var attempts=0;
var timer=global.setInterval(function (){
attempts +=1;
if(patchFormsCreate()||attempts > 200){
global.clearInterval(timer);
}}, 50);
})(typeof window!=="undefined" ? window:this);