{"version":3,"sources":["../../../../../Foundation/JavascriptCommon/code/scripts/common/alertMessage.js","../../../../../Foundation/JavascriptCommon/code/scripts/common/formUtils.js","../../../../../Foundation/JavascriptCommon/code/scripts/common/spinner.js","../../../../../Foundation/JavascriptCommon/code/scripts/common/matomoHelper.js","EmailCartPopup/main.js"],"names":["define","show","messageText","okCallback","setIcon","setButtons","displayAlert","info","warning","error","displayDefaultMessage","CP","Messages","yesNoQuestion","yesCallback","noCallback","iconName","$","alertSelector","addClass","removeClass","buttons","callback1","callback2","allButtonsSelector","buttonSelector","ok","off","yes","no","on","hideAndCallback","empty","html","alertModal","alertElement","document","querySelector","bootstrap","Modal","getOrCreateInstance","backdrop","keyboard","console","log","callback","one","hide","clearInvalidFeedback","formId","startsWith","displayInvalidFeedback","invalidFields","forEach","fieldMessage","field","FieldName","siblings","append","MessageText","collectFormData","disabledFields","find","prop","serializedData","serializeArray","formData","data","name","value","each","index","element","populateFormWithData","type","undefined","val","toString","disableFields","enableFields","initializeFloatingLabels","useToken","token","__RequestVerificationToken","spinnerSelector","image","length","attr","spinnerShownAt","Date","now","callbackWhenHidden","waitTime","setTimeout","getSpinnerHtml","spinnerId","trackFormSubmit","window","_paq","substring","push","getElementById","trackFormConversion","trackSearchResultsCount","searchParameters","searchCount","searchCategory","require","alertMessage","formUtils","spinner","matomoHelper","getButton","clickedPopupElement","popupId","closest","id","getDisplayMode","emailCartClicked","event","this","hidePopup","showPopup","cancelClicked","clickedButton","webuiPopover","clickedElement","placement","trigger","width","url","popupSelector","animation","multi","arrow","closeable","onHide","popoverElement","clone","appendTo","emailCart","preventDefault","button","DisplayMode","WishlistId","ajax","dataType","success","status","message","invalidFormFields","jq","errorThrown","complete"],"mappings":"AAAAA,OAAA,yBAEA,WAUA,QAAAC,GAAAC,EAAAC,GACAC,IACAC,EAAA,KAAAF,GACAG,EAAAJ,GAGA,QAAAK,GAAAL,EAAAC,GACAC,EAAA,QACAC,EAAA,KAAAF,GACAG,EAAAJ,GAGA,QAAAM,GAAAN,EAAAC,GACAC,EAAA,WACAC,EAAA,KAAAF,GACAG,EAAAJ,GAGA,QAAAO,GAAAP,EAAAC,EAAAO,GACAN,EAAA,SACAC,EAAA,KAAAF,OACA,KAAAD,GAAA,OAAAA,IAAAA,EAAA,QACA,KAAAQ,IAAAA,GAAA,IACAA,GAAA,KAAAR,KACAA,EAAAS,GAAAC,SAAA,iCAAAV,GAEAI,EAAAJ,GAGA,QAAAW,GAAAX,EAAAY,EAAAC,GACAX,EAAA,YACAC,EAAA,SAAAS,EAAAC,GACAT,EAAAJ,GAGA,QAAAE,GAAAY,GACAC,EAAAC,EAAA,WAAAC,SAAA,UACAF,EAAAC,EAAA,MAAAC,SAAA,UACAH,IACAC,EAAAC,EAAA,WAAAE,YAAA,UACAH,EAAAC,EAAA,MAAAF,GAAAI,YAAA,WAIA,QAAAf,GAAAgB,EAAAC,EAAAC,GACAN,EAAAO,GAAAL,SAAA,UACAF,EAAAQ,EAAAC,IAAAC,IAAA,SACAV,EAAAQ,EAAAG,KAAAD,IAAA,SACAV,EAAAQ,EAAAI,IAAAF,IAAA,SACA,WAAAN,GACAJ,EAAAQ,EAAAG,KAAAR,YAAA,UACAH,EAAAQ,EAAAI,IAAAT,YAAA,UACAH,EAAAQ,EAAAG,KAAAE,GAAA,QAAA,WAAAC,EAAAT,KACAL,EAAAQ,EAAAI,IAAAC,GAAA,QAAA,WAAAC,EAAAR,OAGAN,EAAAQ,EAAAC,IAAAN,YAAA,UACAH,EAAAQ,EAAAC,IAAAI,GAAA,QAAA,WAAAC,EAAAT,MAMA,QAAAhB,GAAAJ,GAEA,GADAe,EAAAC,EAAA,gBAAAc,QAAAC,KAAA/B,IACAgC,EAAA,CAEA,GAAAC,GAAAC,SAAAC,cAAAnB,EACAiB,IACAD,EAAAI,UAAAC,MAAAC,oBAAAL,GAAAM,SAAA,SAAAC,UAAA,MACAC,QAAAC,IAAA,mCAAA1B,GAEAyB,QAAAC,IAAA,wCAAA1B,GAEAgB,GAAAA,EAAAjC,OAGA,QAAA8B,GAAAc,GACAA,GAAA5B,EAAAC,GAAA4B,IAAA,kBAAAD,GACAX,GAAAA,EAAAa,OAvFA,KAAA7B,GAAA,gBACAM,EAAAN,EAAA,wBACAO,GACAC,GAAAF,EAAA,MACAI,IAAAJ,EAAA,OACAK,GAAAL,EAAA,MAgEA,IAAAU,EAqBA,QACAjC,KAAAA,EACAM,KAAAA,EACAC,QAAAA,EACAC,MAAAA,EACAI,cAAAA,KAIAb,OAAA,sBCrGA,WAGA,QAAAgD,GAAAC,GACAA,EAAAC,WAAA,OAAAD,EAAA,IAAAA,GACAhC,EAAAgC,EAAA,gBAAA7B,YAAA,cACAH,EAAAgC,EAAA,sBAAAjB,QAIA,QAAAmB,GAAAC,EAAAH,GACAA,EAAAC,WAAA,OAAAD,EAAA,IAAAA,GACAG,GACAA,EAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtC,EAAAgC,EAAA,WAAAK,EAAAE,UAAA,KACAD,GAAApC,SAAA,cACAoC,EAAAE,SAAA,qBAAAC,OAAAJ,EAAAK,eAOA,QAAAC,GAAAX,GACAA,EAAAC,WAAA,OAAAD,EAAA,IAAAA,EAGA,IAAAY,GAAA5C,EAAAgC,GAAAa,KAAA,mBAAAC,KAAA,YAAA,GACAC,EAAA/C,EAAAgC,GAAAgB,gBACAJ,GAAAE,KAAA,YAAA,EACA,IAAAG,KAYA,OAXAF,GAAAX,QAAA,SAAAc,GACAD,EAAAC,EAAAC,MAAAD,EAAAE,QAGApD,EAAAgC,EAAA,yCAAAqB,KAAA,SAAAC,EAAAC,GACAN,EAAAM,EAAAJ,OAAA,IAGAnD,EAAAgC,EAAA,mCAAAqB,KAAA,SAAAC,EAAAC,GACAN,EAAAM,EAAAJ,OAAA,IAEAF,EAKA,QAAAO,GAAAxB,EAAAkB,GACAlB,EAAAC,WAAA,OAAAD,EAAA,IAAAA,GACAhC,EAAAgC,EAAA,WAAAqB,KAAA,SAAAC,EAAAC,GACA,UAAAA,EAAAE,MACA,aAAAF,EAAAE,SAEAC,KAAAR,EAAAK,EAAAJ,OACAnD,EAAAuD,GAAAT,KAAA,UAAA9C,EAAAuD,GAAAI,MAAAC,aAAAV,EAAAK,EAAAJ,MAAAS,YAEA,SAAAL,EAAAE,MACA,UAAAF,EAAAE,MACA,QAAAF,EAAAE,MACA,aAAAF,EAAAE,MACA,aAAAF,EAAAE,MACA,eAAAF,EAAAE,WAEAC,KAAAR,EAAAK,EAAAJ,MACAnD,EAAAuD,GAAAI,IAAAT,EAAAK,EAAAJ,OAEAnD,EAAAuD,GAAAI,IAAA,SAKA,QAAAE,GAAA7B,GACAA,EAAAC,WAAA,OAAAD,EAAA,IAAAA,GACAhC,EAAAgC,EAAA,WAAAc,KAAA,YAAA,GAGA,QAAAgB,GAAA9B,GACAA,EAAAC,WAAA,OAAAD,EAAA,IAAAA,GACAhC,EAAAgC,EAAA,WAAAc,KAAA,YAAA,GAGA,QAAAiB,GAAA/B,GACAA,EAAAC,WAAA,OAAAD,EAAA,IAAAA,GACAhC,EAAAgC,EAAA,8BAAAqB,KAAA,SAAAC,EAAAC,GACAvD,EAAAuD,GAAAV,KAAA,UAAA,GACAO,MAAApD,EAAAuD,GAAArD,SAAA,UACAF,EAAAuD,GAAApD,YAAA,YAKA,QAAA6D,GAAAd,GACA,GAAAe,GAAAjE,EAAA,4CAAA2D,KACAT,GAAAgB,2BAAAD,EAGA,OACAlC,qBAAAA,EACAG,uBAAAA,EACAS,gBAAAA,EACAa,qBAAAA,EACAK,cAAAA,EACAC,aAAAA,EACAC,yBAAAA,EACAC,SAAAA,KAIAjF,OAAA,oBC5GA,WAIA,QAAAC,GAAAmF,GACAnE,EAAAmE,GAAAhE,YAAA,SACA,IAAAiE,GAAApE,EAAAmE,GAAAtB,KAAA,MACA,IAAAuB,EAAAC,OAAA,CACArE,EAAAoE,GAAAE,KAAA,QAEAtE,EAAAoE,GAAAE,KAAA,MAAA,WAGAC,EAAAJ,GAAAK,KAAAC,MAGA,QAAA3C,GAAAqC,EAAAO,GAGA,GAAAC,GAAA,KAAAH,KAAAC,MAAAF,EAAAJ,GACAQ,GAAA,EACAC,WAAA,WACA5E,EAAAmE,GAAAjE,SAAA,UACAwE,GAAAA,KACAC,IAGA3E,EAAAmE,GAAAjE,SAAA,UACAwE,GAAAA,KAIA,QAAAG,GAAAC,GACA,MAAA,YAAAA,EAAA,gGA/BA,GAAAP,KAkCA,QACAvF,KAAAA,EACA8C,KAAAA,EACA+C,eAAAA,KAIA9F,OAAA,yBC3CA,WAEA,QAAAgG,GAAA/C,GACAgD,OAAAC,OACAjD,EAAAC,WAAA,OAAAD,EAAAA,EAAAkD,UAAA,IACAD,KAAAE,MAAA,iCAAAhE,SAAAiE,eAAApD,MAIA,QAAAqD,GAAArD,GACAgD,OAAAC,OACAjD,EAAAC,WAAA,OAAAD,EAAAA,EAAAkD,UAAA,IACAD,KAAAE,MAAA,qCAAAhE,SAAAiE,eAAApD,MAIA,QAAAsD,GAAAC,EAAAC,EAAAC,GACAT,OAAAC,WAEA,KAAAQ,GAAA,OAAAA,IAAAA,GAAA,GACAR,KAAAE,MAAA,kBAAAI,EAAAE,EAAAD,KAIA,OACAT,gBAAAA,EACAM,oBAAAA,EACAC,wBAAAA,KAIAI,SChCA,sBACA,mBACA,iBACA,uBAEA,SAAAC,EAAAC,EAAAC,EAAAC,GAaA,QAAAC,GAAAC,GACA,GAAAC,GAAAjG,EAAAgG,GAAAE,QAAA,kBAAA,GAAAC,EACA,OAAAnG,GAAAQ,EAAA,gBAAAyF,EAAA,KAGA,QAAAG,KACA,MAAApG,GAAAgC,GAAAkB,KAAA,eAGA,QAAAmD,GAAAC,GACAtG,EAAAuG,MAAArD,KAAA,uBAEAsD,EAAAD,MAGAE,EAAAF,MAIA,QAAAG,GAAAJ,GAEAE,EADAT,EAAAQ,OAIA,QAAAC,GAAAG,GACA3G,EAAA2G,GAAAC,aAAA,QAGA,QAAAH,GAAAI,GACA,GAAAC,GAAA,EACA,QAAAV,KACA,IAAA,UACAU,EAAA,cACA,MACA,SACAA,EAAA,cAGA9G,EAAA6G,GAAAD,cACAG,QAAA,SACAD,UAAAA,EACAE,MAAA,IACAvD,KAAA,OACAwD,IAAAC,EACAC,UAAA,OACAC,OAAA,EACAC,OAAA,EACAC,WAAA,EAEAC,OAAA,SAAAC,GAGAxH,EAAAkH,GAAAO,OAAA,GAAAC,SAAA,QACA1H,EAAA6G,GAAAD,aAAA,cAGA5G,EAAA6G,GAAAD,aAAA,QAIA,QAAAe,GAAArB,GACAA,EAAAsB,iBACA9B,EAAAf,gBAAA/C,EAEA,IAAA6F,GAAA9B,EAAAQ,MAEAtD,EAAA2C,EAAAjD,gBAAAX,EACAiB,GAAA6E,YAAA1B,IACAnD,EAAA8E,WAAA/H,EAAA6H,GAAA3B,QAAA,aAAAhD,KAAA,UACA0C,EAAA5B,SAAAf,GAEA2C,EAAA7D,qBAAAC,GACA6D,EAAA7G,KAAAmF,GAEAnE,EAAAgI,MACAvE,KAAA,OACAwD,IAAA,6BACAgB,SAAA,OACA/E,KAAAD,EACAiF,QAAA,SAAAhF,GACA,OAAAA,EAAAiF,QACArC,EAAAT,oBAAArD,GACAwE,EAAAqB,GACAlC,EAAArG,KAAA4D,EAAAkF,WAIAlF,EAAAkF,SAAAzC,EAAAnG,MAAA0D,EAAAkF,SACAxC,EAAA1D,uBAAAgB,EAAAmF,kBAAArG,KAGAxC,MAAA,SAAA8I,EAAAH,EAAAI,GACA5C,EAAAnG,MAAA2I,EAAA,KAAAI,IAEAC,SAAA,WACA3C,EAAA/D,KAAAqC,MA1GA,KAAAnC,GAAA,mBACAmC,EAAA,qCACA3D,EAAA,qBACA0G,EAAA,qBAEA,WACAlH,EAAAQ,GAAAE,IAAA,SAAAG,GAAA,QAAAwF,GACArG,EAAA,6BAAAU,IAAA,SAAAG,GAAA,QAAA8G,GACA3H,EAAA,6BAAAU,IAAA,SAAAG,GAAA,QAAA6F,QA2GA3H,OAAA,sBAAA","file":"EmailCartPopup.js","sourcesContent":["define('common/alertMessage',[\r\n],\r\n function () {\r\n\r\n const alertSelector = \"#alertMessage\";\r\n const allButtonsSelector = alertSelector + \" .modal-footer button\";\r\n const buttonSelector = {\r\n ok: allButtonsSelector + \".ok\",\r\n yes: allButtonsSelector + \".yes\",\r\n no: allButtonsSelector + \".no\"\r\n };\r\n\r\n function show(messageText, okCallback) {\r\n setIcon();\r\n setButtons(\"ok\", okCallback);\r\n displayAlert(messageText);\r\n }\r\n\r\n function info(messageText, okCallback) {\r\n setIcon(\"info\");\r\n setButtons(\"ok\", okCallback);\r\n displayAlert(messageText);\r\n }\r\n\r\n function warning(messageText, okCallback) {\r\n setIcon(\"warning\");\r\n setButtons(\"ok\", okCallback);\r\n displayAlert(messageText);\r\n }\r\n \r\n function error(messageText, okCallback, displayDefaultMessage) {\r\n setIcon(\"error\");\r\n setButtons(\"ok\", okCallback); \r\n if (typeof messageText === 'undefined' || messageText === null) messageText = \"\";\r\n if (typeof displayDefaultMessage === 'undefined') displayDefaultMessage = true;\r\n if (displayDefaultMessage || messageText === \"\") {\r\n messageText = CP.Messages[\"General/Default Error Message\"] + messageText;\r\n }\r\n displayAlert(messageText);\r\n }\r\n\r\n function yesNoQuestion(messageText, yesCallback, noCallback) {\r\n setIcon(\"question\");\r\n setButtons(\"yes-no\", yesCallback, noCallback);\r\n displayAlert(messageText);\r\n }\r\n\r\n function setIcon(iconName) {\r\n $(alertSelector + \" .icons\").addClass(\"d-none\");\r\n $(alertSelector + \" i\").addClass(\"d-none\");\r\n if (iconName) {\r\n $(alertSelector + \" .icons\").removeClass(\"d-none\");\r\n $(alertSelector + \" i.\" + iconName).removeClass(\"d-none\");\r\n }\r\n }\r\n\r\n function setButtons(buttons, callback1, callback2) {\r\n $(allButtonsSelector).addClass(\"d-none\");\r\n $(buttonSelector.ok).off(\"click\");\r\n $(buttonSelector.yes).off(\"click\");\r\n $(buttonSelector.no).off(\"click\");\r\n if (buttons === \"yes-no\") {\r\n $(buttonSelector.yes).removeClass(\"d-none\");\r\n $(buttonSelector.no).removeClass(\"d-none\");\r\n $(buttonSelector.yes).on(\"click\", function () { hideAndCallback(callback1); });\r\n $(buttonSelector.no).on(\"click\", function () { hideAndCallback(callback2); });\r\n }\r\n else {\r\n $(buttonSelector.ok).removeClass(\"d-none\");\r\n $(buttonSelector.ok).on(\"click\", function () { hideAndCallback(callback1); });\r\n }\r\n }\r\n\r\n var alertModal;\r\n\r\n function displayAlert(messageText) {\r\n $(alertSelector + \" .alert-text\").empty().html(messageText);\r\n if (!alertModal) {\r\n // initializing alertModal\r\n var alertElement = document.querySelector(alertSelector);\r\n if (alertElement) {\r\n alertModal = bootstrap.Modal.getOrCreateInstance(alertElement, { backdrop: \"static\", keyboard: false });\r\n if (!alertModal) console.log(\"Alert modal not initialized for \" + alertSelector);\r\n }\r\n else console.log(\"There's no alert modal with selector \" + alertSelector);\r\n }\r\n if (alertModal) alertModal.show();\r\n }\r\n\r\n function hideAndCallback(callback) {\r\n if (callback) $(alertSelector).one(\"hidden.bs.modal\", callback);\r\n if (alertModal) alertModal.hide();\r\n }\r\n\r\n return {\r\n show: show,\r\n info: info,\r\n warning: warning,\r\n error: error,\r\n yesNoQuestion: yesNoQuestion\r\n };\r\n });\r\n\n","define('common/formUtils',[\r\n],\r\n function () {\r\n\r\n // Clears and deactivates all invalid feedback text on form fields\r\n function clearInvalidFeedback(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .is-invalid\").removeClass(\"is-invalid\");\r\n $(formId + \" .invalid-feedback\").empty();\r\n }\r\n\r\n // Fills in and activates invalid feedback text on form fields\r\n function displayInvalidFeedback(invalidFields, formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n if (invalidFields) {\r\n invalidFields.forEach(function (fieldMessage) {\r\n var field = $(formId + \" [name='\" + fieldMessage.FieldName + \"']\");\r\n field.addClass(\"is-invalid\");\r\n field.siblings(\".invalid-feedback\").append(fieldMessage.MessageText);\r\n });\r\n }\r\n }\r\n\r\n // Collects the data from all form fields and returns them as object,\r\n // using \"name\" attribute values from form fields as object property names.\r\n function collectFormData(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n // the serializeArray() jQuery method doesn't take the values from disabled fields, so first I'll\r\n // temporarily enable all disabled fields, and then disable them again\r\n var disabledFields = $(formId).find(\":input:disabled\").prop(\"disabled\", false);\r\n var serializedData = $(formId).serializeArray();\r\n disabledFields.prop(\"disabled\", true);\r\n var formData = {};\r\n serializedData.forEach(function (data) {\r\n formData[data.name] = data.value;\r\n });\r\n // serializeArray does not return anything for unchecked checkboxes, so we'll add them now with value false\r\n $(formId + \" input[type='checkbox']:not(:checked)\").each(function (index, element) {\r\n formData[element.name] = false;\r\n });\r\n // serializeArray returns \"on\" for checked checkboxes, so we'll set them to true now\r\n $(formId + \" input[type='checkbox']:checked\").each(function (index, element) {\r\n formData[element.name] = true;\r\n });\r\n return formData;\r\n }\r\n\r\n // Goes through all input elements on the form and fills them with data from the\r\n // given object, matching \"name\" attribute of the input element with object property name.\r\n function populateFormWithData(formId, data) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").each(function (index, element) { \r\n if (element.type === \"radio\" ||\r\n element.type === \"checkbox\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).prop(\"checked\", $(element).val().toString() === data[element.name].toString());\r\n }\r\n else if (element.type === \"text\" ||\r\n element.type === \"email\" ||\r\n element.type === \"tel\" ||\r\n element.type === \"password\" ||\r\n element.type === \"textarea\" ||\r\n element.type === \"select-one\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).val(data[element.name]);\r\n else\r\n $(element).val(null);\r\n }\r\n });\r\n }\r\n\r\n function disableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", true);\r\n }\r\n\r\n function enableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", false);\r\n }\r\n\r\n function initializeFloatingLabels(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .floating-label-container\").each(function (index, element) {\r\n var inputElement = $(element).find(\":input\")[0];\r\n if (inputElement.value) $(element).addClass(\"active\");\r\n else $(element).removeClass(\"active\");\r\n });\r\n }\r\n\r\n //adds the form token to the object for use with [ValidateAntiforgeryToken] attribute\r\n function useToken(data) { \r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n data.__RequestVerificationToken = token;\r\n }\r\n\r\n return {\r\n clearInvalidFeedback: clearInvalidFeedback,\r\n displayInvalidFeedback: displayInvalidFeedback,\r\n collectFormData: collectFormData,\r\n populateFormWithData: populateFormWithData,\r\n disableFields: disableFields,\r\n enableFields: enableFields,\r\n initializeFloatingLabels: initializeFloatingLabels,\r\n useToken: useToken\r\n };\r\n });\r\n\n","define('common/spinner',[\r\n],\r\n function () {\r\n\r\n var spinnerShownAt = {};\r\n\r\n function show(spinnerSelector) {\r\n $(spinnerSelector).removeClass(\"d-none\");\r\n var image = $(spinnerSelector).find(\"img\");\r\n if (image.length) {\r\n var alt = $(image).attr(\"alt\");\r\n if (!alt)\r\n $(image).attr(\"alt\", \"Spinner\");\r\n }\r\n // mark the time when this spinner was displayed\r\n spinnerShownAt[spinnerSelector] = Date.now();\r\n }\r\n\r\n function hide(spinnerSelector, callbackWhenHidden) {\r\n // This logic ensures that the spinner is displayed for at least 500ms.\r\n // Otherwise it just flickers and that doesn't look good for the user.\r\n var waitTime = 500 - (Date.now() - spinnerShownAt[spinnerSelector]);\r\n if (waitTime > 0) {\r\n setTimeout(function () {\r\n $(spinnerSelector).addClass(\"d-none\");\r\n if (callbackWhenHidden) callbackWhenHidden();\r\n }, waitTime);\r\n }\r\n else {\r\n $(spinnerSelector).addClass(\"d-none\");\r\n if (callbackWhenHidden) callbackWhenHidden();\r\n }\r\n }\r\n\r\n function getSpinnerHtml(spinnerId) {\r\n return '
';\r\n }\r\n\r\n return {\r\n show: show,\r\n hide: hide,\r\n getSpinnerHtml: getSpinnerHtml\r\n };\r\n });\r\n\n","define('common/matomoHelper',[\r\n],\r\n function () {\r\n\r\n function trackFormSubmit(formId) {\r\n if (window._paq) {\r\n if (formId.startsWith(\"#\")) formId = formId.substring(1);\r\n _paq.push(['FormAnalytics::trackFormSubmit', document.getElementById(formId)]);\r\n }\r\n }\r\n\r\n function trackFormConversion(formId) {\r\n if (window._paq) {\r\n if (formId.startsWith(\"#\")) formId = formId.substring(1);\r\n _paq.push(['FormAnalytics::trackFormConversion', document.getElementById(formId)]);\r\n }\r\n }\r\n\r\n function trackSearchResultsCount(searchParameters, searchCount, searchCategory) {\r\n if (window._paq) {\r\n // documentation: https://developer.matomo.org/guides/tracking-javascript-guide#internal-search-tracking\r\n if (typeof searchCategory === \"undefined\" || searchCategory === null) searchCategory = false;\r\n _paq.push(['trackSiteSearch', searchParameters, searchCategory, searchCount]);\r\n }\r\n }\r\n\r\n return {\r\n trackFormSubmit: trackFormSubmit,\r\n trackFormConversion: trackFormConversion,\r\n trackSearchResultsCount: trackSearchResultsCount\r\n };\r\n });\r\n\n","require([\r\n \"common/alertMessage\",\r\n \"common/formUtils\",\r\n \"common/spinner\",\r\n \"common/matomoHelper\"\r\n],\r\nfunction (alertMessage, formUtils, spinner, matomoHelper) {\r\n\r\n const formId = \"#email-cart-form\";\r\n const spinnerSelector = \".email-cart-popup .spinner-wrapper\";\r\n const buttonSelector = \".email-cart-button\";\r\n const popupSelector = \".email-cart-popup\";\r\n\r\n function initEventHandlers() {\r\n $(buttonSelector).off(\"click\").on(\"click\", emailCartClicked);\r\n $(\".email-cart-submit-button\").off(\"click\").on(\"click\", emailCart);\r\n $(\".email-cart-cancel-button\").off(\"click\").on(\"click\", cancelClicked);\r\n }\r\n\r\n function getButton(clickedPopupElement) {\r\n var popupId = $(clickedPopupElement).closest(\".webui-popover\")[0].id;\r\n return $(buttonSelector + \"[data-target=\" + popupId + \"]\");\r\n }\r\n\r\n function getDisplayMode() {\r\n return $(formId).data(\"displayMode\");\r\n }\r\n\r\n function emailCartClicked(event) {\r\n if ($(this).data(\"plugin_webuiPopover\")) {\r\n // popup already displayed for this button - hide it (we're using the button as toggle)\r\n hidePopup(this);\r\n }\r\n else {\r\n showPopup(this);\r\n }\r\n }\r\n\r\n function cancelClicked(event) {\r\n var button = getButton(this);\r\n hidePopup(button);\r\n }\r\n\r\n function hidePopup(clickedButton) {\r\n $(clickedButton).webuiPopover(\"hide\");\r\n }\r\n\r\n function showPopup(clickedElement) {\r\n var placement = \"\";\r\n switch (getDisplayMode()) {\r\n case \"MyLists\":\r\n placement = \"bottom-right\";\r\n break;\r\n default:\r\n placement = \"bottom-left\";\r\n break;\r\n }\r\n $(clickedElement).webuiPopover({\r\n trigger: \"manual\",\r\n placement: placement,\r\n width: 400,\r\n type: \"html\",\r\n url: popupSelector,\r\n animation: \"fade\",\r\n multi: false,\r\n arrow: true,\r\n closeable: true,\r\n //dismissible: true, works only if trigger is \"click\"\r\n onHide: function (popoverElement) {\r\n // Clone popup HTML to the end of the body because it will disappear when we destroy popover.\r\n // Popup will be cloned from there by WebuiPopover the next time we display it.\r\n $(popupSelector).clone(true).appendTo(\"body\");\r\n $(clickedElement).webuiPopover(\"destroy\");\r\n }\r\n });\r\n $(clickedElement).webuiPopover(\"show\");\r\n }\r\n\r\n\r\n function emailCart(event) {\r\n event.preventDefault();\r\n matomoHelper.trackFormSubmit(formId);\r\n\r\n var button = getButton(this);\r\n\r\n var formData = formUtils.collectFormData(formId);\r\n formData.DisplayMode = getDisplayMode();\r\n formData.WishlistId = $(button).closest(\".wishlist\").data(\"itemId\");\r\n formUtils.useToken(formData);\r\n\r\n formUtils.clearInvalidFeedback(formId);\r\n spinner.show(spinnerSelector);\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/customapi/Order/EmailCart\",\r\n dataType: \"json\",\r\n data: formData,\r\n success: function (data) {\r\n if (data.status === \"OK\") {\r\n matomoHelper.trackFormConversion(formId);\r\n hidePopup(button);\r\n alertMessage.info(data.message);\r\n } else {\r\n // Something's not right.\r\n // Display the error messages (if any), and field validation messages (if any) and stay on the page.\r\n if (data.message) alertMessage.error(data.message);\r\n formUtils.displayInvalidFeedback(data.invalidFormFields, formId);\r\n }\r\n },\r\n error: function (jq, status, errorThrown) {\r\n alertMessage.error(status + \": \" + errorThrown);\r\n },\r\n complete: function () {\r\n spinner.hide(spinnerSelector);\r\n }\r\n });\r\n\r\n }\r\n\r\n initEventHandlers();\r\n});\r\n\ndefine(\"EmailCartPopup/main\", function(){});\n\n"]}