(() => {
	/**
	 * Plugin Name: Валидация формы для изменения почты
	 * Version: 2.0
	 * Author: Трофимов Никита Игоревич (Бородатый Геткурс)
	 * Author URL: https://t.me/NiktarioN
	 */

	//////////////////////////////////////////////////////////////////////////////////////
	// ПАНЕЛЬ УПРАВЛЕНИЯ. СТАРТ

	const SETTINGS = {
		/**
		 * Селектор для блока с изменением email
		 */
		CHANGE_EMAIL_BLOCK_SELECTOR: '.change-email-functional',
		/**
		 * Селектор для поля ввода нового значения email
		 */
		NEW_EMAIL_INPUT_SELECTOR: '.new-email-input input.form-control',
	};

	//////////////////////////////////////////////////////////////////////////////////////
	// ПАНЕЛЬ УПРАВЛЕНИЯ. КОНЕЦ

	const validateChangeEmailForm = () => {
		const changeEmailBlock = document.querySelector(
			SETTINGS.CHANGE_EMAIL_BLOCK_SELECTOR
		);
		if (!changeEmailBlock) return;

		const currentEmailInput = changeEmailBlock.querySelector(
			'input[name="formParams[email]"]'
		);
		const newEmailInput = changeEmailBlock.querySelector(
			SETTINGS.NEW_EMAIL_INPUT_SELECTOR
		);
		const buttonSubmitForm = changeEmailBlock.querySelectorAll(
			'button[type="submit"]'
		);

		if (!currentEmailInput || !newEmailInput || !buttonSubmitForm.length)
			return;

		newEmailInput.setAttribute('type', 'email');

		const firstBuilderPartButtonBlock = changeEmailBlock.querySelector(
			'.builder-item.part-button'
		);

		const errorsTextArray = {
			sameEmail: 'Ваш новый email имеет такое же значение, что и текущий. Если вы хотите изменить текущий email, то введите другое значение',
		};

		function createErrorBlock() {
			const div = document.createElement('div');
			div.classList.add('change-email-error');
			div.style.display = 'none';
			firstBuilderPartButtonBlock.before(div);
			return div;
		}
		const createdErrorBlock = createErrorBlock();

		// Функция проверки корректности ввода данных
		const checkCurrentInputsValue = (e) => {
			if (
				currentEmailInput.value.toLowerCase().trim() ===
				newEmailInput.value.toLowerCase().trim()
			) {
				createdErrorBlock.textContent = errorsTextArray.sameEmail;
				createdErrorBlock.style.display = 'block';
				e.preventDefault();
				e.stopImmediatePropagation();
			} else {
				if (getComputedStyle(createdErrorBlock).display === 'block') {
					createdErrorBlock.style.display = 'none';
				}
			}
		};

		buttonSubmitForm.forEach((item) => {
			item.addEventListener('click', checkCurrentInputsValue);
		});
	};
	window.addEventListener('DOMContentLoaded', validateChangeEmailForm);
})();