// source --> https://roomsafari.de/shop/wp-content/plugins/giftware/public/js/ultimate-woocommerce-gift-card-public.js?ver=4.2.3 
/**
 * All of the public javascript code should reside in this file.
 *
 * @package           Ultimate Woocommerce Gift Cards
 */

(function ($) {
	'use strict';

	$(document).ready(function (e) {

		$('#wps_whatsapp_contact').on('input', function() {
            var contactNumber = $(this).val();
            var isValid = /^[0-9]+$/.test(contactNumber);

            if (!isValid) {
                $(this).css('border', '2px solid red');
                if (!$('#wps_whatsapp_error').length) {
                    $(this).after('<span id="wps_whatsapp_error">'+ wps_uwgc_param.contact_number +'</span>');
                }
            } else {
                $(this).css('border', '');
                $('#wps_whatsapp_error').remove();
            }
        });

		jQuery('.wps_gift_this_product').click(function(){
			
			if(jQuery('.wps_gift_this_product').is(":checked")) {
				setTimeout(function (e) {
					jQuery('.wps_wgm_added_wrapper').addClass('wps-gc_lay-2');
					jQuery('.wps_demo_browse.wps_for_variable_product').show();
				 }, 250)
			} 
		});

		jQuery('div .wps-ts__head').attr('id', 'wps-ts__head_field');
		jQuery('div .wps-ts__h-item_1').attr('id', 'wps-ts__item_1');
		jQuery('div .wps-ts__h-item_2').attr('id', 'wps-ts__item_2');
		jQuery('div .wps-ts__h-item_3').attr('id', 'wps-ts__item_3');
		jQuery('div .wps-ts__h-item_4').attr('id', 'wps-ts__item_4');
		
		// Add wps-ts__active class to the first .wps-ts__h-item
		if (!jQuery('.wps-ts__head .wps-ts__h-item').hasClass('wps-ts__active')) {
			jQuery('.wps-ts__head .wps-ts__h-item:first-child').addClass('wps-ts__active');
		}

		// Add wps-ts__active class to the first .wps-ts__b-item
		if (!jQuery('.wps-ts__body .wps-ts__b-item').hasClass('wps-ts__active')) {
			jQuery('.wps-ts__body .wps-ts__b-item:first-child').addClass('wps-ts__active');
		}

		jQuery('.wps-ts__body .wps-ts__b-item:first-child input[type=radio]').prop('checked', true);

		jQuery(document).on('click', '.wps-ts__head .wps-ts__h-item', function () {
			jQuery('.wps-ts__head .wps-ts__h-item').removeClass('wps-ts__active');
			jQuery(this).addClass('wps-ts__active');
			jQuery('.wps-ts__body .wps-ts__b-item').removeClass('wps-ts__active');
			var index = $(this).index();
			var activeDescriptionItem = $('.wps-ts__body .wps-ts__b-item:eq(' + index + ')');

			activeDescriptionItem.addClass('wps-ts__active');
			jQuery('.wps-ts__body .wps-ts__b-item').find('input[type=radio]').prop('checked', false);
			jQuery('.wps-ts__body .wps-ts__b-item.wps-ts__active').find('input[type=radio]').prop('checked', true);

			// jQuery('.wps-ts__body .wps-ts__b-item.wps-ts__active *').show();
			//$('#wps_wgm_contribution_field').hide();
		});

		$(document).on('change','#wps_uwgc_browse_img',function(){
			var fileName = $(this).val().split("\\").pop(); // Get the file name without the path
			$('.wps_wgm_featured_img').removeClass('wps_wgm_pre_selected_temp');
			$(this).prevAll('.wps-gc__upload-icon').addClass('wps_wgm_pre_selected_temp');
			$(".selected-file-name-span").text(fileName || "No file selected");
			$('.wps_wgm_featured_img').on('click', function () {
				$('.wps-gc__upload-icon').removeClass('wps_wgm_pre_selected_temp');
				$(this).addClass('wps_wgm_pre_selected_temp');
			})
		})
		

		$(document).on('click', '#wps-ts__item_4', function () {
			//$('#wps_wgm_contribution_field').show();
		})

	})
	jQuery(document).ready(
		function () {

			var timeoutId;
			$('.variations select').on('change', function () {
				clearTimeout(timeoutId);
				timeoutId = setTimeout(function () {
					wps_wgm_variation_product_price();
				}, 300);

			});

			function wps_wgm_variation_product_price() {
				var variationId = $('input[name="variation_id"]').prop('value');
				console.log(variationId);
				var data = {
					action: 'wps_get_variation_price',
					variationId: variationId,
					product_id: wps_uwgc_param.product_id,
					wps_uwgc_nonce: wps_uwgc_param.wps_uwgc_nonce
				}
				$.ajax(
					{
						url: wps_uwgc_param.ajaxurl,
						type: "POST",
						data: data,
						dataType: 'json',
						success: function (response) {
							if (response.result == true) {
								console.log(response);
								$('#wps_wgm_price').val(response.variation_price);
							}
						}
					}
				);
			}

			// date picker for schedule date for giftcard.
			$('#wps_uwgc_send_date').datepicker(
				{

					dateFormat: wps_uwgc_param.selected_date,
					minDate: wps_uwgc_param.is_group_gift_prod
				}
			).datepicker("setDate", wps_uwgc_param.is_group_gift_prod);

			var a = new Date();
			var timeZoneOffset = wps_uwgc_param.timezone_offset * 60; // Adjust time for timezone
			a.setMinutes(a.getMinutes() + a.getTimezoneOffset() + timeZoneOffset);

			var date = new Date(a),
			mnth = ("0" + (date.getMonth() + 1)).slice(-2),
			day = ("0" + date.getDate()).slice(-2);
			var formatdate = [day, mnth, date.getFullYear()].join("/");

			function convertToDDMMYYYY( inputdate ) {

				if (!inputdate) {
					return "";
				}

				if ( wps_uwgc_param.selected_date == 'dd/mm/yy' || wps_uwgc_param.selected_date == 'dd.mm.yy' ) {
					return inputdate.replace( /\./g, '/' );
				}
				var parsedDate = new Date(inputdate);
				if (isNaN(parsedDate.getTime())) {
					return "";
				}
			
				var day = ("0" + parsedDate.getDate()).slice(-2);
				var month = ("0" + (parsedDate.getMonth() + 1)).slice(-2);
				var year = parsedDate.getFullYear();
			
				return day + "/" + month + "/" + year;
			}

			function wps_wgm_time(date) {
				var timerange = '';
				var currentTime = date.getHours();
				var isToday = convertToDDMMYYYY($("#wps_uwgc_send_date").val()) == formatdate;

				if (isToday) {
					// Time starts from the next hour
					timerange += '<option value="now">' + wps_uwgc_param.time_now_string + '</option>';
					for (var i = currentTime + 1; i < 24; i++) {
						if (wps_uwgc_param.time_format == '24-hour') {
							timerange += '<option value="' + i + '">' + i + ' </option>';
						} else {
							var j = (i > 11) ? (i - 12) : i;
							var start_time = (0 === j) ? 12 : j;
							timerange += (i < 12) ? '<option value="' + i + '">' + start_time + ' AM </option>' :
								'<option value="' + i + '">' + start_time + ' PM </option>';
						}
					}
				} else {
					// For future dates, show all hours (0-23)
					for (var i = 0; i < 24; i++) {
						if (wps_uwgc_param.time_format == '24-hour') {
							timerange += '<option value="' + i + '">' + i + ' </option>';
						} else {
							var j = (i > 11) ? (i - 12) : i;
							var start_time = (0 === j) ? 12 : j;
							timerange += (i < 12) ? '<option value="' + i + '">' + start_time + ' AM </option>' :
								'<option value="' + i + '">' + start_time + ' PM </option>';
						}
					}
				}

				$('#wps_wgm_hours').html(timerange);

				// Always show minutes (0-59)
				var minuteRange = '';
				for (var i = 0; i < 60; i++) {
					minuteRange += '<option value="' + ("0" + i).slice(-2) + '">' + ("0" + i).slice(-2) + '</option>';
				}
				$('#wps_wgm_minutes').html(minuteRange);

				// Hide minutes if "Now" is selected in hours
				if ($('#wps_wgm_hours').val() == 'now') {
					$('#wps_wgm_minutes').hide(); // Hide minutes when "Now" is selected
					$('.wps_wgm_hours_minutes_colon').hide(); // Hide colon when "Now" is selected
					$('#wps_wgm_time').val("now"); // Set minutes to 00 if "Now" is selected
				} else {
					$('#wps_wgm_minutes').show(); // Show minutes when "Now" is not selected
					$('.wps_wgm_hours_minutes_colon').show(); // Show colon when "Now" is not selected
				}

			}

			wps_wgm_time(date);

			// On date change, update the time options based on the selected date
			$('#wps_uwgc_send_date').on('change', function() {
				$('#wps_uwgc_send_date').val($(this).val());
				if (convertToDDMMYYYY($("#wps_uwgc_send_date").val()) == formatdate) {
					wps_wgm_time(date);
				} else {
					$('#wps_wgm_minutes').show();
					$('.wps_wgm_hours_minutes_colon').show();
					var timerange = '';
					// Show all hours (0-23)
					for (var i = 0; i < 24; i++) {
						if (wps_uwgc_param.time_format == '24-hour') {
							timerange += '<option value="' + i + '">' + i + ' </option>';
						} else {
							var j = (i > 11) ? (i - 12) : i;
							var start_time = (0 === j) ? 12 : j;
							timerange += (i < 12) ? '<option value="' + i + '">' + start_time + ' AM </option>' :
								'<option value="' + i + '">' + start_time + ' PM </option>';
						}
					}
					$('#wps_wgm_hours').html(timerange);

					// Show minutes (0-59)
					var minuteRange = '';
					for (var i = 0; i < 60; i++) {
						minuteRange += '<option value="' + ("0" + i).slice(-2) + '">' + ("0" + i).slice(-2) + '</option>';
					}
					$('#wps_wgm_minutes').html(minuteRange);
					updateTime(); // Update the hidden input
				}
			});

			// Function to update the hidden input with selected time (HH:MM)
			function updateTime() {
				var selectedHour = $('#wps_wgm_hours').val(); // Get the selected hour
				var selectedMinute = $('#wps_wgm_minutes').val(); // Get the selected minute
				var combinedTime = selectedHour + ':' + selectedMinute; // Combine as HH:MM
				$('#wps_wgm_time').val(combinedTime); // Set the combined time to the hidden input
			}

			// Event listeners for the changes in hours or minutes dropdown
			$('#wps_wgm_hours').on('change', function() {
				updateTime();
				// Hide minutes when "Now" is selected
				if ($(this).val() == 'now') {
					$('#wps_wgm_minutes').hide(); // Hide minutes when "Now" is selected
					$('.wps_wgm_hours_minutes_colon').hide(); // Hide colon when "Now" is selected
					$('#wps_wgm_time').val("now"); // Set minutes to 00
				} else {
					$('#wps_wgm_minutes').show(); // Show minutes when "Now" is not selected
					$('.wps_wgm_hours_minutes_colon').show(); // Show colon when "Now" is not selected
				}
			});
			$('#wps_wgm_minutes').on('change', updateTime);

			// for delivery method.
			var radio_on_load = $("input[name='wps_wgm_send_giftcard']:checked").val();
			wps_wgm_check_which_radio_has_been_selected(radio_on_load);
			function wps_wgm_check_which_radio_has_been_selected(radioVal) {
				$('.wps_wgm_quantity_one_per_recipient').hide();
				$('.wps_wgm_msg_info_multiple_name').hide();
				$('.wps_wgm_msg_info').show();
				$('.quantity').show();
				if (radioVal == "Mail to recipient") {
					$("#wps_wgm_to_download").val("");
					$("#wps_wgm_to_ship").val("");
					$(".wps_wgm_delivery_via_admin").hide();
					$(".wps_wgm_delivery_via_email").show();
					$(".wps_wgm_delivery_via_buyer").hide();
					$("#wps_wgm_to_email").attr("readonly", false);
					$("#wps_wgm_to_name_optional").attr("readonly", false);
				} else if (radioVal == "Downloadable") {
					$("#wps_wgm_to_email").val("");
					$("#wps_wgm_to_ship").val("");
					$("#wps_wgm_to_name_optional").val("");
					$(".wps_wgm_delivery_via_admin").hide();
					$(".wps_wgm_delivery_via_email").hide();
					$(".wps_wgm_delivery_via_buyer").show();
					$("#wps_wgm_to_download").attr("readonly", false);
				} else if (radioVal == "shipping") {

					$("#wps_wgm_to_email").val("");
					$("#wps_wgm_to_download").val("");
					$("#wps_wgm_to_name_optional").val("");
					$("#wps_wgm_to_ship").attr("readonly", false);
					$(".wps_wgm_delivery_via_admin").show();
					$(".wps_wgm_delivery_via_email").hide();
					$(".wps_wgm_delivery_via_buyer").hide();
				}
			}

			$('body').on('click', '#wps_gift_this_product', function () {
				$(document).ajaxComplete(function () {

					jQuery('div .wps-ts__h-item_1').attr('id', 'wps-ts__item_1');
					jQuery('div .wps-ts__h-item_2').attr('id', 'wps-ts__item_2');
					jQuery('div .wps-ts__h-item_3').attr('id', 'wps-ts__item_3');

					var radio_on_load = $("input[name='wps_wgm_send_giftcard']:checked").val();
					wps_wgm_check_which_radio_has_been_selected(radio_on_load);
					function wps_wgm_check_which_radio_has_been_selected(radioVal) {
						if (radioVal == "Mail to recipient") {
							$("#wps_wgm_to_download").val("");
							$("#wps_wgm_to_ship").val("");
							$(".wps_wgm_delivery_via_admin").hide();
							$(".wps_wgm_delivery_via_email").show();
							$(".wps_wgm_delivery_via_buyer").hide();
							$("#wps_wgm_to_email").attr("readonly", false);
							$("#wps_wgm_to_name_optional").attr("readonly", false);
						} else if (radioVal == "Downloadable") {
							$("#wps_wgm_to_email").val("");
							$("#wps_wgm_to_ship").val("");
							$("#wps_wgm_to_name_optional").val("");
							$(".wps_wgm_delivery_via_admin").hide();
							$(".wps_wgm_delivery_via_email").hide();
							$(".wps_wgm_delivery_via_buyer").show();
							$("#wps_wgm_to_download").attr("readonly", false);
						} else if (radioVal == "shipping") {

							$("#wps_wgm_to_email").val("");
							$("#wps_wgm_to_download").val("");
							$("#wps_wgm_to_name_optional").val("");
							$("#wps_wgm_to_ship").attr("readonly", false);
							$(".wps_wgm_delivery_via_admin").show();
							$(".wps_wgm_delivery_via_email").hide();
							$(".wps_wgm_delivery_via_buyer").hide();
						}
					}

					$('#wps_uwgc_send_date').datepicker(
						{
							dateFormat: wps_uwgc_param.selected_date,
							minDate: 0
						}
					).datepicker("setDate", "0");

					if (wps_uwgc_param.disable_from_field) {
						$('.wps_from').hide();
					}
					if (wps_uwgc_param.disable_message_field) {
						$('.wps_message').hide();
					}
					if (wps_uwgc_param.disable_to_email_field) {
						$('.wps_wgm_to_email').hide();
					} else {
						$('.wps_wgm_to_email').show();
					}
				});
			});

			$('body').on('change', '.wps_wgm_send_giftcard',
				function () {
					var radioVal = $(this).val();
					wps_wgm_check_which_radio_has_been_selected(radioVal);
				}
			);
			// to check the image type for giftcard on single product page.
			jQuery('body').on('change', '#wps_uwgc_browse_img',
				function () {
					var error = false;
					var html = "<ul>";
					var image_br = jQuery(this).val();
					var extension = image_br.substring(image_br.lastIndexOf('.') + 1).toLowerCase();
					var all_ext = ["gif", "png", "jpeg", "jpg", "pjpeg", "x-png"];
					var exists = all_ext.indexOf(extension);
					if (exists == -1) {
						$("#wps_wgm_error_notice").hide();
						error = true;
						$("#wps_wgm_to_email").addClass("wps_wgm_error");
						html += "<li><b>";
						html += wps_uwgc_param.browse_error;
						html += "</li>";
						$(this).val("");
					}
					if (error) {
						$("#wps_wgm_error_notice").html(html);
						$("#wps_wgm_error_notice").show();
						jQuery('html, body').animate(
							{
								scrollTop: jQuery(".woocommerce-page").offset().top
							},
							800
						);
					}
				}
			);
			// appends discount price for giftcard.
			$(document).on(
				'change',
				'#wps_wgm_price',
				function () {
					var wps_uwgc_price = $(this).val();
					var product_id = wps_uwgc_param.product_id;
					var wps_wgm_discount = wps_uwgc_param.wps_wgm_discount;
					var discount_enable = wps_uwgc_param.discount_enable;
					var html = '';
					var new_price = '';
					$(document).find('.wps_wgm_price_content').remove();
					if (wps_wgm_discount == 'yes' && discount_enable == 'on') {

						block($('.summary.entry-summary'));
						var data = {
							action: 'wps_uwgc_append_prices',
							wps_uwgc_price: wps_uwgc_price,
							product_id: product_id,
							wps_uwgc_nonce: wps_uwgc_param.wps_uwgc_nonce
						};
						$.ajax(
							{
								url: wps_uwgc_param.ajaxurl,
								type: "POST",
								data: data,
								dataType: 'json',
								success: function (response) {
									if (response.result == true) {
										var new_price = response.new_price;
										var wps_uwgc_price = response.wps_uwgc_price;
										var html = '';
										html += '<div class="wps_wgm_price_content"><b style="color:green;">' + wps_uwgc_param.discount_price_message + '</b>';
										html += '<b style="color:green;">' + new_price + '</b><br/>';
										html += '<b style="color:green;">' + wps_uwgc_param.coupon_message + '</b>';
										html += '<b style="color:green;">' + wps_uwgc_price + '</b></div>';
									}

									$(html).insertAfter($('p.price'));

								},
								complete: function () {
									unblock($('.summary.entry-summary'));
								}
							}
						);
					}
				}
			);


			// send mail forcefully when click on Send Toaday Button.
			$('.wps_uwgc_send_mail_force').click(
				function () {
					var order_id = $(this).data('id');
					var item_id = $(this).data('num');
					$("#wps_uwgc_send_mail_force_notification_" + item_id).html("");
					$("#wps_wgm_loader").show();
					var data = {
						action: 'wps_uwgc_send_mail_forcefully',
						order_id: order_id,
						item_id: item_id,
						wps_uwgc_nonce: wps_uwgc_param.wps_uwgc_nonce
					};
					$.ajax(
						{
							url: wps_uwgc_param.ajaxurl,
							type: "POST",
							data: data,
							dataType: 'json',
							success: function (response) {
								console.log(response);
								$("#wps_wgm_loader").hide();
								if (response.result == true) {
									var message = response.message;
									var html = '<b style="color:green;">' + message + '</b>';
									$('#wps_send_force_div_' + item_id).hide();
								} else {
									var message = response.message;
									var html = '<b style="color:red;">' + message + '</b>';

								}
								$("#wps_uwgc_send_mail_force_notification_" + item_id).html(html);
							}
						}
					);
				}
			);

			// resend mail from order details page at front-end.
			$('#wps_uwgc_resend_mail_button_frontend').click(
				function (e) {
					e.preventDefault();
					$("#wps_uwgc_resend_mail_frontend_notification").html("");
					var order_id = $(this).data('id');
					$("#wps_wgm_loader").show();
					var data = {
						action: 'wps_uwgc_resend_mail_order_deatils_frontend',
						order_id: order_id,
						wps_uwgc_nonce: wps_uwgc_param.wps_uwgc_nonce
					};
					$.ajax(
						{
							url: wps_uwgc_param.ajaxurl,
							type: "POST",
							data: data,
							dataType: 'json',
							success: function (response) {
								$("#wps_wgm_loader").hide();
								if (response.result == true) {
									var message = response.message;
									var html = '<b style="color:green;">' + message + '</b>';
								} else {
									var message = response.message;
									var html = '<b style="color:red;">' + message + '</b>';
								}
								$("#wps_uwgc_resend_mail_frontend_notification").html(html);
							}
						}
					);
				}
			);

			$('#wps_gift_this_product').on('click', function () {
				if ($(this).prop("checked") == true) {
					var wps_product = $(this).data('product');
					$.ajax({
						type: "POST",
						url: wps_wgm.ajaxurl,
						data: { action: "wps_get_data", wps_product: wps_product, wps_gc_nonce: wps_wgm.wps_gc_nonce },
						success: function (data) {
							$('#wps_purchase_as_a_gc').html(data);
							wps_wgm_variation_product_price();
						},
					});
				} else {
					$('#wps_purchase_as_a_gc').html('');
				}
			});

			if (wps_uwgc_param.disable_from_field) {
				$('.wps_from').hide();
			}
			if (wps_uwgc_param.disable_message_field) {
				$('.wps_message').hide();
			}
			if (wps_uwgc_param.disable_to_email_field) {
				$('.wps_wgm_to_email').hide();
			} else {
				$('.wps_wgm_to_email').show();
			}

			$('.wps_uwgc_price_button').on('click', function () {
				var txt = $(this).val();
				var numb = txt.replace(/[^0-9.,]/g, '');
				// $('#wps_wgm_price').val($(this).val());
				$('#wps_wgm_price').val(numb);
				$(this).css('background-color', 'red');
				$(this).css('color', 'white');
				$(this).siblings().css('background-color', '');
				$(this).siblings().css('color', '');
			});

			$(document).on('click', '#wps-ts__item_1', function () {
				$('#wps_wgm_to_email_send').attr( 'checked', 'checked');
				var radioVal = $('#wps_wgm_to_email_send').val();
				wps_wgm_check_which_radio_has_been_selected(radioVal);
			})
			$(document).on('click', '#wps-ts__item_2', function () {
				$('#wps_wgm_send_giftcard_download').attr( 'checked', 'checked');
				var radioVal = $('#wps_wgm_send_giftcard_download').val();
				wps_wgm_check_which_radio_has_been_selected(radioVal);
			})
			$(document).on('click', '#wps-ts__item_3', function () {
				$('#wps_wgm_send_giftcard_ship').attr( 'checked', 'checked');
				var radioVal = $('#wps_wgm_send_giftcard_ship').val();
				wps_wgm_check_which_radio_has_been_selected(radioVal);
			})

			$(':root').get(0).style.setProperty( '--wps-gc-primary-color', wps_uwgc_param.giftcard_dashboard_color );
		}
	);
})(jQuery);

