@ -43,22 +43,34 @@ $(document).ready(function(){
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $ ( 'body' ) . append ( '<div id="error_alert" class="alert alert-danger" role="alert" style="position: fixed; top: 50px; left: 10%; right: 10%; z-index: 9999; display: none;">Ошибка<br><small id="alert_error_text"></small></div>' ) ;   
			
		
	
		
			
				
					    $ ( 'body' ) . append ( '<div id="success_alert" class="alert alert-success" role="alert" style="position: fixed; top: 50px; left: 10%; right: 10%; z-index: 9999; display: none;">Успех<br><small id="alert_success_text"></small></div>' ) ;   
			
		
	
		
			
				
					    $ ( '#fio' ) . on ( 'input' ,  function ( )  {   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $ ( '#fio' ) . on ( 'input' ,  function  ( )  {   
			
		
	
		
			
				
					    let  input  =  $ ( this ) . val ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Убираем все лишние символы, кроме букв и пробелов
   
			
		
	
		
			
				
					    input  =  input . replace ( /[^a-zA-Zа-яА-ЯёЁ ]/g ,  '' ) ;   
			
		
	
		
			
				
					    // Разделение текста по пробелам и преобразование каждого слова
   
			
		
	
		
			
				
					    let  words  =  input . split ( /\s+/ ) ;  // Разбиваем по пробелам
   
			
		
	
		
			
				
					    // Преобразуем каждое слово
   
			
		
	
		
			
				
					    let  formattedInput  =  words . map ( word  =>  {   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Преобразуем каждое слово, чтобы оно начиналось с заглавной буквы
   
			
		
	
		
			
				
					    let  formattedInput  =  input . split ( ' ' ) . map ( word  =>  {   
			
		
	
		
			
				
					        if  ( word . length  >  0 )  {   
			
		
	
		
			
				
					            return  word . charAt ( 0 ) . toUpperCase ( )  +  word . slice ( 1 ) . toLowerCase ( ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        return  '' ;  // Если слово пустое (например, несколько пробелов), не изменя ем
   
			
		
	
		
			
				
					        return  '' ;  // Пустые слова не трога ем
   
			
		
	
		
			
				
					    } ) . join ( ' ' ) ;  // Объединяем обратно с пробелами
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Обновляем поле ввода с отформатированным текстом
   
			
		
	
		
			
				
					    $ ( this ) . val ( formattedInput ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Проверяем количество слов
   
			
		
	
		
			
				
					    let  words  =  formattedInput . trim ( ) . split ( /\s+/ ) ;  // Убираем лишние пробелы
   
			
		
	
		
			
				
					    if  ( words . length  <  3  ||  words . some ( word  =>  word . length  <  2 ) )  {   
			
		
	
		
			
				
					        $ ( this ) . parent ( ) . removeClass ( 'success-field' ) . addClass ( 'errors-field' ) ;  // Подсветить поле
   
			
		
	
		
			
				
					    }  else  {   
			
		
	
		
			
				
					        $ ( this ) . parent ( ) . removeClass ( 'errors-field' ) . addClass ( 'success-field' ) ;  // Убрать подсветку
   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    } ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $ ( '#email' ) . on ( 'input' ,  function ( )  {   
			
		
	
		
			
				
					        let  input  =  $ ( this ) . val ( ) ;   
			
		
	
		
			
				
					        // Разрешаем только буквы, цифры, точки, дефисы и подчеркивания
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -91,6 +103,42 @@ $(document).ready(function(){
					 
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					    } ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $ ( '#address' ) . on ( 'input' ,  function  ( )  {   
			
		
	
		
			
				
					    let  input  =  $ ( this ) . val ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Преобразуем все символы в верхний регистр
   
			
		
	
		
			
				
					    input  =  input . toUpperCase ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Обновляем поле ввода
   
			
		
	
		
			
				
					    $ ( this ) . val ( input ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Проверяем формат: должно быть минимум 5 частей, разделённых запятыми
   
			
		
	
		
			
				
					    let  parts  =  input . split ( ',' ) ;   
			
		
	
		
			
				
					    if  ( parts . length  <  5  ||  parts . some ( part  =>  part . trim ( ) . length  ===  0 ) )  {   
			
		
	
		
			
				
					        $ ( this ) . parent ( ) . removeClass ( 'success-field' ) . addClass ( 'errors-field' ) ;   
			
		
	
		
			
				
					    }  else  {   
			
		
	
		
			
				
					        $ ( this ) . parent ( ) . removeClass ( 'errors-field' ) . addClass ( 'success-field' ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    } ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $ ( '#residential_address' ) . on ( 'input' ,  function  ( )  {   
			
		
	
		
			
				
					    let  input  =  $ ( this ) . val ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Преобразуем все символы в верхний регистр
   
			
		
	
		
			
				
					    input  =  input . toUpperCase ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Обновляем поле ввода
   
			
		
	
		
			
				
					    $ ( this ) . val ( input ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Проверяем формат: должно быть минимум 5 частей, разделённых запятыми
   
			
		
	
		
			
				
					    let  parts  =  input . split ( ',' ) ;   
			
		
	
		
			
				
					    if  ( parts . length  <  5  ||  parts . some ( part  =>  part . trim ( ) . length  ===  0 ) )  {   
			
		
	
		
			
				
					        $ ( this ) . parent ( ) . removeClass ( 'success-field' ) . addClass ( 'errors-field' ) ;   
			
		
	
		
			
				
					    }  else  {   
			
		
	
		
			
				
					        $ ( this ) . parent ( ) . removeClass ( 'errors-field' ) . addClass ( 'success-field' ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    } ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Проверка на дату выдачи паспорта (выдан после 14, 20 или 45 лет)
   
			
		
	
		
			
				
					    $ ( '#passport_date' ) . on ( 'change' ,  function ( )  {   
			
		
	
		
			
				
					        const  passportDate  =  new  Date ( $ ( this ) . val ( ) ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -244,6 +292,21 @@ $(document).ready(function(){
					 
			
		
	
		
			
				
					        $ ( this ) . attr ( "disabled" ,  true ) ;   
			
		
	
		
			
				
					        message  =  { }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					         if  ( $ ( '#residential_address' ) . val ( ) . split ( ',' ) . length  <  5  ||  $ ( '#residential_address' ) . val ( ) . split ( ',' ) . some ( part  =>  part . trim ( ) . length  ===  0 ) )  {   
			
		
	
		
			
				
					            show _error ( 'Пожалуйста, введите адрес проживания в следующем формате, используя заглавные буквы и расставляя все запятые:\nРЕГИОН, НАСЕЛЕННЫЙ ПУНКТ, УЛИЦА, ДОМ, КВАРТИРА' ,  false ) ;   
			
		
	
		
			
				
					            $ ( this ) . children ( ".spinner-border" ) . addClass ( 'd-none' ) ;   
			
		
	
		
			
				
					            $ ( this ) . removeAttr ( "disabled" ) ;   
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( $ ( '#address' ) . val ( ) . split ( ',' ) . length  <  5  ||  $ ( '#address' ) . val ( ) . split ( ',' ) . some ( part  =>  part . trim ( ) . length  ===  0 ) )  {   
			
		
	
		
			
				
					            show _error ( 'Пожалуйста, введите адрес регистрации в следующем формате, используя заглавные буквы и расставляя все запятые:\nРЕГИОН, НАСЕЛЕННЫЙ ПУНКТ, УЛИЦА, ДОМ, КВАРТИРА' ,  false ) ;   
			
		
	
		
			
				
					            $ ( this ) . children ( ".spinner-border" ) . addClass ( 'd-none' ) ;   
			
		
	
		
			
				
					            $ ( this ) . removeAttr ( "disabled" ) ;   
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( ! ( validate _length ( $ ( '#fio' ) . val ( ) ,  3 ) ) )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            show _error ( 'Введите ФИО' ,  false ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -304,13 +367,7 @@ $(document).ready(function(){
					 
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( ! ( validate _length ( $ ( '#address' ) . val ( ) ,  3 ) ) )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            show _error ( 'Введите адрес регистрации' ,  false ) ;   
			
		
	
		
			
				
					            $ ( this ) . children ( ".spinner-border" ) . addClass ( 'd-none' ) ;   
			
		
	
		
			
				
					            $ ( this ) . removeAttr ( "disabled" ) ;   
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( ! ( validate _length ( $ ( '#residential_address' ) . val ( ) ,  3 ) ) )   
			
		
	
		
			
				
					        {