// source --> https://megatoninos.com/wp-content/plugins/advanced-dynamic-pricing-for-woocommerce/BaseVersion/assets/js/frontend.js?ver=4.9.3 
jQuery(document).ready(function ($) {
	var variable_id = jQuery('[name="product_id"]').val();
	var available_ids = [];
	var variable_bulk_table = "";

	function get_table(product_id, updateBulkTable = false) {

		if (typeof jQuery('.wdp_bulk_table_content').attr('data-available-ids') !== 'undefined') {
			available_ids = JSON.parse(jQuery('.wdp_bulk_table_content').attr('data-available-ids'));
		}

		if (available_ids.indexOf(parseInt(product_id)) === -1) {
			return;
		}

		if (product_id === variable_id && variable_bulk_table && !updateBulkTable) {
			jQuery('.wdp_bulk_table_content').html(variable_bulk_table)
			return true;
		}

		let attributes = {};

		jQuery('form.variations_form[data-product_id=' + variable_id + '] select').each(function (index, item) {
			if (jQuery(item).attr("data-attribute_name")) {
				attributes[jQuery(item).attr("data-attribute_name")] = jQuery(this).val();
			}
		});

		var data = {
			action: 'get_table_with_product_bulk_table',
			product_id: parseInt(product_id),
			attributes: attributes,
			...jQuery('form.cart').triggerHandler('wdp_get_custom_data')
		};

		return jQuery.ajax({
			url: script_data.ajaxurl,
			data: data,
			dataType: 'json',
			type: 'POST',
			success: function (response) {
				if (response.success) {
					jQuery('.wdp_bulk_table_content').each(function (_, item) {
						let jQItem = jQuery(item);
						let availableIds = JSON.parse(jQItem.attr('data-available-ids'));

						if (availableIds.indexOf(parseInt(product_id)) === -1) {
							return;
						}

						jQItem.html(jQuery(response.data).children())
					});
					init_custom_event();
					if (product_id === variable_id) {
						variable_bulk_table = response.data;
					}
				} else {
					get_table(variable_id);
				}
			},
			error: function (response) {
				get_table(variable_id);
			}
		});
	}

	function init_custom_event() {
		jQuery('.wdp_bulk_table_content').on('get_table', function (e, $obj_id) {
			if (typeof $obj_id === 'undefined' || !$obj_id) {
				get_table(variable_id);
			} else {
				get_table($obj_id);
			}
		});
	}

	function init_events() {
		if (jQuery('.wdp_bulk_table_content').length > 0) {
			jQuery('.variations_form').on('found_variation', { variationForm: this },
				function (event, variation) {
					if (typeof variation === 'undefined') {
						get_table(variable_id);
						return true;
					}
					get_table(variation.variation_id);
					return true;
				})
				.on('click', '.reset_variations',
					{ variationForm: this },
					function (event, variation) {
						get_table(variable_id);
						return true;
					})
				.on('reset_data',
					function (event) {
						get_table(variable_id);
						return true;
					});

			jQuery('form.cart').on('adp_found_variation', function (e, { product_id, variation_id}) {
				get_table(variation_id || product_id, true);
				return true;
			});

			init_custom_event();
		}

	}

	if (script_data.js_init_trigger) {
		$(document).on(script_data.js_init_trigger, function () {
			init_events();
		});
	}

	jQuery('form.cart').on('adp_variations_form', function() {
		init_events();
	});

	setTimeout(function () {
		jQuery('.variations_form').on("wc_variation_form", function () {
			init_events();
		})
	}, 0);
});