/* CONSTANTS FOR MEESAGES/VALUES */ var REQUIRED = "required"; var SHIPPING_ADDRESS = "shipping_address"; var CONTINUE = ""; var SAVE_AND_CONTINUE = ""; var EMPTY_ERROR = ""; var TELEPHONE_NUMBER_ERROR = ""; var ADDRESS_NOT_SELECTED_ERROR = ""; var ADDRESS_ERROR = ""; var SHIPPING_METHOD_ERROR = ""; var COUPON_CODE_EMPTY_ERROR = ""; /* CONSTANTS FOR CLASS */ var THEME_CHECKOUT_STEPS = "theme-checkout-steps"; var THEME_CHECKOUT_SIGNIN_WRAP_INVISIBLE = "theme-checkout-signin-wrap-invisible"; var THEME_CHECKOUT_WRAP_VISIBLE = "theme-checkout-wrap-visible"; var SIGNED_IN_AS_GUEST = "signed-in-as-guest"; var THEME_HIDE = "theme-hide"; var THEME_SHOW = "theme-show"; var THEME_SHOW_DETAILS = "theme-show-details"; var THEME_ACTIVE_BAR = "theme-active-bar"; var ACTIVE = "active"; var MANDATORY_FIELD = "mandotry-field"; var MANDATORY_FIELD_HIDE = "mandotry-field-hide"; var THEME_CHECKOUT_ADD_NEW_ADDRESS = "theme-checkout-addnew-address"; var THEME_CHECKOUT_CHOOSE_LIST = "theme-checkout-choose-list"; var THEME_CHECKOUT_CHANGE_LIST = "theme-checkout-change-list"; var THEME_CHECKOUT_LIST_SELECTED = "theme-checkout-list-selected"; var ERROR_MESSAGE = "error_msg"; var SHIPPING_METHODS = "shipping-methods"; var ORDER_REVIEW = "order-review"; var THEME_SHOW_ORDER_DETAILS = "theme-show-order-details"; var THEME_COUPON_ACTIVE = "theme-coupon-active"; var THEME_CART_DETAILS_COUPON_APPLIED = "theme-cart-details-coupon-applied"; var THEME_CART_DETAILS_COUPON_ENTER = "theme-cart-details-coupon-enter"; var THEME_HEADER = "theme-header"; var THEME_HEADER_FIXED = "theme-header-fixed"; var THEME_CART_DETAILS_INNER = "theme-cart-details-inner"; /* CONSTANTS FOR NAMEs */ var SHIPPING_SAVED_ADDRESS = "shipping-saved-address"; var BILLING_SAVED_ADDRESS = "billing-saved-address"; /* CONSTANTS FOR IDs */ var ERROR_VALIDATION_MESSAGES = "zs-error-validation-messages"; var EMPTY_ERROR_CONTAINER = "zs-empty-error"; var ADDRESS_ERROR_CONTAINER = "zs-address-error"; var ADDRESS_NOT_SELECTED_ERROR_CONTAINER = "zs-address-not-selected-error"; var SHIPPING_METHOD_ERROR_CONTAINER = "zs-shipping-method-error"; var TELEPHONE_NUMBER_ERROR_CONTAINER = "zs-telephone-number-error"; var COUPON_CODE_EMPTY_ERROR_CONTAINER = "zs-coupon-code-empty-error"; var I18N_MESSAGES = "zs-checkout-i18n-messages"; var I18N_CONTINUE_CONTAINER = "zs-i18n-continue"; var I18N_SAVE_AND_CONTINUE_CONTAINER = "zs-i18n-save-and-continue"; var THEME_CHECKOUT_SIGNIN_WRAP = "zs-theme-checkout-signin-wrap"; var THEME_CHECKOUT_WRAP = "zs-theme-checkout-wrap"; var ADDRESS_FORM = "zs-address-form"; var SHIPPING_ADDRESS_LIST_ERROR = "zs-shipping-address-list-error"; var BILLING_ADDRESS_LIST_ERROR = "zs-billing-address-list-error"; var ADDRESS_FIELDS = "zs-address-fields"; var BILLING_ADDRESS = "zs-billing-address"; var BILLING_ADDRESS_HEADING = "zs-billing-address-heading"; var BILLING_ADDRESS_STATES = "zs-billing-address-states"; var BILLING_ADDRESS_COUNTRY = "zs-billing-address-country"; var SHIPPING_ADDRESS_STATES = "zs-shipping-address-states"; var SHIPPING_ADDRESS_COUNTRY = "zs-shipping-address-country"; var PORTAL_EMAIL = "zs-portal-email"; var SHIPPING_EMAIL_ADDRESSS = "zs-shipping-email-address"; var PORTAL_TELEPHONE = "zs-portal-telephone"; var SHIPPING_TELEPHONE = "zs-shipping-telephone"; var BILLING_TELEPHONE = "zs-billing-telephone"; var SHIPPING_ADDRESS_SELECTION_ = "zs-shipping-address-selection-"; var BILLING_ADDRESS_SELECTION_ = "zs-billing-address-selection-"; var NEWLY_ADDED_SHIPPING_ADDRESS = "zs-newly-added-shipping-address"; var NEWLY_ADDED_SHIPPING_ADDRESS_FULL_NAME = "zs-newly-added-shipping-address-fullname"; var NEWLY_ADDED_SHIPPING_ADDRESS_PARTIAL_ADDRESS = "zs-newly-added-shipping-address-partialaddress"; var NEWLY_ADDED_SHIPPING_ADDRESS_CITY = "zs-newly-added-shipping-address-city"; var NEWLY_ADDED_SHIPPING_ADDRESS_STATE = "zs-newly-added-shipping-address-state"; var NEWLY_ADDED_SHIPPING_ADDRESS_POSTAL_CODE = "zs-newly-added-shipping-address-postalcode"; var NEWLY_ADDED_SHIPPING_ADDRESS_COUNTRY = "zs-newly-added-shipping-address-country"; var NEWLY_ADDED_SHIPPING_ADDRESS_TELEPHONE = "zs-newly-added-shipping-address-telephone"; var NEWLY_ADDED_BILLING_ADDRESS = "zs-newly-added-billing-address"; var NEWLY_ADDED_BILLING_ADDRESS_FULL_NAME = "zs-newly-added-billing-address-fullname"; var NEWLY_ADDED_BILLING_ADDRESS_PARTIAL_ADDRESS = "zs-newly-added-billing-address-partialaddress"; var NEWLY_ADDED_BILLING_ADDRESS_CITY = "zs-newly-added-billing-address-city"; var NEWLY_ADDED_BILLING_ADDRESS_STATE = "zs-newly-added-billing-address-state"; var NEWLY_ADDED_BILLING_ADDRESS_POSTAL_CODE = "zs-newly-added-billing-address-postalcode"; var NEWLY_ADDED_BILLING_ADDRESS_COUNTRY = "zs-newly-added-billing-address-country"; var NEWLY_ADDED_BILLING_ADDRESS_TELEPHONE = "zs-newly-added-billing-address-telephone"; var TOGGLE_BILLING_SHIPPING_IN_LIST_CONTAINER = "zs-toggle-billing-shipping-in-list-container"; var TOGGLE_BILLING_SHIPPING_IN_LIST = "zs-toggle-billing-shipping-in-list"; var TOGGLE_BILLING_SHIPPING = "zs-toggle-billing-shipping"; var GST_FORM_IN_ADDRESS_LIST = "zs-gst-form-in-address-list"; var SHIPPING_METHODS_FORM = "zs-shipping-methods-form"; var SHIPPING_METHOD_ERROR_TARGET = "zs-shipping-method-error-target"; var ORDER_REVIEW_CONTENT = "zs-order-review-content"; var ORDER_SUMMARY_CONTENT = "zs-order-summary-content"; var ORDER_SUMMARY_DETAILS = "zs-order-summary-details"; var TAX_CONTAINER = "zs-tax-container"; var TAX_AMOUNT_SPAN = "zs-tax-amount-span"; var TAX_SUB_AMOUNT_SPAN = "zs-tax-sub-amount-span"; var SHIPPING_AMOUNT_CONTAINER = "zs-shipping-amount-container"; var SHIPPING_AMOUNT_SPAN = "zs-shipping-amount-span"; var SHIPPING_SUB_AMOUNT_SPAN = "zs-shipping-sub-amount-span"; var OFFLINE_PAYMENT_INFO = "zs-offline-payment-info"; var OFFLINE_CHARGE = "zs-offline-payment-additional-chrage"; var OFFLINE_CHARGE_NAME = "zs-offline-payment-additional-chrage-name"; var OFFLINE_CHARGE_AMOUNT = "zs-offline-payment-additional-chrage-amount"; var OFFLINE_CHARGE_AMOUNT_SUMMARY = "zs-offline-payment-additional-chrage-amount-summary"; var ONLY_OFFLINE_PAYMENT_TOTAL = "data-zs-only-offline-payment-total"; var COUPON_FORM = "zs-coupon-form"; var COUPON_CODE = "zs-coupon-code"; var THEME_COUPON_ERROR = "zs-theme-coupon-error"; var PAYMENT_TOTAL_SUMMARY = "zs-payment-total-summary"; var TERMS_AND_CONDITION = "zs-terms-and-condition-check"; var MOBILE_TERMS_AND_CONDITION = "zs-mobile-terms-and-condition-check"; var MOBILE_TERMS_AND_CONDITION_CONTAINER = "zs-mobile-terms-and-condition-check-container"; var MAKE_PAYMENT_BUTTON = "zs-make-payment-button"; var MOBILE_MAKE_PAYMENT_BUTTON = "zs-mobile-make-payment-button"; var MAKE_PAYMENT_ERROR_CONTAINER = "zs-make-payment-error-container"; /* CONSTANTS FOR DATA ATTRIBUTES */ var DATA_ERROR_MESSAGE = "data-zs-error-message"; var DATA_MESSAGE = "data-zs-message"; var DATA_VALIDATE = "data-validate"; var CHECKOUT_NAV_ADDRESS = "data-zs-checkout-nav-address"; var DATA_ZS_STATES = "data-zs-states"; var USER_SAVED_ADDRESS = "data-zs-user-saved-address"; var GUEST_SAVED_ADDRESS = "data-zs-guest-saved-address"; var DATA_CONTAINER_ADDRESS_LIST = "data-zs-container-address-list"; var DATA_CONTAINER_SHIPPING_ADDRESS_LIST = "data-zs-container-shipping-address-list"; var DATA_CONTAINER_BILLING_ADDRESS_LIST = "data-zs-container-billing-address-list"; var DATA_BILLING_CHANGE_ADDRESS = "data-zs-billing-change-address"; var DATA_SHIPPING_ADDRESS_HEADING = "data-zs-shipping-address-heading"; var DATA_BILLING_ADDRESS_HEADING = "data-zs-billing-address-heading"; var DATA_SHIPPING_AND_BILLING_ADDRESS_HEADING = "data-zs-shipping-and-billing-address-heading"; var DATA_PORTAL_USER_NEW_ADDRESS = "data-zs-portal-user-new-address"; var DATA_CONTAINER_NEW_ADDRESS = "data-zs-container-new-address"; var DATA_CONTAINER_EXISTING_ADDRESS = "data-zs-container-existing-address"; var STORE_CHECKOUT_CONTINUE_ADDRESS = "data-zs-checkout-continue-address"; var DATA_ERROR_MESSAGE = "data-zs-error-message"; var CHECKOUT_NAV_SHIPPING_METHODS = "data-zs-checkout-nav-shipping-methods"; var DATA_CONTAINER_SHIPPING_LIST = "data-zs-container-shipping-list"; var DATA_CONTAINER_SHIPPING_METHOD = "data-zs-container-shipping-method"; var DATA_HREF = "data-href"; var DATA_I18N_VALUE = "data-zs-i18n-value"; var DATA_CHARGE_INFO = "data-zs-charge-info"; var DATA_PAYMENT_TOTAL = "data-zs-payment-total"; var DATA_PAYMENT_URL = "data-zs-payment-url"; var CHECKOUT_NAV_REVIEW_ORDER = "data-zs-checkout-nav-order-review"; var DATA_CONTAINER_REVIEW_ORDER = "data-zs-container-review-order"; /* Methods related to portal begins */ function guestLoginSuccess(e) { var sign_in_wrap = $D.getById(THEME_CHECKOUT_SIGNIN_WRAP); addClassInElement(sign_in_wrap, THEME_CHECKOUT_SIGNIN_WRAP_INVISIBLE); var wrap = $D.getById(THEME_CHECKOUT_WRAP); addClassInElement(wrap, THEME_CHECKOUT_WRAP_VISIBLE); addClassInElement(wrap, SIGNED_IN_AS_GUEST); fixedCartfn(); markAddressAsInComplete(); } /* Methods related to portal ends */ /* Methods related to address begins */ function createStateOptions(select) { var selected_country = select.options[select.selectedIndex]; var states = JSON.parse(selected_country.getAttribute(DATA_ZS_STATES)); var options = []; if(!states) { return options; } if(states.length == 1) { var single_state = document.createElement("option"); single_state.value = states[0].code; setInnerHTMLForElement(single_state, states[0].name); single_state.selected = true; options.push(single_state); return options; } for(var i = 0; i < states.length; i++) { var state = states[i]; var single_state = document.createElement("option"); single_state.value = state.code; setInnerHTMLForElement(single_state, state.name); options.push(single_state); } return options; } function removeExistingStateOptions(state_select) { for(var index = 0; index < state_select.options.length;) { var state_option = state_select.options[index]; if(state_option.value != "") { state_select.remove(index); } else { index++; } } } function addOptionsToStateSelect(state_select, options) { var target = state_select.parentElement; var element = target ? target.querySelector("."+MANDATORY_FIELD) : ""; /** * if states are empty, then remove the validation of states field * else add validation of states field */ if(options.length == 0) { state_select.disabled = true; state_select.removeAttribute(DATA_VALIDATE); _removeErrorElement(state_select); addClassInElement(element, MANDATORY_FIELD_HIDE); } else { state_select.setAttribute(DATA_VALIDATE, REQUIRED); state_select.disabled = false; removeClassInElement(element, MANDATORY_FIELD_HIDE); } for(var i = 0; i < options.length; i++) { var option = options[i]; state_select.appendChild(option); } } function markAddressAsInComplete(e) { var is_change_clicked_from_billing_address = false; var element = (e && e.detail) ? e.detail.element : ""; if(element && element.hasAttribute(DATA_BILLING_CHANGE_ADDRESS)) { is_change_clicked_from_billing_address = true; } if(element && element.hasAttribute(DATA_PORTAL_USER_NEW_ADDRESS)) { location.reload(); return; } if(!$D.getById(PORTAL_EMAIL)) { replaceClassInElementFromDataAttribute(DATA_CONTAINER_NEW_ADDRESS, THEME_HIDE, THEME_SHOW); replaceClassInElementFromDataAttribute(DATA_CONTAINER_EXISTING_ADDRESS, THEME_SHOW, THEME_HIDE); replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_METHOD, THEME_SHOW, THEME_HIDE); replaceClassInElementFromDataAttribute(DATA_CONTAINER_REVIEW_ORDER, THEME_SHOW, THEME_HIDE); hideElementWithId(GST_FORM_IN_ADDRESS_LIST); hideElementWithId(TOGGLE_BILLING_SHIPPING_IN_LIST_CONTAINER); var toggle_billing_shipping = $D.getById(TOGGLE_BILLING_SHIPPING); if(toggle_billing_shipping && toggle_billing_shipping.checked) { hideElementWithId(BILLING_ADDRESS_HEADING); hideElementWithId(BILLING_ADDRESS); } else { showElementWithId(BILLING_ADDRESS_HEADING); showElementWithId(BILLING_ADDRESS); } if(is_change_clicked_from_billing_address) { var billing_address_heading = $D.getById(BILLING_ADDRESS_HEADING); if(billing_address_heading) { billing_address_heading.scrollIntoView(true); } } } else { replaceClassInElementFromDataAttribute(DATA_CONTAINER_ADDRESS_LIST, THEME_CHECKOUT_CHANGE_LIST, THEME_CHECKOUT_CHOOSE_LIST); replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_METHOD, THEME_SHOW, THEME_HIDE); replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_LIST, THEME_CHECKOUT_CHANGE_LIST, THEME_CHECKOUT_CHOOSE_LIST); replaceClassInElementFromDataAttribute(DATA_CONTAINER_REVIEW_ORDER, THEME_SHOW, THEME_HIDE); showElementWithId(GST_FORM_IN_ADDRESS_LIST); showElementWithId(TOGGLE_BILLING_SHIPPING_IN_LIST_CONTAINER); if(is_change_clicked_from_billing_address) { var data_billing_address_heading = $D.get("["+DATA_BILLING_ADDRESS_HEADING+"]"); if(data_billing_address_heading) { data_billing_address_heading.scrollIntoView(true); } } else { var data_shipping_address_heading = $D.get("["+DATA_SHIPPING_ADDRESS_HEADING+"]"); if(data_shipping_address_heading) { data_shipping_address_heading.scrollIntoView(true); } } } var shipping_address_heading_container = $D.get("["+DATA_SHIPPING_ADDRESS_HEADING+"]"); if(shipping_address_heading_container) { var shipping_address_heading_value = shipping_address_heading_container.getAttribute(DATA_SHIPPING_ADDRESS_HEADING); setInnerTextForElement(shipping_address_heading_container, shipping_address_heading_value); } checkoutStepsNav($D.get('['+ CHECKOUT_NAV_ADDRESS +']')); } function addNewAddressCancel(e) { replaceClassInElementFromDataAttribute(DATA_CONTAINER_NEW_ADDRESS, THEME_SHOW, THEME_HIDE); replaceClassInElementFromDataAttribute(DATA_CONTAINER_EXISTING_ADDRESS, THEME_HIDE, THEME_SHOW); } function selectAddress(e) { var element = e.detail ? e.detail.element : ""; var address_form = $D.getById(ADDRESS_FIELDS); hideElement(address_form); _removeErrorElement($D.getById(SHIPPING_ADDRESS_LIST_ERROR)); _removeErrorElement($D.getById(BILLING_ADDRESS_LIST_ERROR)); var continue_checkout_address_button = $D.get('['+ STORE_CHECKOUT_CONTINUE_ADDRESS +']'); setInnerHTMLForElement(continue_checkout_address_button, CONTINUE); if(element && element.type == "radio") { var target = DATA_CONTAINER_SHIPPING_ADDRESS_LIST; if(element.name == BILLING_SAVED_ADDRESS) { target = DATA_CONTAINER_BILLING_ADDRESS_LIST; } var previous_element = $D.get('['+target+'] .'+THEME_CHECKOUT_LIST_SELECTED); if(previous_element && previous_element != null){ removeClass(previous_element, THEME_CHECKOUT_LIST_SELECTED); } var current_element = element; if(current_element && current_element != null && current_element.parentNode) { addClass(current_element.parentNode.parentNode, THEME_CHECKOUT_LIST_SELECTED); } } } function addContentToAddressFields(content) { var address_form = $D.getById(ADDRESS_FIELDS); var json = JSON.parse(content); setInnerHTMLForElement(address_form, json.checkout_address); showElement(address_form); } function addAddressFormEvent(e) { var shipping_address_radio_group = document.getElementsByName(SHIPPING_SAVED_ADDRESS); if(!shipping_address_radio_group) { return; } for(var i = 1 ; i <= (shipping_address_radio_group.length); i++) { if( shipping_address_radio_group[i-1].type == "radio" ) { var shipping_radio_input = document.getElementById(SHIPPING_ADDRESS_SELECTION_+i); if(shipping_radio_input) { shipping_radio_input.checked = false; } } } var billing_address_radio_group = document.getElementsByName(BILLING_SAVED_ADDRESS); if(!billing_address_radio_group) { return; } for(var i = 1 ; i <= (billing_address_radio_group.length); i++) { if( billing_address_radio_group[i-1].type == "radio" ) { var billing_radio_input = document.getElementById(BILLING_ADDRESS_SELECTION_+i); if(billing_radio_input) { billing_radio_input.checked = false; } } } } function addAddressSuccess(e) { var response_text = e.detail ? e.detail.response_text : ""; _removeErrorElement($D.getById(SHIPPING_ADDRESS_LIST_ERROR)); _removeErrorElement($D.getById(BILLING_ADDRESS_LIST_ERROR)); replaceClassInElementFromDataAttribute(DATA_CONTAINER_NEW_ADDRESS, THEME_HIDE, THEME_SHOW); replaceClassInElementFromDataAttribute(DATA_CONTAINER_EXISTING_ADDRESS, THEME_SHOW, THEME_HIDE); replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_METHOD, THEME_SHOW, THEME_HIDE); replaceClassInElementFromDataAttribute(DATA_CONTAINER_REVIEW_ORDER, THEME_SHOW, THEME_HIDE); addContentToAddressFields(response_text); var portal_email_field = document.getElementById(PORTAL_EMAIL); var shipping_email_address_field = document.getElementById(SHIPPING_EMAIL_ADDRESSS); if(shipping_email_address_field) { shipping_email_address_field.value = portal_email_field ? portal_email_field.value : ""; shipping_email_address_field.disabled = true; } var portal_telephone_field = document.getElementById(PORTAL_TELEPHONE); var shipping_telephone_field = document.getElementById(SHIPPING_TELEPHONE); if(shipping_telephone_field) { shipping_telephone_field.value = portal_telephone_field ? portal_telephone_field.value : ""; } var billing_telephone_field = document.getElementById(BILLING_TELEPHONE); if(billing_telephone_field) { billing_telephone_field.value = portal_telephone_field ? portal_telephone_field.value : ""; } var continue_checkout_address_button = $D.get('['+ STORE_CHECKOUT_CONTINUE_ADDRESS +']'); setInnerHTMLForElement(continue_checkout_address_button, SAVE_AND_CONTINUE); } function toggleShippingAndBillingAddress(e) { var element = e.detail ? e.detail.element : ""; if (element && element.checked) { hideElementWithId(BILLING_ADDRESS); hideElementWithId(BILLING_ADDRESS_HEADING); } else { showElementWithId(BILLING_ADDRESS); showElementWithId(BILLING_ADDRESS_HEADING); } } function toggleShippingAndBillingAddressInList(e) { var element = e.detail ? e.detail.element : ""; if (element && element.checked) { hideElement($D.get("["+DATA_BILLING_ADDRESS_HEADING+"]")); hideElement($D.get("["+DATA_CONTAINER_BILLING_ADDRESS_LIST+"]")); } else { showElement($D.get("["+DATA_BILLING_ADDRESS_HEADING+"]")); showElement($D.get("["+DATA_CONTAINER_BILLING_ADDRESS_LIST+"]")); } } function showShippingStates(e) { var element = e.detail ? e.detail.element : ""; if (!element || element == "") { return; } var country_select = $D.getById(SHIPPING_ADDRESS_COUNTRY); if(!country_select) { return; } var state_select = $D.getById(SHIPPING_ADDRESS_STATES); if(!state_select) { return; } if(element.id == SHIPPING_ADDRESS_COUNTRY || state_select.selectedIndex == 0) { var options = createStateOptions(country_select); removeExistingStateOptions(state_select); addOptionsToStateSelect(state_select, options); } } function showBillingStates(e) { var element = e.detail ? e.detail.element : ""; if (!element || element == "") { return; } var country_select = $D.getById(BILLING_ADDRESS_COUNTRY); if(!country_select) { return; } var state_select = $D.getById(BILLING_ADDRESS_STATES); if(!state_select) { return; } if(element.id == BILLING_ADDRESS_COUNTRY || state_select.selectedIndex == 0) { var options = createStateOptions(country_select); removeExistingStateOptions(state_select); addOptionsToStateSelect(state_select, options); } } function errorInAddress(e) { var error_element = e.detail ? e.detail.error_element : ""; var scroll_view_element = e.detail ? e.detail.scroll_view_element : ""; addErrorMsg({ element : error_element, message : EMPTY_ERROR, scroll : true, scrollTopPosition : true, scrollViewElem : scroll_view_element }) } function errorInPhoneNumber(e) { var error_element = e.detail ? e.detail.error_element : ""; addErrorMsg({ element : error_element, message : TELEPHONE_NUMBER_ERROR }) } function errorInFormValidation(e) { var error_element = e.detail ? e.detail.error_element : ""; var error_message = e.detail ? e.detail.error_message : ""; addErrorMsg({ element : error_element, message : error_element.getAttribute(DATA_ERROR_MESSAGE) || error_message }) } function errorInAddressSelection(e) { var element = e.detail ? e.detail.element : ""; var target = (element == SHIPPING_ADDRESS) ? $D.getById(SHIPPING_ADDRESS_LIST_ERROR) : $D.getById(BILLING_ADDRESS_LIST_ERROR); addErrorMsg({ element : target, message : ADDRESS_NOT_SELECTED_ERROR, scroll : true, scrollTopPosition : true }) } function failureOnAddressSubmit(e) { var target = $D.getById(ADDRESS_FORM); var add_new_address_container = document.querySelector("."+THEME_CHECKOUT_ADD_NEW_ADDRESS); if(add_new_address_container && add_new_address_container.classList[1] == THEME_HIDE) { target = $D.getById(BILLING_ADDRESS_LIST_ERROR); } var json = e.detail ? e.detail.json : ""; var message = json && json.error && json.error.message ? json.error.message : ""; if(message.length == 0) { message = ADDRESS_ERROR; } addErrorMsg({ element : target, message : message }) } function addNewShippingAddress(shipping_address) { var newly_added_shipping_address_element = $D.getById(NEWLY_ADDED_SHIPPING_ADDRESS); if(newly_added_shipping_address_element && shipping_address) { setInnerTextForId(NEWLY_ADDED_SHIPPING_ADDRESS_FULL_NAME, shipping_address.first_name+" "+shipping_address.last_name); var reg_exp = new RegExp("\n", 'g'); var formatted_address = shipping_address.address.replace(reg_exp, " "); setInnerHTMLForId(NEWLY_ADDED_SHIPPING_ADDRESS_PARTIAL_ADDRESS, formatted_address); setInnerTextForId(NEWLY_ADDED_SHIPPING_ADDRESS_CITY, shipping_address.city); if(shipping_address.state != "") { var state_name = shipping_address.state; var state_element = document.querySelector("[value='"+ state_name +"']"); if(state_element) { state_name = state_element.innerText; } setInnerHTMLForId(NEWLY_ADDED_SHIPPING_ADDRESS_STATE, state_name + ", "); } else { setInnerTextForId(NEWLY_ADDED_SHIPPING_ADDRESS_STATE, ""); } setInnerTextForId(NEWLY_ADDED_SHIPPING_ADDRESS_POSTAL_CODE, shipping_address.postal_code); var country_name = shipping_address.country; var country_element = document.querySelector("[value='"+ country_name +"']"); if(country_element) { country_name = country_element.innerText; } setInnerTextForId(NEWLY_ADDED_SHIPPING_ADDRESS_COUNTRY, country_name); setInnerTextForId(NEWLY_ADDED_SHIPPING_ADDRESS_TELEPHONE, shipping_address.telephone); addClassInElement(newly_added_shipping_address_element, THEME_CHECKOUT_LIST_SELECTED); showElement(newly_added_shipping_address_element); } } function addNewBillingAddress(billing_address) { var newly_added_address_element = $D.getById(NEWLY_ADDED_BILLING_ADDRESS); if(newly_added_address_element && billing_address) { setInnerTextForId(NEWLY_ADDED_BILLING_ADDRESS_FULL_NAME, billing_address.first_name+" "+billing_address.last_name); var reg_exp = new RegExp("\n", 'g'); var formatted_address = billing_address.address.replace(reg_exp, " "); setInnerHTMLForId(NEWLY_ADDED_BILLING_ADDRESS_PARTIAL_ADDRESS, formatted_address); setInnerTextForId(NEWLY_ADDED_BILLING_ADDRESS_CITY, billing_address.city); if(billing_address.state != "") { var state_name = billing_address.state; var state_element = document.querySelector("[value='"+ state_name +"']"); if(state_element) { state_name = state_element.innerText; } setInnerHTMLForId(NEWLY_ADDED_BILLING_ADDRESS_STATE, state_name + ", "); } else { setInnerTextForId(NEWLY_ADDED_BILLING_ADDRESS_STATE, ""); } setInnerTextForId(NEWLY_ADDED_BILLING_ADDRESS_POSTAL_CODE, billing_address.postal_code); var country_name = billing_address.country; var country_element = document.querySelector("[value='"+ country_name +"']"); if(country_element) { country_name = country_element.innerText; } setInnerTextForId(NEWLY_ADDED_BILLING_ADDRESS_COUNTRY, country_name); setInnerTextForId(NEWLY_ADDED_BILLING_ADDRESS_TELEPHONE, billing_address.telephone); addClassInElement(newly_added_address_element, THEME_CHECKOUT_LIST_SELECTED); showElement(newly_added_address_element); } } function addressSuccess(e) { var json = e.detail ? e.detail.json : ""; var args = e.detail ? e.detail.args : ""; var shipping_content = e.detail ? e.detail.shippingMethodContent : ""; var order_summary_content = e.detail ? e.detail.orderSummaryContent : ""; replaceClassInElementFromDataAttribute(DATA_CONTAINER_EXISTING_ADDRESS, THEME_HIDE, THEME_SHOW); replaceClassInElementFromDataAttribute(DATA_CONTAINER_NEW_ADDRESS, THEME_SHOW, THEME_HIDE); _removeErrorElement($D.getById(ADDRESS_FORM)); hideElementWithId(GST_FORM_IN_ADDRESS_LIST); hideElementWithId(TOGGLE_BILLING_SHIPPING_IN_LIST_CONTAINER); if(args && args.data) { var shipping_address = args.data.shipping_address; var billing_address = args.data.billing_address; var address_id = args.data.address_id; var guest_saved_address_element = document.querySelectorAll('['+ GUEST_SAVED_ADDRESS +']'); for(var i = 0; i < guest_saved_address_element.length; i++) { guest_saved_address_element[i].remove(); } if(shipping_address) { var user_saved_address_element = document.querySelectorAll('['+ USER_SAVED_ADDRESS +']'); for(var i = 0; i < user_saved_address_element.length; i++) { user_saved_address_element[i].remove(); } addNewShippingAddress(shipping_address); } var toggle_billing_shipping_in_list = $D.getById(TOGGLE_BILLING_SHIPPING_IN_LIST); var toggle_billing_shipping = $D.getById(TOGGLE_BILLING_SHIPPING); if( (toggle_billing_shipping_in_list && toggle_billing_shipping_in_list.checked && address_id) || (toggle_billing_shipping && toggle_billing_shipping.checked) ) { var shipping_and_billing_address_heading_container = $D.get("["+DATA_SHIPPING_AND_BILLING_ADDRESS_HEADING+"]"); if(shipping_and_billing_address_heading_container) { var shipping_and_billing_address_heading_value = shipping_and_billing_address_heading_container.getAttribute(DATA_SHIPPING_AND_BILLING_ADDRESS_HEADING); setInnerTextForElement(shipping_and_billing_address_heading_container, shipping_and_billing_address_heading_value); hideElement($D.get("["+DATA_BILLING_ADDRESS_HEADING+"]")); hideElement($D.get("["+DATA_CONTAINER_BILLING_ADDRESS_LIST+"]")); } } else { addNewBillingAddress(billing_address); showElement($D.get("["+DATA_BILLING_ADDRESS_HEADING+"]")); showElement($D.get("["+DATA_CONTAINER_BILLING_ADDRESS_LIST+"]")); } } fixedCartfn(); setContentForShipping(shipping_content); setContentForOrderSummary(order_summary_content); markShippingAsInComplete(); } function changeAddress(e) { markAddressAsInComplete(e); } /* Methods related to address ends */ /* Methods related to shipping method begins */ function markShippingAsInComplete() { replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_METHOD, THEME_HIDE, THEME_SHOW); replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_LIST, THEME_CHECKOUT_CHANGE_LIST, THEME_CHECKOUT_CHOOSE_LIST); replaceClassInElementFromDataAttribute(DATA_CONTAINER_ADDRESS_LIST, THEME_CHECKOUT_CHOOSE_LIST, THEME_CHECKOUT_CHANGE_LIST); replaceClassInElementFromDataAttribute(DATA_CONTAINER_REVIEW_ORDER, THEME_SHOW, THEME_HIDE); checkoutStepsNav($D.get('['+ CHECKOUT_NAV_SHIPPING_METHODS +']')); } function setContentForShipping(content) { setContentToClass(SHIPPING_METHODS, content); } function selectShippingMethod(e) { var element = e.detail ? e.detail.element : ""; if(element && element.type == "radio") { var previous_element = $D.get('['+DATA_CONTAINER_SHIPPING_LIST+'] .'+THEME_CHECKOUT_LIST_SELECTED); if(previous_element && previous_element != null){ removeClass(previous_element, THEME_CHECKOUT_LIST_SELECTED); } var current_element = element; if(current_element && current_element != null && current_element.parentNode){ addClass(current_element.parentNode.parentNode, THEME_CHECKOUT_LIST_SELECTED); } _removeErrorElement($D.getById(SHIPPING_METHOD_ERROR_TARGET)); } } function errorInShippingMethod(e) { var error_message = e.detail ? e.detail.error_message : ""; if(!error_message || error_message == "") { error_message = SHIPPING_METHOD_ERROR; } var target = $D.getById(SHIPPING_METHOD_ERROR_TARGET); addErrorMsg({ element : target, message : error_message, scroll : true, scrollTopPosition : true }) } function shippingMethodSuccess(e) { var order_summary_content = e.detail ? e.detail.orderSummaryContent : ""; var order_review_content = e.detail ? e.detail.orderReviewContent : ""; replaceClassInElementFromDataAttribute(DATA_CONTAINER_SHIPPING_LIST, THEME_CHECKOUT_CHOOSE_LIST, THEME_CHECKOUT_CHANGE_LIST); _removeErrorElement($D.getById(SHIPPING_METHODS_FORM)); setContentToClass(ORDER_REVIEW, order_review_content); setContentForOrderSummary(order_summary_content); markOrderReviewAsInComplete(); } function changeShippingMethod(e) { fixedCartfn(); markShippingAsInComplete(); } /* Methods related to shipping method ends */ /* Methods related to order review begins */ function setContentForOrderReview(content) { setInnerHTMLForId(ORDER_REVIEW_CONTENT, content); } function markOrderReviewAsInComplete() { replaceClassInElementFromDataAttribute(DATA_CONTAINER_REVIEW_ORDER, THEME_HIDE, THEME_SHOW); showElementWithId(MOBILE_MAKE_PAYMENT_BUTTON); showElementWithId(MOBILE_TERMS_AND_CONDITION_CONTAINER); var payment_total_summary = $D.getById(PAYMENT_TOTAL_SUMMARY); var only_offline_payment_total = (payment_total_summary && payment_total_summary.hasAttribute(ONLY_OFFLINE_PAYMENT_TOTAL)) ? payment_total_summary.getAttribute(ONLY_OFFLINE_PAYMENT_TOTAL) : ""; if(only_offline_payment_total && only_offline_payment_total != "") { showElementWithId(OFFLINE_CHARGE); setInnerTextForId(PAYMENT_TOTAL_SUMMARY, only_offline_payment_total); } checkoutStepsNav($D.get('['+ CHECKOUT_NAV_REVIEW_ORDER +']')); } function toggleMakePayment(e) { var terms_checkbox = $D.getById(TERMS_AND_CONDITION); if(!terms_checkbox) { return; } if(terms_checkbox.checked) { $D.getById(MAKE_PAYMENT_BUTTON).disabled = false; } else { $D.getById(MAKE_PAYMENT_BUTTON).disabled = true; } } function toggleMobileMakePayment(e) { var mobile_terms_checkbox = $D.getById(MOBILE_TERMS_AND_CONDITION); if(!mobile_terms_checkbox) { return; } if(mobile_terms_checkbox.checked) { $D.getById(MOBILE_MAKE_PAYMENT_BUTTON).disabled = false; } else { $D.getById(MOBILE_MAKE_PAYMENT_BUTTON).disabled = true; } } function toggleOnlineOfflinePayment(e) { var payment_button = $D.getById(MAKE_PAYMENT_BUTTON); var mobile_payment_button = $D.getById(MOBILE_MAKE_PAYMENT_BUTTON); var i18n_value = payment_button.getAttribute(DATA_I18N_VALUE).split("-"); var element = e.detail ? e.detail.element : ""; var element_id = element ? element.id : ""; if(element_id.indexOf('offline') != -1) { setInnerTextForId(MAKE_PAYMENT_BUTTON, i18n_value[0]); setInnerTextForId(MOBILE_MAKE_PAYMENT_BUTTON, i18n_value[0]); showElementWithId(OFFLINE_CHARGE); showElementWithId(OFFLINE_PAYMENT_INFO); var offline_data = element.getAttribute(DATA_CHARGE_INFO).split("-"); setInnerTextForId(OFFLINE_CHARGE_NAME, offline_data[0]); setInnerTextForId(OFFLINE_CHARGE_AMOUNT, offline_data[1]); setInnerTextForId(OFFLINE_CHARGE_AMOUNT_SUMMARY, offline_data[1]); setInnerTextForId(PAYMENT_TOTAL_SUMMARY, offline_data[2]); } else { setInnerTextForId(MAKE_PAYMENT_BUTTON, i18n_value[1]); setInnerTextForId(MOBILE_MAKE_PAYMENT_BUTTON, i18n_value[1]); hideElementWithId(OFFLINE_CHARGE); hideElementWithId(OFFLINE_PAYMENT_INFO); setInnerTextForId(PAYMENT_TOTAL_SUMMARY, element.getAttribute(DATA_PAYMENT_TOTAL)); } payment_button.setAttribute(DATA_HREF, element.getAttribute(DATA_PAYMENT_URL)); mobile_payment_button.setAttribute(DATA_HREF, element.getAttribute(DATA_PAYMENT_URL)); } /* Methods related to order review ends */ /* Methods related to order summary begins */ function setContentForOrderSummary(content) { setInnerHTMLForId(ORDER_SUMMARY_CONTENT, content); showOrHideOrderSummaryInfo(); } function showOrHideOrderSummaryInfo() { /* Show or hide Tax, Shipping info in order summary container */ var shipping_sub_amount_span = $D.getById(SHIPPING_SUB_AMOUNT_SPAN); if(shipping_sub_amount_span) { showElementWithId(ORDER_SUMMARY_DETAILS); showElementWithId(TAX_CONTAINER); showElementWithId(SHIPPING_AMOUNT_CONTAINER); } else { hideElementWithId(SHIPPING_AMOUNT_CONTAINER); if(!$D.getById(TAX_SUB_AMOUNT_SPAN)) { hideElementWithId(TAX_CONTAINER); hideElementWithId(ORDER_SUMMARY_DETAILS); } } } function showOrderSummaryDetails(e) { var show_hide_details_element = $D.getById(ORDER_SUMMARY_DETAILS); var tax_amount_span = $D.getById(TAX_AMOUNT_SPAN); var shipping_amount_span = $D.getById(SHIPPING_AMOUNT_SPAN); var offline_amount_span = $D.getById(OFFLINE_CHARGE_AMOUNT_SUMMARY); // Handled toggling of hide & show using classes if(show_hide_details_element && tax_amount_span && shipping_amount_span) { var i18n_value = show_hide_details_element.getAttribute(DATA_I18N_VALUE).split("-"); if(show_hide_details_element.innerText == i18n_value[0]) { setInnerTextForElement(show_hide_details_element, i18n_value[1]); if($D.getById(TAX_SUB_AMOUNT_SPAN)) { hideElement(tax_amount_span); } if($D.getById(SHIPPING_SUB_AMOUNT_SPAN)) { hideElement(shipping_amount_span); } hideElement(offline_amount_span); } else { setInnerTextForElement(show_hide_details_element, i18n_value[0]); showElement(tax_amount_span); showElement(shipping_amount_span); showElement(offline_amount_span); } } var order_details_element = $D.getByClass(THEME_SHOW_ORDER_DETAILS)[0]; if(order_details_element && order_details_element.parentNode && order_details_element.parentNode.parentNode) { order_details_element.parentNode.parentNode.classList.toggle(THEME_SHOW_DETAILS); } } function setOrderReviewAndSummary(e) { var order_summary_content = e.detail ? e.detail.orderSummaryContent : ""; var order_review_content = e.detail ? e.detail.orderReviewContent : ""; setContentForOrderSummary(order_summary_content); setContentForOrderReview(order_review_content); _removeErrorElement($D.getById(COUPON_FORM)); setInnerHTMLForId(THEME_COUPON_ERROR, ""); removeClass($D.getById(THEME_COUPON_ERROR), ACTIVE); var theme_cart_coupon_applied = $D.getByClass(THEME_CART_DETAILS_COUPON_APPLIED)[0]; var theme_cart_coupon_enter = $D.getByClass(THEME_CART_DETAILS_COUPON_ENTER)[0]; if($D.getById(COUPON_CODE).value == '') { removeClassInElement(theme_cart_coupon_applied, THEME_COUPON_ACTIVE); addClassInElement(theme_cart_coupon_enter, THEME_COUPON_ACTIVE); } else { removeClassInElement(theme_cart_coupon_enter, THEME_COUPON_ACTIVE); addClassInElement(theme_cart_coupon_applied, THEME_COUPON_ACTIVE); } } /* Methods related to order summary ends */ /* Methods related to offline payments begins */ function failureOnOfflinePaymentSubmit(e) { var target = $D.getById(MAKE_PAYMENT_ERROR_CONTAINER); var error_message = e.detail ? e.detail.error_message : ""; addErrorMsg({ element : target, message : error_message, scroll : true, scrollTopPosition : true }) } function offlinePaymentSuccess(e) { var redirect_url = e.detail ? e.detail.redirect_url : ""; if(redirect_url != "") { window.location.href = redirect_url; } } /* Methods related to offline payments ends */ /* Methods related to coupons begins */ function errorInCoupon(e) { setInnerHTMLForId(THEME_COUPON_ERROR, COUPON_CODE_EMPTY_ERROR); addClassInElement($D.getById(THEME_COUPON_ERROR), ACTIVE); } function failureOnCouponSubmit(e) { var error_message = e.detail ? e.detail.error_message : ""; setInnerHTMLForId(THEME_COUPON_ERROR, error_message); addClassInElement($D.getById(THEME_COUPON_ERROR), ACTIVE); } function couponSuccess(e) { setOrderReviewAndSummary(e); } /* Methods related to coupons ends */ function loadErrorMessagesFromFace() { /* Get error messages from face */ var error_validation_messages = $D.getById(ERROR_VALIDATION_MESSAGES); if(error_validation_messages) { var empty_error = $D.getById(EMPTY_ERROR_CONTAINER); if(empty_error) { EMPTY_ERROR = empty_error.getAttribute(DATA_ERROR_MESSAGE); } var address_error = $D.getById(ADDRESS_ERROR_CONTAINER); if(address_error) { ADDRESS_ERROR = address_error.getAttribute(DATA_ERROR_MESSAGE); } var address_not_selected_error = $D.getById(ADDRESS_NOT_SELECTED_ERROR_CONTAINER); if(address_not_selected_error) { ADDRESS_NOT_SELECTED_ERROR = address_not_selected_error.getAttribute(DATA_ERROR_MESSAGE); } var shipping_method_error = $D.getById(SHIPPING_METHOD_ERROR_CONTAINER); if(shipping_method_error) { SHIPPING_METHOD_ERROR = shipping_method_error.getAttribute(DATA_ERROR_MESSAGE); } var telephone_number_error = $D.getById(TELEPHONE_NUMBER_ERROR_CONTAINER); if(telephone_number_error) { TELEPHONE_NUMBER_ERROR = telephone_number_error.getAttribute(DATA_ERROR_MESSAGE); } var coupon_code_empty_error = $D.getById(COUPON_CODE_EMPTY_ERROR_CONTAINER); if(coupon_code_empty_error) { COUPON_CODE_EMPTY_ERROR = coupon_code_empty_error.getAttribute(DATA_ERROR_MESSAGE); } } } function loadI18NMessagesFromFace() { /* Get i18n messages from face */ var checkout_i18n_messages = $D.getById(I18N_MESSAGES); if(checkout_i18n_messages) { var i18n_continue = $D.getById(I18N_CONTINUE_CONTAINER); if(i18n_continue) { CONTINUE = i18n_continue.getAttribute(DATA_MESSAGE); } var i18n_save_and_continue = $D.getById(I18N_SAVE_AND_CONTINUE_CONTAINER); if(i18n_save_and_continue) { SAVE_AND_CONTINUE = i18n_save_and_continue.getAttribute(DATA_MESSAGE); } } } function checkoutOnLoad(e) { if( $D.hasClass($D.getById(THEME_CHECKOUT_WRAP), THEME_CHECKOUT_WRAP_VISIBLE) ) { fixedCartfn(); } if($D.hasClass($D.get("["+DATA_CONTAINER_SHIPPING_METHOD+"]"), THEME_HIDE)) { showElementWithId(GST_FORM_IN_ADDRESS_LIST); showElementWithId(TOGGLE_BILLING_SHIPPING_IN_LIST_CONTAINER); } else { hideElementWithId(GST_FORM_IN_ADDRESS_LIST); hideElementWithId(TOGGLE_BILLING_SHIPPING_IN_LIST_CONTAINER); var toggle_billing_shipping_in_list = $D.getById(TOGGLE_BILLING_SHIPPING_IN_LIST); var toggle_billing_shipping = $D.getById(TOGGLE_BILLING_SHIPPING); if( (toggle_billing_shipping_in_list && toggle_billing_shipping_in_list.checked) || (toggle_billing_shipping && toggle_billing_shipping.checked) ) { var shipping_and_billing_address_heading_container = $D.get("["+DATA_SHIPPING_AND_BILLING_ADDRESS_HEADING+"]"); if(shipping_and_billing_address_heading_container) { var shipping_and_billing_address_heading_value = shipping_and_billing_address_heading_container.getAttribute(DATA_SHIPPING_AND_BILLING_ADDRESS_HEADING); setInnerTextForElement(shipping_and_billing_address_heading_container, shipping_and_billing_address_heading_value); hideElement($D.get("["+DATA_BILLING_ADDRESS_HEADING+"]")); hideElement($D.get("["+DATA_CONTAINER_BILLING_ADDRESS_LIST+"]")); } } } if($D.hasClass($D.get("["+DATA_CONTAINER_REVIEW_ORDER+"]"), THEME_HIDE)) { hideElementWithId(MOBILE_MAKE_PAYMENT_BUTTON); hideElementWithId(MOBILE_TERMS_AND_CONDITION_CONTAINER); } else { showElementWithId(MOBILE_MAKE_PAYMENT_BUTTON); showElementWithId(MOBILE_TERMS_AND_CONDITION_CONTAINER); var payment_total_summary = $D.getById(PAYMENT_TOTAL_SUMMARY); var only_offline_payment_total = (payment_total_summary && payment_total_summary.hasAttribute(ONLY_OFFLINE_PAYMENT_TOTAL)) ? payment_total_summary.getAttribute(ONLY_OFFLINE_PAYMENT_TOTAL) : ""; if(only_offline_payment_total && only_offline_payment_total != "") { showElementWithId(OFFLINE_CHARGE); setInnerTextForId(PAYMENT_TOTAL_SUMMARY, only_offline_payment_total); } } loadErrorMessagesFromFace(); loadI18NMessagesFromFace(); showOrHideOrderSummaryInfo(); checkoutStepsNav($D.get("."+THEME_CHECKOUT_STEPS+" ."+ACTIVE)); } function setContentToClass(class_id, content) { var content_place_holders = $D.getByClass(class_id); for (var i = 0; i < content_place_holders.length; i++) { var content_place_holder = content_place_holders[i]; setInnerHTMLForElement(content_place_holder, content); } } function showElementWithId(id) { showElement($D.getById(id)); } function showElement(element) { if(element) { element.style.display = ""; } } function hideElementWithId(id) { hideElement($D.getById(id)); } function hideElement(element) { if(element) { element.style.display = "none"; } } function setInnerTextForId(id, value) { setInnerTextForElement($D.getById(id), value); } function setInnerTextForElement(element, value) { if(element) { element.innerText = value; } } function setInnerHTMLForId(id, value) { setInnerHTMLForElement($D.getById(id), value); } function setInnerHTMLForElement(element, value) { if(element) { element.innerHTML = value; } } function addClassInElement(element, class_name) { if(element) { element.classList.add(class_name); } } function replaceClassInElementFromDataAttribute(data_attribute, existing_class_name, to_be_replaced_class_name) { var element = $D.get('['+ data_attribute +']'); replaceClassInElement(element, existing_class_name, to_be_replaced_class_name); } function replaceClassInElement(element, existing_class_name, to_be_replaced_class_name) { if(element) { element.classList.replace(existing_class_name, to_be_replaced_class_name); } } function removeClassInElement(element, class_name) { if(element) { element.classList.remove(class_name); } } /** * add element error message. and scroll to error element of current postion * * @param data Object * element is String * message is String * scroll is boolean (optional) * scrollTopPosition is boolean (option) */ function addErrorMsg(data) { //Incase element is undefined, then error message cannot be shown if(!data.element) { return; } if(data.scroll) { /** * Browser scrollbar scroll to element view area * reference ht tps://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView */ var target_element = data.scrollViewElem || data.element; target_element.scrollIntoView && target_element.scrollIntoView(data.scrollTopPosition); } //need to check error is already added to this element if(_hasError(data.element)) { return; } data.element.onchange = _removeError var span_element = document.createElement('span'); span_element.className = ERROR_MESSAGE; $D.css(span_element, 'clear', 'both'); $D.css(span_element, 'display', 'block'); $D.css(span_element, 'padding', '7px 0'); var content = ''+ data.message +''; setInnerHTMLForElement(span_element, content); if(data.element.parentNode) { data.element.parentNode.appendChild(span_element); } } function _hasError(element) { if(element.parentNode) { return $D.getByClass(ERROR_MESSAGE, element.parentNode).length > 0; } return false; } function _removeError() { _removeErrorElement(this); } function _removeErrorElement(element) { if(_hasError(element) && element.parentNode){ var error_element = $D.getByClass(ERROR_MESSAGE, element.parentNode); for(var i = 0, length = error_element.length; i < length; i++) { if(error_element[i]) { $D.remove(error_element[i]); } } } } // Throttle function function _throttle(delay, callback) { var previous_call = new Date().getTime(); return function() { var time = new Date().getTime(); if((time - previous_call) >= delay) { previous_call = time; callback.apply(null, arguments); } }; } var checkout_nav_current_element, checkout_nav_previous_element; function checkoutStepsNav(active_element) { var target, target_parent, target_left, target_parent_left, active_bar; target = active_element; target_parent = target.parentNode.parentNode; target_left = target.getBoundingClientRect().left; target_parent_left = target_parent.getBoundingClientRect().left; checkout_nav_current_element = target; active_bar = $D.get('.'+THEME_CHECKOUT_STEPS+' .'+THEME_ACTIVE_BAR); active_bar.style.width = checkout_nav_current_element.clientWidth + "px"; active_bar.style.left = target_left - target_parent_left + "px"; if(checkout_nav_previous_element == undefined) { checkout_nav_previous_element = checkout_nav_current_element; } else if(checkout_nav_previous_element != checkout_nav_current_element) { removeClassInElement(checkout_nav_previous_element, ACTIVE); checkout_nav_previous_element = checkout_nav_current_element; } addClassInElement(target, ACTIVE); } /* Sticky sidenav begins */ function fixedCartfn() { var mq = window.matchMedia("(min-width: 768px)"); if(mq.matches) { document.addEventListener('scroll', _throttle(10, stickyCart)); } } function stickyCart() { var header = $D.get('.'+THEME_HEADER); var header_height = $D.hasClass(header, THEME_HEADER_FIXED) ? header.clientHeight : 0; var fixed_cart = document.querySelector('.'+THEME_CART_DETAILS_INNER); var fixed_cart_parent = fixed_cart.parentNode; var fixed_cart_parent_rectangle; fixed_cart_parent_rectangle = fixed_cart_parent.getBoundingClientRect(); fixed_cart.style.width = fixed_cart.clientWidth + 'px'; var height = fixed_cart.clientHeight + 'px'; if(fixed_cart_parent_rectangle.top >= header_height + 50) { fixed_cart.style.position = 'relative'; fixed_cart.style.top = 'auto'; } else if( (fixed_cart_parent_rectangle.top + fixed_cart_parent.scrollHeight) - fixed_cart.scrollHeight - 70 - header_height <= 30) { fixed_cart.style.position = 'absolute'; fixed_cart.style.bottom = '30px'; fixed_cart.style.top = 'auto'; } else { fixed_cart.style.position = 'fixed'; fixed_cart.style.top = header_height + 80 + 'px'; fixed_cart.style.bottom = 'auto'; } } /* Sticky sidenav end */ document.addEventListener("zs-event-guest-login-success", guestLoginSuccess, false); document.addEventListener("zs-event-add-new-address-cancel", addNewAddressCancel, false); document.addEventListener("zs-event-select-address", selectAddress, false); document.addEventListener("zs-event-add-address-form", addAddressFormEvent, false); document.addEventListener("zs-event-add-address-success", addAddressSuccess, false); document.addEventListener("zs-event-toggle-shipping-billing-address", toggleShippingAndBillingAddress, false); document.addEventListener("zs-event-toggle-shipping-billing-address-in-list", toggleShippingAndBillingAddressInList, false); document.addEventListener("zs-event-show-shipping-states", showShippingStates, false); document.addEventListener("zs-event-show-billing-states", showBillingStates, false); document.addEventListener("zs-event-address-error", errorInAddress, false); document.addEventListener("zs-event-phone-number-error", errorInPhoneNumber, false); document.addEventListener("zs-event-form-validation-error", errorInFormValidation, false); document.addEventListener("zs-event-address-selection-error", errorInAddressSelection, false); document.addEventListener("zs-event-address-submit-failure", failureOnAddressSubmit, false); document.addEventListener("zs-event-address-success", addressSuccess, false); document.addEventListener("zs-event-change-address", changeAddress, false); document.addEventListener("zs-event-shipping-method-selected", selectShippingMethod, false); document.addEventListener("zs-event-shipping-method-error", errorInShippingMethod, false); document.addEventListener("zs-event-shipping-method-success", shippingMethodSuccess, false); document.addEventListener("zs-event-change-shipping-method", changeShippingMethod, false); document.addEventListener("zs-event-toggle-make-payment", toggleMakePayment, false); document.addEventListener("zs-event-toggle-mobile-make-payment", toggleMobileMakePayment, false); document.addEventListener("zs-event-toggle-online-offline-payment", toggleOnlineOfflinePayment, false); document.addEventListener("zs-event-coupon-error", errorInCoupon, false); document.addEventListener("zs-event-coupon-submit-failure", failureOnCouponSubmit, false); document.addEventListener("zs-event-coupon-success", couponSuccess, false); document.addEventListener("zs-event-order-summary-details-show", showOrderSummaryDetails, false); document.addEventListener("zs-event-offline-payment-submit-failure", failureOnOfflinePaymentSubmit, false); document.addEventListener("zs-event-offline-payment-success", offlinePaymentSuccess, false); document.addEventListener("zs-event-checkout-onload", checkoutOnLoad, false);