// preview button validation.
var wps_wgm_preview_validation = function (html, error, form_Data) {

	var html = '';
	var to_mail = '';
	var schedule_date = jQuery(document).find('#wps_uwgc_send_date').val();

	if (schedule_date != undefined) {
		if (schedule_date == null || schedule_date == '') {
			error = true;
			jQuery(document).find("#wps_uwgc_send_date").addClass("wps_wgm_error");
			html += "<li><b>";
			html += wps_uwgc_param.send_date;
			html += "<b></li>";
		}
	}

	var delivery_method = jQuery(document).find('input[name="wps_wgm_send_giftcard"]:checked').val();

	// remove validation from to name field.
	if (wps_wgm_remove_validation_to_name() == 'on') {
		if (delivery_method == 'Mail to recipient') {
			to_mail = jQuery(document).find('#wps_wgm_to_name_optional').val();
			if (to_mail == null || to_mail == '') {
				to_mail = jQuery("#wps_wgm_to_email").val();
			}
		}
	} else {
		if (delivery_method == 'Mail to recipient') {
			to_mail = jQuery(document).find('#wps_wgm_to_name_optional').val();
			if (to_mail == null || to_mail == '') {
				error = true;
				jQuery(document).find("#wps_wgm_to_name_optional").addClass("wps_wgm_error");
				html += "<li><b>";
				html += wps_uwgc_param.to_name;
				html += "<b></li>";
			}
		}
		if (delivery_method == 'shipping') {
			to_mail = jQuery(document).find('#wps_wgm_to_ship').val();
			if (to_mail == null || to_mail == '') {
				error = true;
				jQuery(document).find("#wps_wgm_to_ship").addClass("wps_wgm_error");
				html += "<li><b>";
				html += wps_wgm.to_empty_name;
				html += "<b></li>";
			}
		}
	}
	if (delivery_method == 'Downloadable') {
		to_mail = jQuery(document).find('#wps_wgm_to_download').val();
	}
	// remove validation  from to field.
	if (wps_wgm_remove_validation_to() == 'on') {

		if (delivery_method == 'shipping') {
			to_mail = jQuery(document).find('#wps_wgm_to_ship').val();
		}
	}
	if (jQuery(document).find('#wps_uwgc_browse_img').val() != undefined) {
		form_Data.append('file', jQuery('input[type=file]')[0].files[0]);
	}

	var wps_wgm_preview_data = { 'html': html, 'error': error, 'to_mail': to_mail, 'form_Data': form_Data, 'send_date': schedule_date };
	return wps_wgm_preview_data;
};

