(function(global) { var acceptAlterationDiv, activeWidget, alterationCheckBox, alterations_accepted, analysisType, analysis_type, authRequest, authResponse, buttonRequest, content, cookie, cookieCheck, cookie_name, cookie_value, cookie_value_parsed, cookiearray, customerSignupBtn, data, deauthRequest, decodedCookie, el, elements, email, emailInput, features, firstNameInput, fitAnalysis, fitOptions, fitPref, head, i, id, j, k, l, lastNameInput, len, len1, loaderIcon, local_fit_verification, local_fit_verification_img, modalRequest, name_first, name_last, opt, org, organization_id, page_sku, page_sku_base, passenWidgetButton, passen_verified_explanation_box, passen_verified_size, passen_verified_size_storage, postalCodeInput, postal_code, processed, productEl, product_alteration_accept, product_alteration_deny, product_size_displayed, product_size_list, product_sizes_el, ref, runLoader, signupFormRequest, signupRequest, size_sku_array, sku, skuPassen, style, submitEmailBox, submitEmailBtn, targetEl, targetFitPref, type, usersEmail, widget, widgetContainer, widgetContent, widgetEl, widgetHost, widgetStyle; widgetHost = 'https://api.w.passen.com'; elements = document.querySelectorAll('.passen-widget'); features = '[object Object]'; // Passed in from back-end console.log(features); for (i = j = 0, ref = elements.length; (0 <= ref ? j < ref : j > ref); i = 0 <= ref ? ++j : --j) { el = elements[i]; injectPassenButton(el); } // Inject styles into style tag on client webpage function injectStyles(css) {; style = document.createElement('style'); style.type = 'text/css'; if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } head = document.head || document.querySelector('head'); head.appendChild(style); }; function fetchStyles() {; widgetStyle = new XMLHttpRequest(); widgetStyle.open('GET', widgetHost + '/api/3rd/style'); widgetStyle.send(); widgetStyle.onload = function() { return injectStyles(this.responseText); }; }; function closeWidgetFunction(alterations_accepted) {; widget = document.querySelector(".passen-widget-outer"); if (!widget) { return; } if (alterations_accepted !== true) { alterations_accepted = false; } loaderIcon = document.querySelector(".passen-widget-loader"); if (loaderIcon) { loaderIcon.remove(); } widget.parentNode.removeChild(widget); activeWidget = document.querySelector(".activated-passen-widget"); activeWidget.remove(); widgetContainer = document.querySelector(".passen-widget"); widgetContainer.style.display = "block"; // Check to see if analysis is universal or product-specific type = widgetContainer.getAttribute('data-passen-analysis-type'); if (type === 'product-specific') { passenWidgetButton = document.querySelector(".passen-button"); verifyFit(alterations_accepted); } else { passenWidgetButton = document.querySelector(".passen-button-universal"); } passenWidgetButton.disabled = false; return false; }; function runFitAnalysis(data) {; console.log("STEP 6 - runFitAnalysis"); fitAnalysis = new XMLHttpRequest(); fitAnalysis.withCredentials = true; fitAnalysis.open('POST', widgetHost + '/api/3rd/analysis'); fitAnalysis.setRequestHeader('Content-type', 'application/json'); fitAnalysis.send(data); fitAnalysis.onload = function() { var resp, status; status = this.status; resp = this.responseText; return setTimeout(function() { var nextStepBtn, returnBtn, widgetContent; widgetContent = document.querySelector('.passen-widget-body'); widgetContent.innerHTML = ""; widgetContent.innerHTML = resp; returnBtn = document.getElementById('passen-widget-error-return'); nextStepBtn = document.querySelector(".passen-widget-next-step"); if (returnBtn) { if (returnBtn.addEventListener) { returnBtn.addEventListener('click', authenticateUser); } else if (returnBtn.attachEvent) { returnBtn.attachEvent('onclick', authenticateUser); } else { returnBtn.onclick = authenticateUser; } } if (nextStepBtn) { if (nextStepBtn.addEventListener) { return nextStepBtn.addEventListener('click', postAnalysisStep); } else if (nextStepBtn.attachEvent) { return nextStepBtn.attachEvent('onclick', postAnalysisStep); } else { return nextStepBtn.onclick = postAnalysisStep; } } }, 5000); }; }; function postAnalysisStep() {; console.log("STEP 7 - postAnalysisStep"); acceptAlterationDiv = document.querySelector('.passen-widget-accept-alteration'); type = widgetContainer.getAttribute('data-passen-analysis-type'); if (acceptAlterationDiv) { alterationCheckBox = acceptAlterationDiv.getElementsByTagName("input")[0]; } if (acceptAlterationDiv && alterationCheckBox.checked === true) { closeWidgetFunction(true); } else if (type === 'universal') { closeWidgetFunction(true); } else { closeWidgetFunction(false); } }; function deauthenticateUser(e) {; e.preventDefault(); // localStorage.removeItem('passen-fit-user-refresh') deauthRequest = new XMLHttpRequest; deauthRequest.withCredentials = true; deauthRequest.open('GET', widgetHost + '/api/3rd/deauth'); deauthRequest.send(); deauthRequest.onload = function() { var customerSignupBtn, resp, sessionLogout, status, submitEmailForm, widgetContent; status = this.status; resp = this.responseText; if (status === 200) { sessionLogout = document.querySelector(".passen-widget-logout"); if (sessionLogout) { sessionLogout.style.display = "none"; } widgetContent = document.querySelector('.passen-widget-body'); widgetContent.innerHTML = ""; widgetContent.innerHTML = resp; submitEmailForm = document.getElementById("passen-authorize-user"); if (!submitEmailForm) { return; } if (submitEmailForm.addEventListener) { submitEmailForm.addEventListener('submit', submitAuthForm); } else if (submitEmailForm.attachEvent) { submitEmailForm.attachEvent('onsubmit', submitAuthForm); } else { submitEmailForm.onsubmit = submitAuthForm; } customerSignupBtn = document.getElementById("passen-widget-signup-btn"); if (customerSignupBtn) { if (customerSignupBtn.addEventListener) { return customerSignupBtn.addEventListener('click', requestSignup); } else if (customerSignupBtn.attachEvent) { return customerSignupBtn.attachEvent('onclick', requestSignup); } else { return customerSignupBtn.onclick = requestSignup; } } } else { return console.log("Unable to logout of currently authenticated account"); } }; }; // Deliver widget according to user's auth status function submitAuthForm(e) {; console.log("STEP 4 - submitAuthForm"); e.preventDefault(); authResponse = document.getElementById('passen-auth-response'); authResponse.innerHTML = ""; submitEmailBtn = document.getElementById('passen-widget-signin-btn'); submitEmailBox = document.getElementById('passen-authorize-user-box'); email = submitEmailBox.value; if (!email) { authResponse.innerHTML = "Please provide a valid email address"; } else { submitEmailBtn.disabled = true; authenticateUser(email); } }; function setUpAnalysis(event) {; console.log("STEP 5 - setUpAnalysis"); if (event) { event.preventDefault; } widgetEl = document.querySelector(".passen-widget"); analysis_type = widgetEl.getAttribute('data-passen-analysis-type'); organization_id = widgetEl.getAttribute('data-passen-org-id'); productEl = document.querySelector(".passen-product-sku"); if (features.fit_preference_selection) { targetEl = document.querySelector(".passen-chosen-fit-pref"); fitPref = targetEl.dataset.garmentClassId; if (analysis_type === 'product-specific') { skuPassen = targetEl.dataset.skuPassen; } else { skuPassen = null; } } else { skuPassen = productEl.getAttribute('data-passen-value'); skuPassen = organization_id + "-" + skuPassen; } runLoader = new XMLHttpRequest(); runLoader.withCredentials = true; runLoader.open('GET', widgetHost + '/api/3rd/loader'); runLoader.send(); runLoader.onload = function() { var data, jsondata, resp, status, widgetContent; status = this.status; widgetContent = document.querySelector('.passen-widget-body'); authResponse = document.getElementById('passen-auth-response'); if (status === 200) { resp = this.responseText; widgetContent.innerHTML = ""; widgetContent.innerHTML = resp; } else { console.log(this.responseText); resp = JSON.parse(this.responseText); authResponse.innerHTML = resp.error; } if (features.fit_preference_selection) { if (fitPref && skuPassen) { console.log("SKU passen exists"); data = { sku: skuPassen, fit_pref: fitPref, organization_id: organization_id }; jsondata = JSON.stringify(data); return runFitAnalysis(jsondata); } else if (fitPref && !skuPassen) { console.log("SKU passen does not exist"); data = { fit_pref: fitPref, organization_id: organization_id }; jsondata = JSON.stringify(data); return runFitAnalysis(jsondata); } else { authResponse = document.getElementById('passen-auth-response'); return authResponse.innerHTML = "There was an error with page data. Please log out and try again."; } } else { if (skuPassen) { console.log("SKU passen exists"); data = { sku: skuPassen, organization_id: organization_id }; jsondata = JSON.stringify(data); return runFitAnalysis(jsondata); } else if (!skuPassen) { console.log("SKU passen does not exist"); data = { organization_id: organization_id }; jsondata = JSON.stringify(data); return runFitAnalysis(jsondata); } else { authResponse = document.getElementById('passen-auth-response'); return authResponse.innerHTML = "There was an error with page data. Please log out and try again."; } } }; }; function findAncestor (el, cls) {; while ((el = el.parentElement) && !el.classList.contains(cls));; return el;; }; function selectFitPreference(event){; if (event.target.parentElement.classList.contains("passen-chosen-fit-pref")) { event.preventDefault; } else { fitOptions = document.getElementsByClassName("passen-fit-pref-option" || null); if (fitOptions) { for (k = 0, len = fitOptions.length; k < len; k++) { opt = fitOptions[k]; if (opt.classList.contains("passen-chosen-fit-pref")) { opt.classList.remove("passen-chosen-fit-pref"); } } } targetFitPref = findAncestor(event.target, "passen-fit-pref-option"); targetFitPref.classList.add("passen-chosen-fit-pref"); } }; function authenticateUser(email) {; console.log("STEP 3 - authenticateUser"); // This function is executed in (2) possible ways // (1) When the 'Verify Your Fit' is executed, which checks for existing session // (2) When the user had no existing session, and submits their email to 'login' // If there is no email provided to the form, the user has opened the widget if (email) { usersEmail = email; } // Pass all important fields to backend to handle // refreshToken = localStorage.getItem 'passen-fit-user-refresh' || null widgetEl = document.querySelector(".passen-widget"); analysisType = widgetEl.getAttribute('data-passen-analysis-type'); org = widgetEl.getAttribute('data-passen-org-id'); if (analysisType === 'product-specific') { productEl = document.querySelector(".passen-product-sku"); sku = productEl.getAttribute('data-passen-value'); skuPassen = org + "-" + sku; } // loaderIcon = document.querySelector ".passen-widget-loader" // if loaderIcon // loaderIcon.remove() authRequest = new XMLHttpRequest; authRequest.withCredentials = true; authRequest.open('POST', widgetHost + '/api/3rd/auth'); content = { email: usersEmail, organization_id: org, analysis_type: analysisType }; if (analysisType === 'product-specific') { content.sku_passen = skuPassen; } // refresh_token: refreshToken content = JSON.stringify(content); authRequest.setRequestHeader('Content-type', 'application/json'); authRequest.send(content); authRequest.onload = function() { var confirmFitAnalysis, customerSignupBtn, fitPrefPage, fitPreferences, fitSelection, l, len1, pref, resp, returnFromError, sessionLogout, status, submitEmailForm, widgetContent; status = this.status; resp = this.responseText; widgetContent = document.querySelector('.passen-widget-body'); authResponse = document.getElementById('passen-auth-response'); // Populate widget content console.log(status); if (status === 400 && authResponse) { resp = JSON.parse(resp); authResponse.innerHTML = resp.message; submitEmailBtn = document.getElementById('passen-widget-signin-btn'); submitEmailBtn.disabled = false; } else if (resp) { widgetContent.innerHTML = ""; widgetContent.innerHTML = resp; } if (features.fit_preference_selection) { fitPrefPage = document.querySelector(".passen-widget-fit-preferences"); if (fitPrefPage) { fitPreferences = document.getElementsByClassName("passen-fit-pref-img"); if (fitPreferences.length) { fitPreferences[0].parentElement.classList.add("passen-chosen-fit-pref"); for (l = 0, len1 = fitPreferences.length; l < len1; l++) { pref = fitPreferences[l]; if (pref.addEventListener) { pref.addEventListener('click', selectFitPreference); } else if (pref.attachEvent) { pref.attachEvent('onclick', selectFitPreference); } else { pref.onclick = selectFitPreference; } } fitSelection = document.getElementById("passen-widget-fit-selection"); if (fitSelection.addEventListener) { fitSelection.addEventListener('click', setUpAnalysis); } else if (fitSelection.attachEvent) { fitSelection.attachEvent('onclick', setUpAnalysis); } else { fitSelection.onclick = setUpAnalysis; } } } } else { confirmFitAnalysis = document.getElementById("passen-widget-confirm-analysis"); if (confirmFitAnalysis) { if (confirmFitAnalysis.addEventListener) { confirmFitAnalysis.addEventListener('click', setUpAnalysis); } else if (confirmFitAnalysis.attachEvent) { confirmFitAnalysis.attachEvent('onclick', setUpAnalysis); } else { confirmFitAnalysis.onclick = setUpAnalysis; } } } sessionLogout = document.querySelector(".passen-widget-logout"); if (sessionLogout) { sessionLogout.style.display = "block"; } returnFromError = document.getElementById("passen-widget-error-return"); if (returnFromError) { if (returnFromError.addEventListener) { returnFromError.addEventListener('click', authenticateUser); } else if (returnFromError.attachEvent) { returnFromError.attachEvent('onclick', authenticateUser); } else { returnFromError.onclick = authenticateUser; } } submitEmailForm = document.getElementById("passen-authorize-user"); if (submitEmailForm) { if (submitEmailForm.addEventListener) { submitEmailForm.addEventListener('submit', submitAuthForm); } else if (submitEmailForm.attachEvent) { submitEmailForm.attachEvent('onsubmit', submitAuthForm); } else { submitEmailForm.onsubmit = submitAuthForm; } } customerSignupBtn = document.getElementById("passen-widget-signup-btn"); if (customerSignupBtn) { if (customerSignupBtn.addEventListener) { return customerSignupBtn.addEventListener('click', requestSignup); } else if (customerSignupBtn.attachEvent) { return customerSignupBtn.attachEvent('onclick', requestSignup); } else { return customerSignupBtn.onclick = requestSignup; } } }; }; function requestSignup() {; signupFormRequest = new XMLHttpRequest(); signupFormRequest.open('GET', widgetHost + '/api/3rd/request/signup'); signupFormRequest.send(); signupFormRequest.onload = function() { var customerSignupForm, resp, status, widgetContent; status = this.status; resp = this.responseText; if (status === 200) { widgetContent = document.querySelector('.passen-widget-body'); widgetContent.innerHTML = ''; widgetContent.innerHTML = resp; customerSignupForm = document.getElementById("passen-signup-user"); if (!customerSignupForm) { return; } if (customerSignupForm.addEventListener) { return customerSignupForm.addEventListener('submit', userSignup); } else if (customerSignupForm.attachEvent) { return customerSignupForm.attachEvent('onsubmit', userSignup); } else { return customerSignupForm.onsubmit = userSignup; } } }; }; function userSignup(event) {; event.preventDefault(); customerSignupBtn = document.getElementById("passen-widget-sigup-btn"); customerSignupBtn.disabled = true; authResponse = document.getElementById("passen-auth-response"); widgetContent = document.querySelector('.passen-widget-body'); emailInput = document.getElementById('passen-signup-email'); firstNameInput = document.getElementById('passen-signup-name-first'); lastNameInput = document.getElementById('passen-signup-name-last'); postalCodeInput = document.getElementById('passen-signup-postal-code'); widgetEl = document.querySelector(".passen-widget"); org = widgetEl.getAttribute('data-passen-org-id'); email = emailInput.value || null; name_first = firstNameInput.value || null; name_last = lastNameInput.value || null; postal_code = postalCodeInput.value || null; if (email) { data = { email: email }; } else { authResponse.innerHTML = "Please supply an email"; customerSignupBtn.disabled = false; } if (org) { data.organization_id = org; } else { authResponse.innerHTML = "The widget wasn't able to capture the ID for this website"; customerSignupBtn.disabled = false; } if (name_first) { data.name_first = name_first; } if (name_last) { data.name_last = name_last; } if (postal_code) { data.postal_code = postal_code; } data = JSON.stringify(data); signupRequest = new XMLHttpRequest(); signupRequest.open("POST", widgetHost + '/api/3rd/signup'); signupRequest.setRequestHeader('Content-type', 'application/json'); signupRequest.send(data); signupRequest.onload = function() { var resp, status; status = this.status; if (status === 400 && authResponse) { resp = JSON.parse(this.responseText); authResponse.innerHTML = resp.message; return customerSignupBtn.disabled = false; } else { resp = this.responseText; return widgetContent.innerHTML = resp; } }; }; function passenWidgetButtonFunction(event) {; // Prevent against double-clicks console.log("STEP 2 - passenWidgetButtonFunction"); widgetContainer = document.querySelector(".passen-widget"); // Check to see if analysis is universal or product-specific type = widgetContainer.getAttribute('data-passen-analysis-type'); if (type === 'product-specific') { passenWidgetButton = document.querySelector(".passen-button"); } else { passenWidgetButton = document.querySelector(".passen-button-universal"); } passenWidgetButton.disabled = true; event.preventDefault(); modalRequest = new XMLHttpRequest(); modalRequest.open('GET', widgetHost + '/api/3rd/widget/' + id); modalRequest.send(); modalRequest.onload = function() { var body, buttonContainer, closeWidgetButton, logoutWidgetButton, modalElement; body = document.getElementsByTagName("body")[0]; // loaderIcon = document.querySelector ".passen-widget-loader" // if loaderIcon // loaderIcon.remove() activeWidget = document.createElement('div'); activeWidget.classList.add("activated-passen-widget"); body.appendChild(activeWidget); buttonContainer = document.querySelector(".passen-widget"); buttonContainer.style.display = "none"; modalElement = document.createElement('div'); modalElement.innerHTML = this.responseText; activeWidget = document.querySelector(".activated-passen-widget"); activeWidget.appendChild(modalElement); logoutWidgetButton = document.querySelector(".passen-widget-logout"); if (logoutWidgetButton) { if (logoutWidgetButton.addEventListener) { logoutWidgetButton.addEventListener('click', deauthenticateUser); } else if (logoutWidgetButton.attachEvent) { logoutWidgetButton.attachEvent('onclick', deauthenticateUser); } else { logoutWidgetButton.onclick = deauthenticateUser; } } closeWidgetButton = document.querySelector(".passen-widget-close"); if (closeWidgetButton) { if (closeWidgetButton.addEventListener) { closeWidgetButton.addEventListener('click', closeWidgetFunction); } else if (closeWidgetButton.attachEvent) { closeWidgetButton.attachEvent('onclick', closeWidgetFunction); } else { closeWidgetButton.onclick = closeWidgetFunction; } } return authenticateUser(); }; }; function retrieveCookies(cookie_prefix){; size_sku_array = []; console.log(document.cookie); decodedCookie = decodeURIComponent(document.cookie); cookiearray = decodedCookie.split(';'); for (i = l = 0, len1 = cookiearray.length; l < len1; i = ++l) { cookie = cookiearray[i]; cookie_name = cookie.substring(0, cookie.indexOf('=')); console.log(cookie_name); if (cookie_name.includes(cookie_prefix)) { cookie_value = cookie.substring(cookie.indexOf('=') + 1); cookie_value_parsed = JSON.parse(cookie_value); size_sku_array.push(cookie_value_parsed); } } return size_sku_array; }; // Start main widget service function injectPassenButton(el) {; console.log("STEP 1 - InjectPassenButton"); id = el.getAttribute('data-passen-id'); type = el.getAttribute('data-passen-analysis-type'); processed = el.getAttribute('data-passen-processed'); if (type === 'product-specific') { widgetEl = document.querySelector('.passen-product-sku'); page_sku = widgetEl.getAttribute('data-passen-value'); page_sku_base = page_sku.split("-")[0]; } if (!id || processed === 'done') { //skip this one as it has either already been processed, or lacks an ID //This is done to ensure logic is not executed twice in the event that the //user erroneously embeds the script tag more than once on a single page console.log('skipping element:', el); return; } if (type === 'product-specific') { verifyFit(); } fetchStyles(); buttonRequest = new XMLHttpRequest(); if (type === 'product-specific') { buttonRequest.open("GET", widgetHost + '/api/3rd/passen-widget/init/' + id + '/product-specific'); } else { buttonRequest.open("GET", widgetHost + '/api/3rd/passen-widget/init/' + id + '/universal'); } buttonRequest.send(); buttonRequest.onload = function() { var size_verified; el.innerHTML = this.responseText; el.setAttribute('data-passen-processed', 'done'); if (type === 'product-specific') { passenWidgetButton = el.querySelector('.passen-button'); } else { passenWidgetButton = el.querySelector('.passen-button-universal'); } if (!passenWidgetButton) { return; } size_verified = verifyFit(); if (size_verified) { if (passenWidgetButton.removeEventListener) { return passenWidgetButton.removeEventListener('click', passenWidgetButtonFunction); } else if (passenWidgetButton.detachEvent) { return passenWidgetButton.detachEvent('onclick', passenWidgetButtonFunction); } else { return passenWidgetButton.removeAttribute("onclick"); } } else { if (passenWidgetButton.addEventListener) { return passenWidgetButton.addEventListener('click', passenWidgetButtonFunction); } else if (passenWidgetButton.attachEvent) { return passenWidgetButton.attachEvent('onclick', passenWidgetButtonFunction); } else { return passenWidgetButton.onclick = passenWidgetButtonFunction; } } }; }; function verifyFit(alterations_accepted){; if (alterations_accepted) { console.log(alterations_accepted); } cookieCheck = new XMLHttpRequest(); cookieCheck.withCredentials = true; cookieCheck.open("GET", widgetHost + '/api/3rd/passen-widget/cookie/init'); cookieCheck.send(); cookieCheck.onload = function() { var acceptance_asterisk, acceptance_text, alter_by, alter_txt, alteration, alteration_acceptance, alteration_acceptance_text, alteration_amount, alteration_bolded, alteration_checkbox_accept, alteration_checkbox_deny, alteration_denial, alteration_denial_text, alteration_name, alteration_name_arr, alteration_txt, cached_size_objs, cached_sizes, denial_asterisk, denial_text, index, len2, len3, len4, len5, m, message, n, o, obj, option_sku, p, passen_alteration_list, passen_alterations_notice, passen_button, passen_button_text, passen_verified_alterations_blurb, passen_verified_box, passen_verified_explanation, passen_verified_image, passen_verified_label, passen_verified_sticky, passen_verified_text, product_size_list, product_sizes_el, q, ref1, size; // There are cookies if (this.responseText !== "OK") { cached_size_objs = JSON.parse(this.responseText); cached_sizes = cached_size_objs.map(function(obj) { return obj.sku; }); product_sizes_el = document.querySelector(".passen-product-sizes"); product_size_list = product_sizes_el.getElementsByTagName("select")[0]; for (index = m = 0, len2 = product_size_list.length; m < len2; index = ++m) { size = product_size_list[index]; option_sku = product_size_list.options[index].getAttribute('data-sku'); if (cached_sizes.includes(option_sku)) { for (o = 0, len3 = cached_size_objs.length; o < len3; o++) { obj = cached_size_objs[o]; if (obj.sku === option_sku) { passen_button = document.querySelector(".passen-button"); passen_button.disabled = true; if (!obj.alterations || obj.alterations.length < 1) { passen_button.classList.add("passen-button-verified"); } else { passen_button.classList.add("passen-button-verified-alterations"); } passen_button_text = document.querySelector(".passen-button span"); passen_button_text.innerText = "fit verified"; passen_verified_box = document.querySelector(".passen-verified-size"); passen_verified_label = document.createElement("span"); passen_verified_label.innerText = "Your verified size:"; passen_verified_image = document.createElement("img"); if (!obj.alterations || obj.alterations.length < 1) { passen_verified_image.src = widgetHost + '/assets/images/passen-fit-verified.png'; product_size_list.options[index].selected = 'selected'; product_size_list.style.backgroundImage = 'url(' + widgetHost + '/assets/images/passen-fit-verified.png)'; product_size_list.style.backgroundSize = "16px 16px"; } else { passen_verified_image.src = widgetHost + '/assets/images/passen-fit-verified-alterations.png'; product_size_list.options[index].selected = 'selected'; product_size_list.style.backgroundImage = 'url(' + widgetHost + '/assets/images/passen-fit-verified-alterations.png)'; product_size_list.style.backgroundSize = "16px 16px"; } passen_verified_text = document.createElement("p"); passen_verified_text.innerText = product_size_list.options[index].value; passen_verified_text.classList.add("passen-verified-size-storage"); passen_verified_box.appendChild(passen_verified_label); passen_verified_box.appendChild(passen_verified_image); passen_verified_box.appendChild(passen_verified_text); passen_verified_sticky = document.querySelector(".passen-verified-explanation"); passen_verified_sticky.style.display = "block"; passen_verified_explanation = document.createElement("div"); message = document.createElement("p"); if (!obj.alterations || obj.alterations.length < 1) { message.innerText = "We have found you the perfect fit."; passen_verified_explanation.appendChild(message); passen_verified_sticky.appendChild(passen_verified_explanation); } else { message.innerText = "This item would fit best by having the following alterations:"; passen_alterations_notice = document.createElement("img"); passen_alterations_notice.src = widgetHost + '/assets/images/passen-fit-exclamation.png'; passen_verified_explanation.appendChild(passen_alterations_notice); passen_verified_explanation.appendChild(message); passen_verified_alterations_blurb = document.createElement("div"); passen_alteration_list = document.createElement("ul"); ref1 = obj.alterations; for (index = p = 0, len4 = ref1.length; p < len4; index = ++p) { alteration = ref1[index]; alteration_txt = document.createElement("li"); alter_txt = document.createElement("span"); alteration_bolded = document.createElement("span"); alteration_bolded.style.fontWeight = "bold"; if (alteration.name === "sideseam_right" || alteration.name === "sideseam_left") { alter_txt.innerText = "(" + (index + 1) + ")" + " Your: "; alteration_name = "pant outseam length "; } else { alteration_name_arr = alteration.name.split("_"); alteration_name = ""; for (q = 0, len5 = alteration_name_arr.length; q < len5; q++) { n = alteration_name_arr[q]; alteration_name = alteration_name + n + " "; } alter_txt.innerText = "(" + (index + 1) + ")" + " Your "; alteration_bolded.style.textTransform = "capitalize"; } alteration_bolded.innerText = alteration_name; alteration_amount = document.createElement("span"); alteration_amount.innerText = alteration.recommendation + " cms"; alteration_amount.style.fontWeight = "bold"; alter_by = document.createElement("span"); alter_by.innerText = "should be "; alteration_txt.appendChild(alter_txt); alteration_txt.appendChild(alteration_bolded); alteration_txt.appendChild(alter_by); alteration_txt.appendChild(alteration_amount); passen_alteration_list.appendChild(alteration_txt); } alteration_acceptance = document.createElement("div"); alteration_denial = document.createElement("div"); alteration_acceptance_text = document.createElement("p"); alteration_denial_text = document.createElement("p"); acceptance_asterisk = document.createElement("span"); acceptance_asterisk.classList.add("passen-red-asterisk"); acceptance_asterisk.innerText = "*"; denial_asterisk = document.createElement("span"); denial_asterisk.classList.add("passen-red-asterisk"); denial_asterisk.innerText = "*"; acceptance_text = document.createElement("span"); denial_text = document.createElement("span"); acceptance_text.innerText = " Yes I'd like to have this garment altered free of charge."; denial_text.innerText = " No I would like to have this garment without alterations."; alteration_acceptance_text.appendChild(acceptance_asterisk); alteration_acceptance_text.appendChild(acceptance_text); alteration_denial_text.appendChild(denial_asterisk); alteration_denial_text.appendChild(denial_text); alteration_checkbox_accept = document.createElement("input"); alteration_checkbox_accept.required = true; alteration_checkbox_accept.type = "radio"; alteration_checkbox_accept.name = "alteration_decision"; alteration_checkbox_accept.classList.add("passen-checkout-alteration-accept"); if (alterations_accepted) { alteration_checkbox_accept.checked = true; } else { alteration_checkbox_accept.checked = false; } alteration_checkbox_deny = document.createElement("input"); alteration_checkbox_deny.required = true; alteration_checkbox_deny.type = "radio"; alteration_checkbox_deny.name = "alteration_decision"; alteration_checkbox_deny.classList.add("passen-checkout-alteration-deny"); alteration_acceptance.appendChild(alteration_checkbox_accept); alteration_acceptance.appendChild(alteration_acceptance_text); alteration_denial.appendChild(alteration_checkbox_deny); alteration_denial.appendChild(alteration_denial_text); passen_verified_alterations_blurb.appendChild(passen_alteration_list); passen_verified_sticky.appendChild(passen_verified_explanation); passen_verified_sticky.appendChild(passen_verified_alterations_blurb); passen_verified_sticky.appendChild(alteration_acceptance); passen_verified_sticky.appendChild(alteration_denial); } if (product_size_list.addEventListener) { product_size_list.addEventListener('change', clientSizeChangeFunction); } else if (product_size_list.attachEvent) { product_size_list.attachEvent('onchange', clientSizeChangeFunction); } else { product_size_list.onclick = clientSizeChangeFunction; } } } } } return true; } else { console.log("No cached sizes"); return false; } }; }; function clientSizeChangeFunction(){; passen_verified_size_storage = document.querySelector(".passen-verified-size-storage"); passen_verified_size = passen_verified_size_storage.innerHTML; product_sizes_el = document.querySelector(".passen-product-sizes"); product_size_displayed = product_sizes_el.getElementsByTagName("select")[0].value; product_size_list = product_sizes_el.getElementsByTagName("select")[0]; product_alteration_accept = document.querySelector(".passen-checkout-alteration-accept"); product_alteration_deny = document.querySelector(".passen-checkout-alteration-deny"); local_fit_verification = document.querySelector(".passen-verified-size"); local_fit_verification_img = local_fit_verification.getElementsByTagName("img")[0]; passen_verified_explanation_box = document.querySelector(".passen-verified-explanation"); if (product_size_displayed === passen_verified_size) { product_size_list.style.backgroundImage = 'url(' + local_fit_verification_img.src + ')'; product_size_list.style.backgroundSize = "16px 16px"; if (product_alteration_accept) { product_alteration_accept.required = true; } if (product_alteration_deny) { product_alteration_deny.required = true; } passen_verified_explanation_box.style.display = "block"; } else { product_size_list.style.backgroundImage = "none"; if (product_alteration_accept) { product_alteration_accept.required = false; } if (product_alteration_deny) { product_alteration_deny.required = false; } passen_verified_explanation_box.style.display = "none"; } return }; })();