// Track product views function trackProductView(productId) { let viewCounts = JSON.parse(localStorage.getItem('viewCounts') || '{}'); viewCounts[productId] = (viewCounts[productId] || 0) + 1; localStorage.setItem('viewCounts', JSON.stringify(viewCounts)); } // Track add to cart events function trackAddToCart(productId) { let addToCartCounts = JSON.parse(localStorage.getItem('addToCartCounts') || '{}'); addToCartCounts[productId] = (addToCartCounts[productId] || 0) + 1; localStorage.setItem('addToCartCounts', JSON.stringify(addToCartCounts)); } document.addEventListener('DOMContentLoaded', function() { // Function to get cart items from local storage function getCartItems() { const cartItems = localStorage.getItem('cart'); return cartItems ? JSON.parse(cartItems) : []; } // Function to set cart items in local storage function setCartItems(cartItems) { localStorage.setItem('cart', JSON.stringify(cartItems)); } // Function to add an item to the cart function addToCart(product) { trackAddToCart(product.id); // Track add to cart event let cartItems = getCartItems(); const existingItem = cartItems.find(item => item.id === product.id); if (existingItem) { existingItem.quantity += 1; } else { product.quantity = 1; cartItems.push(product); } setCartItems(cartItems); updateCartUI(); } function addToCart(product) { trackAddToCart('product123'); // Track add to cart event let cartItems = getCartItems(); const existingItem = cartItems.find(item => item.id === product.id); if (existingItem) { existingItem.quantity += 1; } else { product.quantity = 1; cartItems.push(product); } setCartItems(cartItems); updateCartUI(); } function addToCart(product) { let cartItems = getCartItems(); const existingItem = cartItems.find(item => item.id === product.id); if (existingItem) { existingItem.quantity += 1; } else { product.quantity = 1; cartItems.push(product); } setCartItems(cartItems); updateCartUI(); } // Function to update item quantity in the cart function updateQuantity(productId, quantity) { let cartItems = getCartItems(); const itemIndex = cartItems.findIndex(item => item.id === productId); if (itemIndex !== -1) { cartItems[itemIndex].quantity = quantity; if (cartItems[itemIndex].quantity <= 0) { cartItems.splice(itemIndex, 1); // Remove item if quantity is 0 or less } setCartItems(cartItems); updateCartUI(); } updateCartUI(); // Call updateCartUI to update the order summary } // Function to remove an item from the cart function removeItem(productId) { let cartItems = getCartItems(); const itemIndex = cartItems.findIndex(item => item.id === productId); if (itemIndex !== -1) { cartItems.splice(itemIndex, 1); setCartItems(cartItems); updateCartUI(); } } // Function to calculate cart totals function calculateTotals() { let cartItems = getCartItems(); let subtotal = 0; cartItems.forEach(item => { subtotal += item.price * item.quantity; }); const shipping = 5.00; const total = subtotal + shipping; return { subtotal, shipping, total }; } // Function to display cart items in cart.html function displayCartItems() { let cartItems = getCartItems(); const cartItemsContainer = document.getElementById('cart-items'); if (cartItemsContainer) { cartItemsContainer.innerHTML = ''; // Clear existing items cartItems.forEach(item => { const cartItemDiv = document.createElement('div'); cartItemDiv.classList.add('flex', 'items-center', 'border', 'border-gray-300', 'rounded-md', 'p-4'); cartItemDiv.innerHTML = ` Product Image

${item.name}

$${item.price.toFixed(2)}

