$(document).ready(function() {
	var month_types = {
		1: 'hó',
		3: 'negyedév',
		6: 'félév',
		12: 'év'};

	window.enableAjax = true;	

	if($('form.login-form').length > 0 && window.location.pathname == '/elofizetes/adatok')
	{
		localStorage.setItem('shopRedirect', window.location.pathname);
	}


	var body = document.getElementsByTagName('body')[0];
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = '/static/common/plugins/form.helper.1.0.0/validation/validation.js';
	body.appendChild(script);

	if(localStorage && localStorage.getItem('cart') != null) {
		var products =  JSON.parse(localStorage.getItem('cart'));
		
		if(products != null && typeof products == "object" && products.length > 0) {
			$('.cart-side').addClass('visible');
		}
	}

	if($('.shop-cancel-reccurring').length > 0) {
		$('.shop-cancel-reccurring').on('click', function(e) {
			if (confirm("Biztos benne, hogy meg szeretné szakítani az előfizetés automatikus megújulását?") == true) {
				$.ajax({
					type: 'POST',
					cache: false,
					async: true,
					url: '/?block=Shop_Cancel&ajax=1',
					data: {id:$(this).attr('data-id')},
					dataType: 'json',
					success: function(response, stat) {
						window.location.reload();
					},
					error: function(jqxhr, stat, error) {
						window.location.reload();
					}
				});
			} else {

			}
		});
	}

	function render_cart_content(packages) {
		if(packages == null || typeof packages != "object" || packages.length < 1) {
			$('.cart-content .middle-content').html('<!-- Alert --><div class="alert alert-dark" role="alert">Jelenleg üres a bevásárlókosár.</div><a href="/webshop" role="button" class="btn btn-primary">Vásárlás folytatása</a>');
			return;
		}

		var part_paid = "";
		var part_price = 0;
		var part_price = 0;		
		
		var html_content = `
			<!-- Cart form -->
            <form class="cart-form" method="POST" action="/webshop/adatok">
                <div class="table-responsive">
                    <table class="table border cart-table">
                        <thead>
                        <tr>
                            <th class="product-remove">&nbsp;</th>
                            <th class="product-thumbnail">&nbsp;</th>
                            <th class="product-name">Termék</th>
                            <th class="product-price">Egységár</th>
                            <th class="product-quantity">Mennyiség</th>
                            <th class="product-subtotal">Részösszeg</th>
                        </tr>
                        </thead>
                        <tbody>`;

            for(var i = 0; i < packages.length; i++) {
            	if(part_paid != '') {
            		part_paid += ` + `;
            	}

            	price = Number(packages[i].price * packages[i].quantity);
            	price = Math.ceil(price + ((price * packages[i].tax) / 100));
            	part_price += price;

            	part_paid += price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + ` <span class="currency">Ft</span>`;

            	html_content += `<tr class="cart-item">
                            <td class="product-remove">
                            	<button class="remove" aria-label="Tétel eltávolítása" data-id="` + packages[i].id + `">×</button>
                            </td>
                            <td class="product-thumbnail">` + 
                            	(packages[i].image ? `<a href="` + packages[i].url + `">` + packages[i].image + `</a>` : ``) +
                            `</td>
                            <td class="product-name" data-title="Termék">
                            	<input type="hidden" name="packages[]" value="` + packages[i].id + `">
                                <a href="` + packages[i].url + `">` + packages[i].name + `</a>
                            </td>
                            <td class="product-price" data-title="Egységár">
                                <div class="product-price-wrap">
                                    ` + price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + `
									<span class="currency">Ft</span>
								</div>
                            </td>					
                            <td class="product-quantity d-flex justify-content-between" data-title="Mennyiség">
								<div class="set-quantity">
									<button class="minus"  data-id="` + packages[i].id + `">-</button>	
									<input type="number" min=1 name="quantities[]" value="` + packages[i].quantity + `">
									<button class="plus"  data-id="` + packages[i].id + `">+</button>
								</div>
                            </td>
                            <td class="product-subtotal" data-title="Részösszeg">
                                <div class="product-price-wrap">
                                    ` + price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + `
                                    <span class="currency">Ft</span>
                                </div>
                            </td>
                        </tr>`
            }            

            html_content += `<tr>
                            <td colspan="6" class="actions">
                                <a href="/webshop" role="button" class="btn btn-primary">Vásárlás folytatása</a>
                            </td>
                        </tr>
                        </tbody>
                    </table>
                </div>

	            <!-- Cart summary info -->
	            <div class="row cart-sum-row">
	                <div class="cart-totals col col-md-6 offset-md-6">
	                    <h2>Kosár összesen</h2>
	                    <table class="table border">
	                        <tbody>
	                            <tr class="order-total">
	                                <th>Összeg</th>
	                                <td data-title="Összeg">
	                                    <div class="product-price-wrap">` + part_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + ` <span class="currency">Ft</span>
	                                    </div>
	                                </td>
	                            </tr></tbody>
	                    </table><!-- ./table -->

	                    <div class="proceed-to-checkout">
	                        <button type="submit" class="btn btn-primary" role="button">
	                            Tovább a pénztárhoz
	                        </button>
	                    </div>
	                </div>
	            </div><!-- /.cart-sum-row -->
            </form><!-- /.cart-form -->`;

            $('.cart-content .middle-content').html(html_content);
	}

	/* SHOP DETAIL PAGE */
	if($('.add-to-cart.webshop').length > 0) {
		var package = JSON.parse($('.add-to-cart').attr('data-product'));
		var packages = JSON.parse(localStorage.getItem('cart'));

		if(packages == null || typeof packages != "object") {
			packages = [];
		}


		for(var i = 0; i < packages.length; i++) {
			if(packages[i].id == package.id) {
				$('.cart-side').addClass('visible');
				$('.add-to-cart').addClass('in-cart');
				$('.set-quantity').css('display', 'inline-block');
				$('.add-to-cart').html('Tovább a kosárhoz');
				$('.set-quantity input[name="quantities"]').attr('value', packages[i].quantity);			
				
				break;
			}
		}

		$('.set-quantity button').on('click', function(e) {
			e.preventDefault();
			if($(this).hasClass('plus')) {
				
				packages[i].quantity++;
			} else if($(this).hasClass('minus') && packages[i].quantity > 1) {
				packages[i].quantity--;
			}
			
			$('.set-quantity input[name="quantities"]').attr('value', packages[i].quantity);
			localStorage.setItem('cart', JSON.stringify(packages));
		});

		$('.add-to-cart').on('click', function(e) {			

			if(!$(this).hasClass('in-cart')) {
				e.preventDefault();
				packages.push(package);

				$('.cart-side').addClass('visible');
				$(this).addClass('in-cart');
				$(this).html('Tovább a kosárhoz');
				$('.set-quantity').css('display', 'inline-block');
				$('.set-quantity input[name="quantities"]').attr('value', '1');
			}

			localStorage.setItem('cart', JSON.stringify(packages));
		});
	}

	/* SHOP CART CONTENT PAGE */
	if($('.cart-content .middle-content').length > 0) {
		var packages = JSON.parse(localStorage.getItem('cart'));

		render_cart_content(packages);

		$('.cart-content .middle-content').on('click','.product-remove button.remove', function(e) {
			e.preventDefault();

			for(var i = 0; i < packages.length; i++) {
				if(packages[i].id == $(this).attr('data-id')) {
					packages.splice(i, 1);
					break;
				}
			}

			if(packages.length < 1) {
				$('.cart-side').removeClass('visible');
			}

			localStorage.setItem('cart', JSON.stringify(packages));
			render_cart_content(packages);
		});

		$('.cart-content .middle-content').on('click','.product-quantity button.plus', function(e) {
			e.preventDefault();

			for(var i = 0; i < packages.length; i++) {
				if(packages[i].id == $(this).attr('data-id')) {
					packages[i].quantity = packages[i].quantity + 1;
				}
			}

			localStorage.setItem('cart', JSON.stringify(packages));
			render_cart_content(packages);
		});

		$('.cart-content .middle-content').on('click','.product-quantity button.minus', function(e) {
			e.preventDefault();

			for(var i = 0; i < packages.length; i++) {
				if(packages[i].id == $(this).attr('data-id')) {
					productQuantity = packages[i].quantity;
					if(productQuantity !== 1) {
						packages[i].quantity = productQuantity - 1;
					}
				}
			}

			localStorage.setItem('cart', JSON.stringify(packages));
			render_cart_content(packages);
		});
	}

	/* USER LOGIN PAGE */
	if($('.login-form').length > 0) {
		function validateLoginInput() {
			let valid = true;
			var message = [];

			if($.fn.nxValidate().isEmpty($('.login-form #login-username').val())) {
				valid = false;
				$('.login-form #login-username').addClass('is-invalid');
				$('.login-form #login-username + div.invalid-feedback').html('E-mail cím megadása kötelező!');
				message.push('E-mail cím megadása kötelező!');
			} else {
				if(!$.fn.nxValidate().isValidEmail($('.login-form #login-username').val())) {
					valid = false;
					$('.login-form #login-username').addClass('is-invalid');
					$('.login-form #login-username + div.invalid-feedback').html('Nem megfelelő email cím formátum!');
					message.push('Nem megfelelő email cím formátum!');
				} else {
					$('.login-form #login-username').removeClass('is-invalid');
					$('.login-form #login-username + div.invalid-feedback').html('');
				}
			}

			if($.fn.nxValidate().isEmpty(($('.login-form #login-password').val()))) {
				valid = false;
				$('.login-form #login-password').addClass('is-invalid');
				$('.login-form #login-password + div.invalid-feedback').html('Jelszó megadása kötelező!');
				message.push('Jelszó megadása kötelező!');
			} else {
				$('.login-form #login-password').removeClass('is-invalid');
				$('.login-form #login-password + div.invalid-feedback').html('');
			}

			if(message.length > 0) {
				window.scrollTo(0,0);
				$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + message.join('<br><strong>Hiba:</strong> ') + '</div>');
			} else {
				$('.messages').html('');
			}

			return valid;
		}

		$('.login-form button[type=submit]').on('click', function(e) {
			e.preventDefault();
			var $form = $(this).parents('.login-form');
			
			if (!validateLoginInput()) {
				return false;
			}

			if (window.enableAjax) {
				window.enableAjax = false;

				var data = $form.serialize();

				$.ajax({
					type: 'POST',
					cache: false,
					async: true,
					url: '/?block=User_Login&ajax=1',
					data: data,
					dataType: 'json',
					success: function(response, stat) {
						window.enableAjax = true;

						if (response.success) {
							if(response.redirect) {
								setTimeout(function() {
									window.location.assign(response.redirect);
								}, 500);
							}
						} else {
							window.scrollTo(0,0);
							if(response.error) {
								if(response.error == 'Hibás felhasználónév vagy jelszó!') {
									$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A megadott e-mail cím vagy jelszó nem megfelelő. Kérjük, próbálkozzon újra, vagy kérjen új jelszót!</div>');
								} else {
									$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + response.error + '</div>');
								}
							} else {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A belépés sikertelen.</div>');
							}
						}
					},
					error: function(jqxhr, stat, error) {
						window.enableAjax = true;
						window.alert('A belépés sikertelen.');
					}
				});
			}
		});
	}

	/* USER FORGOTTEN PASSWORD */
	if($('form.forgottenpass-form').length > 0) {
		function validateForgottenInput() {
			let valid = true;
			var message = [];

			if($.fn.nxValidate().isEmpty($('.forgottenpass-form #email').val())) {
				valid = false;
				$('.forgottenpass-form #email').addClass('is-invalid');
				$('.forgottenpass-form #email+ div.invalid-feedback').html('E-mail cím megadása kötelező!');
				message.push('E-mail cím megadása kötelező!');
			} else {
				if(!$.fn.nxValidate().isValidEmail($('.forgottenpass-form #email').val())) {
					valid = false;
					$('.forgottenpass-form #email').addClass('is-invalid');
					$('.forgottenpass-form #email + div.invalid-feedback').html('Nem megfelelő email cím formátum!');
					message.push('Nem megfelelő email cím formátum!');
				} else {
					$('.forgottenpass-form #email').removeClass('is-invalid');
					$('.forgottenpass-form #email + div.invalid-feedback').html('');
				}
			}

			if(message.length > 0) {
				window.scrollTo(0,0);
				$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + message.join('<br><strong>Hiba:</strong> ') + '</div>');
			} else {
				$('.messages').html('');
			}

			return valid;
		}

		$('.forgottenpass-form button[type=submit]').on('click', function(e) {
			e.preventDefault();
			var $form = $(this).parents('.forgottenpass-form');
			
			if (!validateForgottenInput()) {
				return false;
			}

			if (window.enableAjax) {
				window.enableAjax = false;

				var data = $form.serialize();

				$.ajax({
					type: 'POST',
					cache: false,
					async: true,
					url: '/?block=User_Forgotten_Password&ajax=1',
					data: data,
					dataType: 'json',
					success: function(response, stat) {
						window.enableAjax = true;

						if (response.success) {
							$('.messages').html('<div class="alert alert-dark" role="alert">A jelszómódosító linket hamarosan elküldjük a megadott email címre!</div>');
							window.scrollTo(0,0);

							if(response.redirect) {
								setTimeout(function() {
									window.location.assign(response.redirect);
								}, 500);
							}
						} else {
							window.scrollTo(0,0);
							if(response.error) {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + response.error + '</div>');
							} else {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A jelszómódosítás sikertelen.</div>');
							}
						}
					},
					error: function(jqxhr, stat, error) {
						window.enableAjax = true;
						$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A jelszómódosítás sikertelen.</div>');
					}
				});
			}
		});
	}

	/* USER CHANGE PASSWORD */

	if($('.changepassowrd-form').length > 0) {
		function validateChangeInput() {
			let valid = true;
			var message = [];

			if($.fn.nxValidate().isEmpty($('.changepassowrd-form #password').val())) {
				valid = false;
				$('.changepassowrd-form #password').addClass('is-invalid');
				$('.changepassowrd-form #password + div.invalid-feedback').html('Jelszó megadása kötelező!');
				message.push('Jelszó megadása kötelező!');
			} else {
				$('.changepassowrd-form #password').removeClass('is-invalid');
				$('.changepassowrd-form #password + div.invalid-feedback').html('');
			}

			if($.fn.nxValidate().isEmpty($('.changepassowrd-form #password_again').val())) {
				valid = false;
				$('.changepassowrd-form #password_again').addClass('is-invalid');
				$('.changepassowrd-form #password_again + div.invalid-feedback').html('Jelszó újra megadása kötelező!');
				message.push('Jelszó újra megadása kötelező!');
			} else {
				$('.changepassowrd-form #password_again').removeClass('is-invalid');
				$('.changepassowrd-form #password_again + div.invalid-feedback').html('');
			}

			if(valid && $('.changepassowrd-form #password').val() != $('.changepassowrd-form #password_again').val()) {
				valid = false;
				$('.changepassowrd-form #password_again').addClass('is-invalid');
				$('.changepassowrd-form #password_again + div.invalid-feedback').html('A két jelszó nem egyezik meg!');
				message.push('A két jelszó nem egyezik meg!');
			} else if(valid) {
				$('.changepassowrd-form #password_again').removeClass('is-invalid');
				$('.changepassowrd-form #password_again + div.invalid-feedback').html('');
			}

			if(message.length > 0) {
				window.scrollTo(0,0);
				$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + message.join('<br><strong>Hiba:</strong> ') + '</div>');
			} else {
				$('.messages').html('');
			}

			return valid;
		}

		$('.changepassowrd-form button[type=submit]').on('click', function(e) {
			e.preventDefault();
			var $form = $(this).parents('.changepassowrd-form');
			
			if (!validateChangeInput()) {
				return false;
			}

			if (window.enableAjax) {
				window.enableAjax = false;

				var data = $form.serialize();

				$.ajax({
					type: 'POST',
					cache: false,
					async: true,
					url: '/?block=User_Change_Password&ajax=1',
					data: data,
					dataType: 'json',
					success: function(response, stat) {
						window.enableAjax = true;

						if (response.success) {
							$('.messages').html('<div class="alert alert-dark" role="alert">A jelszómodosítás sikeresen megtörtént!</div>');
							window.scrollTo(0,0);

							if(response.redirect) {
								setTimeout(function() {
									window.location.assign(response.redirect);
								}, 500);
							}
						} else {
							window.scrollTo(0,0);
							if(response.error) {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + response.error + '</div>');
							} else {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A jelszómódosítás sikertelen.</div>');
							}
						}
					},
					error: function(jqxhr, stat, error) {
						window.enableAjax = true;
						$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A jelszómódosítás sikertelen.</div>');
					}
				});
			}
		});
	}

	/* USER REGISTER */
	if($('.registration-form').length > 0) {
		function validateRegisterInput() {
			let valid = true;
			var valid_pass = true;
			var message = [];

			if($.fn.nxValidate().isEmpty($('.registration-form #vezeteknev').val())) {
				valid = false;
				$('.registration-form #vezeteknev').addClass('is-invalid');
				$('.registration-form #vezeteknev + div.invalid-feedback').html('Vezetéknév kitöltése kötelező!');
				message.push('Vezetéknév kitöltése kötelező!');
			} else {
				$('.registration-form #vezeteknev').removeClass('is-invalid');
				$('.registration-form #vezeteknev + div.invalid-feedback').html('');
			}

			if($.fn.nxValidate().isEmpty($('.registration-form #keresztnev').val())) {
				valid = false;
				$('.registration-form #keresztnev').addClass('is-invalid');
				$('.registration-form #keresztnev + div.invalid-feedback').html('Keresztnév kitöltése kötelező!');
				message.push('Keresztnév kitöltése kötelező!');
			} else {
				$('.registration-form #keresztnev').removeClass('is-invalid');
				$('.registration-form #keresztnev + div.invalid-feedback').html('');
			}

			if($.fn.nxValidate().isEmpty($('.registration-form #email').val())) {
				valid = false;
				$('.registration-form #email').addClass('is-invalid');
				$('.registration-form #email + div.invalid-feedback').html('Email cím kitöltése kötelező!');
				message.push('Email cím kitöltése kötelező!');
			} else {
				if(!$.fn.nxValidate().isValidEmail($('.registration-form #email').val())) {
					valid = false;
					$('.registration-form #email').addClass('is-invalid');
					$('.registration-form #email + div.invalid-feedback').html('Nem megfelelő email cím formátum!');
					message.push('Nem megfelelő email cím formátum!');
				} else {
					$('.registration-form #vezeteknev').removeClass('is-invalid');
					$('.registration-form #vezeteknev + div.invalid-feedback').html('');
				}
			}

			if($.fn.nxValidate().isEmpty($('.registration-form #password').val())) {
				valid = false;
				valid_pass = false;
				$('.registration-form #password').addClass('is-invalid');
				$('.registration-form #password + div.invalid-feedback').html('Jelszó megadása kötelező!');
				message.push('Jelszó megadása kötelező!');
			} else {
				$('.registration-form #password').removeClass('is-invalid');
				$('.registration-form #password + div.invalid-feedback').html('');
			}

			if($.fn.nxValidate().isEmpty($('.registration-form #password_again').val())) {
				valid = false;
				valid_pass = false;
				$('.registration-form #password_again').addClass('is-invalid');
				$('.registration-form #password_again + div.invalid-feedback').html('Jelszó újra megadása kötelező!');
				message.push('Jelszó újra megadása kötelező!');
			} else {
				$('.registration-form #password_again').removeClass('is-invalid');
				$('.registration-form #password_again + div.invalid-feedback').html('');
			}

			if(valid_pass && $('.registration-form #password').val() != $('.registration-form #password_again').val()) {
				valid = false;
				valid_pass = false;
				$('.registration-form #password_again').addClass('is-invalid');
				$('.registration-form #password_again + div.invalid-feedback').html('A két jelszó nem egyezik meg!');
				message.push('A két jelszó nem egyezik meg!');
			} else if(valid_pass) {
				$('.registration-form #password_again').removeClass('is-invalid');
				$('.registration-form #password_again + div.invalid-feedback').html('');
			}


			if($('.registration-form #aszf').prop('checked') == false) {
				valid = false;
				$('.registration-form #aszf').addClass('is-invalid');
				$('.registration-form #aszf').parent().find('div.invalid-feedback').html('Az Általános Szerződési Feltételek elfogadása kötelező!');
				message.push('Az Általános Szerződési Feltételek elfogadása kötelező!');
			} else {
				$('.registration-form #aszf').removeClass('is-invalid');
				$('.registration-form #aszf + div.invalid-feedback').html('');
			}

			if(message.length > 0) {
				$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + message.join('<br><strong>Hiba:</strong> ') + '</div>');
			} else {
				$('.messages').html('');
			}

			return valid;
		}

		$('.registration-form button[type=submit]').on('click', function(e) {
			e.preventDefault();
			var $form = $(this).parents('.registration-form');
			
			if (!validateRegisterInput()) {
				return false;
			}

			if (window.enableAjax) {
				window.enableAjax = false;

				var data = $form.serialize();

				$.ajax({
					type: 'POST',
					cache: false,
					async: true,
					url: '/?block=User_Registration&ajax=1',
					data: data,
					dataType: 'json',
					success: function(response, stat) {
						window.enableAjax = true;

						if (response.id) {
							$('.messages').html('<div class="alert alert-dark" role="alert">A regisztráció sikeresen megtörtént az aktiváló linket hamarosan elküldjük a megadott email címre!</div>');
							window.scrollTo(0,0);

							setTimeout(function() {
								if(localStorage && localStorage.getItem('shopRedirect') != null) 
								{
									let url = localStorage.getItem('shopRedirect');
									localStorage.removeItem('shopRedirect');
									window.location = url;
								}
								else 
								{ 
									history.go(-2);
								}
							}, 500);
						} else {
							window.scrollTo(0,0);
							if(response.error) {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + response.error + '</div>');
							} else {
								$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> Ezzel az email címmel már van regisztrált felhasználónk!</div>');
							}
						}
					},
					error: function(jqxhr, stat, error) {
						window.enableAjax = true;
						$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> A regisztráció sikertelen.</div>');
					}
				});
			}

		});
	}

	/* SHOP CHECKOUT PAGE */
	if($('.checkout-form').length > 0) {
		function validateUserInput() {
			let valid = true;
			var message = [];

			$('.checkout-form input[required],.checkout-form select[required]').each(function() {
				if($(this).parents('#shipping-address-details').length > 0 && $('.shipping-address-trigger').attr('aria-expanded') == 'false') {
					//ha nem különbözik a szálítási cím a 
					$(this).removeClass('is-invalid');
					return; //continue 
				}
				
				if($.fn.nxValidate().isEmpty($(this).val()) || ($(this).attr('type') == 'checkbox' && $(this).prop('checked') == false)) {
					valid = false;
					$(this).addClass('is-invalid');
					message.push($(this).attr('data-required'));
					$(this).parent().find('.invalid-feedback').html($(this).attr('data-required'));
				} else {
					$(this).removeClass('is-invalid');
				}
			});

			$('.checkout-form input[type="email"]').each(function() {

				if($(this).prop('required') && $.fn.nxValidate().isEmpty($(this).val())) {
					// ha már dobtunk hibát
				} else if($.fn.nxValidate().isEmpty($(this).val())) {
					// ha nem kötelező a mező és üres
				} else if(!$.fn.nxValidate().isValidEmail($(this).val())) { //ha kivan töltve
					valid = false;
					$(this).addClass('is-invalid');
					message.push($(this).attr('data-format'));
					$(this).parent().find('.invalid-feedback').html($(this).attr('data-format'));
				} else {
					$(this).removeClass('is-invalid');
				}
			});			

			if(message.length > 0) {
				$('.messages').html('<div class="alert alert-dark" role="alert"><strong>Hiba:</strong> ' + message.join('<br><strong>Hiba:</strong> ') + '</div>');
			} else {
				$('.messages').html('');
			}

			return valid;
		}

		$('form.checkout-form button[type="submit"]').on('click', function(e) {
			e.preventDefault();

			if(validateUserInput()) {
				$(this).parents('form.checkout-form').submit();
			} else {
				window.scrollTo(0,0);
			}
		});

		$('form.checkout-form .shipping-address-trigger').on('click', function(e) {
			if($(this).attr('aria-expanded') == 'false') { //mostmár ki van nyitva
				$('#kezbesitesi_nev').attr('required','required');
				$('.change-required').html('<sup>*</sup>');
			} else { //mostmár be van csukva
				$('#kezbesitesi_nev').removeClass('is-invalid');
				$('#kezbesitesi_nev').removeAttr('required');
				$('.change-required').html('(nem kötelező)');
			}
		});

		$('form.checkout-form #heading-barion button').on('click', function(e) {

			$('form.checkout-form #fizetes_tipus').val("barion");
			$('div.subscription-wrap').removeClass('d-none');
			$("#aszf_renew").prop('required',true);
			if($(this).attr('aria-expanded') == 'true') {
				e.preventDefault();
				e.stopPropagation();
				return false;
			}
		});

		$('form.checkout-form #heading-bank button').on('click', function(e) {

			$('form.checkout-form #fizetes_tipus').val("utalas");
			$('div.subscription-wrap').addClass('d-none');
			$("#aszf_renew").prop('required',false);
			if($(this).attr('aria-expanded') == 'true') {
				e.preventDefault();
				e.stopPropagation();
				return false;
			}
		});

		$('form.checkout-form #heading-cheque button').on('click', function(e) {

			$('form.checkout-form #fizetes_tipus').val("csekk");
			$('div.subscription-wrap').addClass('d-none');
			$("#aszf_renew").prop('required',false);
			if($(this).attr('aria-expanded') == 'true') {
				e.preventDefault();
				e.stopPropagation();
				return false;
			}
		});
	}

	$('div.subscription-wrap').addClass('d-none');
	if($('#fizetes_tipus').val() == 'barion')
	{
		$('div.subscription-wrap').removeClass('d-none');
	}

	$('#szallitasi_mod').on('change', function() {		
		var szallitasi_mod = this.value;
		productsPrice = 0;	
		$('.product-price').each(function() {
			productsPrice += parseInt($(this).html());
		});		
			
		deliveryPriceEl = $('.delivery-price');
		productPriceWrapEl = $('.order-total .product-price-wrap');
		postapontokEl = $('.postapontok');
		postapontSelect = $('select#postapont');
		if(szallitasi_mod == 'postapont') {			
			$(postapontokEl).show();
			$(postapontSelect).attr('required', '');
			postapontFee = $('.delivery-fees .postapont').html();
			if(postapontFee != '') {
				$(deliveryPriceEl).html(postapontFee  + ' Ft');
				totalPrice = productsPrice + parseInt(postapontFee);
				$(productPriceWrapEl).html(totalPrice + ' Ft');				
			} else {
				$(deliveryPriceEl).html('');
				$(productPriceWrapEl).html(productsPrice + ' Ft');
			}
		} else if(szallitasi_mod == 'hazhozszallitas') {
			$(postapontokEl).hide();
			$(postapontSelect).removeAttr('required');
			homeDeliveryFee = $('.delivery-fees .home-delivery').html();
			if(homeDeliveryFee != ''){
				$(deliveryPriceEl).html(homeDeliveryFee + ' Ft');
				totalPrice = productsPrice + parseInt(homeDeliveryFee);
				$(productPriceWrapEl).html(totalPrice + ' Ft');
			} else {
				$(deliveryPriceEl).html('');
				$(productPriceWrapEl).html(productsPrice + ' Ft');
			}
		} 
		else if(szallitasi_mod == 'szemelyes_atvetel') {
			$(postapontokEl).hide();
			$(postapontSelect).removeAttr('required');
			pickupFee = $('.delivery-fees .pick-up').html();
			if(pickupFee != '' ) {
				$(deliveryPriceEl).html(pickupFee + ' Ft');
				totalPrice = productsPrice + parseInt(pickupFee);
				$(productPriceWrapEl).html(totalPrice + ' Ft');
			}
			else {
				$(deliveryPriceEl).html('');
				$(productPriceWrapEl).html(productsPrice  + ' Ft');
			}
		} else if(szallitasi_mod == '') {
			$(postapontokEl).hide();
			$(postapontSelect).removeAttr('required');
			$(deliveryPriceEl).html('');
			$(productPriceWrapEl).html(productsPrice  + ' Ft');
		}
	});	

	$('#city').on('change', function() {
		$('.postapont-adatok').hide();
		$('.postapont-adatok').val();
		var city = this.value;
		$.ajax({
			type: "POST",
			url: "/?block=Shop_Postapontok&ajax=1",
			data: { city: city },
			dataType: 'json',
			success: function (data) {
				$('#city').attr('size',1);
				$('select#postapont').find('option').remove();
				$('select#postapont').append('<option></option>');
				$.each(data[0], function(index,item) {
					$('select#postapont').append('<option value="' + index + '">' + item + '</option>');
				});
			},
			error: function(jqxhr, stat, error) {
				console.log(error);
			}
		});
	})	

	$('#postapont').on('change', function() {
		var postapontID = this.value;
		$.ajax({
			type: "POST",
			url: "/?block=Shop_Postapontok&ajax=1&opening=1",
			data: { postapontID: postapontID },
			dataType: 'json',
			success: function (data) {
				$postapontDiv = $('.postapont-adatok');
				$postapontDiv.show();
				$postapontDiv.empty();
				$postapontDiv.append(data); 
			},
			error: function(jqxhr, stat, error) {
				console.log(error);
			}
		});
	})
	
	$.fn.filterByText = function(textbox) {
        return this.each(function() {
          var select = this;
          var options = [];
          $(select).find('option').each(function() {
            options.push({value: $(this).val(), text: $(this).text()});
          });
          $(select).data('options', options);
          $(textbox).bind('change keyup', function() {
			$('#city').attr('size',6);
            var options = $(select).empty().scrollTop(0).data('options');
            var search = $.trim($(this).val());
            var regex = new RegExp('^' + search,'gi');

            $.each(options, function(i) {
              var option = options[i];
              if(option.text.match(regex) !== null) {
                $(select).append(
                  $('<option>').text(option.text).val(option.value)
                );
              }
            });
			$(select).append(
				$('<option></option>'),
			);
            if($(select).children().length === 1) {
              $(select).children().get(0).selected = true;
            }
          });
        });
      };

	$(function() {
		$('select#city').filterByText($('#city_selector'), true);
	});		

	if($('#szallitasi_mod').length > 0) {
		if($('#szallitasi_mod').val() == 'postapont') {
			$('.postapontok').show();
			$('.postapont-adatok').show();
			postapontID = $('#postapont').val();
			$.ajax({
				type: "POST",
				url: "/?block=Shop_Postapontok&ajax=1&opening=1",
				data: { postapontID: postapontID },
				dataType: 'json',
				success: function (data) {
					$postapontDiv = $('.postapont-adatok');
					$postapontDiv.show();
					$postapontDiv.empty();
					$postapontDiv.append(data); 
				},
				error: function(jqxhr, stat, error) {
					console.log(error);
				}
			});
		}
	}
	
	if($('.webshop-success-page').length > 0) {
		if(localStorage) {
			localStorage.removeItem('cart');
		}
	}
});