AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.112
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/nice/components/com_djcatalog2/themes/default/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/nice/components/com_djcatalog2/themes/default/js/theme.js
/**
 * @version 3.x
 * @package DJ-Catalog2
 * @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
 * @license DJ-Extensions.com Proprietary Use License
 * @author url: http://dj-extensions.com
 * @author email contact@dj-extensions.com
 *
 */

var DJC2ScrollOffset = (typeof window.DJC2ScrollOffset !== 'undefined') ? window.DJC2ScrollOffset : 0;

function DJCatMatchModules(className, setLineHeight, reset) {
	var maxHeight = 0;
	var divs = null;
	if (typeof (className) == 'string') {
		divs = jQuery(document.body).find(className);
	} else {
		divs = className;
	}
	if (divs.length > 1) {
		jQuery(divs).each(function (index, element) {
			if (reset == true) {
				jQuery(element).css('height', '');
			}
			maxHeight = Math.max(maxHeight, parseInt(jQuery(element).outerHeight()));
		});

		jQuery(divs).css('height', maxHeight + 'px');

		if (setLineHeight) {
			jQuery(divs).css('line-height', maxHeight + 'px');
		}
	}
}

this.DJCatImageSwitcher = function () {
	jQuery('.djc_image_switcher').each(function () {
		var wrapper = jQuery(this);

		var mainimagelink = wrapper.find('[data-target="main-image-link"]');
		var mainimage = mainimagelink.find('img');
		var thumbs = wrapper.find('[data-toggle="image-thumbs"]').find('img');
		var thumblinks = wrapper.find('[data-toggle="image-thumbs"]').find('a');

		if (mainimagelink.length > 0 && mainimage.length > 0) {
			jQuery(mainimagelink).unbind('click');
			jQuery(mainimagelink).click(function (event) {
				event.preventDefault();
				var rel = jQuery(mainimagelink).attr('data-thumb');
				thumblinks.filter('[data-thumb="' + rel + '"]').trigger('click');
				return false;
			});
		}

		if (!mainimage.length || !mainimagelink.length || !thumblinks.length || !thumbs.length) return false;

		mainimagelink = jQuery(mainimagelink.first());
		mainimage = jQuery(mainimage.first());
		jQuery(thumblinks).each(function (index, thumblink) {
			jQuery(thumblink).find('img').click(function (event) {
				event.stopPropagation();
				var img = new Image();
				img.onload = (function () {
					mainimage.fadeIn(300);
				});
				mainimage.fadeOut({
					duration: 300,
					start: function () {
						mainimagelink.attr('href', jQuery(thumblink).attr('href'));
						mainimagelink.attr('title', jQuery(thumblink).attr('title'));
						mainimagelink.attr('data-thumb', index);
						mainimagelink.attr('data-type', jQuery(thumblink).attr('data-type'));

						img.src = jQuery(thumblink).attr('data-large');

						mainimage.attr('alt', jQuery(thumblink).attr('title'));
					},
					complete: function () {
						mainimage.attr('src', img.src);
						if (jQuery(window).width() <= 979) {
							jQuery('html, body').animate({
								scrollTop: mainimagelink.offset().top - DJC2ScrollOffset
							}, 10);
						}
					}
				});
				return false;
			});
		});
	});
};

(function ($) {

	window.DJCatCartPage = function() {

		// in case one-step checkout enabled
		var view = 'checkout';
		if ($('#djcatalog').hasClass('djc_cart')) {
			view = 'cart';
		}

		$.ajax({
			'url': 'index.php?option=com_djcatalog2&view='+view+'&ts=' + Date.now(),
			method: 'get',
			dataType: 'html'
		}).done(function (data) {
			var respBody = data.match(/<body[^>]*>([\w|\W]*)<\/body>/im);
			if (respBody){
				respBody = respBody[1].replace(new RegExp('<script[^>]*>([\\S\\s]*?)<\/script\\s*>', 'img'), '');
			}
			var $respBody = $(respBody);
			var curCartHtml = $('table.djc_cart_table');
			var cartHtml = $respBody.find('table.djc_cart_table');
			curCartHtml.replaceWith(cartHtml);
			$('#djcatalog').trigger('ajaxFilter:loadItems');
		});
	}

	window.DJCatOrderSummaryXhr = false;
	window.DJCatOrderSummary = function (deliveries, payments, shipping_days) {
		if (window.DJCatOrderSummaryXhr && window.DJCatOrderSummaryXhr.readyState < 4) {
			window.DJCatOrderSummaryXhr.abort();
		}

		this.delivery_id = 0;
		this.payment_id = 0;
		this.distance = document.querySelectorAll('input[type="hidden"][name^="jform_djcatalog2delivery_calculated"]');
		this.shipping_days = shipping_days;

		if (deliveries.length) {
			for (var i = 0; i < deliveries.length; i++) {
				if (deliveries[i].checked) {
					this.delivery_id = deliveries[i].value;
				}
			}
		}
		if (payments.length) {
			for (var i = 0; i < payments.length; i++) {
				if (payments[i].checked) {
					this.payment_id = payments[i].value;
				}
			}
		}

		this.djc_delivery_extra = $("div.djc_delivery_details");
		this.djc_payment_extra = $("div.djc_payment_details");

		var self = this;

		if (self.djc_delivery_extra.length) {
			self.djc_delivery_extra.each(function () {
				var element = $(this);
				if (element.attr('data-id') == self.delivery_id) {
					element.css('display', '');
				} else {
					element.css('display', 'none');
				}
			});
		}
		if (self.djc_payment_extra.length) {
			self.djc_payment_extra.each(function () {
				var element = $(this);
				if (element.attr('data-id') == self.payment_id) {
					element.css('display', '');
				} else {
					element.css('display', 'none');
				}
			});
		}

		$('#djc_ordersummary').css('opacity', 0.3);
		//$('#djcDeliveryForm').html('');

		window.DJCatOrderSummaryXhr = $.ajax({
			'url': 'index.php?option=com_djcatalog2&task=cart.getSummary&ts=' + Date.now(),
			'data': 'payment=' + self.payment_id + '&' + 'delivery=' + this.delivery_id + ((!isNaN(this.shipping_days) ? '&shipping_days=' + this.shipping_days : ''))
		}).done(function (data) {
			try {
				var response = $.parseJSON(data);

				if (response.data) {
					if (response.error == 0) {
						var prices = response.data;
						$('#djc_summary_gross').html(prices.products);
						$('#djc_summary_delivery').html(prices.delivery);
						$('#djc_summary_payment').html(prices.payment);
						$('#djc_summary_components').html(prices.components);
						$('#djc_summary_total').html(prices.total);

						if(response.delivery) {
							$(document).trigger('checkout:reloadDelivery', [response.delivery]);
						}
						if(response.payment) {
							$(document).trigger('checkout:reloadPayment', [response.payment]);
						}

						DJCatCartPage();

					} else if (response.error_message) {
						alert(response.error_message);
						if (deliveries.length) {
							deliveries.each(function () {
								$(this).removeAttr('checked');
							});
						}
						if (payments.length) {
							payments.each(function () {
								$(this).removeAttr('checked');
							});
						}
					}
				}
			} catch (e) {

			}
		}).always(function () {
			$('#djc_ordersummary').css('opacity', 1);
		});
	};
})(jQuery);

