var yr_custom = function($){

	var path = '/' + (location.pathname.indexOf('/ru') === 0 ? 'ru/' : '');

	var reInitMaskPhone = function(){
		if('masks' in window){
			$('.maskphone').inputmask({
				'mask': masks, 
				greedy: false,
				definitions: {
					"N": {
						validator: "[9]"
					},
					"n": {
						validator: function (chrs, buffer, pos, strict, opts) {
							return {c: "9"};
						}
					},
				} 
				/*placeholder: '+7-911-123-45-67'*/
			});

			$(document).on('keyup input', '.maskphone', function(e){
				let field = $(this), 
					valid = field.inputmask("isComplete");

				jQuery(field).toggleClass('is-valid', valid);
				jQuery(field).toggleClass('is-invalid', !valid);
			});
		}
	}

	reInitMaskPhone();

	/* stacktable plugin https://johnpolacek.github.io/stacktable.js/ */
	$(".content_table").stacktable();

	/** 
	 * scroll top panel for mob
	 */
	var scrolling = {

		toppos	: 0,

		init : function(){
			scrolling.toppos = $(window).scrollTop();

			$(window).on('scroll', function(){
				var top = $(window).scrollTop();

				if(top > 50){
					(top > scrolling.toppos) ? $(".fixed-header").slideUp('fast') : $(".fixed-header").slideDown();
				}else{
					$(".fixed-header").slideDown();
				}
				scrolling.toppos = top;
			});
		}

	};
	if ($(window).width() < 1024) {
		scrolling.init();
	}

	/**
	 * Scroll to top
	 */
	$('.btn-up').on('click', function(e){
		window.scrollTo({top: 0, behavior: 'smooth'});
	});
	$(window).on('scroll', function(){
		var top = $(window).scrollTop();
		top > 800 ? $(".btn-up").removeClass("d-none") : $(".btn-up").addClass("d-none");
	});

	/**
	 * scroll To
	 */
	$(document).on('click', '.scroll-to', function(e){
		e.preventDefault();
		e.stopPropagation();

		var id = $(this).attr("href");
		$("html, body").animate({
			scrollTop: `${$(id).offset().top - 130}px`
		}, {
			duration: 500
		});
		return false;
	});

	/**
	 * cart datepicker
	 **/
	if ($("#cartdatepicker").length){
		// jQuery Ui datepicker in cart
		$.datepicker.regional['ru'] = {
	        closeText: 'Закрыть',
	        prevText: '',
	        nextText: '',
	        currentText: 'Сегодня',
	        monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
	            'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
	        monthNamesShort: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
	            'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
	        dayNames: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
	        dayNamesShort: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
	        dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
	        weekHeader: 'Нед',
	        dateFormat: 'dd.mm.yy',
	        firstDay: 1,
	        isRTL: false,
	        showMonthAfterYear: false,
	        yearSuffix: ''
	    };
		$.datepicker.setDefaults($.datepicker.regional["ru"]);
		if ($("#cartdatepicker").length){
			$("#cartdatepicker").datepicker({
				altField:'#inputdatepicker', 
				numberOfMonths: [1,delivNumMonths], 
				beforeShowDay: deliveryDays,
				beforeShow: function(input, inst) { 
					/*if (correctDatepicker){
						setTimeout(function () {
							inst.dpDiv.css({
								top: $(input).position().top + 180,
								left: 20
							});
						}, 0);  
					}*/      	
	            }
			});
		}
	}

	if($("#cartnocall").length){
		$(document).on('click', '[name="payment_method"]', function(e){
			if($(this).val() == 'pm_bank' || $(this).val() == 'pm_VISA' || $(this).val() == 'pm_VISAHOME'){
				$('.noCall').removeClass('d-none');
			}else{
				$("#cartnocall").prop('checked', false);
				$('.noCall').addClass('d-none');
			}
		});
	}
	// \cart datepicker



	/*var accompanying = {

		init: function(){
			if($('.accompanying').length){
				$('.accompanying').each(function(i, el){
					var typeMod = $(this).data('type'); // '', 'listdata', 'productdata'

					$.ajax({
						type: "POST",
						url: path + 'accompanying' + typeMod + '?ajax=1'
					}).done(function (html) {
						$(el).html(html);
						// re-init Swiper this						
					});
				});
			}
		}

	}.init();*/

	// auto open modal
	if($(".modal-show").length){
		$(".modal-show").modal('show');
	}
	// cart finish poscredit auto open modal
	if ($("#btn-poscredit").length){
		poscredit_popup();
	}

	// load img iframe lazy loading
	if($("img[data-src]").length){
		$("img[data-src]").each(function(e){
			$(this).attr("src", $(this).data("src"));
		});
	}
	if($("iframe[data-src]").length){
		$("iframe[data-src]").each(function(e){
			$(this).attr("src", $(this).data("src"));
		});
	}
	if($("[data-style]").length){
		$("[data-style]").each(function(e){
			$(this).attr("style", $(this).data("style"));
		});
	}

	// copy small banner for mob version
	if($("#mainpage-small-bnr").length){
		var с = $("#mainpage-small-bnr").html();
		$("#mainpage-small-bnr-copy").html(с);
	} 

	// iconmenu
	if($(".iconmenu").length){
		$("#collapseIconMenu").on('show.bs.collapse', function(e){
			$(".iconmenu [type=button]").text(iconMenuHideText);
		});

		$("#collapseIconMenu").on('hidden.bs.collapse', function(e){
			let destination = $(".mainpage-slider").offset().top - 100;
	    	$('html, body').animate({ scrollTop: destination }, 600);
	    	$(".iconmenu [type=button]").text(iconMenuShowText);
		});
	}

	// product block change sku event
	$("#productpage .sku-dropdown a, #productpage .sku-go-round a").click(function(e){
		$("#productpage .loading-screen").removeClass("d-none");
		// 3sec for iOs browser back button 
		setTimeout(() => $("#productpage .loading-screen").addClass("d-none"), 4000);
	});

	// product block of list events
	$('.product-card__quantity-minus, .product-card__quantity-plus').click(function(e){
		var parentWrap = $(this).closest(".product-card__container"),
		    operation = $(this).data("op"),
			$buyBtn = $(".product-card__btn button", parentWrap),
		    quantity = $buyBtn.data("quantity") + operation;

		if(quantity < 1) return;

		$('.product-card__quantity', parentWrap).text(quantity);
		$buyBtn.data("quantity", quantity);

		return;
	});

	// scroll to-complectation-items
	$(document).on("click", ".to-complectation-items", function(){
		$("#nav-tab a").removeClass("active");
		$("#nav-details-tab").addClass("active");
		$("#nav-tabContent div").removeClass('active show');
		$("#nav-details").addClass('active show');
		let destination = $("#complectation-items").offset().top - 100;
    	$('html, body').animate({ scrollTop: destination }, 600);

    	return false;
	});

	// one click form
	$(document).on('submit', '[name=oneclickform]', function(e){
		let field = jQuery("[name=oneclickform] .maskphone"), 
			valid = field.inputmask("isComplete");

		if(!valid){
			jQuery(field).toggleClass('is-valid', valid);
			jQuery(field).toggleClass('is-invalid', !valid);
			return false;
		}

		return true;
	});

	// buy events
	if($(".btm-panel-link.btn-buy").length){
		$(".btm-panel-link.btn-buy").data("price", pricenum);
	}

	$(document).on("click", ".btn-buy", function(e){
		var data = {},
		    btnbuy = this;
		data["product_id"] = $(this).data("productid");
		//data["category_id"] = $(this).data("categoryid") || categoryid;
		//data["subproducts"] = $(this).data("subsforby") ||  subsforby;
		data["to"] = $(this).data('to');
		data["quantity"] = $(this).data('quantity') || 1;

		$("input[name^='jshop_attr_id']:checked, select[name^='jshop_attr_id']").each(function(){
			if ($(this).val() > 0)
				data[$(this).attr('name')] = $(this).val();
		});

		$("input[name^='check_attr_val']").each(function(){
			data[$(this).attr('name')] = $(this).val();
		});

		/* пока отключаем
		$("input[name^='group_qty']").each(function(){
			if ($(this).val() > 0) 
				data[$(this).attr('name')] = $(this).val();
		});
		*/

		// ActionPay event
		if (typeof window.APRT_SEND == 'function') {
			window.APRT_SEND({
				pageType: 8,
				basketProducts: window.APRT_DATA.basketProducts,
				currentProduct: window.APRT_DATA.currentProduct
			});
		}

		if(data["to"] == "oneclick"){
			/*if(!jQuery('#clck_phone').inputmask('isComplete')){
				jQuery('#clck_phone').addClass('fielderror').focus();
				return false;
			}

			if(!purchSellRulesOk()) return false;*/


			data['click_name'] = $("[name='click_name']").val();
			data['click_phone'] = $("[name='click_phone']").val();
			data['oneclick'] = 1;

			let field = $("[name='click_phone']"), 
			    valid = field.inputmask("isComplete"),
			    phonelength = field.data('phonelength');
			
			/*if(valid && !!phonelength){
				valid = field.val().length <= field.data('phonelength');
			}*/

			field.toggleClass('is-invalid', !valid);

			if(valid){
				this.setAttribute('disabled','disabled');
				$(this).addClass('progress-bar-striped progress-bar-animated');
				window.location.href = "/cart/add?" + $.param(data);
			}


			return;
		}

		if(data["to"] == "installment"){

			data['installment'] = 1;

			window.location.href = "/cart/add?" + $.param(data);

			return;
		}

		//if ($(this).hasClass("btn-buy-toggle")){
			this.setAttribute('disabled','disabled');
			$(this).addClass('progress-bar-striped progress-bar-animated');
		//}

		yrCart.add(data).then(function (json) {
			$(btnbuy).attr('disabled', false);
			$(btnbuy).removeClass('progress-bar-striped progress-bar-animated');

			if ($(btnbuy).hasClass("btn-buy-toggle")){		
				$(btnbuy).addClass('d-none');
				$("#tocartbtn").removeClass("d-none");
			}

			$('.btm-panel-cart__badge').text(json.data);
			
			localStorage.setItem('yr_cart_add_click', (new Date().getTime()));

			return;

		}).catch(function (json) {
			// сделать новый обработчик ошибок
			
		});

		return false;
	});

	// cart events for deduplication finish
	/*$(document).on('click', '.btn-buy, .cart-total-btn, .btn-oneclickbuy', function(e){
		localStorage.setItem('yr_finish_dedup', srv_time);
	});*/

	// attr name and togle btn buy
	if($(".details-block").length){

		attrPopoverInit();

		$(document).on("change", ".details-block input[type=radio], .details-block select", function(e){
			$("#tocartbtn").addClass('d-none');
			$(".btn-buy-toggle").attr('disabled', false);
			$(".btn-buy-toggle").removeClass('progress-bar-striped progress-bar-animated d-none');
		});

		var addAttrVal = function(e){
			let attrid = $(e).data("attrid"),
			    name = $(e).data("name"),
			    price = $(e).data("price");

			$("#addval"+attrid).html(": "+name+" <span style='white-space:nowrap'><strong>"+price+"</strong></span>");
		};

		$(document).on("change", ".details-block input[type=radio]", function(e){
			addAttrVal(this);
		});

		$(".details-block input[type=radio]:checked").each(function(e){
			addAttrVal(this);
		});
	}


	// reviews events
	$("#radio_5").prop("checked", true);
	$(".rating-block__star .star").on('click', function(e){
		var mark = $(this).val();

		for(let i = 1; i < 6; ++i){
			if(mark >= i)
				$("#star_" + i).attr("class", ""); // для svg так
			else
				$("#star_" + i).attr("class", "empty"); // для svg так
		}

	});

	// reviews dropzone
	if ('Dropzone' in window && $("#modalAddComment").length){
		Dropzone.autoDiscover = false;
		var self = this;

		self.dropzone = new Dropzone('#photo_dz', {
			url: '/product/reviewPhoto?ajax=1',
			acceptedFiles: 'image/*',
			addRemoveLinks: true,
			timeout: 60000,
			parallelUploads: 1,
			maxFiles: 5,
			maxFilesize: 10,
		});
		self.files = {};
		self.photoinput = jQuery('#modalAddComment input[name=photo]');
		self.dropzone.on('success', function(file, response){
			self.files[file.upload.uuid] = response;
			self.photoinput.val(JSON.stringify(self.files));
			jQuery("#photo_dz").removeClass("field__input_invalid");
		});
		self.dropzone.on('removedfile', function(file){
			if(file.upload.uuid in self.files){
				delete self.files[file.upload.uuid];
			}
			self.photoinput.val(JSON.stringify(self.files));
		});


		$('#sendReview').on('click', function(e){
			var invalid = 0;

			$('#modalAddComment .required').each(function(){
				if($(this).val() == ''){
					invalid = 1;
					$(this).addClass("is-invalid");
				}
			});

			if(invalid) return;

			$.ajax({
				type: 'POST',
				url: $('form[name="add_review"').attr('action'),
				data: $('form[name="add_review"]').serialize(),
				success: function(html) {
					$('#modalAddComment .modal-title').text($('#modalAddComment').data('title'));
					$('#modalAddComment .modal-body').html(html); 
				}
			});
		});
	}
	

	// feedback, send question
	$(document).on("click", "#feedbackModal .sendfeedback", function(){
		var $form = $("#feedbackModal form"),
			request   = $form.serialize(),
			email = $("#feedbackModal input[name=email]").val();
		if (request=="" || email=="") return false;

		$.ajax({
			type: "POST",
			url: $form.attr('action'),
			data   : request,
			dataType: 'json'
		}).done(function (json) {
			$('#feedbackModal .modal-body').html(json.html);
		});

	}).on("click", "#feedbackModal #callback-open-flomni", function(){
		$('#feedbackModal').modal('hide');
	});

	// eraser
    if ($('.eraser-wrapper').length > 0) {
    	var alertmsg = function () {
		    $("#countdown_email").show();
		};

        setTimeout(function(){
        	if (!$('body').hasClass('modal-open')){
	            $.ajax({
	                type: "GET",
	                url: "/ajaxsubscribe?task=eraser"
	            }).done(function (html) {
	                $('.eraser-wrapper').html(html);

	                $("img#eraser-redux").load(function(e){
	                    $('#modaleraser').modal('show');

	                    $('#eraser-redux').eraser({
	                        completeRatio: .5,
	                        size: 65,
	                        completeFunction: alertmsg
	                    });

	                });

	                $("#getting-started").countdown(eraser_date, function(event) {
	                    $(this).text(
	                        event.strftime('%Dд %H:%M:%S')
	                    );
	                });
	            });
	        }
            
        }, 5000);

        $(document).on("click", "#eraser-email-button", function(e){
        	var regexpEmail = /^[\w]{1}[\w-\.]*@[\w-]+\.[a-z]{2,4}$/i;

			if(!regexpEmail.test($(".eraser-email").val())){
				$(".eraser-email").css('backgroundColor', '#ffb6c1');
				return;
			}
            document.cookie = "etimeyr="+getTime(7)+"; expires="+getTime(7, 1)+"; path=/products;";
            //$('#modaleraser').modal('hide');
			$(".eraser-email-wrapp").css('display', 'none');
			$(".eraser-police").html('<div class="fs-3">Спасибо! Промокод будет выслан Вам на почту.</div>');
        });
    }

    // станица оптовикам /optovikam
	$('#optovikam form').on('submit', function(e){
		var phone = $('[name=tel]', this).val();

		if (phone == ''){
			e.preventDefault();
			e.stopPropagation();

			$('[name=tel]', this).addClass('is-invalid');
			return false;
		}
	});

	// страница доставки/оплаты
	let deliveryButton = {
		'menu_delivery0': 'Условия доставки',
		'menu_delivery00': 'Способы оплаты и возврат',
		'menu_delivery3': 'Схема проезда',
		'menu_delivery4': 'Стоимость подъема',
		'menu_delivery5': 'Условия сборки',
		'menu_delivery6': 'Зона обслуживания',
		'menu_delivery7': 'Стоимость утилизации',
	}

	$.each(deliveryButton, function (index, value) {
		$('[data-open="' + index + '"]').html(value);
	}); 

	$( ".show_delivery" ).click(function() {
		$("#"+$(this).data('open')).slideToggle("fast", function(){
			if ($(this).is(':visible')){
				$('[data-open="' + this.id + '"]').html('Свернуть');
			}else{    
				$('[data-open="' + this.id + '"]').html(deliveryButton[this.id]);
				$('html, body').animate({scrollTop: 290}, 100);
			}
		});
	});

	// заполнение токена для форм с рекапчей v3
	var recaptcha_v3 = {
		getToken: function(){
			grecaptcha.ready(function () {
				grecaptcha.execute(pubKeyReCaptcha, { action: 'submit' }).then(
					function (token) {
						$('.recaptchaResponse').val(token);
					}
				);
			});
		},

		sendScore: function(score){
			console.info("reCaptcha your score = " + score);
			ym(14232115, 'userParams', {reCaptchaScore: score});
		},

		getScore: function(){
			if(reCaptchaScoreSess == ""){
				grecaptcha.ready(function () {
					grecaptcha.execute(pubKeyReCaptcha, { action: 'onload' }).then(
						function (token) {
							$.ajax({
								type: "POST",
								url: "/ajaxsubscribe?task=getScore",
								data: {"recaptchaResponse": token}
							}).done(recaptcha_v3.sendScore);
						}
					);
				});
			}
		},

		init: function(r){
			if(typeof grecaptcha === 'undefined') return;
			if(typeof reCaptchaScoreSess != 'undefined'){
				r.getScore();
			}

			$(document).on('click', '.withReCaptcha', function(e){
				r.getToken();
			});

			r.getToken();
			
			setInterval(function(){
				r.getToken();
			}, 110000); // за 10 сек до окончания токена
		}

	}

	
	recaptcha_v3.init(recaptcha_v3);

	$('.product-images-carousel').HvrSlider();

	/**
	 * Send one step cart
	 * rnd_sec - remove synchronization from different browser tabs
	 */
	var rnd_sec = Math.floor(Math.random() * 120) * 1000;
	const cartSendTimeOut = (3000000 + rnd_sec);
	const cartLostTimeInterval = 3000;
	var cartLostSent = parseInt(localStorage.getItem('yr-cart-lost-sent')) || 0;

	console.log('cartSendTimeOut = ' + (cartSendTimeOut / 1000));
	
	if (!cartLostSent){
		setInterval(function(){
			var cartLostTime = parseInt(localStorage.getItem('yr-cart-lost-time')) || 0,
				cartLostSent =  parseInt(localStorage.getItem('yr-cart-lost-sent')) || 0;

			if (!cartLostSent && cartLostTime && (cartLostTime + cartSendTimeOut) < new Date().getTime()){
				localStorage.setItem('yr-cart-lost-sent', 1);

				let user_data = JSON.parse(localStorage.getItem('yr-cart-contact-data-v')) || {};
				user_data.cart_add = localStorage.getItem('yr_cart_add_click') || '';
				
				jQuery.post('/cart/save?ajax=1', user_data, function(html){
					if('Digi' in window){
						sendInAnyQuery(html, fullsumm, prods_anyquery);       
					}
				});
			}

		}, cartLostTimeInterval);
	}
	/**************/

	/**
	 * cart total block fixed
	 */
	$(document).on('scroll', function(e){
		if (!$("#carttotalblock").length){
			return;
		}

		var scrollTop = $(window).scrollTop(),
		    wrapTop = $("#carttotalblock").offset().top;

		if($(window).width() < 768){
			// mob
			var scrollMax = $(".contact-information").offset().top + $(".contact-information").height() - $(window).height() + 60;
			if(scrollTop < wrapTop - $(window).height() &&  scrollTop > scrollMax){
				$(".cart-total-btn").addClass("cart-total-btn-fixed");
			}else{
				$(".cart-total-btn").removeClass("cart-total-btn-fixed");
			}
		}else{
			// tablet+
			var wrapWidth = $("#carttotalblock").width(),
				scrollMax = wrapTop + $("#carttotalblock").height() - $(".cart-total").height() - 120;

			if(scrollTop > wrapTop){
				if(scrollTop < scrollMax){
					$(".cart-total").css({
						"position" : "fixed", 
						"transition": "top .5s ease",
						"top" : "120px",
						"bottom": "auto",
						"width": wrapWidth + "px"
					});
				}else{
					$(".cart-total").css({
						"position" : "absolute", 
						"top": "auto",
						"bottom" : "42px",
						"width": wrapWidth + "px"
					});
				}
			}else{
				$(".cart-total").css({
					"position" : "relative", 
					"top" : "0",
					"bottom": "auto",
					"width": "100%"
				});
			}
		}
	});
	/**************/


	/**
	 * fancy box
	 */
	if($('[data-fancybox^="photos-slider"]').length){
		$('[data-fancybox^="photos-slider"]').fancybox({
			arrows: true,
			loop: true,
			infobar: false,
			buttons: [
				"close"
			],
			backFocus: false,
			btnTpl: {
				// Arrows
				arrowLeft:
					'<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left circular-control circular-control_secondary" title="Пред">' +
					'<div>' +
					'<svg width="8" height="11" viewBox="0 0 8 11" fill="none" xmlns="http://www.w3.org/2000/svg">' +
					'<path fill-rule="evenodd" clip-rule="evenodd" d="M7.06981 10.1568C6.67928 10.5473 6.04612 10.5473 5.65559 10.1568L0.99884 5.5L5.65559 0.843247C6.04612 0.452723 6.67928 0.452723 7.06981 0.843247C7.46033 1.23377 7.46033 1.86694 7.06981 2.25746L3.82727 5.5L7.06981 8.74254C7.46033 9.13306 7.46033 9.76623 7.06981 10.1568Z" fill="#1A1A1A"/>' +
					'</svg>' +
					'</div>' +
					"</button>",
		
				arrowRight:
					'<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right circular-control circular-control_secondary" title="След">' +
					'<div><svg width="8" height="11" viewBox="0 0 8 11" fill="none" xmlns="http://www.w3.org/2000/svg">\n' +
					'<path fill-rule="evenodd" clip-rule="evenodd" d="M0.930161 10.1568C1.32069 10.5473 1.95385 10.5473 2.34437 10.1568L7.00113 5.5L2.34437 0.843247C1.95385 0.452723 1.32069 0.452723 0.930161 0.843247C0.539637 1.23377 0.539637 1.86694 0.930161 2.25746L4.1727 5.5L0.930161 8.74254C0.539637 9.13306 0.539637 9.76623 0.930161 10.1568Z" fill="#1A1A1A"/>\n' +
					'</svg></div>' +
					"</button>",
			},
		
			thumbs : {
				autoStart   : true,                  // Display thumbnails on opening
				hideOnClose : true,                   // Hide thumbnail grid when closing animation starts
				parentEl    : '.fancybox-bg',  // Container is injected into this element
				axis        : 'x',                     // Vertical (y) or horizontal (x) scrolling
			},
		
		});
	}
	/**************/


	/**
	 * magazines send email
	 */
	if($('.m-frm-call').length){
		$('.m-frm-send').on('click', function(e){
			let field = $(".maskphone"), 
			    valid = field.inputmask("isComplete");

			$('.maskphone').toggleClass('is-valid', valid);
			$('.maskphone').toggleClass('is-invalid', !valid);
			if (!valid) return;

			let data = {
				'm_email': $('[name=m_email]').val(),
				'm_phone': $('[name=m_phone]').val(),
				'm_quest': $('[name=m_quest]').val(),
				'm_id': $('[name=m_id]').val(),
			};

			valid = data.m_email != "";
			$('[name=m_email]').toggleClass('is-valid', valid);
			$('[name=m_email]').toggleClass('is-invalid', !valid);
			if (!valid || data.m_id == '') return;

			$.post('/magazines?task=sendEmail', data, function(html){
				$('.m-frm-call').html('Спасибо! Ваш вопрос отправлен.');
			}).fail(function() {
				$('.m-frm-call').html('Ошибка отправки, попробуйте позже.');
			});

		});
	}



	/**
	 * Popup lid form, for bx24
	 */
	$(document).on('click', '.modal-lid-form .sendnotify', function(){
        $(this).next('.error').remove();
        $(this).prop('disabled', true);
        var $form = $(this).closest('form'),
            request   = $form.serialize(),
            check = $("input[name=check]:checked", $form).val(),
            field = $(".maskphone", $form), 
			valid = field.inputmask("isComplete"),
            that = this;

		if(!valid){
			jQuery(field).toggleClass('is-valid', valid);
			jQuery(field).toggleClass('is-invalid', !valid);
            $(this).prop('disabled', false);
			return false;
		}

        if (check == undefined){
            $(this).prop('disabled', false);
            $(this).after('<div class="error">Подтвердите согласие с политикой безопасности</div>')
            return false;
        }

        $.ajax({
			type: "POST",
			url: $form.attr('action'),
			data   : request,
			dataType: 'json'
        }).done(function (json) {
            $(that).prop('disabled', false);
            $(that).after('<div class="error">'+json.html+'</div>')
        }).fail(function() {
            $(that).prop('disabled', false);
            $(that).after('<div class="error">Ошибка. Попробуйте позже.</div>')
        }).always(function() {
            $(that).prop('disabled', false);
        });
    });

	

	/**
	 * quizMe popUp
	 */
	$(document).on('click', '[data-quizme]', function(e){
        var quiz_id = $(this).data('quizme');
        $.ajax({
            url: "/quizme",
            dataType: "html",
            data: "ajax=1&quiz_id=" + quiz_id,
            success: function(html){
				let modal = '<div class="modal-lid-form modal" tabindex="-1" role="dialog" id="modal-quizme">' + html + '</div>';
                $('.quizme-wrapp-block').html(modal);
                $('#modal-quizme').modal('show');
            }
        });
    });

    $(document).on('click', '#modal-quizme .next-step, #modal-quizme .prev-step', function(e){
        var prevId = $(this).data('step'),
            $form = $(this).closest('form'),
            request;

        if(typeof prevId !== "undefined"){
            $('[name="step"]' ,$form).val(prevId);
            $('[name="task"]' ,$form).remove();
        }

        if($('.maskphone', $form).length){
            var check = $("input[name=check]:checked", $form).val(),
                field = $(".maskphone", $form), 
			    valid = field.inputmask("isComplete");
            
            if(!valid){
                jQuery(field).toggleClass('is-valid', valid);
                jQuery(field).toggleClass('is-invalid', !valid);
                return false;
            }

            if (check == undefined){
                $(this).after('<div class="error">Подтвердите согласие с политикой безопасности</div>')
                return false;
            }
        }

        request = $form.serialize();

        $.ajax({
            url: "/quizme",
            method: "POST",
            dataType: "html",
            data: request,
            success: function(html){
                $('#modal-quizme').html(html);
				//$('#modal-quizme').modal('show');

                if($('#modal-quizme .maskphone').length){
                    reInitMaskPhone();
                }

				if($('#quizme-contact').length){
					recaptcha_v3.getToken();
				}
            }
        });
    });



	/**
	 * registation / edit user data
	 */
	var checkFields = function(form, result){
		var error = 0,
			error_el,
			check = $("input[name=check]:checked", form),
			check_val = check.val(),
			field = $(".maskphone", form), 
			valid = field.inputmask("isComplete");

		$('.req_field', form).removeClass('is-invalid');
		$('#u_name').val($('#email').val());

		if (result != 1){
			$('#alert').remove();
			$('h1', form).after('<div id="alert" class="alert alert-danger">' + result + '</div>');
			error = 1;
			error_el = $('#alert');
		}

		$('.req_field', form).each(function(i,e){
			if($(e).val() == ''){
				$(e).addClass('is-invalid');
				error = 1;
				error_el = error_el || $(e);
			}
		});

		if(!valid){
			$(field).toggleClass('is-valid', valid);
			$(field).toggleClass('is-invalid', !valid);
			error = 1;
			error_el = error_el || field;
			$(field).addClass('is-invalid');
		}

		if ($("input[name=check]", form).length && check_val == undefined){
			error = 1;
			error_el = error_el || $("input[name=check]", form);
			$("input[name=check]", form).closest('label').addClass('alert alert-danger');
		}

		let passwd = $("[type=password]", form).val();

		if(passwd != ''){
			let pattern = /(?=.*[A-Z])[0-9a-zA-Z!@#$%^&*]{8,}/g;

			if(!pattern.test(passwd)){
				error = 1;
				error_el = error_el || $("[type=password]", form);
				$("#passwd-feedback").show();
			}else{
				$("#passwd-feedback").hide();
			}
		}

		if(error){
			jQuery('html, body').animate({
				scrollTop: (error_el.offset().top - 200)
			}, 800);

			return false;
		}

		return true;
	}

	$('#registrationBtn').on('click', function(e){
		const FORM = $(this).closest('form');

		let udata = {
			"username": $('#u_name', FORM).val(), 
			"email": $('#email', FORM).val()
		  };
		let checkurl = FORM.data('checkurl');

		e.preventDefault();

		jQuery.get(checkurl, udata, function(result){
			let response = grecaptcha.getResponse();

			if(response.length == 0) {
				$('.g-recaptcha-error').show('slow');
				return false;
			}

			$('.g-recaptcha-error').hide();

			if(checkFields(FORM, result)){
				FORM.submit();
			}

		});
	
		return;
	});

	$('#editUserBtn').on('click', function(e){
		const FORM = $(this).closest('form');

		e.preventDefault();
		if(checkFields(FORM, 1)){
			FORM.submit();
		}

		return;
	});

}(jQuery);


$(document).on('click', '.favorites img.fav', function(){
	var product = $(this).closest('.favorites').data('product')
	$(this).attr('title', 'В избранное');
	var fav = $.cookie('favorites');
	if (fav) fav = JSON.parse(fav);
	else fav = {};
	if (fav[product]!=undefined)
		delete fav[product];
	$(".fav-icon span, .btm-panel-icon .favorites-icon__badge").text(Object.keys(fav).length)
	$.cookie('favorites', JSON.stringify(fav), { expires : 365, path: '/' })
	$(this).removeClass('fav').addClass('not-fav').attr('src', '/templates/yr-21/img/general/card-icons/options/heart.svg');
	return false;
});

$(document).on('click', '.favorites img.not-fav', function(){
	var product = $(this).closest('.favorites').data('product')
	$(this).attr('title', 'Добавлено в избранное');
	var fav =  $.cookie('favorites');
	if (fav) fav = JSON.parse(fav);
	else fav = {};
	fav[product] = product;
	$.cookie('favorites', JSON.stringify(fav), { expires : 365, path: '/' });
	$(".fav-icon span, .btm-panel-icon .favorites-icon__badge").text(Object.keys(fav).length);
	$(this).removeClass('not-fav').addClass('fav').attr('src', '/templates/yr-21/img/general/card-icons/options/heart_red.svg');
	return false;
});

jQuery('#f_order').on('change', function(){
	jQuery('#js-filter-page').submit();
});