var wps_wgm_remove_validation_msg = function () {
	return wps_uwgc_param.remove_validation_msg;
};
var wps_wgm_remove_validation_from = function () {
	return wps_uwgc_param.remove_validation_from;
};
var wps_wgm_remove_validation_to = function () {
	return wps_uwgc_param.remove_validation_to;
};
var wps_wgm_remove_validation_to_name = function () {
	return wps_uwgc_param.remove_validation_to_name;
};
// add_to_card button validation.
var wps_wgm_add_to_card_validation = function (html, error) {
	var html = '';
	var to_mail = '';
	var delivery_method = jQuery(document).find('input[name="wps_wgm_send_giftcard"]:checked').val();
	var enable_sms_notification = wps_uwgc_param.enable_sms_notification;
	// remove validation from to name field.
	if (wps_wgm_remove_validation_to_name() == 'on') {
		if (delivery_method == 'Mail to recipient') {
			to_mail = jQuery(document).find('#wps_wgm_to_name_optional').val();
			if (to_mail == null || to_mail == '') {
				to_mail = jQuery("#wps_wgm_to_email").val();
			}
		}
	} else {
		if (delivery_method == 'Mail to recipient') {
			if (wps_uwgc_param.is_customizable != 'yes') {
				to_mail = jQuery(document).find('#wps_wgm_to_name_optional').val();
				if (to_mail == null || to_mail == '') {
					error = true;
					jQuery(document).find("#wps_wgm_to_name_optional").addClass("wps_wgm_error");
					html += "<li><b>";
					html += wps_uwgc_param.to_name;
					html += "<b></li>";
				}
			}
		}
	}
	if (delivery_method == 'Downloadable') {
		to_mail = jQuery(document).find('#wps_wgm_to_download').val();
	}
	// remove validation  from to field.
	if (wps_wgm_remove_validation_to() == 'on') {

		if (delivery_method == 'shipping') {
			to_mail = jQuery(document).find('#wps_wgm_to_ship').val();
		}
	}
	if (enable_sms_notification == 'yes') {
		var contact = jQuery(document).find('#wps_whatsapp_contact').val();
		if (contact != null || contact != "") {
			var data = {
				action: 'wps_wgm_validate_twilio_contact_number',
				wps_contact: contact,
				wps_uwgc_nonce: wps_uwgc_param.wps_uwgc_nonce
			};

			jQuery.ajax(
				{
					url: wps_uwgc_param.ajaxurl,
					type: 'POST',
					async: false,
					cache: false,
					dataType: 'json',
					data: data,
					success: function (response) {
						if (response.result == 'Invalid') {
							error = true;
							jQuery(document).find("#wps_whatsapp_contact").addClass("wps_wgm_error");
							html += "<li><b>";
							html += wps_uwgc_param.invalid_contact;
							html += "</li>";
						}
					}
				}
			);
		}
	}
	if (wps_uwgc_param.is_addon_active != null && wps_uwgc_param.is_addon_active != '') {
		var response = wps_wgm_addon_validation(error);
		html += response.html;
		error = response.error;
	}
	var wps_wgm_add_to_cart_data = { 'html': html, 'error': error, 'to_mail': to_mail };
	return wps_wgm_add_to_cart_data;
};
	var block = function ($node) {
		if (!is_blocked($node)) {
			$node.addClass('processing').block(
				{
					message: null,
					overlayCSS: {
						background: '#fff',
						opacity: 0.6
					}
				}
			);
		}
	};
	var is_blocked = function ($node) {
		return $node.is('.processing') || $node.parents('.processing').length;
	};
	var unblock = function ($node) {
		$node.removeClass('processing').unblock();
	};

	jQuery(document).ready(function () {

		if (jQuery('#wps_gift_card_balance_wrapper_recharge').is(':visible')) {

			jQuery('#wps_giftcard_recharge_tab a').addClass('active');
		} else if (jQuery('#wps_gift_card_balance_wrapper_check').is(':visible')) {

			jQuery('#wps_giftcard_balance_tab a').addClass('active');
		} else if (jQuery('#wps_gift_card_balance_wrapper_order').is(':visible')) {
			jQuery('#wps_giftcard_order_tab a').addClass('active');
		} else if (jQuery('#wps_gift_card_view_wrapper_order').is(':visible')) {
			jQuery('#wps_giftcard_view_tab a').addClass('active');
		}
		jQuery('.wps-order-status').each(function () {
			var status = jQuery(this).html(); // Use 'this' to refer to the current element

			console.log(status);

			if (status === "on-hold") {
				jQuery(this).addClass('wps-on-hold');
			}
			if (status === "completed") {
				jQuery(this).addClass('wps-completed');
			}
			if (status === "processing") {
				jQuery(this).addClass('wps-processing');
			}
		});
	});
	jQuery(document).ready(function () {

		const $copyLinkButton = jQuery('.wps_copyLinkButton');

		// Add a click event handler to the anchor element
		$copyLinkButton.on('click', function (e) {
			e.preventDefault(); // Prevent the anchor from navigating

			// Get the href attribute of the anchor
			const linkToCopy = $copyLinkButton.attr('href');

			// Create a temporary input element to copy the link to the clipboard
			const $tempInput = jQuery('<input>');
			jQuery('body').append($tempInput);
			$tempInput.val(linkToCopy).select();

			try {
				// Use the Clipboard API to copy the text to the clipboard
				document.execCommand('copy');
				jQuery(this).append('<span class="wps-copied-text-msg">Copied!</span>');
				setTimeout(function () {
					jQuery('.wps-copied-text-msg').remove();
				}, 200);
			} catch (err) {
				jQuery(this).parent().append('<span class="wps-copied-text-msg">Oops!</span>');
			}

			// Remove the temporary input element
			$tempInput.remove();
		});
	});
	/////////////////////////////////////////////////////////////;