this.DJCatContactForm = function () {
	// contact form handler
	var contactform = jQuery('#contactform');
	var makesure = jQuery('#djc_contact_form');
	var contactformButton = jQuery('#djc_contact_form_button');
	var contactformButtonClose = jQuery('#djc_contact_form_button_close');

	if (contactform.length && makesure.length) {

		if (window.location.hash == 'contactform' || window.location.hash == '#contactform') {
			contactform.slideDown(200, function () {
				jQuery('html, body').animate({
					scrollTop: jQuery('#contactform').offset().top - DJC2ScrollOffset
				}, 200);
			});
		} else if (contactformButton.length) {
			contactform.hide();
		}
		if (contactformButton.length) {
			contactformButton.click(function (event) {
				event.preventDefault();
				contactform.slideDown();

				if (contactform.is(':hidden') == false) {
					jQuery('html, body').animate({
						scrollTop: jQuery('#contactform').offset().top - DJC2ScrollOffset
					}, 200);
				}
			});
		}
		if (contactformButtonClose.length > 0) {
			contactformButtonClose.click(function (event) {
				event.preventDefault();

				var isIframe = false;
				try {
					isIframe = window.self !== window.top;
				} catch (e) {
					isIframe = true;
				}

				if (isIframe) {
					jQuery(window.parent.document).find('button.mfp-close').trigger('click');
				} else {
					contactform.slideUp(200, function () {
						jQuery('html, body').animate({
							scrollTop: jQuery('#djcatalog').offset().top - DJC2ScrollOffset
						}, 200);
					});
				}
			});
		}
	}
};

this.DJCatAdvSearch = function () {
	var advSearchToggle = jQuery('.djc_adv_search_toggle');
	var advSearchWrapper = jQuery('#djc_additional_filters');
	if (advSearchToggle.length > 0) {
		if (!advSearchWrapper) {
			advSearchToggle.css('display', 'none');
		} else {
			var cookieVal = document.cookie.match('(^|;) ?' + 'djcAdvSearch' + '=([^;]*)(;|$)');
			var visible = cookieVal ? cookieVal[2] : null;

			if (visible != 1) {
				advSearchWrapper.hide();
			}

			advSearchToggle.unbind('click');
			advSearchToggle.click(function (event) {
				advSearchWrapper.toggle();

				setTimeout(function () {
					var expires = new Date();
					expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));

					if (advSearchWrapper.is(':hidden') == false) {
						document.cookie = 'djcAdvSearch' + '=' + '1' + ';expires=' + expires.toUTCString();
						jQuery('html, body').animate({
							scrollTop: advSearchWrapper.offset().top - DJC2ScrollOffset
						}, 200);
					} else {
						document.cookie = 'djcAdvSearch' + '=' + '0' + ';expires=' + expires.toUTCString();
					}
				}, 200);
			});
		}
	}
};

var DJCatMatchBackgrounds = function () {

	//DJCatMatchModules('.djc_subcategory_bg', false, true);
	DJCatMatchModules('.djc_thumbnail', true, true);

	if (jQuery('.djc_subcategory_row').length > 0) {
		jQuery('.djc_subcategory_row').each(function () {
			var row = jQuery(this);
			var elements = row.find('.djc_subcategory_bg');
			if (elements.length > 0) {
				DJCatMatchModules(elements, false, true);
			}
		});
	}

	if (jQuery('.djc_item_row').length > 0) {
		jQuery('.djc_item_row').each(function () {
			var row = jQuery(this);
			var elements = row.find('.djc_item_bg');
			if (elements.length > 0) {
				DJCatMatchModules(elements, false, true);
			}
		});
	}
};

var DJCatInitTooltips = function(){
	jQuery(document).find(".hasTooltip").tooltip({"html": true,"container": "body"});
};

function DJCatSelectCustomerUser(input) {
	var id = jQuery(input).val();
	if (id.length) {
		window.location.href = window.DJC2BaseUrl + '/index.php?option=com_djcatalog2&task=cart.selectCheckoutUser&user_id=' + id;
	}
}

function DJCatUpdateDeliveryMethods(state) {
	var deliveryMethods = jQuery('input.djc_delivery_method');
	var countryId = (state == 1) ? jQuery('.djc_country.billing').val() : jQuery('.djc_country.delivery').val();
	var postCode = (state == 1) ? jQuery('.djc_postcode.billing').val() : jQuery('.djc_postcode.delivery').val().trim();
	var triggerChecked = false;

	deliveryMethods.each(function () {
		var attrs = JSON.parse(jQuery(this).attr('data-options'));
		var validCountry = false;
		var validPostcode = false

		if (attrs.countries.length > 0) {
			if (countryId) {
				jQuery.each(attrs.countries, function (i, dCountryId) {
					if (dCountryId == countryId) {
						validCountry = true;
					}
				});
			} else {
				validCountry = false;
			}
		} else {
			validCountry = true;
		}

		if (attrs.postcodes.length > 0) {
			if (postCode) {
				if (attrs.postcodes.length == 1) {
					if (attrs.postcodes[0] == postCode) {
						validPostcode = true;
					}
				} else {
					if (postCode >= attrs.postcodes[0] && postCode <= attrs.postcodes[1]) {
						validPostcode = true;
					} else {
						validPostcode = false;
					}
				}
			} else {
				validPostcode = false;
			}
		} else {
			validPostcode = true;
		}

		if (!validCountry || !validPostcode) {
			jQuery(this).removeAttr('checked').hide();
			jQuery('label[for="' + this.id + '"]').hide();
			jQuery('input.djc_payment_method').removeAttr('checked');
			//jQuery('input.djc_payment_method').trigger('change');
			triggerChecked = true;
		} else {
			jQuery(this).show();
			jQuery('label[for="' + this.id + '"]').show();
		}
	});

	if (triggerChecked) {
		jQuery('input.djc_payment_method:checked').trigger('change');
	}
}

