1(function($){'use strict';var config={ajaxUrl:custom_mini_cart_params.ajax_url,nonce:custom_mini_cart_params.nonce,isUpdating:!1,miniCartOpen:!1};var donationConfig={isProcessing:!1};let miniCartOpen=!1;let isClosing=!1;$(document).ready(function(){initMiniCartAJAX();initDonationAJAX();initCouponAJAX();initCartOpenClose();initializeDonationForm();$('.headerminicart').removeClass('open cartactive fast-open');$('html').removeClass('cart-open')});function initMiniCartAJAX(){$(document).on('click','.qib-button',function(e){e.preventDefault();e.stopPropagation();if(config.isUpdating){console.log('Cart is already updating, please wait...');showMessage('Please wait, cart is updating...','info');return!1} 2var $button=$(this);if($button.hasClass('disabled')||$button.prop('disabled')){console.log('Button is disabled, ignoring click');return!1} 3var $wrapper=$button.closest('.qib-button-wrapper');var cartItemKey=$wrapper.data('cart-item-key');var $input=$wrapper.find('.cart-quantity-input');var action=$button.data('action');var currentQty=parseInt($input.val())||1;if($input.prop('disabled')){console.log('Quantity input is disabled, ignoring click');return!1} 4if(action==='increase'){currentQty++}else if(action==='decrease'){currentQty--;if(currentQty<1)currentQty=1} 5$input.val(currentQty);updateCartItem(cartItemKey,currentQty,$wrapper);return!1});$(document).on('change','.cart-quantity-input',function(e){e.stopPropagation();if(config.isUpdating){console.log('Cart is already updating, please wait...');showMessage('Please wait, cart is updating...','info');return!1} 6var $input=$(this);if($input.prop('disabled')){console.log('Input is disabled, ignoring change');return!1} 7var cartItemKey=$input.data('cart-item-key');var quantity=parseInt($input.val())||1;if(quantity<1){quantity=1;$input.val(1);showMessage('Minimum quantity must be 1','error');updateCartItem(cartItemKey,quantity,$input.closest('.qib-button-wrapper'))} 8updateCartItem(cartItemKey,quantity,$input.closest('.qib-button-wrapper'));return!1});$(document).on('input','.cart-quantity-input',function(e){var $input=$(this);var value=$input.val();var numericValue=value.replace(/[^0-9]/g,'');if(numericValue==='0'){$input.val('1');return} 9if(numericValue.length>1&&numericValue.charAt(0)==='0'){numericValue=numericValue.replace(/^0+/,'')} 10$input.val(numericValue)});$(document).on('blur','.cart-quantity-input',function(e){var $input=$(this);var quantity=parseInt($input.val())||0;if(quantity<1){$input.val(1)}});$(document).on('click','.remove-cart-item, .remove-donation-btn',function(e){e.preventDefault();e.stopPropagation();if(config.isUpdating){console.log('Cart is already updating, please wait...');showMessage('Please wait, cart is updating...','info');return!1} 11var $link=$(this);if($link.hasClass('loading')){console.log('Item is already being removed, please wait...');return!1} 12var cartItemKey='';if($link.hasClass('remove-donation-btn')){cartItemKey=$link.data('cart-item-key')}else{cartItemKey=$link.data('cart_item_key')} 13if(!cartItemKey){console.error('No cart item key found for removal');return!1} 14$link.text('Removing...').addClass('loading');removeCartItem(cartItemKey,$link);return!1})} 15function initDonationAJAX(){$(document).on('click','.donatecart .price-select, .donatecart .donation-select',function(e){e.preventDefault();e.stopPropagation();if(donationConfig.isProcessing||config.isUpdating){console.log('Donation is processing, please wait...');return} 16var $this=$(this);if($this.hasClass('disabled')||$this.prop('disabled')){console.log('Donation option is disabled, ignoring click');return} 17var amount=5;var $container=$this.closest('.donatecart');$container.find('.price-select, .donation-select').removeClass('selected').addClass('price-select');$this.removeClass('price-select').addClass('donation-select selected');$container.find('#custom-donation-amount').val('');$container.find('.msg.error').hide().text('')});$(document).on('input change','.donatecart .custom-donation-input-field',function(e){if(donationConfig.isProcessing||config.isUpdating){e.preventDefault();return} 18var $this=$(this);var customAmount=$this.val();var $container=$this.closest('.donatecart');if(customAmount&&parseFloat(customAmount)>0){$container.find('#selected-donation-amount').val(customAmount);$container.find('.price-select, .donation-select').removeClass('selected').addClass('price-select');$container.find('.msg.error').hide().text('')}});$(document).on('click','.donatecart .add-donation-btn',function(e){e.preventDefault();e.stopPropagation();if(donationConfig.isProcessing||config.isUpdating){console.log('Donation is already processing, please wait...');showMessage('Please wait, donation is being processed...','info');return} 19var $button=$(this);if($button.hasClass('loading')||$button.prop('disabled')){console.log('Donation button is already processing, ignoring click');return} 20var $container=$button.closest('.donatecart');var productId=$button.data('product-id');var donationSku=$button.data('donation-sku');var donationNonce=$button.data('nonce');var donationAmount=$container.find('#selected-donation-amount').val();if(!donationAmount||donationAmount===''||donationAmount==='10'){var customAmount=$container.find('#custom-donation-amount').val();if(customAmount&&parseFloat(customAmount)>0){donationAmount=customAmount}} 21if(!donationAmount||parseFloat(donationAmount)<1){$container.find('.msg.error').text('Please enter a donation amount of at least $1').show();return} 22console.log('Adding donation:',{productId:productId,amount:donationAmount,sku:donationSku});addDonationToCart(productId,donationAmount,donationSku,donationNonce,$button)});$(document).on('keypress','.donatecart .custom-donation-input-field',function(e){if(donationConfig.isProcessing||config.isUpdating){e.preventDefault();return} 23if(e.which===13){e.preventDefault();var $container=$(this).closest('.donatecart');var $button=$container.find('.add-donation-btn');if(!$button.hasClass('loading')&&!$button.prop('disabled')){$button.click()}}})} 24function addDonationToCart(productId,amount,sku,nonce,$button){if(donationConfig.isProcessing||config.isUpdating){console.log('Donation already processing, ignoring click');return} 25donationConfig.isProcessing=!0;config.isUpdating=!0;console.log('Sending donation to cart:',{productId:productId,amount:amount,sku:sku});
25disableAllQuantityControls();var $container=$button.closest('.donatecart');$button.addClass('loading').html('<div class="loading-spinner"></div> Adding...');if($('.headerminicart').hasClass('open')){} 26var formData=new FormData();formData.append('action','add_donation_to_cart');formData.append('product_id',productId);formData.append('donation_amount',amount);formData.append('donation_sku',sku);formData.append('nonce',nonce);fetch(config.ajaxUrl,{method:'POST',body:formData,credentials:'same-origin'}).then(response=>{if(!response.ok){throw new Error('Network response was not ok: '+response.statusText)} 27return response.json()}).then(data=>{console.log('Donation Response:',data);if(data.success){$container.find('.msg.error').hide().text('');showMessage(data.data.message||'Donation of $'+parseFloat(amount).toFixed(2)+' added to cart!','success');if(data.data){updateCartTotals(data.data)} 28if(typeof wc_cart_fragments_params!=='undefined'){$(document.body).trigger('wc_fragment_refresh')} 29$(document.body).trigger('updated_wc_div');$(document.body).trigger('updated_cart_totals');setTimeout(function(){refreshMiniCart();setTimeout(enableAllQuantityControls,100)},500);if(!miniCartOpen){setTimeout(function(){openMiniCart(!0)},1000)}}else{var errorMsg=data.data&&data.data.message?data.data.message:'Error adding donation. Please try again.';$container.find('.msg.error').text(errorMsg).show();enableAllQuantityControls();resetDonationButton($button)}}).catch(error=>{console.error('Donation AJAX Error:',error);$container.find('.msg.error').text('Processing donation...').show();enableAllQuantityControls();resetDonationButton($button);setTimeout(function(){refreshMiniCart();showMessage('Please check your cart - donation may have been added.','success')},1000)}).finally(()=>{donationConfig.isProcessing=!1;config.isUpdating=!1;setTimeout(function(){$('.headerminicart').removeClass('updating')},1000)})} 30function resetDonationButton($button){$button.removeClass('loading').prop('disabled',!1).html('Add to Cart <svg baseProfile="tiny" height="24px" version="1.2" viewBox="0 0 24 24" width="24px"><g><g><path d="M20.756,5.345C20.565,5.126,20.29,5,20,5H6.181L5.986,3.836C5.906,3.354,5.489,3,5,3H2.75c-0.553,0-1,0.447-1,1 s0.447,1,1,1h1.403l1.86,11.164c0.008,0.045,0.031,0.082,0.045,0.124c0.016,0.053,0.029,0.103,0.054,0.151 c0.032,0.066,0.075,0.122,0.12,0.179c0.031,0.039,0.059,0.078,0.095,0.112c0.058,0.054,0.125,0.092,0.193,0.13 c0.038,0.021,0.071,0.049,0.112,0.065C6.748,16.972,6.87,17,6.999,17C7,17,18,17,18,17c0.553,0,1-0.447,1-1s-0.447-1-1-1H7.847 l-0.166-1H19c0.498,0,0.92-0.366,0.99-0.858l1-7C21.031,5.854,20.945,5.563,20.756,5.345z"/><circle cx="8.5" cy="19.5" r="1.5"/><circle cx="17.5" cy="19.5" r="1.5"/></g></g></svg>')} 31function initializeDonationForm(){$('.donatecart').each(function(){var $container=$(this);var selectedAmount=$container.find('#selected-donation-amount').val();var customAmount=$container.find('#custom-donation-amount').val();console.log('Initializing donation form:',{selectedAmount:selectedAmount,customAmount:customAmount});if(customAmount&&customAmount!==''&&parseFloat(customAmount)>0){$container.find('.price-select, .donation-select').removeClass('selected').addClass('price-select')}else if(selectedAmount){$container.find('[data-amount="'+selectedAmount+'"]').removeClass('price-select').addClass('donation-select selected')}})} 32function updateCartItem_old(cartItemKey,quantity,$element){if(!cartItemKey||quantity<1)return;config.isUpdating=!0;disableAllQuantityControls();var $wrapper=$element.closest('.qib-button-wrapper');var $input=$wrapper.find('.cart-quantity-input');var $buttons=$wrapper.find('.qib-button');var $row=$wrapper.closest('tr');$row.addClass('updating');$row.find('.product-subtotal-amount').html('<span class="loading">Updating...</span>');$('.headerminicart').addClass('updating');$.ajax({url:config.ajaxUrl,type:'POST',data:{action:'custom_update_cart_item_clean',cart_item_key:cartItemKey,quantity:quantity,security:config.nonce},success:function(response){if(response.success){updateCartTotals(response.data);if($row.length&&response.data.item_subtotal){$row.find('.product-subtotal-amount').html(response.data.item_subtotal)} 33showMessage(response.data.message||'Quantity updated','success')}else{showMessage(response.data||'Failed to update quantity','error');refreshMiniCart()}},error:function(xhr,status,error){showMessage('Error updating quantity. Please try again.','error');refreshMiniCart()},complete:function(){config.isUpdating=!1;
33setTimeout(function(){enableAllQuantityControls();$row.removeClass('updating')},500);$('.headerminicart').removeClass('updating')}})} 34function updateCartItem(cartItemKey,quantity,$element){if(!cartItemKey||quantity<1)return;config.isUpdating=!0;disableAllQuantityControls();var $wrapper=$element.closest('.qib-button-wrapper');var $input=$wrapper.find('.cart-quantity-input');var $buttons=$wrapper.find('.qib-button');var $row=$wrapper.closest('tr');$row.addClass('updating123');$row.find('.product-subtotal-amount').html('<span class="loading">Updating...</span>');$('.headerminicart').addClass('updating234');$.ajax({url:config.ajaxUrl,type:'POST',data:{action:'custom_update_cart_item',cart_item_key:cartItemKey,quantity:quantity,security:config.nonce},dataType:'text',success:function(rawResponse,status,xhr){console.log('Raw response received:',rawResponse.substring(0,200));try{var cleanedResponse=rawResponse.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,'');cleanedResponse=cleanedResponse.replace(/^\s*[\r\n]/gm,'').trim();var response=JSON.parse(cleanedResponse);console.log('Parsed response:',response);if(response&&response.success){updateCartTotals(response.data);if($row.length&&response.data.item_subtotal){$row.find('.product-subtotal-amount').html(response.data.item_subtotal)} 35showMessage(response.data.message||'Quantity updated','success');refreshMiniCart()}else{showMessage(response.data||'Failed to update quantity','error');refreshMiniCart()}}catch(e){console.error('Failed to parse response:',e);console.log('Cleaned response:',cleanedResponse);showMessage('Server returned invalid response','error');refreshMiniCart()}},error:function(xhr,status,error){console.error('AJAX Error:',error);showMessage('Error updating quantity. Please try again.','error');refreshMiniCart()},complete:function(){config.isUpdating=!1;setTimeout(function(){enableAllQuantityControls();$row.removeClass('updating')},500);$('.headerminicart').removeClass('updating')}})} 36function removeCartItem(cartItemKey,$link){if(!cartItemKey)return;config.isUpdating=!0;disableAllQuantityControls();var $row=$('[data-cart-item-key="'+cartItemKey+'"]');$link.text('Removing...').addClass('loading');$('.headerminicart').addClass('updating999');$.ajax({url:config.ajaxUrl,type:'POST',data:{action:'custom_remove_cart_item',cart_item_key:cartItemKey,security:config.nonce},success:function(response){if(response.success){updateCartTotals(response.data);showMessage(response.data.message||'Item removed successfully','success');refreshMiniCart()}else{showMessage(response.data||'Failed to remove item','error');$link.text('Remove').removeClass('loading');enableAllQuantityControls()}},error:function(xhr,status,error){console.error('Remove error:',error);showMessage('Error removing item','error');$link.text('Remove').removeClass('loading');enableAllQuantityControls()},complete:function(){config.isUpdating=!1;$('.headerminicart').removeClass('updating')}})} 37function updateCartTotals(data){if(data.item_count!==undefined){var countText='('+data.item_count+' item'+(data.item_count!==1?'s':'')+')';$('.cart-count').text(countText)} 38if(data.totals_html){$('.minicartTable').html(data.totals_html);if(typeof wc_cart_fragments_params!=='undefined'){$(document.body).trigger('wc_fragment_refresh')} 39$(document.body).trigger('updated_wc_div');$(document.body).trigger('updated_cart_totals');return} 40if(data.subtotal){$('.cart-total-amount').html(data.subtotal)} 41if(data.discount_total){if($('.cart-discount').length){$('.cart-discount td').html(data.discount_total)}else{$('.cart-subtotal').after('<tr class="cart-discount">'+'<th>Discount</th>'+'<td class="cart-discount-amount">'+data.discount_total+'</td>'+'</tr>')}}else{$('.cart-discount').remove()} 42if(data.total){if($('.cart-order-total').length){$('.cart-order-total-amount').html(data.total)}else{var totalRow='<tr class="cart-total">'+'<th>Total</th>'+'<td class="cart-final-amount">'+data.total+'</td>'+'</tr>';if($('.cart-discount').length){$('.cart-discount').after(totalRow)}else{$('.cart-subtotal').after(totalRow)}}}else{$('.cart-total').remove()} 43if(data.coupons_html!==undefined){$('.applied-coupons-container').html(data.coupons_html)}else if(data.coupons){updateCouponDisplay(data.coupons)} 44if(typeof wc_cart_fragments_params!=='undefined'){$(document.body).trigger('wc_fragment_refresh')} 45$(document.body).trigger('updated_wc_div');$(document.body).trigger('updated_cart_totals')} 46function refreshMiniCart(){$.ajax({url:config.ajaxUrl,type:'POST',data:{action:'custom_get_mini_cart',security:config.nonce},success:function(response){if(response.success){$('.minicart').html(response.data.html);$('.cart-quantity').html(response.data.count);config.miniCartOpen=$('.minicart').is(':visible');setTimeout(initializeDonationForm,100)}},error:function(xhr,status,error){console.error('Refresh error:',error)}})} 47function showMessage(message,type){$('.mini-cart-message').remove();var $message=$('<div class="mini-cart-message mini-cart-'+type+'">'+message+'</div>');$('.minicart').prepend($message);setTimeout(function(){$message.fadeOut(300,function(){$(this).remove()})},3000)} 48function initCartOpenClose(){$(document).off('click.minicart');$('.closeCart').off('click');
48$(document).on('click.minicart','.headerminicart.cartactive',function(e){if(e.target===this){closeMiniCart();return!1}});$(document).on('click.minicart','.closeCart',function(e){e.preventDefault();e.stopPropagation();closeMiniCart();return!1});$(document).on('click.minicart','#myCart',function(e){e.preventDefault();openMiniCart()});$(document).on('keydown.minicart',function(e){if(e.key==='Escape'&&miniCartOpen&&!isClosing){closeMiniCart()}});$(document).on('click.minicart',function(e){if(!miniCartOpen||isClosing)return;var $target=$(e.target);var isInCart=$target.closest('.minicart').length>0;var isOpenButton=$target.closest('#myCart, .cartBubble, .cartBubble a').length>0;if(!isInCart&&!isOpenButton&&!$target.closest('.headerminicart').length){}});$(document.body).on('added_to_cart',function(){openMiniCart(!0)});$(document).on('click submit','.add_to_cart_button, form.cart',function(){sessionStorage.setItem('open_cart','1')});if(sessionStorage.getItem('open_cart')==='1'){sessionStorage.removeItem('open_cart');setTimeout(()=>openMiniCart(!0),300)} 49$(document).on('click','.checkout-button',function(){window.location.href=$(this).attr('href');return!1})} 50var gscScrollY=0;var gscScrollLocked=!1;function gscLockScroll(){if(gscScrollLocked)return;gscScrollY=window.pageYOffset||document.documentElement.scrollTop||0;gscScrollLocked=!0;document.body.style.top=(-gscScrollY)+'px'} 51function gscUnlockScroll(){if(!gscScrollLocked)return;gscScrollLocked=!1;document.body.style.top='';window.scrollTo({top:gscScrollY,left:0,behavior:'auto'})} 52function openMiniCart(fast=!1){if(miniCartOpen||isClosing)return;isClosing=!1;const el=document.querySelector('.cartBubble');const display=window.getComputedStyle(el).display;console.log('cartBubble is hidden (display: none)');if(display==='none'){console.log('cartBubble is hidden (display: none)')}else{console.log('cartBubble is visible, display is:',display);gscLockScroll();$('html').addClass('open cartactive');setTimeout(()=>{miniCartOpen=!0;if(fast){$('html').addClass('open cartactive')} 53$('.headerminicart').addClass('open cartactive');setTimeout(()=>{},fast?200:400)},10)}} 54function closeMiniCart(){if(!miniCartOpen||isClosing)return;isClosing=!0;$('.headerminicart').removeClass('open cartactive');setTimeout(()=>{$('html').removeClass('open cartactive');gscUnlockScroll()},500);setTimeout(()=>{$('.headerminicart').removeClass('cartactive open');miniCartOpen=!1;isClosing=!1},500)} 55function initCouponAJAX(){console.log('Initializing coupon AJAX handlers...');$(document).on('click','.discount-code-apply-btn',function(e){e.preventDefault();e.stopPropagation();console.log('Apply button clicked!');
55if(config.isUpdating){console.log('Cart is already updating, please wait...');showMessage('Please wait, cart is updating...','info');return!1} 56var $button=$(this);if($button.prop('disabled')){console.log('Coupon button is disabled, ignoring click');return!1} 57var $input=$button.closest('.discount-code-input-group').find('.discount-code-input');var couponCode=$input.val().trim();console.log('Coupon code entered:',couponCode);if(!couponCode){console.log('No coupon code entered');showCouponMessage('Please enter a discount code','error');return!1} 58applyCoupon(couponCode,$button);return!1});$(document).on('keypress','.discount-code-input',function(e){if(e.which===13){e.preventDefault();console.log('Enter key pressed in coupon input');var $button=$(this).closest('.discount-code-input-group').find('.discount-code-apply-btn');if(!$button.prop('disabled')){$button.click()}}});$(document).on('click','.remove-coupon',function(e){e.preventDefault();e.stopPropagation();console.log('Remove coupon clicked');if(config.isUpdating){console.log('Cart is already updating, please wait...');showMessage('Please wait, cart is updating...','info');return!1} 59var $link=$(this);var couponCode=$link.data('coupon-code');if(!couponCode){console.log('No coupon code in remove link');return!1} 60removeCoupon(couponCode,$link);return!1})} 61function applyCoupon(couponCode,$button){if(config.isUpdating){console.log('Cannot apply coupon: already updating');return} 62config.isUpdating=!0;console.log('Applying coupon:',couponCode,'AJAX URL:',config.ajaxUrl);disableAllQuantityControls();$button.prop('disabled',!0).text('Applying...');showCouponMessage('Applying coupon...','info');$.ajax({url:config.ajaxUrl,type:'POST',data:{action:'custom_apply_coupon',coupon_code:couponCode,security:config.nonce},beforeSend:function(){console.log('AJAX request sending...')},success:function(response){console.log('AJAX success response:',response);if(response.success){console.log('Coupon applied successfully');showCouponMessage(response.data.message||'Coupon applied successfully!','success');$button.closest('.discount-code-input-group').find('.discount-code-input').val('');if(response.data){updateCartTotals(response.data);if(response.data.coupons_html){$('.applied-coupons-container').html(response.data.coupons_html)}else if(response.data.coupons){updateCouponDisplay(response.data.coupons)}}}else{console.log('Coupon failed:',response.data);showCouponMessage(response.data||'Failed to apply coupon','error')}},error:function(xhr,status,error){console.error('AJAX error:',{status:status,error:error,responseText:xhr.responseText});showCouponMessage('Error applying coupon. Please try again.','error')},complete:function(){console.log('AJAX complete');config.isUpdating=!1;$button.prop('disabled',!1).text('Apply');setTimeout(enableAllQuantityControls,500)}})} 63function removeCoupon(couponCode,$link){if(config.isUpdating)return;config.isUpdating=!0;disableAllQuantityControls();$link.text('Removing...');showCouponMessage('Removing coupon...','info');$.ajax({url:config.ajaxUrl,type:'POST',data:{action:'custom_remove_coupon',coupon_code:couponCode,security:config.nonce},success:function(response){if(response.success){showCouponMessage(response.data.message||'Coupon removed successfully!','success');updateCartTotals(response.data);if(response.data.coupons_html!==undefined){$('.applied-coupons-container').html(response.data.coupons_html)}else if(response.data.coupons){updateCouponDisplay(response.data.coupons)}}else{showCouponMessage(response.data||'Failed to remove coupon','error')}},error:function(xhr,status,error){showCouponMessage('Error removing coupon. Please try again.','error');console.error('Coupon remove error:',error)},complete:function(){config.isUpdating=!1;setTimeout(enableAllQuantityControls,500)}})} 64function disableAllQuantityControls(){console.log('Disabling all quantity controls...');$('.cart-quantity-input').prop('disabled',!0).addClass('disabled');$('.qib-button').prop('disabled',!0).addClass('disabled');$('.remove-cart-item, .remove-donation-btn').prop('disabled',!0).addClass('disabled');$('.discount-code-apply-btn').prop('disabled',!0).addClass('disabled');$('.donatecart .price-select, .donatecart .donation-select').prop('disabled',!0).addClass('disabled');$('.donatecart .custom-donation-input-field').prop('disabled',!0);$('.donatecart .add-donation-btn').prop('disabled',!0).addClass('disabled');$('.checkout-button').prop('disabled',!0).addClass('disabled')}
65function enableAllQuantityControls(){console.log('Enabling all quantity controls...');$('.cart-quantity-input').prop('disabled',!1).removeClass('disabled');$('.qib-button').prop('disabled',!1).removeClass('disabled');$('.remove-cart-item, .remove-donation-btn').not('.loading').prop('disabled',!1).removeClass('disabled');$('.discount-code-apply-btn').prop('disabled',!1).removeClass('disabled');$('.donatecart:visible .price-select, .donatecart:visible .donation-select').prop('disabled',!1).removeClass('disabled');$('.donatecart:visible .custom-donation-input-field').prop('disabled',!1);$('.donatecart:visible .add-donation-btn').prop('disabled',!1).removeClass('disabled');$('.checkout-button').prop('disabled',!1).removeClass('disabled');$('.headerminicart').removeClass('global-updating')} 66function resetSpecificRowControls($row){$row.find('.cart-quantity-input').prop('disabled',!1).removeClass('disabled');$row.find('.qib-button').prop('disabled',!1).removeClass('disabled');$row.find('.remove-cart-item').prop('disabled',!1).removeClass('disabled')} 67function showCouponMessage(message,type){$('.coupon-message').remove();var $message=$('<div class="coupon-message coupon-'+type+'">'+message+'</div>');$('.minicart-discount-code').before($message);setTimeout(function(){$message.fadeOut(300,function(){$(this).remove()})},5000)} 68function updateCouponDisplay(coupons){console.log('Updating coupon display:',coupons);var $couponContainer=$('.applied-coupons-container');if(!coupons||coupons.length===0){$couponContainer.html('');return} 69var couponHtml='<div class="applied-coupons">'+'<div class="applied-coupons-title">Applied Discounts</div>';$.each(coupons,function(index,coupon){couponHtml+='<div class="applied-coupon-item" data-coupon-code="'+coupon.code+'">'+'<span class="coupon-code">'+coupon.code+'</span>'+'<span class="coupon-amount">-'+coupon.amount+'</span>'+'<a href="#" class="remove-coupon" data-coupon-code="'+coupon.code+'">Remove</a>'+'</div>'});couponHtml+='</div>';$couponContainer.html(couponHtml)} 70window.miniCartAJAX={isUpdating:function(){return config.isUpdating},preventActions:function(){return config.isUpdating},openCart:function(fast){openMiniCart(fast)},closeCart:function(){closeMiniCart()}};$(document).ready(function(){$('td.product-quantity.itemcartqty_1323857').each(function(){var style=document.createElement('style');style.innerHTML='.woocommerce-js .minicartitems table.shop_table_responsive tr td.product-quantity.itemcartqty_1323857::before { content: attr(data-title) !important; }';document.head.appendChild(style)});var style=document.createElement('style');style.id='remove-colon-fix';style.innerHTML=` 71 td.product-quantity.itemcartqty_1323857::before { 72 content: attr(data-title) !important; 73 visibility: visible !important; 74 } 75 .woocommerce-js .minicartitems table.shop_table_responsive tr td.product-quantity.itemcartqty_1323857::before { 76 content: attr(data-title) !important; 77 } 78 `;document.head.appendChild(style);function toggleFormsBasedOnClass(){if($('td').hasClass('itemcartqty_1323857')){$('.donatecart').hide()}else{$('.donatecart').show()}} 79toggleFormsBasedOnClass();setInterval(toggleFormsBasedOnClass,1000)})})(jQuery);document.addEventListener("DOMContentLoaded",function(){const scrollbarWidth=window.innerWidth-document.documentElement.clientWidth;document.documentElement.style.setProperty("--scrollbar-width",scrollbarWidth+"px")});jQuery(document).ready(function($){console.log('=== DONATION CHECKBOX WITH EXISTING POPUP ===');var optimisticChecked=!1;var lastActionTime=0;function showDonationModal(){$('.donation-modal-overlay').css('display','flex');$('body').css('overflow','hidden');console.log('Modal shown')} 80function hideDonationModal(){$('.donation-modal-overlay').hide();$('body').css('overflow','');console.log('Modal hidden')} 81$(document).on('click','.info-icon',function(e){e.preventDefault();e.stopPropagation();console.log('Info icon clicked - showing modal');showDonationModal();return!1});$(document).on('click','.donation-modal-close',function(e){e.preventDefault();e.stopPropagation();console.log('Modal close clicked');hideDonationModal();return!1});$(document).on('click','.donation-modal-donate',function(e){e.preventDefault();e.stopPropagation();console.log('Modal donate button clicked');hideDonationModal();var $checkbox=$('#add-donation-checkbox');var hasDonation=$('td.itemcartqty_1323857').length>0;if(!hasDonation){lastActionTime=Date.now();optimisticChecked=!0;$checkbox.prop('checked',!0);updateCheckboxVisual(!0);$('.add-donation-btn').click()} 82return!1});$(document).on('click','.donation-modal-overlay',function(e){if($(e.target).hasClass('donation-modal-overlay')){hideDonationModal()}});$(document).on('keydown',function(e){if(e.key==='Escape'&&$('.donation-modal-overlay').is(':visible')){hideDonationModal()}});function syncCheckboxWithCart(){if(Date.now()-lastActionTime<2000){console.log('Skipping sync - recent action');return} 83var $checkbox=$('#add-donation-checkbox');if($checkbox.length===0)return;var hasDonation=$('td.itemcartqty_1323857').length>0;console.log('Checking cart - hasDonation:',hasDonation);$checkbox.prop('checked',hasDonation);optimisticChecked=hasDonation;updateCheckboxVisual(hasDonation)} 84function updateCheckboxVisual(isChecked){var $label=$('label[for="add-donation-checkbox"], .donation-label');if($label.length===0)return;$label.find('.check-visual').remove();$label.prepend('<span class="check-visual" style="display: inline-block; width: 18px; height: 18px; border: 2px solid '+(isChecked?'#4CAF50':'#666')+'; border-radius: 3px; background: '+(isChecked?'#4CAF50':'white')+'; margin-right: 8px; vertical-align: middle; position: relative; color: white; font-size: 12px; text-align: center; line-height: 16px;">'+(isChecked?'â':'')+'</span>')} 85$(document).on('click','label[for="add-donation-checkbox"], .donation-label, .check-visual',function(e){e.preventDefault();e.stopPropagation();console.log('=== CHECKBOX LABEL CLICKED ===');var $checkbox=$('#add-donation-checkbox');if($checkbox.length===0){console.log('Checkbox not found');return!1} 86var hasDonation=$('td.itemcartqty_1323857').length>0;var isNowChecked=!hasDonation;console.log('Current cart state - hasDonation:',hasDonation);console.log('Setting checkbox to:',isNowChecked);lastActionTime=Date.now();optimisticChecked=isNowChecked;$checkbox.prop('checked',isNowChecked);updateCheckboxVisual(isNowChecked);if(isNowChecked){$('.info-icon').show()}else{$('.info-icon').hide()} 87if(isNowChecked){console.log('Adding donation to cart');$('.add-donation-btn').click()}else{console.log('Removing donation from cart');$('td.itemcartqty_1323857').closest('tr').find('.remove').click()} 88setTimeout(function(){console.log('Checking REAL cart state after 3 seconds...');var newHasDonation=$('td.itemcartqty_1323857').length>0;console.log('Real cart state:',newHasDonation);if(optimisticChecked!==newHasDonation){console.log('Correcting checkbox to match real cart state');$checkbox.prop('checked',newHasDonation);updateCheckboxVisual(newHasDonation);optimisticChecked=newHasDonation;if(newHasDonation){$('.info-icon').show()}else{$('.info-icon').hide()}}},3000);return!1});$(document).on('click','#add-donation-checkbox',function(e){e.preventDefault();e.stopPropagation();console.log('Checkbox directly clicked');$('label[for="add-donation-checkbox"], .donation-label').click();return!1});console.log('=== INITIALIZING ===');syncCheckboxWithCart();setTimeout(syncCheckboxWithCart,1000);$(document).ajaxComplete(function(event,xhr,settings){console.log('AJAX complete - will check cart in 1 second');setTimeout(syncCheckboxWithCart,500)});console.log('Modal overlay exists:',$('.donation-modal-overlay').length);console.log('Info icon exists:',$('.info-icon').length);window.showDonationPopup=showDonationModal;window.hideDonationPopup=hideDonationModal;
88console.log('Donation checkbox with popup loaded successfully')});(function(){if(window.SlideCart)return;const STORAGE_KEY='site_cart_mode';function normalize(val){return Number(val)===1?1:0} 89function getStoredState(){const saved=localStorage.getItem(STORAGE_KEY);if(saved===null)return 1;return normalize(saved)} 90function broadcast(state){window.dispatchEvent(new CustomEvent('slidecart:stateChange',{detail:{state}}))} 91let currentState=getStoredState();window.SlideCart={setState:function(state){const s=normalize(state);localStorage.setItem(STORAGE_KEY,s);currentState=s;broadcast(s);console.log('[SlideCart] setState â',s,`(${s === 1 ? 'Popup Cart' : 'Slide Cart'})`);return s},getState:function(){return currentState},toggle:function(){return this.setState(currentState===1?0:1)},refresh:function(){const stored=getStoredState();if(stored!==currentState){console.log('[SlideCart] Refreshing state from localStorage:',stored);currentState=stored;broadcast(stored)} 92return currentState}};document.addEventListener('DOMContentLoaded',function(){setTimeout(()=>{broadcast(currentState)},100)})})();document.addEventListener('DOMContentLoaded',function(){console.log('[CartDisplay] Initializing...');if(!window.SlideCart||typeof window.SlideCart.getState!=='function'){console.warn('SlideCart API not found');return} 93var elementorCart=document.querySelector('.elementor-element.elementor-element-c02e1ca.toggle-icon--custom.elementor-menu-cart--cart-type-mini-cart');var cartBubble=document.querySelector('.linkitem.cartBubble');if(!elementorCart){console.warn('[CartDisplay] Elementor cart not found')} 94if(!cartBubble){console.warn('[CartDisplay] Cart bubble not found')} 95if(!elementorCart||!cartBubble){setTimeout(function(){},500);return} 96var preloaderStyle=document.getElementById('cart-preloader-style');if(preloaderStyle){preloaderStyle.remove();console.log('[CartDisplay] Removed preloader')} 97function applyCartMode(state){console.log('[CartDisplay] Applying cart mode:',state,`(${state === 1 ? 'Popup Cart' : 'Slide Cart'})`);if(state===0){elementorCart.style.cssText=` 98 display: none !important; 99 visibility: hidden !important; 100 opacity: 0 !important; 101 pointer-events: none !important; 102 position: absolute !important; 103 width: 0 !important; 104 height: 0 !important; 105 overflow: hidden !important; 106 `;cartBubble.style.cssText=` 107 display: inline-flex !important; 108 visibility: visible !important; 109 opacity: 1 !important; 110 pointer-events: auto !important; 111 position: relative !important; 112 `}else{elementorCart.style.cssText=` 113 display: block !important; 114 visibility: visible !important; 115 opacity: 1 !important; 116 pointer-events: auto !important; 117 position: relative !important; 118 `;cartBubble.style.cssText=` 119 display: none !important; 120 visibility: hidden !important; 121 opacity: 0 !important; 122 pointer-events: none !important; 123 position: absolute !important; 124 width: 0 !important; 125 height: 0 !important; 126 overflow: hidden !important; 127 `} 128elementorCart.setAttribute('data-cart-state',state);cartBubble.setAttribute('data-cart-state',state);document.body.setAttribute('data-cart-mode',state===1?'popup':'slide')} 129var initialState=window.SlideCart.getState();console.log('[CartDisplay] Initial state:',initialState);applyCartMode(initialState);window.addEventListener('slidecart:stateChange',function(e){console.log('[CartDisplay] State change detected:',e.detail.state);applyCartMode(e.detail.state)})});jQuery(function($){function gscReparentCart(){var $all=$('.headerminicart');if(!$all.length){return} 130var $onBody=$all.filter(function(){return $(this).parent().is('body')}).first();if(!$onBody.length){$onBody=$all.first().appendTo('body')} 131$all.not($onBody).remove()} 132gscReparentCart();$(document.body).on('wc_fragments_refreshed wc_fragments_loaded',gscReparentCart)})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.