jQuery(function($){
const variationForm=$('.variations_form');
if(!variationForm.length) return;
const mainPriceContainer=variationForm.closest('.product').find('p.price').first();
const beneficiaryField=$('input[name="beneficiary_name"]');
const addToCartButton=variationForm.find('.single_add_to_cart_button');
function updateAddToCartButtonState(){
const variationSelected=variationForm.find('input[name="variation_id"]').val() > 0;
let beneficiaryValid=beneficiaryField.length===0||beneficiaryField.val().trim()!=='';
if(variationSelected&&beneficiaryValid){
addToCartButton.removeClass('disabled wc-variation-selection-needed').prop('disabled', false);
}else{
addToCartButton.addClass('disabled wc-variation-selection-needed').prop('disabled', true);
}}
function initializePage(){
if(xwdpu_frontend_ajax.is_dynamic_product){
mainPriceContainer.hide();
if(xwdpu_frontend_ajax.attributes_to_hide.length > 0){
let needsTrigger=false;
$.each(xwdpu_frontend_ajax.attributes_to_hide, function(index, slug){
const row=variationForm.find('label[for="' + slug + '"]').closest('tr');
if(row.length > 0){
row.hide();
const select=row.find('select');
if(select.length > 0&&select.val()===''){
const firstOptionValue=select.find('option').eq(1).val();
if(firstOptionValue){
select.val(firstOptionValue);
needsTrigger=true;
}}
}});
if(needsTrigger){
variationForm.trigger('check_variations');
}}
}
updateAddToCartButtonState();
}
variationForm.on('show_variation', function(event, variation, purchasable){
if(xwdpu_frontend_ajax.is_dynamic_product){
const form=$(this);
const product_id=form.data('product_id')||form.find('input[name="product_id"]').val();
const variations_data={};
form.find('.variations select').each(function(){
const select=$(this);
variations_data[select.attr('name')]=select.val();
});
const priceContainer=form.find('.woocommerce-variation-price');
priceContainer.block({ message: null, overlayCSS: { background: '#fff', opacity: 0.6 }});
mainPriceContainer.hide();
$.ajax({
url: xwdpu_frontend_ajax.ajax_url,
method: 'POST',
data: {
action: 'get_dynamic_variation_price',
nonce: xwdpu_frontend_ajax.nonce,
product_id: product_id,
variations: variations_data
},
success: function(response){
if(response.success){
priceContainer.html(response.data.price_html).show();
}else{
priceContainer.html(variation.price_html).show();
}},
error: function(){
priceContainer.html(variation.price_html).show();
},
complete: function(){
priceContainer.unblock();
updateAddToCartButtonState();
}});
}});
variationForm.on('hide_variation', function(){
if(xwdpu_frontend_ajax.is_dynamic_product){
mainPriceContainer.hide();
}else{
mainPriceContainer.show();
}
updateAddToCartButtonState();
});
variationForm.on('change keyup', '.variations select, input[name="beneficiary_name"]', function(){
updateAddToCartButtonState();
});
initializePage();
});