function DJCatUpdatePaymentMethods(state) {
	var paymentMethods = jQuery('input.djc_payment_method');
	var countryId = (state == 1) ? jQuery('.djc_country.billing').val() : jQuery('.djc_country.delivery').val();
	var postCode = (state == 1) ? jQuery('.djc_postcode.billing').val() : jQuery('.djc_postcode.delivery').val().trim();

	paymentMethods.each(function () {
		var attrs = JSON.parse(jQuery(this).attr('data-options'));
		var validCountry = false;
		var validPostcode = false

		if (attrs.countries.length > 0) {
			if (countryId) {
				jQuery.each(attrs.countries, function (i, dCountryId) {
					if (dCountryId == countryId) {
						validCountry = true;
					}
				});
			} else {
				validCountry = false;
			}
		} else {
			validCountry = true;
		}

		if (attrs.postcodes.length > 0) {
			if (postCode) {
				if (attrs.postcodes.length == 1) {
					if (attrs.postcodes[0] == postCode) {
						validPostcode = true;
					}
				} else {
					if (postCode >= attrs.postcodes[0] && postCode <= attrs.postcodes[1]) {
						validPostcode = true;
					} else {
						validPostcode = false;
					}
				}
			} else {
				validPostcode = false;
			}
		} else {
			validPostcode = true;
		}

		if (!validCountry || !validPostcode) {
			jQuery(this).removeAttr('checked').hide();
			jQuery('label[for="' + this.id + '"]').hide();
		} else {
			var delivery_id = 0;

			jQuery('input[name="jform[djcatalog2orderdetails][delivery_method_id]"]').each(function () {
				if (jQuery(this).is(':checked')) {
					delivery_id = jQuery(this).val();
				}
			});

			var xref = jQuery(this).attr("data-delivery");
			var validMethod = false;

			if (xref.length == 0) {
				validMethod = true;
			} else {
				xref = xref.split(',');
				for (var i = 0; i < xref.length; i++) {
					if (xref[i] == delivery_id) {
						validMethod = true;
					}
				}
			}

			if (validMethod) {
				jQuery(this).show();
				jQuery('label[for="' + this.id + '"]').show();
			} else {
				jQuery(this).removeAttr('checked').hide();
				jQuery('label[for="' + this.id + '"]').hide();
			}
		}
	});
}
(function ($) {
	$(document).ready(function () {
		// image switcher, contact form, advanced search module
		DJCatImageSwitcher();
		DJCatContactForm();
		DJCatAdvSearch();

		var DJCatQty = {
			initWrapper: function (element) {
				var input = $(element);
				if (input.prop('hasQtyBtns')) return;

				var type = input.attr('data-type') == 'flo' ? 'flo' : 'int';
				var minVal = input.attr('data-min') ? input.attr('data-min') : 1;
				var maxVal = input.attr('data-max') ? input.attr('data-max') : 0;

				if (type == 'int') {
					minVal = parseInt(minVal);
					maxVal = parseInt(maxVal);
				} else {
					minVal = parseFloat(minVal);
					maxVal = parseFloat(maxVal);
				}

				var allowEmpty = (input.attr('data-allowempty') == '1');
				var step = (typeof input.attr('data-step') != 'undefined') ? input.attr('data-step') : 1;
				var precision = (typeof input.attr('data-precision') != 'undefined') ? input.attr('data-precision') : 0;
				var unit = (typeof input.attr('data-unit') != 'undefined') ? input.attr('data-unit') : '';

				input.prop('qtyCfg', {
					'type': type,
					minVal: minVal,
					maxVal: maxVal,
					allowEmpty: allowEmpty,
					step: type == 'int' ? parseInt(step) : parseFloat(step),
					precision: precision,
					unit: unit
				});

				input.prop('hasQtyBtns', true);

				//this.setMarkup(input);
				this.bindEvents(input);
			},

			setMarkup: function (input) {
				var props = input.prop('qtyCfg');

				var html1 = '<span data-toggle="dec" class="btn btn-primary djc_qty_btn djc_qty_dec">-</span>';
				var html2 = '<span data-toggle="inc" class="btn btn-primary djc_qty_btn djc_qty_inc">+</span>';

				input.wrap('<div class="djc_qty input-append input-prepend"></div>');
				input.parent().append('<span class="add-on">' + props.unit + '</span>');
				input.parents('.djc_qty').prepend($(html1)).append($(html2));
			},

			bindEvents: function (input) {
				var self = this;
				input.on('keyup', function () {
					self.validate(input, false);
				});
				input.on('change click', function () {
					self.validate(input, true);
				});

				var btns = input.parents('.djc_qty').find('.djc_qty_btn');

				btns.on('qty:click', function (event, extra) {
					var props = input.prop('qtyCfg');

					var current = props.type == 'int' ? parseInt(input.val()) : parseFloat(input.val());

					if (isNaN(current) /*|| current == 0*/) {
						if (props.allowEmpty) {
							input.val('');
						} else {
							input.val(props.minVal);
						}
						return;
					}

					var action = $(this).attr('data-toggle');
					if (action != 'inc' && action != 'dec') {
						return false;
					}

					if (action == 'inc') {
						if (props.maxVal > 0) {
							if (current == props.maxVal || current + props.step > props.maxVal) {
								current = props.maxVal;
							} else {
								current = parseFloat((current + props.step).toFixed(props.precision));
							}
						} else {
							current = parseFloat((current + props.step).toFixed(props.precision));
						}
					} else {
						if (current == props.minVal || current - props.step < props.minVal) {
							current = props.minVal;
						} else {
							current = parseFloat((current - props.step).toFixed(props.precision));
						}
					}
					;
					input.val(current);
					//self.validate(input, true);
					input.trigger('change', extra);
				});

				btns.on('keypress', function (evt) {
					var key = evt.which;
					if (key == 13) {
						$(this).trigger('qty:click', 'keypress');
						return false;
					}
				});

				var interval = null;
				btns.on('mousedown touchstart', function (event) {
					event.preventDefault();
					event.stopPropagation();
					var btn = $(this);
					btn.trigger('qty:click', 'mouseclick');
					interval = setInterval(function () {
						btn.trigger('qty:click', 'mouseclick');
					}, 600);
				}).on('mouseup mouseleave touchend', function (event) {
					clearInterval(interval);
				});
			},

			validate: function (input, full) {
				full = (typeof full != 'undefined' && full) ? true : false;
				var props = input.prop('qtyCfg');
				//var value = (props.type == 'int') ? parseInt(input.val()) : parseFloat(input.val());
				var value = input.val();
				var numVal = (props.type == 'int') ? parseInt(value) : parseFloat(value);

				if (props.type == 'int') {
					var validNo = new RegExp(/^\d$/);
					var restricted = new RegExp(/[^\d+]/g);
					if (validNo.test(value) == false) {
						value = value.replace(restricted, '');
					}
					numVal = parseInt(value);
				} else {
					var validNo = new RegExp(/^(\d+|\d+\.\d+)$/);
					var semiValidNo = new RegExp(/^\d+|\.$/);
					var wrongDec = new RegExp(/\,/g);
					var restricted = new RegExp(/[^\d+\.]/g);

					value = value.replace(wrongDec, ".");

					if (validNo.test(value) == false) {
						if (full || semiValidNo.test(value) == false) {
							value = value.replace(restricted, '');
						}
					}
					numVal = parseFloat(value);
				}

				if (full) {
					if (numVal < props.minVal) {
						value = props.minVal;
					} else if (props.maxVal > 0 && props.maxVal < numVal) {
						value = props.maxVal;
					}

					numVal = parseFloat(value);
					if (props.step > 0.0000) {
						var stepQty = parseFloat(props.minVal.toFixed(props.precision));
						var tmp = stepQty;
						while (tmp < numVal) {
							stepQty += props.step;
							tmp = parseFloat(stepQty.toFixed(props.precision));
						}
						value = stepQty;
					}

					value = (props.type == 'int') ? parseInt(value) : parseFloat(value).toFixed(props.precision);
				}

				input.val(value);
			}
		};

		window.DJCatUpdateQtyEvents = function(){
				var cartUpdateTimeout;

				$('.djc_cart_table input.djc_qty_input').on('keydown', function (evt) {
					if (evt.which == 9) {
						clearTimeout(cartUpdateTimeout);
					}
				});

				$('.djc_cart_table input.djc_qty_input').on('change', function (evt, extra) {
					clearTimeout(cartUpdateTimeout);
					var input = $(this);
					var time = evt.type == 'keyup' ? 4500 : 1500;

					if ((evt.type == 'change' && typeof evt.isTrigger == 'undefined') || extra == 'keypress') {
						return;
					}

					if (input.val() != '') {
						cartUpdateTimeout = setTimeout(function () {
							input.parents('form').css('opacity', 0.3);
							input.parents('form').trigger('submit');
						}, time);
					}
				});

				$('.djc_cart_table .btn.djc_update_quantity').on('click', function (evt) {
					evt.preventDefault();
					var input = $(this);
					cartUpdateTimeout = setTimeout(function () {
						input.parents('form').css('opacity', 0.3);
						input.parents('form').trigger('submit');
					}, 10);
				});
			};


		var images = [];

		// producer modals
		$(document).ready(function () {
			$('#djcatalog').on('ajaxFilter:loadItems', function () {
				$(this).find('a[data-toggle="modal"]').each(function () {
					var link = $(this);
					$(link.attr('data-target')).on('show.bs.modal', function () {
						$('body').addClass('modal-open');
						var modalBody = $(this).find('.modal-body');
						modalBody.find('iframe').remove();
						modalBody.prepend('<iframe class="iframe" src="' + link.attr('data-href') + '" name="' + link.attr('data-modaltitle') + '" height="600px"></iframe>');
					}).on('shown.bs.modal', function () {
						var modalHeight = $('div.modal:visible').outerHeight(true),
							modalHeaderHeight = $('div.modal-header:visible').outerHeight(true),
							modalBodyHeightOuter = $('div.modal-body:visible').outerHeight(true),
							modalBodyHeight = $('div.modal-body:visible').height(),
							modalFooterHeight = $('div.modal-footer:visible').outerHeight(true),
							padding = this.offsetTop,
							maxModalHeight = ($(window).height() - (padding * 2)),
							modalBodyPadding = (modalBodyHeightOuter - modalBodyHeight),
							maxModalBodyHeight = maxModalHeight - (modalHeaderHeight + modalFooterHeight + modalBodyPadding);
						var iframeHeight = $('.iframe').height();
						if (iframeHeight > maxModalBodyHeight) {
							$('.modal-body').css({'max-height': maxModalBodyHeight, 'overflow-y': 'auto'});
							$('.iframe').css('max-height', maxModalBodyHeight - modalBodyPadding);
						}
					}).on('hide.bs.modal', function () {
						$('body').removeClass('modal-open');
						$('.modal-body').css({'max-height': 'initial', 'overflow-y': 'initial'});
						$('.modalTooltip').tooltip('destroy');
					});
				});
			});
		});

		// product compare
		var initCompare  = (function () {
			var compare_forms = $('form.djc_form_compare');
			if (compare_forms.length > 0) {
				var items = [];

				$.ajax({
					'url': window.DJC2BaseUrl + '/index.php?option=com_djcatalog2&task=item.getProductsToCompare',
					'type': 'get'
				}).done(function (data) {
					var contents;
					try {
						contents = JSON.parse(data);
					} catch (e) {
						// do nothing
						return;
					}
					for (var i in contents) {
						if (contents.hasOwnProperty(i)) {
							items.push(contents[i]);
						}
					}

					var checkboxes = $('input[name="item_id_chk"]');
					checkboxes.each(function () {
						var val = parseInt($(this).val());

						if (items.indexOf(val) >= 0) {
							$(this).attr('checked', 'checked');
						} else {
							$(this).removeAttr('checked');
						}
					});

					if (items.length > 1) {
						//$('a.djc_compare_btn').css('display', '');
						$('a.djc_compare_btn').removeAttr('disabled');
					}
				});

				compare_forms.each(function (pos) {
					var el = $(this);

					var checkboxes = el.find('input[name="item_id_chk"]');
					checkboxes.change(function () {
						var new_value = $(this).is(':checked') ? 'item.addToCompare' : 'item.removeFromCompare';

						el.find('input[name="task"]').first().val(new_value);
						el.trigger('submit');
					});

					el.on('submit', function (evt) {

						var post_url = el.attr('action');
						if (post_url.indexOf('?') == -1) {
							post_url = post_url + '?ajax=1';
						} else {
							post_url = post_url + '&ajax=1';
						}
						$.ajax({
							'url': post_url,
							'type': 'post',
							'data': el.serialize()
						}).done(function (data) {

							var response = JSON.parse(data);

							if (typeof response.error == 'undefined') {
								return;
							}

							var alertContainer = $('<div />', {
								'class': 'alert djc_alert djc_compare_alert',
								html: response.message
							});

							if (response.error) {
								var checkBox = el.find('input[name="item_id_chk"]').first();
								if (checkBox.is(':checked')) {
									checkBox.removeAttr('checked');
								} else {
									checkBox.attr('checked', 'checked');
								}
								alertContainer.addClass('alert-error');

								$(document.body).append(alertContainer);
								setTimeout(function () {
									alertContainer.remove();
								}, 3000);
							} else {
								alertContainer.addClass('alert-success');
								if (Object.keys(response.items).length > 1) {
									//$('a.djc_compare_btn').css('display', '');
									$('a.djc_compare_btn').removeAttr('disabled');
								} else {
									//$('a.djc_compare_btn').css('display', 'none');
									$('a.djc_compare_btn').attr('disabled', 'disabled');
								}
							}

						}).always(function () {
						});

						return false;
					});
				});

				compare_forms.css('display', '');
			}
		});

		var initVote = function(){
			$('button.djc_star_rating--vote-btn').unbind('click').on('click', function(){
				var id = $(this).attr('data-id');
				if (!id || typeof id == 'undefined') return;
				$('.djc_star_rating--vote[data-id="'+id+'"]').toggle();
			});

			$('button.djc_star_rating--reviews-btn').unbind('click').on('click', function(){
				var id = $(this).attr('data-id');
				if (!id || typeof id == 'undefined') return;
				$('.djc_star_rating--reviews-wrap[data-id="'+id+'"]').toggle();
			});
		};

		// cart pop-up
		$(document).ready(function () {
			var cart_popup = $('<div id="djc_cart_popup" class="modal hide fade">'
				+ '<div class="modal-dialog"><div class="modal-content">'
				+ '<div class="modal-header">&nbsp;<button type="button" class="btn-close novalidate" data-bs-dismiss="modal" data-dismiss="modal" aria-label="close" aria-hidden="true"> </button></div>'
				+ '<div class="modal-body djc_cart_popup">'
				+ '<div></div></div></div>');
			var cart_loader = $('<div id="djc_cart_popup_loader" style="display: none"><span></span></div>');

			$(document.body).append(cart_loader);
			$(document.body).append(cart_popup);
		});

		// cart quantity change events
		$(document).ready(function () {
			DJCatUpdateQtyEvents();
		});

		// checkout page, payments and deliveries
		$(document).ready(function () {
			var djc_deliveries = $("input.djc_delivery_method");
			var djc_delivery_toggle = $('#jform_djcatalog2delivery_delivery_to_billing');
			var djc_delivery_wrapper = $('#djc_delivery_wrapper');
			var djc_delivery_fields = $('#djc_delivery_fields');
			var djc_delivery_toggle_state = 1;
			var djc_payments = $("input.djc_payment_method");
			var djc_payment_labels = $("label.djc_payment_method");
			var shipping_days = jQuery('form#djc_checkout_form #shipping-days');

			if (djc_delivery_toggle.length > 0) {
				djc_delivery_toggle_state = djc_delivery_toggle.value;
			}

			if (djc_deliveries.length > 0) {
				djc_deliveries.on("change", function (evt) {
					var delivery_id = this.value;
					var use_delivery = $(this).attr('data-shippment');

					if (djc_payments.length > 0) {
						djc_payments.each(function (position) {
							var element = $(this);
							var label = $(djc_payment_labels[position]);
							var xref = element.attr("data-delivery");
							var valid = false;
							if (xref.length == 0) {
								valid = true;
							} else {
								xref = xref.split(',');
								for (var i = 0; i < xref.length; i++) {
									if (xref[i] == delivery_id) {
										valid = true;
									}
								}
							}

							if (valid) {
								element.css('display', '');
								label.css('display', '');
							} else {
								//console.log('remove : ' + label.text());
								element.removeAttr("checked");
								element.css('display', 'none');
								label.css('display', 'none');
							}
						});
					}

					setTimeout(function () {
						DJCatOrderSummary(djc_deliveries, djc_payments, shipping_days.val());
					}, 200);

					if (djc_delivery_wrapper.length > 0 && djc_delivery_toggle.length > 0) {
						if (use_delivery == 1) {
							if (djc_delivery_toggle_state == 1) {
								djc_delivery_toggle.value = 1;
							} else {
								djc_delivery_toggle.value = 0;
							}
							djc_delivery_wrapper.css('display', '');
						} else {
							djc_delivery_toggle.value = 1;
							djc_delivery_toggle.trigger('change', djc_delivery_toggle);
							djc_delivery_wrapper.css('display', 'none');
						}
					}
				});
			}

			if (djc_payments.length) {
				djc_payments.on("change", function (evt) {
					DJCatOrderSummary(djc_deliveries, djc_payments, shipping_days.val());
				});
			}

			if (djc_delivery_toggle.length && djc_delivery_fields.length) {
				djc_delivery_toggle.on('change', function (evt) {
					if (this.value == 1) {
						djc_delivery_toggle_state = 1;
						djc_delivery_fields.css('display', 'none');
						djc_delivery_fields.find('input, select, textarea').each(function () {
							$(this).attr('disabled', 'disabled');
						});
					} else {
						djc_delivery_toggle_state = 0;
						djc_delivery_fields.css('display', '');
						djc_delivery_fields.find('input, select, textarea').each(function () {
							$(this).removeAttr('disabled');
						});
					}

					DJCatUpdateDeliveryMethods(djc_delivery_toggle_state);
					DJCatUpdatePaymentMethods(djc_delivery_toggle_state);
				});
			}

			if (djc_delivery_toggle.length) {
				djc_delivery_toggle.trigger('change', djc_delivery_toggle);
			}

			if (djc_deliveries.length) {
				djc_deliveries.each(function () {
					if (this.checked) {
						$(this).trigger('change', this);
					}
				});
			} else if (djc_payments.length) {
				djc_payments.each(function () {
					if (this.checked) {
						$(this).trigger('change', this);
					}
				});
			}

			shipping_days.bind('change', function (e) {
				DJCatOrderSummary(djc_deliveries, djc_payments, shipping_days.val());
			});

			$('#djc_checkout_form').find('.djc_country, .djc_postcode').on('keyup change', function (event) {
				DJCatUpdateDeliveryMethods(djc_delivery_toggle_state);
				DJCatUpdatePaymentMethods(djc_delivery_toggle_state);
			});

			if ($('#djc_checkout_form').length > 0) {
				DJCatOrderSummary(djc_deliveries, djc_payments, shipping_days.val());
			}
		});

		var initCartForms = function(){
			$('input.djc_qty_input').each(function () {
				DJCatQty.initWrapper(this);
			});

			DJCatUpdateQtyEvents();
			// add to cart form handler
			var cart_forms = $('form.djc_form_addtocart');
			var cart_popup = $('#djc_cart_popup');
			var cart_loader = $('#djc_cart_popup_loader');


			/* Not in BS 5 and J!4 */
			/*$('#djc_cart_popup').on('show.bs.modal', function () {
				var tmpModal = $(this);
				tmpModal.addClass('show').removeClass('hide').css('display', 'block');
				tmpModal.find('[data-dismiss="modal"]').click(function () {
					tmpModal.modal('hide');
					tmpModal.removeClass('show').removeClass('in').addClass('hide').css('display', 'none');
					$('.modal-backdrop').removeClass('show').removeClass('in').remove();
					try {
						tmpModal.modal('dispose');
					} catch (e) {
						// do noting, exception for BS4+
					}
				});
			});

			$('#djc_cart_popup').on('shown.bs.modal', function () {
				var modalHeight = $('div.modal:visible').outerHeight(true);
				var padding = document.getElementById('djc_cart_popup').offsetTop;
				var offset = ($(window).height() - modalHeight) / 2;

				$('#djc_cart_popup').css('top', offset + 'px');
				$('#djc_cart_popup a').first().focus();
			});

			$('#djc_cart_popup').on('hidden.bs.modal', function () {
				$('#djc_cart_popup').removeClass('show');
			});
			*/

			$('form.djc_form_addtocart').off('submit');
			$('form.djc_form_addtocart').on('submit', function(e) {
			//$(document).on('submit', 'form.djc_form_addtocart', function(e) {
				var el = $(this);

				if (typeof document.formvalidator != 'undefined') {
					if (document.formvalidator.isValid(this) == false) {
						return false;
					}
				}

				if (el.attr('data-noajax') == '1') {
					return true;
				} else {
					e.preventDefault();
				}

				if (el.hasClass('djc_multi_addtocart')) {
					var submitter = $('form.djc_addtocart_submitter');
					if (submitter.length < 1) {
						return;
					}
					var itemId = el.find('input[name="item_id"]').val();
					el.find('input.djc_qty_input').change(function () {
						var targetInput = submitter.find('input[name="quantity[' + itemId + ']"]');
						var val = $(this).val();
						if (val != '' && (parseFloat(val) > 0.0000 || parseInt(val) > 0)) {
							if (targetInput.length > 0) {
								targetInput.val($(this).val());
							} else {
								submitter.append($('<input type="hidden" name="quantity[' + itemId + ']" value="' + $(this).val() + '" />'));
							}
						} else if (targetInput.length) {
							targetInput.remove();
						}

						if (submitter.find('input[name^="quantity"]').length > 0) {
							submitter.find('[type="submit"]').removeAttr('disabled');
						} else {
							submitter.find('[type="submit"]').attr('disabled', 'disabled');
						}
					});
				}
				var valid = true;
				if (typeof comboSelector != 'undefined') {

					var required_fields = jQuery("[djc-required]");
					required_fields.each(function (index, item) {
						var type = jQuery(item).prop("type");
						// Search radio in fieldset
						if (type == 'fieldset') {
							var radios = jQuery(type).find('input[type=radio]:checked');
							if (radios.length === 0) {
								jQuery(item).addClass('djc-invalid');
								valid = false;
							}
						} else {
							if (jQuery(item).val() === '') {
								jQuery(item).addClass('djc-invalid');
								valid = false;
							}

						}
					});
				}

				if (!valid) {
					var invalidCartMsg = Joomla.Text._('COM_DJCATALOG2_ADD_TO_CART_ERROR_COMBINATION_PARAMS_INVALID');
					cart_popup.find('.modal-body > div').first().html(invalidCartMsg);
					cart_popup.modal('show');
					return false;
				}

				cart_loader.css('display', 'block');

				var post_url = el.attr('action');
				if (post_url.indexOf('?') == -1) {
					post_url = post_url + '?ajax=1';
				} else {
					post_url = post_url + '&ajax=1';
				}
				$.ajax({
					'url': post_url,
					'type': 'post',
					'data': el.serialize()
				}).done(function (data) {
					//var response = $.parseJSON(data);
					var response = JSON.parse(data);

					if (typeof response.redirect != 'undefined' && response.redirect != '') {
						document.location.href = response.redirect;
						return false;
					}

					cart_popup.find('.modal-body > div').first().html(response.message);
					//cart_popup.css('display', '').removeClass('hide');
					cart_popup.modal('show');
					//cart_popup.addClass('show');

					if (typeof response.basket_count != 'undefined') {
						$('strong.djc_mod_cart_items_count').each(function () {
							$(this).html(response.basket_count);
						});
						var basket_items = $('.mod_djc2_cart_contents');
						var basket_is_empty = $('.mod_djc2cart_is_empty');

						if (basket_items) {
							if (response.basket_count > 0) {
								basket_items.css('display', 'block');
								el.trigger('Ajax:itemAdded', response);
							} else {
								basket_items.css('display', 'none');
								el.trigger('Ajax:itemAdded', response);
							}
						}

						if (basket_is_empty) {
							if (response.basket_count > 0) {
								basket_is_empty.css('display', 'none');
							} else {
								basket_is_empty.css('display', 'block');
							}
						}
					}

				}).always(function () {
					cart_loader.css('display', 'none');
				});

				return false;
			});
		};

		// Wishlist
		var initWishList = (function (evt) {
			var wishlist_btns = $('.djc_addtowishlist_btn[item-id]');

			if (wishlist_btns) {
				$.ajax({
					'url': window.DJC2BaseUrl + '/index.php?option=com_djcatalog2&task=wish.getWishList',
					'type': 'get'
				}).done(function (data) {
					var response = JSON.parse(data);
					wishlist_btns.each(function () {
						var wish_btn = jQuery(this); // Set pointer

						var item_id = wish_btn.attr('item-id');

						if (jQuery.inArray(item_id, response) == -1)
							wish_btn.removeClass('disabled');
							wish_btn.removeClass('btn_icon__addtowishlist--active');
					})
				});
			}
		});

		var availableVariants = [];

		// Dynamic combinations
		var initCombinations = (function (evt) {
			var variants_containers = $('.djc_has_combinations.djc_addtocart');
			var elements = {
				'item_ids' : []
			};

			// Get all displayed items id's to get combination
			variants_containers.each(function () {
				elements.item_ids.push($(this).attr('data-product'));
			})

			if (elements.item_ids.length > 0) {

				$.ajax({
					'url': window.DJC2BaseUrl + '/index.php?option=com_djcatalog2&task=items.getCombinations',
					'data': $.param(elements),
					'type': 'POST'
				}).done(function (data) {
						var response = JSON.parse(data);
						if (typeof response.variants !== 'undefined' && response.status == 1) {
							for (itemId in response.variants) {
								var html = response.variants[itemId];
								var formContainer = $('[data-product=' + itemId + ']');
								formContainer.html(html);
								formContainer.find('[data-fieldoption]').each(function () {
									var opt = $(this);
									var fieldId = opt.attr('data-fieldid');
									var optionId = opt.attr('data-fieldoption');
									var optionCombinations = opt.attr('data-optioncombinations');

									if (fieldId && optionId && optionCombinations) {
										if (typeof availableVariants[itemId] === 'undefined') {
											availableVariants[itemId] = [];
										}
										availableVariants[itemId][fieldId] = JSON.parse(optionCombinations);
									}
								});
							}
						}

						$('#djcatalog').trigger('ajaxFilter:loadItems');
						return true;
					}
				);
			}
		});

		$(document).ready(function(evt){
			initCompare(evt);
			initCartForms(evt);
			initVote(evt);
			if (typeof window.DJCatalog2InitGooglePlaces != 'undefined') {
				window.DJCatalog2InitGooglePlaces();
			}
			//DJCatAdvSearch();
			initWishList(evt);
			initCombinations(evt);
		});

		$('#djcatalog').on('ajaxFilter:loadItems', function(evt){
			initCompare(evt);
			initCartForms(evt);
			initVote(evt);
			if (typeof window.DJCatalog2InitGooglePlaces != 'undefined') {
				window.DJCatalog2InitGooglePlaces();
			}
			DJCatAdvSearch();
			initWishList(evt);
			DJCatMatchBackgrounds();
			DJCatInitTooltips();
		});

		$('#djcatalog').on('ajaxFilter:loadCombinations', function(evt){
			initCombinations(evt);
		});

		$('.djc_addtowishlist_btn[item-id]').on('click', function (e) {
			e.preventDefault();
			if (!$(this).hasClass('disabled')) {
				var item_id = $(this).attr('item-id');
				var wishlist_btn = $(this);
				var cart_popup = $('#djc_cart_popup');

				if (item_id) {
					$.ajax({
						'url': window.DJC2BaseUrl + '/index.php?option=com_djcatalog2&task=wish.add&item_id=' + item_id,
						'type': 'get'
					}).done(function (data) {
						var response = JSON.parse(data);
						if (response.status)
							wishlist_btn.toggleClass('disabled');
						cart_popup.find('.modal-body > div').first().html(response.message);
						cart_popup.modal('show');
					});
				}
			}

			return false;
		});

		$(document).on("ajax:selectCombination", '.djc_form_addtocart', function (event, availVariants, fieldId, fieldOption) {
			event.preventDefault();
			if (typeof availVariants == 'undefined' || typeof fieldId == 'undefined') {
				return;
			}

			$(this).trigger('ajax:discoverCombinations', [availVariants, fieldId]);
		});
		$(document).on("ajax:discoverCombinations", "form", function (event, availVariants, fieldId) {
			var cartForm = $(this);
			var itemId = cartForm.attr('data-itemid');
			var formFields = cartForm.find('select.has_combo option,input.has_combo[type="radio"]');
			var availCombinations = JSON.parse($(this).attr('data-availvariants'));
			//var selectedCombinations = cartForm.attr('selected-variants');

			try {
				availVariants = JSON.parse(availVariants);
			} catch(exc) {
				return;
			}

			var finalCombinations = [];//availVariants;
			$.each(formFields, function (key) {
				var field = $(formFields[key]);

				if ($(field).val() == '' || typeof $(field).attr('data-optioncombinations') == 'undefined') {
					return;
				}

				var $fieldId = field.attr('data-fieldid');

				var $fieldCombinations = ((field.attr('data-optioncombinations').length) ? JSON.parse(field.attr('data-optioncombinations')) : []);
				var $fieldIsSelected = ((field.is(':checked') || field.is(':selected')) ? true : false);

				if (parseInt($fieldId) != parseInt(fieldId) && $fieldIsSelected) {
					var found = false;

					availVariants = jQuery.grep(availVariants, function ($fieldCombination) {
						if ($.inArray($fieldCombination, $fieldCombinations) !== -1) {
							found = true;
							return true;
						} else {
							return false;
						}
					});

					/*if(found) {
						//field.attr('disabled', 'disabled');
						field.removeAttr('checked').removeAttr('selected');
					} else {
						field.attr('disabled', 'disabled');
						if($fieldIsSelected) {
							field.removeAttr('checked').removeAttr('selected');
						}
					}*/

				}
			});

			finalCombinations = availVariants;

			var cartBtn = cartForm.find('.djc_addtocart input[type="submit"]');
			var stockHandling = cartForm.attr('data-stock');
			var matches = finalCombinations.length;
			//if (matches > 0) {
			if (matches == 1) {
				var comboFound = finalCombinations.shift();

				if (parseFloat(availCombinations[comboFound].stock) <= 0.0000 && stockHandling > 0) {
					// self.cartBtn.attr('disabled', 'disabled').addClass('disabled');
					cartBtn.val(Joomla.Text._('COM_DJCATALOG2_PRODUCT_OUT_OF_STOCK'));
					cartForm.find('input[name="combination_id"]').val('');

				} else {
					cartForm.val(self.cartBtnValue);
					cartBtn.removeAttr('disabled').removeClass('disabled');
					cartForm.find('input[name="combination_id"]').val(comboFound);
				}

				//cartForm.find('div.djc_price[data-itemid=' + itemId + ']').html(availCombinations[comboFound].price_html).show();
				if (typeof availCombinations[comboFound].price_html != 'undefined' && availCombinations[comboFound].price_html ) {
					$('div.djc_price[data-itemid=' + itemId + ']').replaceWith(availCombinations[comboFound].price_html).show();
				} else {
					$('div.djc_price[data-itemid=' + itemId + ']').html('').show();
				}

				if (parseFloat(availCombinations[comboFound].stock) <= 0.0000 && availCombinations[comboFound].stock_notify_html != '' ) {
					$('div.djc_price[data-itemid=' + itemId + ']').append(availCombinations[comboFound].stock_notify_html);
				}

				if (stockHandling > 0) {
					var stockWrap = $('<span/>', {'class': 'djc_stock_info'});
					if (parseFloat(availCombinations[comboFound].stock) <= 0.0000) {
						stockWrap.text(Joomla.Text._('COM_DJCATALOG2_PRODUCT_OUT_OF_STOCK'));
						stockWrap.addClass('djc_out_stock');
					} else {
						if (stockHandling == 2 || stockHandling == 1) {
							stockWrap.text(Joomla.Text._('COM_DJCATALOG2_PRODUCT_IN_STOCK'));
						} else {
							var text = Joomla.Text._('COM_DJCATALOG2_PRODUCT_IN_STOCK_QTY', parseFloat(availCombinations[comboFound].stock).toString());
							stockWrap.text(text);
						}
						stockWrap.addClass('djc_in_stock');
					}
					cartForm.find('p.djc_stock').html($(stockWrap));
				}

				if (typeof availCombinations[comboFound].images != 'undefined' && availCombinations[comboFound].images.length > 0) {
					var newImage = availCombinations[comboFound].images[0].medium;
					cartForm.trigger('ajax:loadImage', newImage);
				}
				cartForm.trigger('ajax:combinationSelected', comboFound);
			} else {
				cartForm.trigger('ajax:combinationSelected', 0);
			}

			return true;
		})

		// Combination discover image
		$(document).on("ajax:loadImage", "form", function (event, image) {
			var form = $(this);
			var imageContainer = form.closest('.djc_item').first().find('.djc_image');
			var imageElement = imageContainer.find('img');

			imageElement.attr('src', image);
		});

		$(document).on("change", '.djc_form_variants select,.djc_form_variants input', function (event) {

			var input = $(this);

			var elementType = input[0].nodeName.toLowerCase();
			var elementInput = (elementType == 'select') ? input.find(':selected') : input;
			var availVariants = elementInput.attr('data-optioncombinations')
			var fieldId = elementInput.attr('data-fieldid')
			var fieldOption = elementInput.attr('data-fieldoption')
			var parentForm = elementInput.parents('form.djc_form_addtocart.djc_form_variants').first();
			if (fieldOption !== null) {
				parentForm.trigger('ajax:selectCombination', [availVariants, fieldId, fieldOption]);
			}
		});
	});
})(jQuery);

