{"version":3,"file":"jwsdw-loyaltyRegistration.js","sources":["../../../../../../../temp/ngAnnotate/assets/modules/account/preferredStoreHandling.js","../../../../../../../temp/ngAnnotate/assets/jwsdw-loyaltyRegistration.js"],"sourcesContent":["'use strict';\r\n\r\n(function (window, $) {\r\n var $jwMyStore = $('#jwsdw-account-jwStore'),\r\n $myStoreForm = $('#jwsdw-jwStore-form'),\r\n $storeIdField = $myStoreForm.find('#jwsdw-jwStore-form-storeId'),\r\n $jwMyStorePicker = $('#jwsdw-searchMyStorePicker'),\r\n $storeServiceTemplate = $('.jwsdw-storeService-template');\r\n /**\r\n * Method to publish store event to mediator to trigger store picker\r\n * @param {boolean} locatePosition true if the picker should try to get the geo position of the user false otherwise\r\n * @param {string} [postalCodeOrCity] the postal code or city as string if it is not a search with geo position\r\n * @param {string} [service] if given filter by this service\r\n * @returns {void}\r\n */\r\n function publish (locatePosition, postalCodeOrCity, service) {\r\n var $fieldLabel = $jwMyStorePicker.find('.jws-formLabel'),\r\n $inputField = $jwMyStorePicker.find('input[name=\"postalCodeOrCity\"]'),\r\n $errorMessage = $jwMyStorePicker.find('.jws-formErrorMessage'),\r\n data = {\r\n 'level': 2,\r\n 'service': service\r\n };\r\n\r\n $errorMessage.addClass('jws-hidden');\r\n $fieldLabel.removeClass('jws-formError');\r\n $fieldLabel.removeClass('jwsdw-formLabelValid');\r\n $inputField.removeClass('jws-formError');\r\n\r\n if (locatePosition) {\r\n data.locatePosition = true;\r\n data.postalCodeOrCity = null;\r\n } else if (postalCodeOrCity) {\r\n data.locatePosition = false;\r\n data.postalCodeOrCity = postalCodeOrCity;\r\n } else {\r\n $errorMessage.removeClass('jws-hidden');\r\n $fieldLabel.addClass('jws-formError');\r\n $inputField.addClass('jws-formError');\r\n return;\r\n }\r\n\r\n window.jwsdwMediator.publish('openPicker', 'storePicker', data);\r\n }\r\n\r\n // Listeners\r\n\r\n // handle click on find button to open picker\r\n $jwMyStore.on('click', '.jwsdw-searchMyStore-find', function () {\r\n\r\n window.jwsdwMediator.publish('openPicker', 'searchMyStorePicker', null);\r\n });\r\n\r\n // handle click on current location search button\r\n $(document).on('click', '.jwsdw-currentLocation', function () {\r\n var service = $('.jwsdw-jwStore-find').data('service');\r\n publish(true, null, service);\r\n });\r\n\r\n /**\r\n * @description Event handler for finding JW Store\r\n * @returns {void}\r\n */\r\n function findJWStore() {\r\n var service = $('.jwsdw-jwStore-find').data('service'),\r\n postalCodeOrCity = $('#jwsdw-loyalty-jwStore-postalCodeOrCity').val();\r\n publish(false, postalCodeOrCity, service);\r\n }\r\n // handle click on find button\r\n $('.jwsdw-jwStore-find').click(findJWStore);\r\n\r\n // handle enter key presses in input field for postal code or city\r\n $jwMyStorePicker.on('keydown', 'input[name=\"postalCodeOrCity\"]', function(e) {\r\n var keyCode = e.keyCode || window.event.keyCode;\r\n\r\n // keyCode 13 is ENTER\r\n if (keyCode === 13) {\r\n e.preventDefault();\r\n findJWStore();\r\n return false;\r\n }\r\n });\r\n\r\n $jwMyStore.on('click', '.jwsdw-store-edit', function () {\r\n var params = {\r\n 'addressId': ''\r\n };\r\n\r\n params[window.jwsdwSettings.csrfTokenName] = window.jwsdwSettings.csrfTokenValue;\r\n\r\n $storeIdField.val('');\r\n $jwMyStore.find('.jwsdw-jwStore-container, #jwsdw-loyalty-storeDetailsBtn, .jwsdw-jwStore-container .jwsdw-address-preferred').addClass('jws-hidden');\r\n $jwMyStore.find('#jwsdw-jwStore-form, .jwsdw-searchMyStore-select-container').removeClass('jws-hidden');\r\n $('#jwsdw-loyalty-jwStore-preferredAddress-checkbox, #jwsdw-loyalty-jwStore-selected-preferredAddress-checkbox').prop('checked', false);\r\n\r\n // if store edit is part of a form, send form request\r\n if ($myStoreForm.length > 0) {\r\n // delete mystore\r\n $.ajax($myStoreForm.attr('action'), {\r\n 'method': $myStoreForm.attr('method') || 'POST',\r\n 'data': params,\r\n 'error': deleteMyStoreErrorCallback\r\n });\r\n }\r\n });\r\n\r\n /**\r\n * @description ERROR callback\r\n * @returns {void}\r\n */\r\n function deleteMyStoreErrorCallback () {\r\n //todo\r\n }\r\n\r\n // listen to mediator event when user selects a store in picker and write data of selected store back to form\r\n window.jwsdwMediator.subscribe('storePickerSelectStore', function(data) {\r\n var store = data.store,\r\n $preferredAddress = $jwMyStorePicker.find('#jwsdw-loyalty-jwStore-preferredAddress-checkbox'),\r\n $storeCard = $jwMyStore.find('.jwsdw-store-card');\r\n\r\n // show store card with data of selected store\r\n $storeCard.find('.jwsdw-store-address1').text(store.address1);\r\n $storeCard.find('.jwsdw-store-address2').text(store.address2);\r\n $storeCard.find('.jwsdw-store-postalCode-city').text(store.postalCode + ' ' + store.city);\r\n $storeCard.find('.jwsdw-store-country').text(store.countryName);\r\n\r\n $('#jwsdw-loyalty-storeDetailsBtn').attr('href', '/store/' + store.id);\r\n $('#jwsdw-loyalty-storeDetailsBtn').attr('data-store-id', store.id);\r\n $storeIdField.val(store.id);\r\n data.preferredAddress = $preferredAddress.is(':checked');\r\n\r\n if (data.preferredAddress) {\r\n // show preferred address flag\r\n $('#jwsdw-jwStore-form, .jwsdw-address-preferred').addClass('jws-hidden');\r\n $jwMyStore.find('.jwsdw-address-preferred').removeClass('jws-hidden');\r\n }\r\n\r\n // if store search is part of a form, send form request\r\n if ($myStoreForm.length > 0) {\r\n //set myStore backend\r\n $.ajax($myStoreForm.attr('action'), {\r\n 'method': $myStoreForm.attr('method') || 'POST',\r\n 'data': $myStoreForm.serialize() + '&preferredAddress=' + data.preferredAddress,\r\n 'error': setMyStoreErrorCallback,\r\n 'success' : function () {\r\n showStoreCard(store);\r\n }\r\n });\r\n } else {\r\n showStoreCard(store);\r\n }\r\n });\r\n\r\n /**\r\n * @description Method to show store card with promotions\r\n * @param {Object} store store object\r\n * @returns {void}\r\n */\r\n function showStoreCard (store) {\r\n var $storeContainer = $jwMyStore.find('.jwsdw-searchMyStore-select-container'),\r\n $storeCardContainer = $jwMyStore.find('.jwsdw-jwStore-container'),\r\n $storeServices = $('.jwsdw-preferredStore-storeServices'),\r\n storePromotions = store.promotions || [],\r\n storeServices = store.services || [],\r\n storePromos = storePromotions || [];\r\n\r\n $('#jwsdw-loyalty-storeDetailsBtn').removeClass('jws-hidden');\r\n $storeCardContainer.removeClass('jws-hidden');\r\n $storeContainer.addClass('jws-hidden');\r\n\r\n $storeServices.html('');\r\n\r\n if (storePromos.length > 0) {\r\n storePromos\r\n .forEach(function(promo) {\r\n var $service = $storeServiceTemplate.clone();\r\n\r\n $service.find('.jws-iconList-text').text(promo.name);\r\n $service.removeClass('jws-hidden').appendTo($storeServices);\r\n });\r\n }\r\n if (storeServices.length > 0) {\r\n storeServices\r\n .sort(function (a) {\r\n return a.id === 'jackWolfskinCard' ? 1 : -1;\r\n })\r\n .forEach(function(service) {\r\n var $service = $storeServiceTemplate.clone();\r\n\r\n if (service.id === 'jackWolfskinCard') {\r\n $service.find('.jws-iconList-text').html(window.app.resources.jackWolfskinCard);\r\n } else {\r\n $service.find('.jws-iconList-text').text(service.name);\r\n }\r\n $service.removeClass('jws-hidden').appendTo($storeServices);\r\n });\r\n }\r\n }\r\n\r\n $(document).on('change', '#jwsdw-loyalty-jwStore-selected-preferredAddress-checkbox', function() {\r\n if ($(this).is(':checked')) {\r\n // show preferred address flag\r\n $.ajax($myStoreForm.attr('action'), {\r\n 'method': $myStoreForm.attr('method') || 'POST',\r\n 'data': $myStoreForm.serialize() + '&preferredAddress=true',\r\n 'success': function() {\r\n $('#jwsdw-jwStore-form, .jwsdw-address-preferred').addClass('jws-hidden');\r\n $jwMyStore.find('.jwsdw-address-preferred').removeClass('jws-hidden');\r\n $('.jwsdw-account-pickupLocation').data('isPreferred', false);\r\n },\r\n 'error': setMyStoreErrorCallback\r\n });\r\n }\r\n });\r\n\r\n /**\r\n * @description ERROR callback\r\n * @returns {void}\r\n */\r\n function setMyStoreErrorCallback () {\r\n //todo\r\n }\r\n}(window, jQuery));\r\n\r\n/**\r\n * Store Services\r\n */\r\n(function (window, $) {\r\n $(document).on('click', '#jwsdw-loyalty-storeServices', function() {\r\n $.ajax({\r\n 'url': window.jwsdwSettings.baseUrl + '/Store-getStore',\r\n 'method': 'GET',\r\n 'data': {\r\n 'storeId': $('#jwsdw-jwStore-form-storeId').val()\r\n },\r\n 'success' : function (response) {\r\n window.jwsdwMediator.publish('openPicker', 'storeServicesPicker', {\r\n 'services': response.services,\r\n 'promotions': response.promotions\r\n });\r\n }\r\n });\r\n });\r\n}(window, jQuery));\r\n","'use strict';\r\n(function (window, document, $) {\r\n var $registrationForm,\r\n $registrationErrorMessage,\r\n $registrationButton,\r\n $registrationButtonText,\r\n $registrationSpinner,\r\n $urlParameters = window.jwsdwUtil.urlUtils.getAllQueryParameters($(location).attr('href').split('?')[1] || ''),\r\n $loyaltyRegistrationSection = $('#jwsdw-loyaltyRegistrationForm'),\r\n xhr;\r\n\r\n $.validator.setDefaults({\r\n 'rules': {\r\n 'email': {\r\n 'invalidvalue': true,\r\n 'customemail': true\r\n },\r\n 'dateOfBirth': {\r\n 'checkDate': '#jwsdw-register-dateOfBirth',\r\n 'isAdult': '#jwsdw-register-dateOfBirth'\r\n }\r\n }\r\n });\r\n\r\n if ($loyaltyRegistrationSection.length) {\r\n fetchLoyaltyRegistrationForm();\r\n }\r\n\r\n /**\r\n * Fetches loyalty benefits data from the server\r\n * @returns {void}\r\n */\r\n function fetchLoyaltyRegistrationForm() {\r\n const queryString = window.location.search.substring(0);\r\n const url = window.jwsdwSettings.baseUrl + '/Loyalty-showLoyaltyRegistration' + queryString;\r\n const method = 'GET';\r\n\r\n $.ajax({\r\n 'url': url,\r\n 'method': method,\r\n 'success': (data) => {\r\n handleSuccess(data);\r\n },\r\n 'error': (data) => {\r\n handleError(data);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles successful response from the server\r\n * @param {string} data - HTML content returned by the showLoyaltyRegistration endpoint\r\n * @returns {void}\r\n */\r\n function handleSuccess(data) {\r\n $loyaltyRegistrationSection.append(data);\r\n $registrationForm = $('form.jwsdw-loyalty-register-form');\r\n $registrationErrorMessage = $('.jwsdw-loyaltyRegistration-error');\r\n $registrationButton = $registrationForm.find('.jwsdw-accordionForm-listItem-submit');\r\n $registrationButtonText = $registrationButton.find('.jwsdw-buttonText');\r\n\r\n $('input[name=\"source\"]').attr('value', $urlParameters.source || $urlParameters.utm_source || \"\");\r\n\r\n // initialize form validation\r\n $registrationForm.validate();\r\n\r\n $registrationSpinner = $registrationButton.find('.jwsdw-spinner');\r\n\r\n window.jwsdwMediator.publish('dateInput:init', '#jwsdw-register-dateOfBirth');\r\n }\r\n\r\n /**\r\n * Handles error response from the showLoyaltyRegistration endpoint\r\n * @param {Object} error - Error object\r\n * @returns {void}\r\n */\r\n function handleError(error) {\r\n window.console.error('Failed to load loyalty registration form:', error);\r\n }\r\n\r\n /**\r\n * Method to handle form submits\r\n * @param {Object} e the event that triggered the handler\r\n * @param {function} successCallback the callback that is triggered when the ajax call was successful\r\n * @param {function} errorCallback the callback that is triggered when the ajax call was unsuccessful\r\n * @param {function} beforeSendCallback the callback that is triggered before the ajax call is made\r\n * @param {function} completeCallback the callback that is triggered after the ajax call was made\r\n * @param {object} [fieldsToSend] optional fields that will be sent instead of the full form\r\n * @returns {void}\r\n */\r\n function loyaltyFormSubmit (e, successCallback, errorCallback, beforeSendCallback, completeCallback, fieldsToSend) {\r\n var $this = $(this),\r\n $captcha = $this.find('.g-recaptcha');\r\n\r\n e.preventDefault();\r\n\r\n // only submit form if frontend validation is successful and no other call is executed\r\n if (!$this.valid() || (xhr && xhr.readyState !== 4)) {\r\n return;\r\n }\r\n\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false) {\r\n if (!window.grecaptcha || window.jwsdwUtil.captcha.getResponse($captcha.attr('id')).length !== 0) {\r\n return;\r\n }\r\n window.jwsdwUtil.captcha.execute($captcha.attr('id')).then(submitFormHandler);\r\n } else {\r\n submitFormHandler();\r\n }\r\n\r\n /**\r\n * @function\r\n * @description Handler to trigger submit again when form is valid\r\n * @return {void}\r\n */\r\n function submitFormHandler() {\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false && window.jwsdwUtil.captcha.getResponse($captcha.attr('id')).length === 0) {\r\n // no response yet, check again in 200ms\r\n setTimeout(submitFormHandler, 200);\r\n return;\r\n }\r\n\r\n // XHR request to form action url with form fields as parameters\r\n xhr = $.ajax($this.attr('action'), {\r\n 'method': $this.attr('method') || 'GET',\r\n 'data': !fieldsToSend ? $this.serialize() : fieldsToSend.serialize(),\r\n 'beforeSend': beforeSendCallback,\r\n 'success': successCallback,\r\n 'error': errorCallback,\r\n 'complete': completeCallback\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Method to execute if registration was handled successfully\r\n * @param {object} data the data returned by the server\r\n * @param {String} [data.redirectUrl] the data returned by the server\r\n * @returns {void}\r\n */\r\n function loyaltyRegistrationSuccessCallback (data) {\r\n if (typeof data.redirectUrl === 'string') {\r\n window.location.href = data.redirectUrl;\r\n return;\r\n }\r\n\r\n $registrationButton.removeAttr('disabled');\r\n $registrationButtonText.removeClass('jwsdw-invisible');\r\n $registrationSpinner.addClass('jws-hidden');\r\n $('.jwsdw-loyaltyRegistration-successMessage').removeClass('jws-hidden');\r\n\r\n window.scrollTo({\r\n top: $('.jwsdw-loyaltyRegistration-successMessage')[0].getBoundingClientRect().top + window.pageYOffset - $('nav.jwsdw-header-mainMenu').innerHeight(),\r\n behavior: 'smooth'\r\n });\r\n\r\n $('.jwsdw-loyaltyRegistration-container').addClass('jws-hidden');\r\n\r\n window.dataLayer.push({\r\n 'event': 'login_success',\r\n 'eventValue':undefined,\r\n 'nonInteraction':false\r\n });\r\n }\r\n\r\n /**\r\n * Method to execute if registration was not handled successfully\r\n * @param {object} data the response object containing the error\r\n * @returns {void}\r\n */\r\n function loyaltyRegistrationErrorCallback (data) {\r\n var $errorTextContainer;\r\n // jquery ajax returns a wrapped result\r\n data = data.hasOwnProperty('responseJSON') ? data.responseJSON : {};\r\n\r\n if (data.code) {\r\n $errorTextContainer = $registrationErrorMessage.find('.jws-notificationMessage');\r\n $errorTextContainer.text(data.details.message);\r\n $registrationErrorMessage.removeClass('jws-hidden');\r\n\r\n window.scrollTo({\r\n top: $('.jwsdw-loyaltyRegistration-error')[0].getBoundingClientRect().top + window.pageYOffset - $('nav.jwsdw-header-mainMenu').innerHeight(),\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n $registrationButton.removeAttr('disabled');\r\n $registrationButtonText.removeClass('jwsdw-invisible');\r\n $registrationSpinner.addClass('jws-hidden');\r\n }\r\n\r\n /**\r\n * Method to execute the before send logic before the ajax call is made\r\n * @returns {void}\r\n */\r\n function loyaltyRegistrationBeforeSendCallback () {\r\n $registrationErrorMessage.addClass('jws-hidden');\r\n $registrationButton.attr('disabled', 'disabled');\r\n $registrationButtonText.addClass('jwsdw-invisible');\r\n $registrationSpinner.removeClass('jws-hidden');\r\n }\r\n\r\n /**\r\n * Method to execute after the ajax call was made\r\n * @returns {void}\r\n */\r\n function loyaltyRegistrationCompleteCallback () {\r\n var $captcha;\r\n\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false) {\r\n $captcha = $registrationForm.find('.g-recaptcha');\r\n window.grecaptcha.reset(window.jwsdwRecaptcha[$captcha.attr('id')]);\r\n }\r\n }\r\n\r\n // registration form submit listener\r\n $(document).on('submit', 'form.jwsdw-loyalty-register-form', function (e) {\r\n loyaltyFormSubmit.call(this, e,\r\n loyaltyRegistrationSuccessCallback,\r\n loyaltyRegistrationErrorCallback,\r\n loyaltyRegistrationBeforeSendCallback,\r\n loyaltyRegistrationCompleteCallback);\r\n });\r\n\r\n // listen to mediator event when user selects a store in picker and write data of selected store back to form\r\n window.jwsdwMediator.subscribe('storePickerSelectStore', function(data) {\r\n var store = data.store;\r\n\r\n // fill hidden fields data of selected store\r\n $('#jwsdw-register-jwStore-storeId').val(store.id);\r\n });\r\n}(window, document, jQuery));\r\n"],"names":["window","$","$jwMyStore","$myStoreForm","$storeIdField","find","$jwMyStorePicker","$storeServiceTemplate","publish","locatePosition","postalCodeOrCity","service","$fieldLabel","$inputField","$errorMessage","data","level","addClass","removeClass","jwsdwMediator","findJWStore","val","deleteMyStoreErrorCallback","showStoreCard","store","$storeContainer","$storeCardContainer","$storeServices","storePromotions","promotions","storeServices","services","storePromos","html","length","forEach","promo","$service","clone","text","name","appendTo","sort","a","id","app","resources","jackWolfskinCard","setMyStoreErrorCallback","on","document","click","e","keyCode","event","preventDefault","params","addressId","jwsdwSettings","csrfTokenName","csrfTokenValue","prop","ajax","attr","method","error","subscribe","$preferredAddress","$storeCard","address1","address2","postalCode","city","countryName","preferredAddress","is","serialize","success","this","jQuery","url","baseUrl","storeId","response","$registrationForm","$registrationErrorMessage","$registrationButton","$registrationButtonText","$registrationSpinner","xhr","queryString","$urlParameters","jwsdwUtil","urlUtils","getAllQueryParameters","location","split","$loyaltyRegistrationSection","loyaltyRegistrationSuccessCallback","redirectUrl","href","removeAttr","scrollTo","top","getBoundingClientRect","pageYOffset","innerHeight","behavior","dataLayer","push","eventValue","undefined","nonInteraction","loyaltyRegistrationErrorCallback","hasOwnProperty","responseJSON","code","details","message","loyaltyRegistrationBeforeSendCallback","loyaltyRegistrationCompleteCallback","$captcha","jwsdwRecaptchaSettings","captchaDisabled","grecaptcha","reset","jwsdwRecaptcha","validator","setDefaults","rules","email","invalidvalue","customemail","dateOfBirth","checkDate","isAdult","search","substring","append","source","utm_source","validate","console","loyaltyFormSubmit","successCallback","errorCallback","beforeSendCallback","completeCallback","fieldsToSend","$this","submitFormHandler","captcha","getResponse","setTimeout","beforeSend","complete","valid","readyState","execute","then","call"],"mappings":"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"}