// source --> https://roomsafari.de/shop/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.10.4.4 
/*!
 * jQuery blockUI plugin
 * Version 2.70.0-2014.11.23
 * Requires jQuery v1.7 or later
 *
 * Examples at: http://malsup.com/jquery/block/
 * Copyright (c) 2007-2013 M. Alsup
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Thanks to Amir-Hossein Sobhi for some excellent contributions!
 */
!function(){"use strict";function e(e){e.fn._fadeIn=e.fn.fadeIn;var t=e.noop||function(){},o=/MSIE/.test(navigator.userAgent),n=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent),i=(document.documentMode,"function"==typeof document.createElement("div").style.setExpression&&document.createElement("div").style.setExpression);e.blockUI=function(e){d(window,e)},e.unblockUI=function(e){a(window,e)},e.growlUI=function(t,o,n,i){var s=e('<div class="growlUI"></div>');t&&s.append("<h1>"+t+"</h1>"),o&&s.append("<h2>"+o+"</h2>"),n===undefined&&(n=3e3);var l=function(t){t=t||{},e.blockUI({message:s,fadeIn:"undefined"!=typeof t.fadeIn?t.fadeIn:700,fadeOut:"undefined"!=typeof t.fadeOut?t.fadeOut:1e3,timeout:"undefined"!=typeof t.timeout?t.timeout:n,centerY:!1,showOverlay:!1,onUnblock:i,css:e.blockUI.defaults.growlCSS})};l();s.css("opacity");s.on("mouseover",function(){l({fadeIn:0,timeout:3e4});var t=e(".blockMsg");t.stop(),t.fadeTo(300,1)}).on("mouseout",function(){e(".blockMsg").fadeOut(1e3)})},e.fn.block=function(t){if(this[0]===window)return e.blockUI(t),this;var o=e.extend({},e.blockUI.defaults,t||{});return this.each(function(){var t=e(this);o.ignoreIfBlocked&&t.data("blockUI.isBlocked")||t.unblock({fadeOut:0})}),this.each(function(){"static"==e.css(this,"position")&&(this.style.position="relative",e(this).data("blockUI.static",!0)),this.style.zoom=1,d(this,t)})},e.fn.unblock=function(t){return this[0]===window?(e.unblockUI(t),this):this.each(function(){a(this,t)})},e.blockUI.version=2.7,e.blockUI.defaults={message:"<h1>Please wait...</h1>",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1};var s=null,l=[];function d(d,c){var u,b,h=d==window,k=c&&c.message!==undefined?c.message:undefined;if(!(c=e.extend({},e.blockUI.defaults,c||{})).ignoreIfBlocked||!e(d).data("blockUI.isBlocked")){if(c.overlayCSS=e.extend({},e.blockUI.defaults.overlayCSS,c.overlayCSS||{}),u=e.extend({},e.blockUI.defaults.css,c.css||{}),c.onOverlayClick&&(c.overlayCSS.cursor="pointer"),b=e.extend({},e.blockUI.defaults.themedCSS,c.themedCSS||{}),k=k===undefined?c.message:k,h&&s&&a(window,{fadeOut:0}),k&&"string"!=typeof k&&(k.parentNode||k.jquery)){var y=k.jquery?k[0]:k,m={};e(d).data("blockUI.history",m),m.el=y,m.parent=y.parentNode,m.display=y.style.display,m.position=y.style.position,m.parent&&m.parent.removeChild(y)}e(d).data("blockUI.onUnblock",c.onUnblock);var g,v,I,w,U=c.baseZ;g=o||c.forceIframe?e('<iframe class="blockUI" style="z-index:'+U+++';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+c.iframeSrc+'"></iframe>'):e('<div class="blockUI" style="display:none"></div>'),v=c.theme?e('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+U+++';display:none"></div>'):e('<div class="blockUI blockOverlay" style="z-index:'+U+++';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'),c.theme&&h?(w='<div class="blockUI '+c.blockMsgClass+' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(U+10)+';display:none;position:fixed">',c.title&&(w+='<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(c.title||"&nbsp;")+"</div>"),w+='<div class="ui-widget-content ui-dialog-content"></div>',w+="</div>"):c.theme?(w='<div class="blockUI '+c.blockMsgClass+' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(U+10)+';display:none;position:absolute">',c.title&&(w+='<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(c.title||"&nbsp;")+"</div>"),w+='<div class="ui-widget-content ui-dialog-content"></div>',w+="</div>"):w=h?'<div class="blockUI '+c.blockMsgClass+' blockPage" style="z-index:'+(U+10)+';display:none;position:fixed"></div>':'<div class="blockUI '+c.blockMsgClass+' blockElement" style="z-index:'+(U+10)+';display:none;position:absolute"></div>',I=e(w),k&&(c.theme?(I.css(b),I.addClass("ui-widget-content")):I.css(u)),c.theme||v.css(c.overlayCSS),v.css("position",h?"fixed":"absolute"),(o||c.forceIframe)&&g.css("opacity",0);var x=[g,v,I],C=e(h?"body":d);e.each(x,function(){this.appendTo(C)}),c.theme&&c.draggable&&e.fn.draggable&&I.draggable({handle:".ui-dialog-titlebar",cancel:"li"});var S=i&&(!e.support.boxModel||e("object,embed",h?null:d).length>0);if(n||S){if(h&&c.allowBodyStretch&&e.support.boxModel&&e("html,body").css("height","100%"),(n||!e.support.boxModel)&&!h)var E=p(d,"borderTopWidth"),O=p(d,"borderLeftWidth"),T=E?"(0 - "+E+")":0,M=O?"(0 - "+O+")":0;e.each(x,function(e,t){var o=t[0].style;if(o.position="absolute",e<2)h?o.setExpression("height","Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:"+c.quirksmodeOffsetHack+') + "px"'):o.setExpression("height",'this.parentNode.offsetHeight + "px"'),h?o.setExpression("width",'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):o.setExpression("width",'this.parentNode.offsetWidth + "px"'),M&&o.setExpression("left",M),T&&o.setExpression("top",T);else if(c.centerY)h&&o.setExpression("top",'(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'),o.marginTop=0;else if(!c.centerY&&h){var n="((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "+(c.css&&c.css.top?parseInt(c.css.top,10):0)+') + "px"';o.setExpression("top",n)}})}if(k&&(c.theme?I.find(".ui-widget-content").append(k):I.append(k),(k.jquery||k.nodeType)&&e(k).show()),(o||c.forceIframe)&&c.showOverlay&&g.show(),c.fadeIn){var B=c.onBlock?c.onBlock:t,j=c.showOverlay&&!k?B:t,H=k?B:t;c.showOverlay&&v._fadeIn(c.fadeIn,j),k&&I._fadeIn(c.fadeIn,H)}else c.showOverlay&&v.show(),k&&I.show(),c.onBlock&&c.onBlock.bind(I)();if(r(1,d,c),h?(s=I[0],l=e(c.focusableElements,s),c.focusInput&&setTimeout(f,20)):function(e,t,o){var n=e.parentNode,i=e.style,s=(n.offsetWidth-e.offsetWidth)/2-p(n,"borderLeftWidth"),l=(n.offsetHeight-e.offsetHeight)/2-p(n,"borderTopWidth");t&&(i.left=s>0?s+"px":"0");o&&(i.top=l>0?l+"px":"0")}(I[0],c.centerX,c.centerY),c.timeout){var z=setTimeout(function(){h?e.unblockUI(c):e(d).unblock(c)},c.timeout);e(d).data("blockUI.timeout",z)}}}function a(t,o){var n,i,d=t==window,a=e(t),u=a.data("blockUI.history"),f=a.data("blockUI.timeout");f&&(clearTimeout(f),a.removeData("blockUI.timeout")),o=e.extend({},e.blockUI.defaults,o||{}),r(0,t,o),null===o.onUnblock&&(o.onUnblock=a.data("blockUI.onUnblock"),a.removeData("blockUI.onUnblock")),i=d?e(document.body).children().filter(".blockUI").add("body > .blockUI"):a.find(">.blockUI"),o.cursorReset&&(i.length>1&&(i[1].style.cursor=o.cursorReset),i.length>2&&(i[2].style.cursor=o.cursorReset)),d&&(s=l=null),o.fadeOut?(n=i.length,i.stop().fadeOut(o.fadeOut,function(){0==--n&&c(i,u,o,t)})):c(i,u,o,t)}function c(t,o,n,i){var s=e(i);if(!s.data("blockUI.isBlocked")){t.each(function(e,t){this.parentNode&&this.parentNode.removeChild(this)}),o&&o.el&&(o.el.style.display=o.display,o.el.style.position=o.position,o.el.style.cursor="default",o.parent&&o.parent.appendChild(o.el),s.removeData("blockUI.history")),s.data("blockUI.static")&&s.css("position","static"),"function"==typeof n.onUnblock&&n.onUnblock(i,n);var l=e(document.body),d=l.width(),a=l[0].style.width;l.width(d-1).width(d),l[0].style.width=a}}function r(t,o,n){var i=o==window,l=e(o);if((t||(!i||s)&&(i||l.data("blockUI.isBlocked")))&&(l.data("blockUI.isBlocked",t),i&&n.bindEvents&&(!t||n.showOverlay))){var d="mousedown mouseup keydown keypress keyup touchstart touchend touchmove";t?e(document).on(d,n,u):e(document).off(d,u)}}function u(t){if("keydown"===t.type&&t.keyCode&&9==t.keyCode&&s&&t.data.constrainTabKey){var o=l,n=!t.shiftKey&&t.target===o[o.length-1],i=t.shiftKey&&t.target===o[0];if(n||i)return setTimeout(function(){f(i)},10),!1}var d=t.data,a=e(t.target);return a.hasClass("blockOverlay")&&d.onOverlayClick&&d.onOverlayClick(t),a.parents("div."+d.blockMsgClass).length>0||0===a.parents().children().filter("div.blockUI").length}function f(e){if(l){var t=l[!0===e?l.length-1:0];t&&t.trigger("focus")}}function p(t,o){return parseInt(e.css(t,o),10)||0}}"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],e):e(jQuery)}();