Sexy Lingerie

ADNAA


ADNAA 30){ this_header.addClass(“on-stick-top”); }else{ this_header.removeClass(“on-stick-top”); } $(window).scroll(function(){ var winScroll = $(this).scrollTop(), this_header = $(“header.header-bar”); // Header bar if(winScroll > 30){ this_header.addClass(“on-stick-top”); }else{ this_header.removeClass(“on-stick-top”); } }); }); ]]> 400){ this_el.fadeIn(); }else{ this_el.fadeOut(); } $(“#scrollTopButton”).click(function() { $(‘html,body’).animate({ scrollTop: 0 }); }); $(window).scroll(function(){ var winScroll = $(this).scrollTop(); // Header bar if(winScroll > 400){ this_el.fadeIn(); }else{ this_el.fadeOut(); } }); }); ]]> { const default_currency = getCookie(“currency”) const customer_id = window.__st.cid const template = window.__st.p onPageView() //———————–// // Configs // //———————–// window.dataLayer = window.dataLayer || [] Array.prototype.last = Array.prototype.last || function() { return this[this.length – 1] || null } Array.prototype.first = Array.prototype.first || function() { return this[0] || null } //———————-// // Triggers // //———————-// const XHR = window.XMLHttpRequest function xhr() { const xhr = new XHR() xhr.addEventListener(“readystatechange”, function() { if(xhr.readyState != 4) return try { const response_url = xhr.responseURL if (response_url.includes(“cart/add”)) { global_cart = JSON.parse(xhr.response) onCartItemsAdded() // ok } if (response_url.includes(“cart/remove_item_quantity”)) { global_cart = JSON.parse(xhr.response) onCartItemRemoved() // ok } if (response_url.includes(“new_cart?retrieve=true”)) { result = JSON.parse(xhr.response) if (result.cart) { global_cart = result.cart } } } catch(e) { console.error(e) } }, false); return xhr } window.XMLHttpRequest = xhr switch(template) { case ‘cart’: onCartView() // ok break case ‘product’: onProductView() // ok break case ‘collection’: onCollectionView() // ok break case ‘blog’: onBlogView() break case ‘article’: onArticleView() break case ‘payment_completed’: onOrderPlace() break case ‘payment_fail’: onPaymentFail() break } // selector(‘form[action=”/checkout/payments”]’).addEventListener(“submit”, onPaymentInfoAdded(selector(‘form[action=”/checkout/payments”]’))) if (selector(‘form[action=”/checkout/detail”]’)) selector(‘form[action=”/checkout/detail”]’).addEventListener(“submit”, ()=>{onShippingInfoAdded(selector(‘form[action=”/checkout/detail”]’))}) // ok if (selector(‘form[action=”/checkout/shipping”]’)) selector(‘form[action=”/checkout/shipping”]’).addEventListener(“submit”, ()=>{onShippingInfoAdded(selector(‘form[action=”/checkout/shipping”]’))}) // ok if (selector(‘form[action=”/account/register”]’)) selector(‘form[action=”/account/register”]’).addEventListener(“submit”, onSignUp) // ok if (selector(‘form[action=”/account/login”]’)) selector(‘form[action=”/account/login”]’).addEventListener(“submit”, onLogin) // ok if (selector(‘form[action=”/search”]’)) selector(‘form[action=”/search”]’).addEventListener(“submit”, onProductSearch()) // ok if (selector(‘#line-login-btn’)) selector(‘#line-login-btn’).addEventListener(‘click’, onLineLogin) // ok if (selector(‘#PlaceOrder’)) selector(‘#PlaceOrder’).addEventListener(“click”, ()=>{onCheckoutComplete(selector(‘form[action=”/checkout/payments”]’))}); // ok if (selector(‘#add_wishlist’)) selector(‘#add_wishlist’).addEventListener(“click”, onWishlistItemAdded) // ok if (selectorAll(‘a[href=”/account/logout”]’)) selectorAll(‘a[href=”/account/logout”]’).forEach(logoutButton => logoutButton.addEventListener(“click”, onLogout)) // ok if (selector(‘.CartDrawerTrigger.cart-page-link’)) selector(‘.CartDrawerTrigger.cart-page-link’).addEventListener(“click”, onCartView) // ok if (selector(‘.CartDrawerTrigger.cart-page-link.mobile-cart-page-link’)) selector(‘.CartDrawerTrigger.cart-page-link.mobile-cart-page-link’).addEventListener(“click”, onCartView) // ok if (selectorAll(‘a[class^=”share-“]’)) selectorAll(‘a[class^=”share-“]’).forEach(shareButton => shareButton.addEventListener(“click”, ()=>{onProductShare(shareButton)}) ) // ok if (selectorAll(‘[name$=”checkout”]’)) selectorAll(‘[name$=”checkout”]’).forEach(checkoutButton => checkoutButton.addEventListener(“click”, onCheckoutInitiate)) // For append elements const bodyMutationObserver = new MutationObserver(() => { if (selector(‘#form__spc #PlaceOrder’)) selector(‘#form__spc #PlaceOrder’).addEventListener(“click”, onSinglePageCheckout) // ok if (selectorAll(‘[name$=”checkout”]’)) selectorAll(‘[name$=”checkout”]’).forEach(checkoutButton => checkoutButton.addEventListener(“click”, onCheckoutInitiate)) }); bodyMutationObserver.observe(selector(“body”), {subtree: true, childList: true}); //——————————// // Event handlers // //——————————// function onPageView() { EasyStore.Event.dispatch(‘pages/viewed’, { page: { type: template, title: document.title, description: selector(‘meta[name=description]’) ? selector(‘meta[name=description]’).getAttribute(‘content’) : null, url: location.href, } }) } function onSignUp() { const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&”*+/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/) const phone_regex = new RegExp(/^(+?6?01)[0-46-9]-*[0-9]{7,8}$/) const email_or_phone = selector(`input[name=”customer[email_or_phone]”]`).value.replace(“+”, “”).replace(/s+/, “”) let data = {} if (email_regex.test(email_or_phone)) { data.method = ’email’ data.email = email_or_phone } if (phone_regex.test(email_or_phone)) { data.method = “phone” data.phone = email_or_phone } if (!data.method) return EasyStore.Event.dispatch(‘customers/signup’, data) } function onLogin() { const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&”*+/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/) const phone_regex = new RegExp(/^(+?6?01)[0-46-9]-*[0-9]{7,8}$/) const email_or_phone = selector(`input[name=”customer[email_or_phone]”]`).value.replace(“+”, “”).replace(/s+/, “”) let data = {} if (email_regex.test(email_or_phone)) { data.method = ’email’ data.email = email_or_phone } if (phone_regex.test(email_or_phone)) { data.method = “phone” data.phone = email_or_phone } if (!data.method) return EasyStore.Event.dispatch(‘customers/login’, data) } function onLineLogin() { EasyStore.Event.dispatch(‘customers/login’, { method: ‘line’ }) } function onLogout() { EasyStore.Event.dispatch(‘customers/logout’, { customer_id }) } function onBlogView() { const blog = “” EasyStore.Event.dispatch(‘blogs/viewed’, { blog }) } function onArticleView() { const article = “” EasyStore.Event.dispatch(‘articles/viewed’, { article }) } function onProductSearch() { const query = selector(‘input[name=q]’).value if (!query) return EasyStore.Event.dispatch(‘products/searched’, { query }) } function onCollectionView() { const collection = {“id”:1947177,”handle”:”feature-on-homepage”,”name”:”Feature on homepage”,”title”:”Feature on homepage”,”url”:”/collections/feature-on-homepage”,”description”:””,”content”:””,”featured_image”:{“src”:null},”products”:[],”sort_by”:”featured”} EasyStore.Event.dispatch(‘collections/viewed’, { collection }) } function onProductView() { const product = “” EasyStore.Event.dispatch(“products/viewed”, { product }) } function onProductShare(el) { const product = “” const channel = el.getAttribute(“class”).split(“-“).last() EasyStore.Event.dispatch(‘products/shared’, { product, channel }) } function onWishlistItemAdded() { let product = “” const quantity = selector(“#Quantity”).value EasyStore.Event.dispatch(‘wishlists/item_added’, { product }) } async function onCartItemsAdded() { const cart = await getCart() if(cart && cart.items != undefined && cart.items.length > 0) { EasyStore.Event.dispatch(‘carts/item_added’, { cart }) } } async function onCartView() { const cart = await getCart() EasyStore.Event.dispatch(‘carts/viewed’, { cart }) } async function onCartItemRemoved() { const cart = await getCart() cart.items = [] if(cart) { EasyStore.Event.dispatch(‘carts/item_removed’, { cart }) } } async function onCheckoutInitiate() { const cart = await getCart() EasyStore.Event.dispatch(‘checkouts/initiated’, { cart }) } async function onShippingInfoAdded(form) { let checkout = getCheckout() let form_data = {} new FormData(form).forEach((value, key) => form_data[key] = value) let shipping_tier = null if (form_data.type && form_data.type.startsWith(“r_pickup”)) { shipping_tier = `Pickup – ${form_data.pick_location}` } if (form_data.s_id) { shipping_tier = selector(`input[id=’`+form_data.s_id+`’]`).getAttribute(“data-shipping-name”) } if (!shipping_tier) return EasyStore.Event.dispatch(‘checkouts/shipping_info_added’, { checkout, shipping_tier }) } async function onPaymentInfoAdded(form) { let checkout = getCheckout() let payment_type = new FormData(form).get(‘payment_method’) EasyStore.Event.dispatch(“checkouts/payment_info_added”, { checkout, payment_type }) } async function onOrderPlace() { let cart_token = getCookie(“cart_js”) let previous_cart_token = getCookie(“previous_cart_ga4_js”) if (previous_cart_token && previous_cart_token == cart_token) { // Prevent duplicate purchase tracking return } let order = getOrder() EasyStore.Event.dispatch(‘orders/placed’, { order }) if(order.is_manual_payment) { EasyStore.Event.dispatch(‘orders/purchased’, { order }) } const last_transaction = order.transactions.last() if (last_transaction.status) { EasyStore.Event.dispatch(‘orders/purchased’, { order }) EasyStore.Event.dispatch(‘payments/captured’, { order }) } } async function onPaymentFail() { const order = getOrder() EasyStore.Event.dispatch(‘payments/failed’, { order }) } async function onCheckoutComplete(form) { onPaymentInfoAdded(form) const checkout = getCheckout() EasyStore.Event.dispatch(‘checkouts/completed’, { checkout }) } async function onSinglePageCheckout() { // let checkout = $(“[data-app-checkout]”).data(“app-checkout”) let checkout = getCheckout() // const payment_type = selector(“#app_spc_payment_method”).find(`[class*=”label-content”]`).first().find(“b”).first().text() const payment_type = selector(“#app_spc_payment_method”).getElementsByClassName(‘label-content’)[0].getElementsByTagName(‘b’)[0].innerHTML const shipping_method = selector(“#delivery_method”).value let shipping_tier = null let app_spc_customer_info_label = selector(“#app_spc_customer_info”).getElementsByClassName(‘label-content’) if (shipping_method == “shipping”) { shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length – 1].getElementsByTagName(‘b’)[0].innerHTML } if (shipping_method == “pickup”) { shipping_tier = app_spc_customer_info_label[0].innerHTML } if (shipping_tier) { EasyStore.Event.dispatch(‘checkouts/shipping_info_added’, { checkout, shipping_tier, }) } if (payment_type) { EasyStore.Event.dispatch(‘checkouts/payment_info_added’, { checkout, payment_type, }) } EasyStore.Event.dispatch(‘checkouts/completed’, { checkout }) } }) //———————–// // Functions // //———————–// function getCookie(name) { name += “=” decodedCookie = decodeURIComponent(document.cookie) ca = decodedCookie.split(“;”) for(i = 0; i { if(typeof price === ‘string’) { return parseFloat(price.split(‘,’).join(”)) } return price } const getCart = async (latest = false) => { let cart = global_cart || {“item_count”:0,”total_price”:0,”announcements”:[]} const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length) if(latest || cart_invalid) { let response = await fetch(‘/new_cart?retrieve=true’, {method: ‘GET’,headers: {‘Content-Type’: ‘application/json’}}) cart = await response.json() } cart.items = cart.items || [] return mapCart(cart) } const getCheckout = () => mapCheckout(global_cart || {“item_count”:0,”total_price”:0,”announcements”:[]}) const getOrder = () => mapOrder(global_cart || {“item_count”:0,”total_price”:0,”announcements”:[]}) //———————–// // Mappers // //———————–// const fallbackAttribute = (object, attribute) => { if(!Array.isArray(attribute)) { attribute = [attribute] } let final_value = null do { final_value = object[attribute.shift()] } while(!final_value && attribute.length) return final_value } const map = (object, mapper) => { const newObject = {} for(const key in mapper) { // Handle different keys between new and old format newObject[key] = fallbackAttribute(object, mapper[key]) // Cast price to float if(newObject[key] && [‘price’, ‘amount’, ‘discount’, ‘discounts’].some(x => key.endsWith(x))) { newObject[key] = parsePrice(newObject[key]) } if(newObject[key] === undefined) { delete newObject[key] } } return newObject } const mapCart = cart => { const oldCart = cart const mapper = { id: ‘id’, currency: ‘currency’, item_count: ‘item_count’, items: ‘items’, total_price: ‘total_price’, latest_items: ‘latest_items’ } cart = map(cart, mapper) const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || [])) cart.discount_applications = discounts.map(discount => ({ title: discount.voucher_code || null, value: parsePrice(discount.amount), })) cart.original_total_price = cart.items.length ? cart.items .map(item => item.original_price) .reduce((sum, price) => sum + price) : 0 cart.total_discount = cart.discount_applications.length ? cart.discount_applications .map(discount => parsePrice(discount.value)) .reduce((sum, value) => sum + value) : 0 cart.items = cart.items.map(item => mapLineItem(item)) return cart } const mapCheckout = checkout => { const mapper = { note: ‘note’, attributes: ‘note_attributes’, billing_address: ‘billing_address’, currency: ‘currency’, customer_id: ‘customer_id’, discounts_amount: ‘total_discount’, id: ‘id’, line_items: ‘order_item’, order_number: ‘order_number’, shipping_address: ‘shipping_address’, shipping_price: ‘shipping_tax’, shipping_method: ‘shipping_method_name’, tax_price: ‘total_tax’, } checkout = map(checkout, mapper) checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required) checkout.line_items = checkout.line_items.map(item => mapLineItem(item)) return checkout } const mapOrder = order => { const mapper = { attributes: ‘note_attributes’, billing_address: ‘billing_address’, cancelled: ‘is_cancelled’, cancelled_at: ‘cancelled_at’, created_at: ‘created_at’, customer_id: ‘customer_id’, // discount_applications: ‘discount_applications’, email: ’email’, financial_status: ‘financial_status’, fulfillment_status: ‘fulfillment_status’, line_items: ‘order_item’, note: ‘note’, order_number: ‘order_number’, phone: ‘phone’, shipping_address: ‘shipping_address’, shipping_methods: ‘shipping_methods’, shipping_price: ‘total_shipping’, subtotal_price: ‘subtotal_price’, // tax_lines: ‘tax_lines’, tax_price: ‘total_tax’, total_discounts: ‘total_discount’, total_net_amount: ‘total_amount_include_transaction’, total_price: ‘total_price’, transactions: ‘transaction_records’, is_manual_payment: ‘is_manual_payment’, } order.email = order.billing_address.email order.phone = order.billing_address.phone order.shipping_method = order.shipping_method_name order = map(order, mapper) order.line_items = order.line_items.map(item => mapLineItem(item)) order.transactions = order.transactions.map(transaction => mapTransaction(transaction)) return order } const mapLineItem = line_item => { const old_line_item = line_item const mapper = { final_price: ‘price’, image: ‘img_url’, message: ‘message’, original_line_price: ‘original_line_price’, original_price: ‘original_price’, properties: ‘properties’, quantity: ‘quantity’, requires_shipping: ‘shipping_required’, sku: ‘sku’, taxable: ‘taxable’, title: ‘product_name’, product_name: ‘product_name’, url: ‘url’, product_id: ‘product_id’, variant_id: ‘variant_id’, id: [‘id’, ‘i_id’], } line_item = map(line_item, mapper) line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null line_item.image = line_item.image || (old_line_item.image && old_line_item.image.url) || null return line_item } const mapTransaction = transaction => { const mapper = { amount: ‘amount’, created_at: ‘created_at’, gateway: ‘gateway_type’, id: ‘id’, status: ‘status’, } transaction = map(transaction, mapper) return transaction } ]]> 0) { var newVal = parseFloat(oldValue) – 1; } else { newVal = 0; } } $button.parent().find(“input”).val(newVal); }); $(‘body’).on(“click”, “.btn-qty-adjust”, debounce(function() { theme.updateCartDrawer(); },350)); $(‘button.checkout’).click(function() { $(this).addClass(‘btn–loading’); }); var add_cart_success_html = ‘ ‘; add_cart_success_html += ‘Added to cart
View cart’; function popToast(content) { var x = document.getElementById(“toast”), y = document.getElementById(“toastContent”); y.innerHTML = content; x.className += ” show”; var hideToast = setTimeout(function(){ x.className = x.className.replace(” show”, “”); }, 3000); } ]]>

Source

Leave a Reply

Your email address will not be published. Required fields are marked *