@ -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="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>' ) ;      $ ( '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 ( ) ;      let  input  =  $ ( this ) . val ( ) ;   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    // Убираем все лишние символы, кроме букв и пробелов
   
			
		
	
		
		
			
				
					
					    input  =  input . replace ( /[^a-zA-Zа-яА-ЯёЁ ]/g ,  '' ) ;      input  =  input . replace ( /[^a-zA-Zа-яА-ЯёЁ ]/g ,  '' ) ;   
			
		
	
		
		
			
				
					
					    // Разделение текста по пробелам и преобразование каждого слова
  
 
			
				
				
			
		
	
		
		
			
				
					
					    let  words  =  input . split ( /\s+/ ) ;  // Разбиваем по пробелам
      // Преобразуем каждое слово, чтобы оно начиналось с заглавной буквы
   
			
				
				
			
		
	
		
		
			
				
					
					    // Преобразуем каждое слово
      let  formattedInput  =  input . split ( ' ' ) . map ( word  =>  {   
			
				
				
			
		
	
		
		
			
				
					
					    let  formattedInput  =  words . map ( word  =>  {   
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					        if  ( word . length  >  0 )  {          if  ( word . length  >  0 )  {   
			
		
	
		
		
			
				
					
					            return  word . charAt ( 0 ) . toUpperCase ( )  +  word . slice ( 1 ) . toLowerCase ( ) ;              return  word . charAt ( 0 ) . toUpperCase ( )  +  word . slice ( 1 ) . toLowerCase ( ) ;   
			
		
	
		
		
			
				
					
					        }          }   
			
		
	
		
		
			
				
					
					        return  '' ;  // Если слово пустое (например, несколько пробелов), не изменя ем
          return  '' ;  // Пустые слова не трога ем
   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    } ) . join ( ' ' ) ;  // Объединяем обратно с пробелами
      } ) . join ( ' ' ) ;  // Объединяем обратно с пробелами
   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    // Обновляем поле ввода с отформатированным текстом
      // Обновляем поле ввода с отформатированным текстом
   
			
		
	
		
		
			
				
					
					    $ ( this ) . val ( formattedInput ) ;      $ ( 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 ( )  {      $ ( '#email' ) . on ( 'input' ,  function ( )  {   
			
		
	
		
		
			
				
					
					        let  input  =  $ ( this ) . val ( ) ;          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 лет)
      // Проверка на дату выдачи паспорта (выдан после 14, 20 или 45 лет)
   
			
		
	
		
		
			
				
					
					    $ ( '#passport_date' ) . on ( 'change' ,  function ( )  {      $ ( '#passport_date' ) . on ( 'change' ,  function ( )  {   
			
		
	
		
		
			
				
					
					        const  passportDate  =  new  Date ( $ ( this ) . val ( ) ) ;          const  passportDate  =  new  Date ( $ ( this ) . val ( ) ) ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -244,6 +292,21 @@ $(document).ready(function(){ 
			
		
	
		
		
			
				
					
					        $ ( this ) . attr ( "disabled" ,  true ) ;          $ ( this ) . attr ( "disabled" ,  true ) ;   
			
		
	
		
		
			
				
					
					        message  =  { }          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 ) ) )          if ( ! ( validate _length ( $ ( '#fio' ) . val ( ) ,  3 ) ) )   
			
		
	
		
		
			
				
					
					        {          {   
			
		
	
		
		
			
				
					
					            show _error ( 'Введите ФИО' ,  false ) ;              show _error ( 'Введите ФИО' ,  false ) ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -304,13 +367,7 @@ $(document).ready(function(){ 
			
		
	
		
		
			
				
					
					            return ;              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 ) ) )          if ( ! ( validate _length ( $ ( '#residential_address' ) . val ( ) ,  3 ) ) )   
			
		
	
		
		
			
				
					
					        {          {