jQuery(window).on('load', function () {
	DJCatMatchBackgrounds();

	var tabHash = window.location.hash;

	var tabTogglers = jQuery('.djc_tabs li.nav-toggler');
	var tabPanels = jQuery('.djc_tabs .tab-pane');

	if (tabTogglers.length) {

		tabTogglers.each(function (index) {
			var tab = jQuery(this);
			tab.on('click', 'a', function (e) {
				e.preventDefault();
				tab.siblings().removeClass('active');
				tab.addClass('active');
				jQuery(tabPanels[index]).siblings().removeClass('active');
				jQuery(tabPanels[index]).addClass('active');
			});

			// open tab from url hash
			if (this.id && ('#' + this.id) == decodeURIComponent(tabHash)) {
				tab.find('a').trigger('click');
			}
		});
	}

	var accTogglers = jQuery('.djc_tabs .accordion-toggle');

	if (accTogglers.length) {

		accTogglers.each(function (index) {
			var acc = jQuery(this);
			acc.on('click', function (e) {
				//e.preventDefault();
				accTogglers.removeClass('active');
				acc.addClass('active');
			});

			if (acc.attr('data-collapseid') && ('#' + acc.attr('data-collapseid')) == decodeURIComponent(tabHash)) {
				acc.trigger('click');
			}
		});
	}

	var filterModules = jQuery('.mod_djc2filters');
	if (filterModules.length > 0) {
		filterModules.each(function () {
			var togglers = jQuery(this).find('.djc_tab_toggler');
			var contents = jQuery(this).find('.djc_tab_content');

			if (togglers.length) {

				togglers.each(function (index) {
					var toggler = jQuery(this);
					toggler.on('click', function (e) {
						if (toggler.hasClass('active')) return false;
						togglers.removeClass('active');
						toggler.addClass('active');
						contents.slideUp();
						jQuery(contents[index]).slideDown();
					});
					if (index == 0) {
						toggler.addClass('active');
					} else {
						jQuery(contents[index]).hide();
					}
				});
			}
		});
	}

	//jQuery('#djcatalog').trigger('ajaxFilter:loadCombinations');
});

jQuery(window).on('resize', function () {
	DJCatMatchBackgrounds();
});


Anon7 - 2022
AnonSec Team