// source --> https://www.trockene-schmitts.de/wp-content/plugins/pisol-mmq-pro/public/js/pisol-mmq-public.js?ver=1.3.4.17 
(function ($) {
	'use strict';

	jQuery(function ($) {

		var message = {
			fadeInTime: 600,
			fadeOuttime: 600,
			howLongToShow: pisol_mmq.howLongToShow,
			showContinues: pisol_mmq.showContinues,
			show: function () {
				message.hide_progress();
				jQuery('.pisol-mmq-bar-container').fadeIn(message.fadeInTime);
				jQuery('body').addClass('pisol-mmq-bar-visible');
				if (!message.showContinues) {
					setTimeout(function () { message.hide(); }, message.howLongToShow);
				}
				message.linear_progress();
			},

			hide: function () {
				message.show_progress();
				jQuery('.pisol-mmq-bar-container').fadeOut(message.fadeOuttime);
				jQuery('body').removeClass('pisol-mmq-bar-visible');
			},

			close_button: function () {
				jQuery('.pisol-mmq-close').click(function () {
					message.hide();
				});
			},

			hide_progress: function () {
				jQuery('#pi-mmq-progress-circle').fadeOut();
			},

			show_progress: function () {
				jQuery('#pi-mmq-progress-circle').fadeIn();
			},

			close_progress: function () {
				jQuery('#pi-mmq-progress-circle').on('click', function () {
					message.hide_progress();
					message.show();
				});
			},

			linear_progress: function () {
				jQuery(".pi-linear-progress-container").each(function () {
					var width = jQuery(this).data('percent');
					jQuery('.pi-liner-progress', this).remove();
					jQuery(this).append('<div class="pi-liner-progress" style="width:' + width + '%"></div>');
				});

			},


			update_cart: function () {
				// update total amount after click add_to_cart
				jQuery(document).ajaxComplete(function (event, jqxhr, settings) {
					var ajax_link = settings.url;

					if (ajax_link && ajax_link != 'undefined' && ajax_link.search(/wc-ajax=add_to_cart/i) >= 0 || ajax_link.search(/wc-ajax=remove_from_cart/i) >= 0 || ajax_link.search(/wc-ajax=get_refreshed_fragments/i) >= 0 || ajax_link.search(/admin-ajax\.php/i) >= 0) {

						if (ajax_link.search(/admin-ajax\.php/i) >= 0) {
							return;
						}

						if (ajax_link.search(/wc-ajax=add_to_cart/i) >= 0) {
							message.add_to_cart_progress(event, jqxhr, settings);
						}

						message.amount_progress(ajax_link);

					}
				});
			},

			add_to_cart_progress: function (event, jqxhr, settings) {

				var product_id = $.urlParam('product_id', settings.data);

				jQuery.ajax({
					url: pisol_mmq.ajax_url,
					cache: false,
					type: 'POST',
					data: {
						action: 'get_product_loop_msg',
						product_id: product_id
					},
					success: function (response) {
						var id = "#pisol_mmq_product_" + product_id;
						jQuery(id).replaceWith(response);
						message.linear_progress();
					}
				});
			},

			registerTrigger: function () {
				jQuery(document).on('pisol_mmq_get_cart', function (e, ajax_link) {
					message.amount_progress(ajax_link);
				})
			},

			amount_progress: function (ajax_link = "") {
				jQuery.ajax({
					url: pisol_mmq.ajax_url,
					cache: false,
					type: 'POST',
					dataType: 'json',
					data: {
						action: 'get_cart_mmq'
					},
					success: function (response) {
						if (ajax_link.search(/wc-ajax=get_refreshed_fragments/i) >= 0) {
							if (parseInt(response.total_percent) == 0) {
								return;
							}
						}

						var percent = response.percent > 100 ? 1 : (parseFloat(response.percent) / 100);

						if (jQuery('#pi-mmq-progress-circle').length !== 0) {
							if (jQuery().circleProgress) {
								jQuery('#pi-mmq-progress-circle').circleProgress('value', percent);
							}
						}

						jQuery('.pi-amount-progress-bar').remove();
						jQuery('.pisol-mmq-bar-container').append(response.progress_bar)

						jQuery(".pisol-mmq-bar-message").html(response.message_bar);
						message.show();
						message.linear_progress();
					}
				});
			}


		};
		message.show();
		message.update_cart();
		message.close_button();
		message.close_progress();
		message.amount_progress();
		message.registerTrigger();
	});

	jQuery(function () {
		var percent = pisol_mmq.percent > 100 ? 1 : (parseFloat(pisol_mmq.percent) / 100);
		if (jQuery().circleProgress) {
			jQuery('#pi-mmq-progress-circle').circleProgress({
				value: percent,
				size: 70,
				fill: {
					gradient: ["red", "orange"]
				}
			});
		}
	});

	jQuery.urlParam = function (name, url) {
		var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(url);
		if (results == null) {
			return null;
		}
		return decodeURI(results[1]) || 0;
	}

	function gettingVariationMessage() {
		this.init = function () {
			this.detectChange();
			this.resetChange();
		}

		this.resetChange = function () {
			var parent = this;
			$(document).on('reset_data', "form.variations_form", function (event, data) {
				var form = $('form.variations_form');
				var product_id = form.data('product_id');
				parent.setMessage("");
			});
		}

		this.detectChange = function () {
			var parent = this;
			$(document).on('show_variation', "form.variations_form", function (event, data) {
				var form = $('form.variations_form');
				var product_id = form.data('product_id');
				if (data != undefined && jQuery(".pi-mmq-variable-message").length > 0) {
					var variation_id = data.variation_id;
					parent.getMessage(product_id, variation_id);
				} else {
					parent.setMessage("");
				}
			});
		}

		this.getMessage = function (product_id, variation_id) {
			var parent = this;
			jQuery.ajax({
				url: pisol_mmq.ajax_url,
				cache: false,
				type: 'POST',
				dataType: 'json',
				data: {
					action: 'pi_mmq_get_variation_msg',
					product_id: product_id,
					variation_id: variation_id
				}
			}).done(function (response) {
				if (response.data != undefined) {
					parent.setMessage(response.data);
				}
			})
		}

		this.setMessage = function (msg) {
			jQuery(".pi-mmq-variable-message").html(msg);
		}
	}

	jQuery(function ($) {
		var gettingVariationMessage_obj = new gettingVariationMessage();
		gettingVariationMessage_obj.init();
	});
})(jQuery);