`; cartItemsContainer.appendChild(cartItemDiv); // Add event listener to remove button const removeButton = cartItemDiv.querySelector('.remove-item'); removeButton.addEventListener('click', function() { const productId = this.dataset.productId; removeItem(productId); }); }); // Add event listeners to quantity buttons and remove buttons const decreaseButtons = document.querySelectorAll('.decrease-quantity'); decreaseButtons.forEach(button => { button.addEventListener('click', function() { const productId = this.dataset.productId; const quantityInput = this.parentNode.querySelector('.quantity-input'); let quantity = parseInt(quantityInput.value); quantity = Math.max(1, quantity - 1); // Ensure quantity is not less than 1 quantityInput.value = quantity; updateQuantity(productId, quantity); }); }); const increaseButtons = document.querySelectorAll('.increase-quantity'); increaseButtons.forEach(button => { button.addEventListener('click', function() { const productId = this.dataset.productId; const quantityInput = this.parentNode.querySelector('.quantity-input'); let quantity = parseInt(quantityInput.value); quantity++; quantityInput.value = quantity; updateQuantity(productId, quantity); }); }); } } // Function to update the order summary in cart.html and checkout.html function updateOrderSummary() { const { subtotal, shipping, total } = calculateTotals(); const subtotalElements = document.querySelectorAll('#subtotal'); subtotalElements.forEach(element => element.textContent = `$${subtotal.toFixed(2)}`); const shippingElements = document.querySelectorAll('#shipping'); shippingElements.forEach(element => element.textContent = `$${shipping.toFixed(2)}`); const totalElements = document.querySelectorAll('#total'); totalElements.forEach(element => element.textContent = `$${total.toFixed(2)}`); } // Function to handle checkout function handleCheckout() { const checkoutForm = document.getElementById('checkout-form'); if (checkoutForm) { checkoutForm.addEventListener('submit', function(event) { event.preventDefault(); // Prevent form submission // Get form data const name = document.getElementById('name').value; const address = document.getElementById('address').value; const city = document.getElementById('city').value; const state = document.getElementById('state').value; const zip = document.getElementById('zip').value; const credit_card = document.getElementById('credit_card').value; const expiration_date = document.getElementById('expiration_date').value; const cvv = document.getElementById('cvv').value; // Store form data in local storage const shippingInfo = { name, address, city, state, zip }; const paymentInfo = { credit_card, expiration_date, cvv }; localStorage.setItem('shippingInfo', JSON.stringify(shippingInfo)); localStorage.setItem('paymentInfo', JSON.stringify(paymentInfo)); // Redirect to confirmation page window.location.href = '/confirmation.html'; }); } } // Function to display order confirmation details function displayConfirmationDetails() { const shippingInfo = localStorage.getItem('shippingInfo'); const paymentInfo = localStorage.getItem('paymentInfo'); const cartItems = getCartItems(); if (shippingInfo && paymentInfo && cartItems) { const shipping = JSON.parse(shippingInfo); const payment = JSON.parse(paymentInfo); document.getElementById('shipping-name').textContent = shipping.name; document.getElementById('shipping-address').textContent = shipping.address; document.getElementById('shipping-city').textContent = shipping.city; document.getElementById('shipping-state').textContent = shipping.state; document.getElementById('shipping-zip').textContent = shipping.zip; // Payment information is dummy data in confirmation.html const orderItemsList = document.getElementById('order-items'); let orderTotal = 0; cartItems.forEach(item => { const listItem = document.createElement('li'); listItem.textContent = `${item.name} (${item.quantity}) - $${(item.price * item.quantity).toFixed(2)}`; orderItemsList.appendChild(listItem); orderTotal += item.price * item.quantity; }); document.getElementById('order-total').textContent = `$${orderTotal.toFixed(2)}`; // Clear cart and shipping info from local storage localStorage.removeItem('cart'); localStorage.removeItem('shippingInfo'); localStorage.removeItem('paymentInfo'); } } // Initialize the cart page if (window.location.pathname === '/cart.html') { displayCartItems(); updateOrderSummary(); } // Initialize the checkout page if (window.location.pathname === '/checkout.html') { updateOrderSummary(); handleCheckout(); } // Initialize the confirmation page if (window.location.pathname === '/confirmation.html') { displayConfirmationDetails(); } }); function updateCartUI() { if (window.location.pathname === '/cart.html') { displayCartItems(); updateOrderSummary(); } }