PageSourceSearch

https://ais-sova.aisgorod.ru/Identity/Account/RegistrationConferenceSPB2026

html aisgorod.ru collected 2026-09-24 10:56:57 UTC 83,966 bytes, 1,206 lines download raw bytes

1    <link rel="shortcut icon" type="image/x-icon" href="/img/fav-logo-ais.svg" />
2    <meta name="viewport" content="width=device-width, initial-scale=1.0">
3<head>
4    
5    
6        <link rel="stylesheet" href="/lib/datatables/css/datatables.min.css?v=Xmvvd2qyBwEhXxVetnuRd6P824S8MwqWY98eqSRLzCY" />
7        <link rel="stylesheet" href="/css/bootstrap-toggle.css?v=KlD0MEEfKnHmNFl9R0dxvTBsvtn8NZ-MT3CElV3zRos" />
8        <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css?v=YLGeXaapI0_5IgZopewRJcFXomhRMlYYjugPLSyNjTY" />
9        <link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css?v=eZrrJcwDc_3uDhsdt61sL2oOBY362qM3lon1gyExkL0" />
10        <link rel="stylesheet" href="/lib/jquery-contextmenu/jquery.contextMenu.min.css?v=bDY1UaY1xc54A0JiciaY3T4f0rwrXHPG85TdsMBY0dM" />
11        <link rel="stylesheet" href="/lib/select2/css/select2.min.css?v=FdatTf20PQr_rWg-cAKfl6j4_IY3oohFAJ7gVC3M34E" />
12        <link rel="stylesheet" href="/css/ais-style.min.css?v=FhEeIaaJPysxzNa2Ia2PohuNGmKXrSMAk5BCjoVx-yA" />
13        <link rel="stylesheet" href="/lib/bootstrap-datepicker/css/bootstrap-datepicker.standalone.css?v=9eB9aJkdMOPCUi0CBHbl6FWi_lIkXb-1oKi9bWFZ3HQ" />
14        <link rel="stylesheet" href="/lib/sweetalert2-8.18.0/dist/sweetalert2.min.css?v=SXt8PUM3De2jpzjApkqTHl3rO6I8-lijRFzNQw255BE" />
15        <link rel="stylesheet" href="/lib/jquery-ui-1.12.1/jquery-ui.min.css?v=yk3yv0AKQth1LhFfAzZqkLK07Qay2p70KdQf2l8VcF4" />
16        <link rel="stylesheet" href="/css/CheckboxToggle.css?v=ekuF65j3Hhhuo99ufA3r_1xB3J7RLviQiosn1poP_yo" />
17        <link rel="stylesheet" href="/css/air-datepicker.css?v=cUiiq4lOjeLSdGWUam0Jbh4tVNliXx9TUOn8ODLxuN8" />
18        <link rel="stylesheet" href="/lib/jquery-datetimepicker/jquery.datetimepicker.min.css?v=DOS9W6NR-NFe1fUhEE0PGKY_fubbUCnOfTje2JMDw3Y" />
19        <link rel="stylesheet" href="/lib/daterangepicker/css/daterangepicker.css?v=9e9MfmRHWQmp4yMV-R9cxXU6-ZjzB2x-YcE4Z1Kmuag" />
20
21
22        
22<script src="/lib/jquery/jquery.min.js?v=ppQ0jxGWDxCGzOTx-5mJkkssqJuANJtfADwFB0mi6Z0"></script>
22
23        
23<script src="/js/moment.min.js?v=Lcl1aTtpivqsS7XeoJ0aHsOJl3DbI7jruiPEOy1AQrA"></script>
23
24        
24<script src="/lib/daterangepicker/js/daterangepicker.js?v=nCVry5qhDvfmuraDoHeq7bv91trY3tpPHnq_T3_hBOw"></script>
24
25        
25<script src="/lib/jquery-ui-1.12.1/jquery-ui.min.js?v=IcrMqOnrmPHzJwK0F2aF8vlBr1GrW8fPiMy1Q1obsIA"></script>
25
26        
26<script src="/lib/jquery-validate/jquery.validate.min.js?v=sPB0F50YUDK0otDnsfNHawYmA5M0pjjUf4TvRJkGFrI"></script>
26
27        
27<script src="/lib/jquery-validate/localization/messages_ru.min.js?v=_zc0l5Lz9N5yjcmhOS9Tgg3STtUQTpZqTBdxqUGGheY"></script>
27
28        
28<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js?v=9GycpJnliUjJDVDqP0UEu_bsm9U-3dnQUH8-3W10vkY"></script>
28
29        
29<script src="/lib/jquery-mask/jquery.mask.min.js?v=Kg2zTcFO9LXOc7IwcBx1YeUBJmekycsnTsq2RuFHSZU"></script>
29
30        
30<script src="/lib/bootstrap/dist/js/popper.min.js?v=CIP_rP1MmYynK8qsC_oZLqDJzQ2yV8A6Pvg9XfX-inw"></script>
30
31        
31<script src="/lib/bootstrap/dist/js/bootstrap.min.js?v=CjSoeELFOcH0_uxWu6mC_Vlrc1AARqbm_jiiImDGV3s"></script>
31
32        
32<script src="/js/bootstrap-toggle.js?v=WwSEgWNscHmTEj_CC9mQcIohUcgYMVfDBGHG46gsrsE"></script>
32
33        
33<script src="/lib/jquery-contextmenu/jquery.contextMenu.min.js?v=mtYZHGwsjm8l4FkNgQRInxcr1VocYWe-JNK4GJmvX-k"></script>
33
34        
34<script src="/lib/jquery-contextmenu/jquery.ui.position.min.js?v=C7HjUf9VdfVJ5Dxet-nW9wK7rKLAhEkEYMjGXsw7FM8"></script>
34
35        
35<script src="/lib/bootstrap-datepicker/js/bootstrap-datepicker.min.js?v=bqVeqGdJ7h_lYPq6xrPv_YGzMEb6dNxlfiTUHSgRCp8"></script>
35
36        
36<script src="/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js?v=iGDUwn2IPSzlnLlVeCe3M4ZIxQxjUoDYdEO6oBZw_Go"></script>
36
37        
37<script src="/lib/jquery-datetimepicker/jquery.datetimepicker.full.min.js?v=FEqEelWI3WouFOo2VWP_uJfs1y8KJ--FLh2Lbqc8SJk"></script>
37
38        
38<script src="/lib/bootstrap-notify-3.1.3/bootstrap-notify.min.js?v=N-Z44YUz3jVAY2nw7rOR5DIt9n2IkoesMnl8OTthCBo"></script>
38
39        
39<script src="/lib/sweetalert2-8.18.0/dist/sweetalert2.min.js?v=rk9yHoXXiVyrdgRtYGKZm7y0UccvDZ88BgekvWR_ETw"></script>
39
40        
40<script src="/lib/select2/js/select2.min.js?v=AFAYEOkzB6iIKnTYZOdUf9FFje6lOTYdwRJKwTN5mks"></script>
40
41        
41<script src="/lib/select2/js/i18n/ru.min.js?v=eODU0RsNHffMqSJe9XJZAJoE-007eYqaCCbcwYxWs7E"></script>
41
42        
42<script src="/js/jquery.maskMoney.js?v=uk5g1oiZYOz9TMwCoTFHVPzPU6so3tN6S3_s21bnjQA"></script>
42
43        
43<script src="/js/spin.min.js?v=ufmkMrcMtGrHXNDBEu-bLoH7saGMShf8vUWUNrqzoqc"></script>
43
44        
44<script src="/lib/moveto/move-to.min.js?v=KVPBMr_w1-u_gSR6nGm3zdcBP_Q25nR56msdhqv6H1M"></script>
44
45    
46</head>
47<div class="overlayForAjax">
48    <div class="ais-ajax-loader"></div>
49    
49<script>
50        var activeAjaxRequestsCount = 0;
51        $(function () {
52            $(document)
53                .ajaxStart(function () {
54                    $(".overlayForAjax").show();
55                    activeAjaxRequestsCount++;
56                })
57                .ajaxStop(function () {
58                    activeAjaxRequestsCount--;
59                    if (activeAjaxRequestsCount < 1)
60                        $(".overlayForAjax").hide();
61                });
62        });
63
64    </script>
64
65</div>
66<div id="overlay"></div>
67<div class="d-flex px-3 px-md-5 py-3 mx-auto justify-content-between align-items-center" style="max-width: 1480px;">
68    <div class="d-flex flex-column gap-10">
69        <svg xmlns="http://www.w3.org/2000/svg" width="190" height="39" fill="none"><path fill="#679E00" fill-rule="evenodd" d="M32.805 5.647c3.764 3.756 5.647 8.285 5.647 13.585 0 5.315-1.883 9.844-5.647 13.585-3.757 3.756-8.286 5.635-13.585 5.635-5.3 0-9.828-1.879-13.585-5.635C1.878 29.076 0 24.547 0 19.232c0-5.3 1.878-9.829 5.635-13.585C9.392 1.883 13.92 0 19.22 0c5.3 0 9.828 1.883 13.585 5.647Z" clip-rule="evenodd" /><path fill="#7CAF24" fill-rule="evenodd" d="M31.204 24.586v-5.378c.288-.436.565-.88.83-1.333.358-.638.694-1.278 1.006-1.917h5.144c.179 1.052.269 2.144.269 3.274 0 1.886-.234 3.67-.702 5.354h-6.546Z" clip-rule="evenodd" /><path fill="#A7CF6B" fill-rule="evenodd" d="M34.349 7.33h-3.145V4.186a20.21 20.21 0 0 1 1.602 1.46 22.02 22.02 0 0 1 1.543 1.684Z" clip-rule="evenodd" /><path fill="#CAE2A7" fill-rule="evenodd" d="M34.676 7.775c.11 2.805-.437 5.533-1.636 8.183h-1.836V7.33h3.145c.101.14.21.289.327.445Z" clip-rule="evenodd" /><path fill="#A5D467" fill-rule="evenodd" d="M31.203 7.33h-8.629V.292c3.188.523 6.064 1.82 8.629 3.894V7.33Z" clip-rule="evenodd" /><path fill="#87CF36" fill-rule="evenodd" d="M22.576 7.33h-8.628V.702C15.608.234 17.366 0 19.221 0c1.16 0 2.28.097 3.355.293V7.33Z" clip-rule="evenodd" /><path fill="#A3CC66" fill-rule="evenodd" d="M31.204 19.208v-3.25h1.836c-.312.64-.648 1.279-1.006 1.917-.265.453-.541.897-.83 1.333Z" clip-rule="evenodd" /><path fill="#AFD479" fill-rule="evenodd" d="M22.574 24.586v-8.628h8.629v3.25c-1.512 2.23-3.36 4.022-5.542 5.378h-3.087Z" clip-rule="evenodd" /><path fill="#fff" fill-rule="evenodd" d="M31.203 7.33v8.628h-8.628V7.33h8.628ZM13.947 27.52v-2.934H5.319v-8.628h8.628v8.628h8.628v8.616h-8.628v-5.681Z" clip-rule="evenodd" /><path fill="#C1E699" fill-rule="evenodd" d="M22.576 15.958H17.07a5.88 5.88 0 0 1-.34-.468 18.734 18.734 0 0 0-2.782-2.934V7.33h8.628v8.628Z" clip-rule="evenodd" /><path fill="#B1D47E" fill-rule="evenodd" d="M38.182 15.958h-5.144c1.2-2.65 1.746-5.378 1.637-8.183a18.03 18.03 0 0 1 3.507 8.183Z" clip-rule="evenodd" /><path fill="#8ED642" fill-rule="evenodd" d="M5.32 7.33V5.951c.108-.102.214-.203.315-.304C8.075 3.2 10.845 1.55 13.947.702V7.33H5.319Z" clip-rule="evenodd" /><path fill="#A1DD64" fill-rule="evenodd" d="M5.32 8.219V7.33h8.627v5.226a20.676 20.676 0 0 0-2.677-1.928c-.07-.048-.14-.09-.21-.13a1.338 1.338 0 0 1-.176-.104 17.183 17.183 0 0 0-3.717-1.661 15.616 15.616 0 0 0-1.848-.514Z" clip-rule="evenodd" /><path fill="#B6DD83" fill-rule="evenodd" d="M13.947 15.958H5.319V8.219c.623.133 1.24.304 1.848.514 1.285.398 2.525.951 3.717 1.66.055.04.113.074.176.105.07.04.14.082.21.13.95.576 1.843 1.219 2.677 1.928v3.402Z" clip-rule="evenodd" /><path fill="#85CA34" fill-rule="evenodd" d="M4.127 7.33h1.192v.889a17.627 17.627 0 0 0-1.66-.292c.14-.203.296-.402.468-.597Z" clip-rule="evenodd" /><path fill="#67BD00" fill-rule="evenodd" d="M5.32 7.33H4.12c.373-.464.772-.918 1.198-1.362V7.33Z" clip-rule="evenodd" /><path fill="#ACD874" fill-rule="evenodd" d="M5.32 8.22v7.738H.258a17.91 17.91 0 0 1 3.402-8.03c.553.07 1.107.167 1.66.291Z" clip-rule="evenodd" /><path fill="#B3D882" fill-rule="evenodd" d="M5.32 24.586H.7C.234 22.903 0 21.118 0 19.232c0-1.13.086-2.222.257-3.274H5.32v8.628Z" clip-rule="evenodd" /><path fill="#8EC842" fill-rule="evenodd" d="M17.07 15.958c1.232 1.785 2.147 3.82 2.747 6.103.226.85.402 1.691.527 2.525h-6.396v-8.628h3.122Z" clip-rule="evenodd" /><path fill="#C8E8A5" fill-rule="evenodd" d="M13.948 12.556a18.734 18.734 0 0 1 2.783 2.935c.101.156.214.312.339.467h-3.122v-3.402Z" clip-rule="evenodd" /><path fill="#8EC344" fill-rule="evenodd" d="M5.32 24.657v-.07h8.627v2.934c-2.79-.195-5.499-1.053-8.125-2.573-.18-.109-.347-.206-.503-.291Z" clip-rule="evenodd" /><path fill="#80B52D" fill-rule="evenodd" d="M13.947 33.203h-7.89a6.047 6.047 0 0 1-.422-.386l-.316-.316v-7.844c.156.085.323.183.503.292 2.626 1.52 5.335 2.377 8.125 2.572v5.681Z" clip-rule="evenodd" /><path fill="#8CBD3D" fill-rule="evenodd" d="M5.32 24.586v7.915c-2.252-2.339-3.792-4.976-4.618-7.915H5.32Z" clip-rule="evenodd" /><path fill="#74A816" fill-rule="evenodd" d="M13.948 33.202v4.583c-2.923-.818-5.554-2.346-7.891-4.583h7.89Z" clip-rule="evenodd" /><path fill="#72A816" fill-rule="evenodd" d="M22.576 33.202v4.992a21.235 21.235 0 0 1-3.355.258c-1.855 0-3.613-.222-5.273-.667v-4.583h8.628Z" clip-rule="evenodd" /><path fill="#80B32D" fill-rule="evenodd" d="M25.661 24.586h5.542v8.616h-8.629v-7.037c.523-.227 1.04-.468 1.555-.725.04-.016.074-.031.106-.047.483-.25.959-.518 1.426-.807Z" clip-rule="evenodd" /><path fill="#79A51F" fill-rule="evenodd" d="M31.204 34.267v-1.053h1.204a19.79 19.79 0 0 1-1.204 1.065v-.012Z" clip-rule="evenodd" /><path fill="#9AC656" fill-rule="evenodd" d="M22.574 24.586h3.087c-.467.289-.943.557-1.426.807a1.482 1.482 0 0 1-.105.047c-.515.257-1.033.498-1.556.725v-1.579Z" clip-rule="evenodd" /><path fill="#83C331" fill-rule="evenodd" d="M22.574 15.958v8.628h-2.232c-.125-.834-.3-1.676-.527-2.525-.6-2.284-1.515-4.318-2.747-6.103h5.506Z" clip-rule="evenodd" /><path fill="#97C350" fill-rule="evenodd" d="M25.662 24.587c2.182-1.357 4.03-3.15 5.541-5.379v5.379h-5.54Z" clip-rule="evenodd" /><path fill="#679E00" fill-rule="evenodd" d="M31.203 24.586h6.54c-.862 3.072-2.509 5.815-4.939 8.23-.135.136-.271.268-.409.398h-1.192v1.052c-2.556 2.084-5.433 3.39-8.629 3.916v-4.98h8.629v-8.616Z" clip-rule="evenodd" /><path fill="#7E7E7E" fill-rule="evenodd" d="M89.587 8.549c-1.31 0-2.392.467-3.25 1.402-.865.858-1.298 1.926-1.298 3.204V24.81c0 1.247.433 2.326 1.298 3.238.92.881 2.003 1.321 3.25 1.321 1.278 0 2.346-.44 3.203-1.321.881-.943 1.321-2.022 1.321-3.238 0-.343.117-.643.351-.9a1.31 1.31 0 0 1 .912-.34c.335 0 .627.113.877.34.226.257.339.557.339.9 0 1.94-.678 3.616-2.034 5.027-1.403 1.356-3.079 2.034-5.027 2.034-1.941 0-3.593-.678-4.958-2.034-1.371-1.41-2.057-3.086-2.057-5.027V13.13c0-1.948.686-3.62 2.057-5.014C85.936 6.706 87.588 6 89.53 6c1.948 0 3.612.706 4.992 2.117 1.379 1.379 2.069 3.043 2.069 4.991 0 .343-.113.635-.34.877a1.22 1.22 0 0 1-.876.362c-.359 0-.662-.12-.912-.362a1.21 1.21 0 0 1-.35-.83v-.046a2.5 2.5 0 0 0-.083-.632 2.856 2.856 0 0 1-.058-.433c-.187-.857-.58-1.554-1.18-2.093-.858-.935-1.926-1.402-3.204-1.402ZM79.73 7.25v23.382c0 .343-.112.643-.338.9a1.35 1.35 0 0 1-.924.339c-.335 0-.639-.113-.912-.34a1.252 1.252 0 0 1-.374-.9v-.42c-1.27 1.068-2.782 1.602-4.536 1.602-1.949 0-3.613-.678-4.992-2.035-1.395-1.41-2.093-3.094-2.093-5.05V7.25c0-.343.129-.643.386-.9A1.34 1.34 0 0 1 66.883 6c.343 0 .64.117.889.351.226.257.34.557.34.9v17.478c0 1.278.447 2.366 1.344 3.262.849.865 1.912 1.297 3.191 1.297 1.278 0 2.358-.432 3.238-1.297.835-.826 1.267-1.867 1.298-3.122V7.25c0-.343.125-.643.374-.9.273-.234.577-.351.912-.351.359 0 .666.117.924.351.225.257.338.557.338.9Zm-18.997.807c1.38 1.41 2.07 3.094 2.07 5.05v17.513c0 .351-.114.65-.34.9-.249.234-.55.35-.9.35-.335 0-.639-.116-.912-.35a1.206 1.206 0 0 1-.385-.9v-4.863h-9.085v4.863c0 .351-.116.65-.35.9-.257.234-.55.35-.877.35-.366 0-.678-.116-.935-.35a1.206 1.206 0 0 1-.386-.9V13.11c0-1.957.697-3.64 2.093-5.051C52.114 6.686 53.777 6 55.719 6c1.956 0 3.628.686 5.015 2.058Zm-.467 15.15v-10.1c0-1.294-.433-2.377-1.298-3.25-.88-.857-1.964-1.286-3.25-1.286-1.271 0-2.334.429-3.192 1.286-.896.905-1.345 1.988-1.345 3.25v10.1h9.085Z" clip-rule="evenodd" /><path fill="url(#a)" fill-rule="evenodd" d="M159.85 9.847a3.93 3.93 0 0 0-2.654.993c-.686.764-1.029 1.63-1.029 2.596v11.071c0 .967.343 1.827 1.029 2.583a3.928 3.928 0 0 0 2.654.994h.725c1.036 0 1.897-.33 2.583-.994.71-.693 1.064-1.554 1.064-2.583v-11.07c0-1.014-.354-1.88-1.064-2.597-.686-.662-1.547-.993-2.583-.993h-.725ZM159.792 6h.783c2.01 0 3.756.733 5.237 2.198 1.458 1.48 2.186 3.219 2.186 5.214V24.52c0 1.987-.728 3.71-2.186 5.16
697-1.426 1.457-3.172 2.186-5.237 2.186h-.783c-2.02 0-3.746-.729-5.18-2.186-1.457-1.434-2.186-3.157-2.186-5.167V13.413c0-2.027.729-3.765 2.186-5.215C156.093 6.733 157.82 6 159.792 6Z" clip-rule="evenodd" /><path fill="url(#b)" fill-rule="evenodd" d="M139.472 10.758c-.694.702-1.041 1.54-1.041 2.514V22.823h3.578c.966 0 1.823-.327 2.571-.981.647-.702.971-1.552.971-2.549v-6.021c0-.974-.324-1.812-.971-2.514-.748-.646-1.605-.97-2.571-.97-.944 0-1.789.324-2.537.97ZM142.009 6c1.979 0 3.682.721 5.108 2.163 1.434 1.457 2.151 3.16 2.151 5.11v6.043c0 1.941-.717 3.632-2.151 5.074-1.387 1.427-3.09 2.14-5.108 2.14h-3.578v1.846c0 .975-.358 1.797-1.076 2.467-.693.686-1.574 1.03-2.642 1.03V13.271c0-1.949.721-3.652 2.163-5.109C138.31 6.721 140.021 6 142.009 6Z" clip-rule="evenodd" /><path fill="url(#c)" fill-rule="evenodd" d="M178.473 9.8c-1.036 0-1.897.347-2.583 1.04-.709.702-1.064 1.567-1.064 2.596v14.672h7.272V13.365c0-1.02-.355-1.863-1.064-2.525-.67-.693-1.524-1.04-2.561-1.04Zm-11.094 20.202c0-.53.191-.979.573-1.345.351-.366.787-.549 1.309-.549h1.835V13.365c0-2.01.714-3.729 2.14-5.155 1.465-1.473 3.203-2.21 5.215-2.21 2.025 0 3.764.737 5.213 2.21 1.466 1.458 2.198 3.176 2.198 5.155v14.743h2.269c.514 0 .946.183 1.297.55.382.365.573.814.573 1.344 0 .522-.191.962-.573 1.32-.351.367-.783.55-1.297.55h-18.87c-.522 0-.958-.183-1.309-.55a1.74 1.74 0 0 1-.573-1.32Z" clip-rule="evenodd" /><path fill="url(#d)" fill-rule="evenodd" d="M123.55 9.847a3.888 3.888 0 0 0-2.642.993c-.693.764-1.041 1.63-1.041 2.596v11.071c0 .967.348 1.827 1.041 2.583a3.885 3.885 0 0 0 2.642.994h.737c1.029 0 1.894-.33 2.595-.994.702-.693 1.053-1.554 1.053-2.583v-11.07c0-1.014-.351-1.88-1.053-2.597-.701-.662-1.566-.993-2.595-.993h-.737Zm5.963-1.65c.07.072.14.145.21.224 1.325 1.433 1.987 3.098 1.987 4.992v11.106c0 1.886-.662 3.538-1.987 4.956l-.21.211c-1.418 1.457-3.16 2.186-5.226 2.186h-.783c-2.027 0-3.757-.729-5.191-2.186-1.465-1.434-2.198-3.157-2.198-5.167V13.413c0-2.027.733-3.765 2.198-5.215C119.794 6.733 121.525 6 123.504 6h.783c2.01 0 3.753.733 5.226 2.198Z" clip-rule="evenodd" /><path fill="url(#e)" fill-rule="evenodd" d="M114.466 7.86c0 .615-.238 1.07-.713 1.367-.461.327-.885.499-1.275.514-.989.062-1.832.425-2.525 1.088-.694.709-1.04 1.578-1.04 2.607v14.917c0 .99-.363 1.828-1.088 2.514-.724.67-1.601 1.005-2.631 1.005V13.436c0-2.058.714-3.8 2.14-5.226 1.434-1.473 3.191-2.21 5.273-2.21.491 0 .927.191 1.309.573.366.351.55.78.55 1.286Z" clip-rule="evenodd" /><defs><linearGradient id="a" x1="160.212" x2="160.212" y1="5.942" y2="31.872" gradientUnits="userSpaceOnUse"><stop stop-color="#87CF36" /><stop offset="1" stop-color="#679E00" /></linearGradient><linearGradient id="b" x1="141.991" x2="141.991" y1="5.942" y2="31.872" gradientUnits="userSpaceOnUse"><stop stop-color="#87CF36" /><stop offset="1" stop-color="#679E00" /></linearGradient><linearGradient id="c" x1="178.69" x2="178.69" y1="5.942" y2="31.872" gradientUnits="userSpaceOnUse"><stop stop-color="#87CF36" /><stop offset="1" stop-color="#679E00" /></linearGradient><linearGradient id="d" x1="123.913" x2="123.913" y1="5.942" y2="31.872" gradientUnits="userSpaceOnUse"><stop stop-color="#87CF36" /><stop offset="1" stop-color="#679E00" /></linearGradient><linearGradient id="e" x1="109.83" x2="109.83" y1="5.942" y2="31.872" gradientUnits="userSpaceOnUse"><stop stop-color="#87CF36" /><stop offset="1" stop-color="#679E00" /></linearGradient></defs></svg>
70    </div>
71</div>
72<div class="d-flex flex-column gap-10 px-3 px-md-5 pb-3 mx-auto" style="max-width: 1480px;">
73    <h2 class="ais-700-f">Конференция «&#x412;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x438; &#x446;&#x438;&#x444;&#x440;&#x43E;&#x432;&#x438;&#x437;&#x430;&#x446;&#x438;&#x438; &#x434;&#x43B;&#x44F; &#x43A;&#x43E;&#x43C;&#x43F;&#x430;&#x43D;&#x438;&#x439; &#x416;&#x41A;&#x425;: &#x43F;&#x43B;&#x430;&#x43D;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x438; &#x43F;&#x435;&#x440;&#x441;&#x43F;&#x435;&#x43A;&#x442;&#x438;&#x432;&#x44B; &#x440;&#x430;&#x437;&#x432;&#x438;&#x442;&#x438;&#x44F;»</h2>
74    <span class="orange-block py-2 px-3 ais-700-f w-fit">15-18 сентября 2026г.</span>
75</div>
76<div class="ais-500-f fs-16 bg-white ais-block-process-wrapper mx-1 mx-md-auto p-0 overflow-hidden mb-3" style="max-width: 1480px;">
77    <div class="d-flex flex-column flex-xl-row">
78        <div class="col p-0 gap-30 d-flex flex-column p-3 p-md-5">
79            <h3 class="m-0 ais-700-f">&#x420;&#x435;&#x433;&#x438;&#x441;&#x442;&#x440;&#x430;&#x446;&#x438;&#x44F; &#x43D;&#x430; &#x443;&#x447;&#x430;&#x441;&#x442;&#x438;&#x435; &#x432; &#x43A;&#x43E;&#x43D;&#x444;&#x435;&#x440;&#x435;&#x43D;&#x446;&#x438;&#x438;</h3>
80            <form class="d-flex flex-column gap-10" method="post" action="/Identity/Account/RegistrationConferenceSPB2026">
81                <div class="row d-flex flex-column align-items-start m-0 gap-30 flex-nowrap w-100">
82                    <div class="row d-flex flex-column align-items-start m-0 gap-4 flex-nowrap w-100">
83                        <h4 class="ais-700-f fs-20">
83Организация:</h4>
84                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
85                            <div class="col p-0 input-with-button">
86                                <label class="col p-0" for="Input_OrganizationInn">&#x418;&#x41D;&#x41D;</label>
87                                <input class="ais-input ais-input-inn col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 10 &#x438; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 12 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="12" data-val-length-min="10" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442;" data-val-regex-pattern="[0-9]&#x2B;" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationInn" maxlength="12" name="Input.OrganizationInn" value="" />
88                                <div style="display: flex; position: relative; top: -18px; justify-content: center; align-items:center;">
89                                    <button type="button" class="ais-btn-inside-field equal-address" onclick="getInfo()" title="Заполнить по ИНН">
90                                        <span style="padding-right: 10px;">Заполнить по ИНН</span>
91                                        <i class="fa fa-exchange"></i>
92                                    </button>
93                                </div>
94                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationInn" data-valmsg-replace="true"></span>
95                            </div>
96                            <div class="col p-0">
97                                <label class="col p-0" for="Input_OrganizationOgrn">&#x41E;&#x413;&#x420;&#x41D;/&#x41E;&#x413;&#x420;&#x41D;&#x418;&#x41F;</label>
98                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 13 &#x438; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 15 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="15" data-val-length-min="13" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442;" data-val-regex-pattern="[0-9]&#x2B;" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationOgrn" maxlength="15" name="Input.OrganizationOgrn" value="" />
99                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationOgrn" data-valmsg-replace="true"></span>
100                            </div>
101                            <div class="col p-0">
102                                <label class="col p-0" for="Input_OrganizationKpp">&#x41A;&#x41F;&#x41F;</label>
103                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 9 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="9" data-val-length-min="9" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442;" data-val-regex-pattern="[0-9]&#x2B;" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationKpp" maxlength="9" name="Input.OrganizationKpp" value="" />
104                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationKpp" data-valmsg-replace="true"></span>
105                            </div>
106                        </div>
107                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
108                            <div class="col p-0">
109                                <label class="col p-0" for="Input_OrganizationFullName">&#x41F;&#x43E;&#x43B;&#x43D;&#x43E;&#x435; &#x43D;&#x430;&#x438;&#x43C;&#x435;&#x43D;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;</label>
110                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 1500 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="1500" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationFullName" maxlength="1500" name="Input.OrganizationFullName" value="" />
111                                <span style="font-size: 12px;">Данные будут отражены в договоре, при необходимости скорректируйте наименование</span>
112                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationFullName" data-valmsg-replace="true"></span>
113                            </div>
114                            <div class="col p-0">
115                                <label class="col p-0" for="Input_OrganizationName">&#x41A;&#x440;&#x430;&#x442;&#x43A;&#x43E;&#x435; &#x43D;&#x430;&#x438;&#x43C;&#x435;&#x43D;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;</label>
116                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 900 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="900" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationName" maxlength="900" name="Input.OrganizationName" value="" />
117                                <span style="font-size: 12px;">Данные будут отражены в договоре, при необходимости скорректируйте наименование</span>
118                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationName" data-valmsg-replace="true"></span>
119                            </div>
120                        </div>
121                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
122                            <div class="col p-0">
123                                <label class="col p-0" for="Input_OrganizationLegalAddress">&#x42E;&#x440;&#x438;&#x434;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441;</label>
124                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 500 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="500" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationLegalAddress" maxlength="500" name="Input.OrganizationLegalAddress" value="" />
125                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationLegalAddress" data-valmsg-replace="true"></span>
126                            </div>
127                            <div class="col p-0">
128                                <label class="col p-0" for="Input_OrganizationMailingAddress">&#x41F;&#x43E;&#x447;&#x442;&#x43E;&#x432;&#x44B;&#x439; &#x430;&#x434;&#x440;&#x435;&#x441;</label>
129                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 500 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="500" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationMailingAddress" maxlength="500" name="Input.OrganizationMailingAddress" value="" />
130                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationMailingAddress" data-valmsg-replace="true"></span>
131                            </div>
132                        </div>
133                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
134                            <div class="col p-0">
135                                <label class="ais-label" for="Input_OrganizationBossName">&#x424;&#x418;&#x41E; &#x440;&#x443;&#x43A;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44F;</label>
136                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 6 &#x438; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 1000 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="1000" data-val-length-min="6" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x43A;&#x438;&#x440;&#x438;&#x43B;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x44B;, &#x43F;&#x440;&#x43E;&#x431;&#x435;&#x43B;&#x44B;, &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x438; &#x434;&#x435;&#x444;&#x438;&#x441;&#x44B;" data-val-regex-pattern="^[-.&#x430;-&#x44F;&#x410;-&#x42F;&#x451;&#x401;\s]&#x2B;$" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationBossName" maxlength="1000" name="Input.OrganizationBossName" value="" />
137                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationBossName" data-valmsg-replace="true"></span>
138                            </div>
139                            <div class="col p-0">
140                                <label class="ais-label" for="Input_OrganizationBossNameGenitive">&#x424;&#x418;&#x41E; &#x440;&#x443;&#x43A;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44F; &#x432; &#x440;&#x43E;&#x434;. &#x43F;&#x430;&#x434;&#x435;&#x436;&#x435;</label>
141                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 6 &#x438; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 1000 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="1000" data-val-length-min="6" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x43A;&#x438;&#x440;&#x438;&#x43B;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x44B;, &#x43F;&#x440;&#x43E;&#x431;&#x435;&#x43B;&#x44B;, &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x438; &#x434;&#x435;&#x444;&#x438;&#x441;&#x44B;" data-val-regex-pattern="^[-.&#x430;-&#x44F;&#x410;-&#x42F;&#x451;&#x401;\s]&#x2B;$" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationBossNameGenitive" maxlength="1000" name="Input.OrganizationBossNameGenitive" value="" />
142                                <span style="font-size: 12px;">Для корректного формирования договора</span>
143                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationBossNameGenitive" data-valmsg-replace="true"></span>
144                            </div>
145                            <div class="col p-0">
146                                <label class="ais-label" for="Input_OrganizationBossPosition">&#x414;&#x43E;&#x43B;&#x436;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x440;&#x443;&#x43A;&#x43E;&#x432;&#x43E;&#x434;&#x438;&#x442;&#x435;&#x43B;&#x44F;</label>
147                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 1000 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="1000" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationBossPosition" maxlength="1000" name="Input.OrganizationBossPosition" value="" />
148                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationBossPosition" data-valmsg-replace="true"></span>
149                            </div>
150                        </div>
151                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
152                            <div class="col p-0">
153                                <label class="ais-label" for="Input_ActsOnTheBasis">&#x414;&#x435;&#x439;&#x441;&#x442;&#x432;&#x443;&#x44E;&#x449;&#x435;&#x433;&#x43E;(&#x435;&#x439;) &#x43D;&#x430; &#x43E;&#x441;&#x43D;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x438;&#x438; (&#x443;&#x441;&#x442;&#x430;&#x432;&#x430;, &#x43F;&#x440;&#x438;&#x43A;&#x430;&#x437;&#x430;, &#x434;&#x43E;&#x432;&#x435;&#x440;&#x435;&#x43D;&#x43D;&#x43E;&#x441;&#x442;&#x438;  &#x438; &#x442;.&#x434;.)</label>
154                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 1000 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="1000" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_ActsOnTheBasis" maxlength="1000" name="Input.ActsOnTheBasis" value="" />
155                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.ActsOnTheBasis" data-valmsg-replace="true"></span>
156                            </div>
157                        </div>
158                    </div>
159
160                    <div class="row d-flex flex-column align-items-start m-0 gap-4 flex-nowrap w-100">
161                        <h4 class="ais-700-f fs-20">Контактное лицо:</h4>
162                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
163                            <div class="col p-0">
164                                <label class="col p-0" for="Input_Fio">&#x424;&#x418;&#x41E;</label>
165                                <input class="col ais-input" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 6 &#x438; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 150 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="150" data-val-length-min="6" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x43C;&#x43E;&#x436;&#x435;&#x442; &#x441;&#x43E;&#x434;&#x435;&#x440;&#x436;&#x430;&#x442;&#x44C; &#x43A;&#x438;&#x440;&#x438;&#x43B;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x435; &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x44B;, &#x43F;&#x440;&#x43E;&#x431;&#x435;&#x43B;&#x44B;, &#x442;&#x43E;&#x447;&#x43A;&#x438; &#x438; &#x434;&#x435;&#x444;&#x438;&#x441;&#x44B;" data-val-regex-pattern="^[-.&#x430;-&#x44F;&#x410;-&#x42F;&#x451;&#x401;\s]&#x2B;$" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_Fio" maxlength="150" name="Input.Fio" value="" />
166                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.Fio" data-valmsg-replace="true"></span>
167                            </div>
168                            <div class="col p-0">
169                                <label class="col p-0" for="Input_OrganizationPhone">&#x422;&#x435;&#x43B;&#x435;&#x444;&#x43E;&#x43D;</label>
170                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 20 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="20" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationPhone" maxlength="20" name="Input.OrganizationPhone" value="" />
171                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationPhone" data-valmsg-replace="true"></span>
172                            </div>
173                            <div class="col p-0">
174                                <label class="col p-0" for="Input_OrganizationEmail">&#x42D;&#x43B;&#x435;&#x43A;&#x442;&#x440;&#x43E;&#x43D;&#x43D;&#x430;&#x44F; &#x43F;&#x43E;&#x447;&#x442;&#x430;</label>
175                                <input class="ais-input col" type="text" data-val="true" data-val-length="&#x41F;&#x43E;&#x43B;&#x435; &#x434;&#x43E;&#x43B;&#x436;&#x43D;&#x43E; &#x438;&#x43C;&#x435;&#x442;&#x44C; &#x434;&#x43B;&#x438;&#x43D;&#x443; &#x43D;&#x435; &#x43C;&#x435;&#x43D;&#x435;&#x435; 6 &#x438; &#x43D;&#x435; &#x431;&#x43E;&#x43B;&#x435;&#x435; 255 &#x441;&#x438;&#x43C;&#x432;&#x43E;&#x43B;&#x430;(&#x43E;&#x432;)" data-val-length-max="255" data-val-length-min="6" data-val-regex="&#x41F;&#x43E;&#x43B;&#x435; &#x438;&#x43C;&#x435;&#x435;&#x442; &#x43D;&#x435;&#x432;&#x435;&#x440;&#x43D;&#x44B;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x430;&#x442;" data-val-regex-pattern="^((([a-zA-Z]|\d|[!#\$%&amp;&#x27;\*\&#x2B;\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])&#x2B;(\.([a-z]|\d|[!#\$%&amp;&#x27;\*\&#x2B;\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])&#x2B;)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)&#x2B;)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)&#x2B;)?(\x22)))@((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)&#x2B;(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$" data-val-required="&#x41F;&#x43E;&#x43B;&#x435; &#x44F;&#x432;&#x43B;&#x44F;&#x435;&#x442;&#x441;&#x44F; &#x43E;&#x431;&#x44F;&#x437;&#x430;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x43C;" id="Input_OrganizationEmail" maxlength="255" name="Input.OrganizationEmail" value="" />
176                                <span style="font-size: 12px;">Для направления договора и счёта на оплату</span>
177                                <span class="text-danger field-validation-valid" data-valmsg-for="Input.OrganizationEmail" data-valmsg-replace="true"></span>
178                            </div>
179                        </div>
180                        <div class="col p-0 d-flex">
181                            <label class="ais-checkbox">
182                                <input class="visually-hidden" id="created-order-season" value="season" type="checkbox" name="createdOrderStatistic" />
183                                <span class="ais-checkbox-text left">
184                                    Нажимая на кнопку я выражаю <a href="/agreement_participant.pdf" target="_blank"> согласие на обработку персональных данных</a>
185                                </span>
186                            </label>
187                        </div>
188                    </div>
189
190                    <div class="row d-flex flex-column align-items-start m-0 gap-4 flex-nowrap w-100">
191                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
192                            <div class="col p-0">
193                                <h4 class="parametersDoc ais-700-f fs-20">Параметры формирования договора:</h4>
194                                <input type="hidden"
195                                       id="statusHidden"
196                                       name="ref.reg_application_event_form.IsMemberARRC"
197                                       value="false">
198                            </div>
199                            <input type="hidden" id="countParticipants" name="ref.reg_application_event_form.CountParticipants" value="0">
200                        </div>
201                    </div>
202
203                    <div class="row d-flex flex-column align-items-start m-0 gap-4 flex-nowrap w-100">
204                        <h4 class="ais-700-f fs-20">Банковские реквизиты:</h4>
205                        <div class="row d-flex flex-column flex-lg-row align-items-start m-0 gap-10 flex-nowrap w-100">
206                            <div class="col col-lg-6 p-0">
207                                <label>Наименование банка*</label>
208                                <input type="text" class="form-control bank-long-name" validationmessage="Обязательное поле" name="BankLongName" required>
209                                <input type="hidden" class="hidden-bank-long-name" name="ref.reg_application_event_form.BankLongName">
210
211                            </div>
212                            <div class="col p-0">
213                                <label>Корр. счет банка*</label>
214                                <input type="text" class="form-control bank-loro-account" name="BankLoroAccount" required
215                                       pattern="[0-9]{20}" title="Корреспондентский счет должен содержать 20 цифр">
216                                <input type="hidden" class="hidden-bank-loro-account" name="ref.reg_application_event_form.BankLoroAccount">
217                            </div>
218                            <div class="col p-0">
219                                <label>БИК банка*</label>
220                                <input type="text" class="form-control bank-bik" name="BankBIK" required
221                                       pattern="[0-9]{9}" title="БИК должен содержать 9 цифр">
222                                <input type="hidden" class="hidden-bank-bik" name="ref.reg_application_event_form.BankBIK">
223                            </div>
224                            <div class="col p-0">
225                                <label>Р/С*</label>
226                                <input type="text" class="form-control account-number" name="AccountNumber" required
227                                       pattern="[0-9]{20}" title="Номер счета должен содержать 20 цифр">
228                                <input type="hidden" class="hidden-account-number" name="ref.reg_application_event_form.AccountNumber">
229                            </div>
230                        </div>
231                    </div>
232
233                    <div class="row d-flex flex-column align-items-start m-0 gap-4 flex-nowrap w-100">
234                        <h4 class="ais-700-f fs-20">Участники конференции:</h4>
235                        <div class="row d-flex flex-column flex-lg-column align-items-start m-0 gap-10 flex-nowrap w-100">
236                            <div class="col p-0">
237                                <button type="button" class="ais-site-but-min add-participant-btn">
238                                    + Добавить участника
239                                </button>
240                                <div class="row">
241                                    <!-- Основной блок участников -->
242                                    <div class="participants-section w-100">
243                                        <div class="participants-container" id="participantsContainer">
244                                            <!-- Участники будут добавляться сюда -->
245                                        </div>
246                                    </div>
247
248                                    <!-- Шаблон блока участника (скрыт) -->
249                                    <div class="participant-block-template" id="participantTemplate" style="display: none;">
250                                        <div class="participant-block">
251                                            <div class="participant-content">
252                                                <div class="row d-flex flex-column flex-lg-row align-items-start align-items-lg-end m-0 gap-10 flex-nowrap w-100">
253                                                    <div class="col p-0">
254                                                        <label>ФИО*</label>
255                                                        <input type="text" class="form-control participant-fio" name="participants_0.fio" required>
256                                                        <input type="hidden" class="hidden-fio" name="ref.reg_application_event_form.participants_0.fio">
257                                                    </div>
258                                                    <div class="col p-0">
259                                                        <label>Должность*</label>
260                                                        <input type="text" class="form-control participant-position" name="participants_0.position" required>
261                                                        <input type="hidden" class="hidden-position" name="ref.reg_application_event_form.participants_0.position">
262                                                    </div>
263                                                    <div class="col p-0">
264                                                        <label>Номер телефона*</label>
265                                                        <input type="tel" class="form-control participant-phone" name="participants_0.phone"
266                                                               placeholder="+7 (___) ___-__-__" required>
267                                                        <input type="hidden" class="hidden-phone" name="ref.reg_application_event_form.participants_0.tel">
268                                                    </div>
269                                                    <div class="participant-actions align-items-end d-flex justify-content-end">
270                                                        <a href="#" title="Удалить" class="btn btn-light align-items-center justify-content-center p-05 h-36 w-36 pointer remove-participant">
271                                                            <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="var(--primary)">
272                                                                <path d="m400-325 80-80 80 80 51-51-80-80 80-80-51-51-80 80-80-80-51 51 80 80-80 80 51 51Zm-88 181q-29.7 0-50.85-21.15Q240-186.3 240-216v-480h-48v-72h192v-48h192v48h192v72h-48v479.57Q720-186 698.85-165T648-144H312Zm336-552H312v480h336v-480Zm-336 0v480-480Z"></path>
273                                                            </svg>
274                                                        </a>
275                                                    </div>
276                                                </div>
277                                                <div class="row mt-2">
278                                                    <div class="col-lg-12">
279                                                        <label class="ais-checkbox">
280                                                            <input type="checkbox"
281                                                                   class="visually-hidden participant-excursion"
282                                                                   name="participants_0.excursion"
283                                                                   value="true">
284                                                            <span class="ais-checkbox-text left">Участие в экскурсии</span>
285                                                        </label>
286                                                        <input type="hidden" class="hidden-excursion" name="ref.reg_application_event_form.participants_0.isExcursion" value="false">
287                                                    </div>
288                                                </div>
289                                                <div class="row mt-2">
290                                                    <div class="col-lg-12">
291                                                        <label class="ais-checkbox">
292                                                            <input type="checkbox"
293                                                                   class="visually-hidden participant-agreement"
294                                                                   name="participants_0.agreement"
295                                                                   value="true" required>
296                                                            <span class="ais-checkbox-text left">
297                                                                Нажимая на кнопку я выражаю <a href="/agreement_participant.pdf" target="_blank">согласие на обработку персональных данных</a>
298                                                            </span>
299                                                        </label>
300                                                        <input type="hidden" class="hidden-agreement" name="ref.reg_application_event_form.participants_0.agreement" value="false">
301                                                    </div>
302                                                </div>
303                                            </div>
304                                        </div>
305                                    </div>
306                                </div>
307                            </div>
308                        </div>
309                    </div>
310
311                    <div class="row d-flex m-0 gap-4 w-100">
312                        <button type="submit" id="FormSubmitButton" class="ais-site-but">ЗАРЕГИСТРИРОВАТЬСЯ</button>
313                    </div>
314                    <div id="submitMessage" class="text-muted" style="display: none;">
315                        Для регистрации необходимо согласие на обработку персональных данных от всех участников
316                    </div>
317
318                </div>
319            <input name="__RequestVerificationToken" type="hidden" value="CfDJ8KpFLpxgNIVPrQ64MG8sV6WuhhiOpGLVpX45FrrwThrHHeaSrH7gk2e5gLOi2lKCsVMKpb4gBQCBbKvz6vn3MSzo73TB4_yvIwCK8nEHlKxdM89gqFOvpoSBgnDewMtXOfOXO2kSkmYSiyu2chQDkM4" /></form>
320        </div>
321    </div>
322</div>
323
324<div class="ais-500-f fs-16 mx-auto py-5 text-center w-100 px-3" style="max-width: 1480px;">
325    <span class="text-black-50">
326        При возникновении вопросов обращайтесь в службу поддержки
327        по электронной почте: <b>[email protected]</b>
328    </span>
329</div>
330
331
332<style>
333    .ais-300-f {
334        font-family: 'ais-300', sans-serif;
335    }
336
337    .ais-500-f {
338        font-family: 'ais-500', sans-serif;
339    }
340
341    .ais-700-f {
342        font-family: 'ais-700', sans-serif;
343    }
344
345    .ais-900-f {
346        font-family: 'ais-900', sans-serif;
347    }
348
349    .fs-20 {
350        font-size: 20px;
351    }
352
353    .fs-16 {
354        font-size: 15px;
355    }
356
357    .orange-block {
358        background: #E98527;
359        color: white;
360        border-radius: 50px;
361    }
362
363    .ais-site-but {
364        background-color: #6DA80B;
365        padding: 10px 10px;
366        font-size: 1.125rem;
367        line-height: 1.75rem;
368        border: none;
369        color: white;
370        text-align: center;
371        align-items: center;
372        text-decoration: none !important;
373        box-shadow: 0 10px 15px 0 rgba(0,0,0,.1);
374    }
375
376        .ais-site-but:hover {
377            background-color: #7FC20F;
378            border: none;
379            outline: none;
380        }
381
382        .ais-site-but:active {
383            background-color: #679E0C;
384            box-shadow: none;
385            border: none;
386            outline: none;
387        }
388
389        .ais-site-but:disabled {
390            background-color: lightgray;
391            color:white;
392            box-shadow:none;
393        }
394
395    .ais-site-but-min {
396        background-color: #6DA80B;
397        padding: 10px 10px;
398        font-size: 14px;
399        line-height: 14px;
400        border: none;
401        color: white;
402        text-align: center;
403        align-items: center;
404        text-decoration: none !important;
405        box-shadow: 0 10px 15px 0 rgba(0,0,0,.1);
406        outline: none;
407    }
408
409        .ais-site-but-min:hover {
410            background-color: #7FC20F;
411            border: none;
412            outline: none;
413        }
414
415        .ais-site-but-min:active {
416            background-color: #679E0C;
417            box-shadow: none;
418            border: none;
419            outline: none;
420        }
421
422    .participants-section {
423        margin-top: 15px;
424        margin-left: 15px;
425    }
426
427    .participant-block-real {
428        padding-bottom: 20px;
429    }
430
431    .participant-block {
432        width: 100%;
433        border-radius: 6px;
434        padding: 15px;
435        margin-bottom: 15px;
436        background: #f9f9f9;
437    }
438
439    .input-with-button {
440        position: relative;
441        display: inline-block;
442        width: 100%;
443    }
444
445    .ais-input-inn {
446        padding-right: 150px;
447        width: 100%;
448    }
449
450    .ais-btn-inside-field {
451        position: absolute;
452        right: 5px;
453        top: 50%;
454        transform: translateY(-50%);
455        height: 30px;
456        padding: 0 10px;
457        font-size: 12px;
458        white-space: nowrap;
459    }
460
461    .overlayForAjax {
462        align-content: center;
463    }
464</style>
465
466<script>
467    //$(document).ready(function () {
468    //    $.validator.unobtrusive.parse("form");
469    //    var form = $("form");
470
471    //    form.find("[name$='MobilePhone']").mask("+7 (000) 000-0000");
472    //    form.find("[name$='OrganizationInn']").mask("0000000000");
473    //    form.find("[name$='OrganizationOgrn']").mask("0000000000000");
474    //    form.find("[name$='OrganizationKpp']").mask("000000000");
475
476    //    form.find("[name$='Email']").change(function () {
477    //        form.find("[name$='OrganizationEmail']").val($(this).val());
478    //    });
479    //});
480
481    function getInfo() {
482        $.ajax({
483            type: 'POST',
484            url: '/General/Requests/GetOrganizationExternal',
485            data: { inn: $('#Input_OrganizationInn').val() },
486            success: function (data) {
487                if (data.status == "success") {
488                    let suggestions = JSON.parse(data.results).suggestions;
489                    if (suggestions.length == 0) {
490                        $.notify({
491                            message: "Организация не найдена",
492                            title: ""
493                        }, {
494                            type: "danger",
495                            delay: 1000,
496                            placement: {
497                                from: "top",
498                                align: "right"
499                            }
500                        });
501                        return;
502                    }
503                    let orgData = suggestions[0].data;
504                    $('#Input_OrganizationName').val(orgData.name.short_with_opf);
505                    $('#Input_OrganizationFullName').val(orgData.name.full_with_opf);
506                    $('#Input_OrganizationKpp').val(orgData.kpp);
507                    $('#Input_OrganizationOgrn').val(orgData.ogrn);
508                    $('#Input_OrganizationPhone').val(orgData.phones);
509                    $('#Input_OrganizationEmail').val(orgData.emails);
510                    if (orgData.address.data != null) {
511                        $('#Input_OrganizationLegalAddress').val(orgData.address.value);
512                        $('#Input_OrganizationMailingAddress').val(orgData.address.unrestricted_value);
513                    }
514                    if (orgData.management != null) {
515                        $('#Input_OrganizationBossName').val(orgData.management.name);
516                        $('#Input_OrganizationBossPosition').val(orgData.management.post);
517                    }
518                } else {
519                    $.notify({
520                        message: "Ошибка получения организации",
521                        title: ""
522                    }, {
523                        type: "danger",
524                        delay: 1000,
525                        placement: {
526                            from: "top",
527                            align: "right"
528                        }
529                    });
530                }
531            },
532            
533        });
534    }
535
536
537    let participantsContainer;
538    let countParticipantsInput;
539    let statusCheckbox;
540    let statusHidden;
541    let participantTemplate;
542    let participantCount = 0;
543
544    $(document).ready(function () {
545
546        $.validator.unobtrusive.parse("form");
547        var form = $("form");
548
549        /*form.find("[name$='MobilePhone']").mask("+7 (000) 000-0000");*/
550        form.find("[name$='OrganizationInn']").mask("0000000000");
551        form.find("[name$='OrganizationOgrn']").mask("000000000000000");
552        form.find("[name$='OrganizationKpp']").mask("000000000");
553
554        //form.find("[name$='Email']").change(function () {
555        //    form.find("[name$='OrganizationEmail']").val($(this).val());
556        //});
557
558        const overlay = document.querySelector('.overlayForAjax');
559        if (overlay) {
560            overlay.style.display = 'none';
561        }
562        document.body.style.pointerEvents = 'auto';
563        document.body.style.cursor = 'default';
564
565
566        participantsContainer = document.getElementById('participantsContainer');
567        countParticipantsInput = document.getElementById('countParticipants');
568        statusCheckbox = document.getElementById('statusCheckbox');
569        statusHidden = document.getElementById('statusHidden');
570        participantTemplate = document.getElementById('participantTemplate');
571
572        if (!participantsContainer) console.error('Не найден participantsContainer');
573        if (!countParticipantsInput) console.error('Не найден countParticipantsInput');
574        if (!statusCheckbox) console.error('Не найден statusCheckbox');
575        if (!statusHidden) console.error('Не найден statusHidden');
576        if (!participantTemplate) console.error('Не найден participantTemplate');
577
578        const addButton = document.querySelector('.add-participant-btn');
579        if (addButton) {
580            addButton.addEventListener('click', addNewParticipant);
581        } else {
582            console.error('Не найдена кнопка добавления участника');
583        }
584
585        updateParticipantsCount();
586        initBankFieldsMasks();
587        initBankFieldsSync();
588
589        const submitButton = document.getElementById('FormSubmitButton');
590        if (submitButton) {
591            const form = submitButton.closest('form');
592
593            form.addEventListener('submit', function (e) {
594                if (!validateParticipantsBeforeSubmit()) {
595                    e.preventDefault();
596                    e.stopPropagation();
597                    return false;
598                }
599
600                syncAllBankFields();
601
602                const isRazorValid = checkRazorFieldsValidity();
603
604                if (!isRazorValid) {
605                    e.preventDefault();
606                    e.stopPropagation();
607                    return false;
608                }
609
610                showLoader();
611
612            });
613        }
614        const mainAgreementCheckbox = document.getElementById('created-order-season');
615        if (mainAgreementCheckbox) {
616            mainAgreementCheckbox.addEventListener('change', function () {
617                checkAllAgreements();
618            });
619        }
620        setTimeout(() => {
621            checkAllAgreements();
622        }, 100);
623    });
624
625    function checkRazorFieldsValidity() {
626        const razorFields = document.querySelectorAll('[data-val="true"]');
627
628        for (let field of razorFields) {
629            const value = field.value ? field.value.trim() : '';
630            const isRequired = field.getAttribute('data-val-required') !== null;
631
632            if (isRequired && !value) {
633                field.setCustomValidity(field.getAttribute('data-val-required') || 'Поле является обязательным');
634                field.reportValidity();
635                field.focus();
636
637                setTimeout(() => field.setCustomValidity(''), 100);
638                return false;
639            }
640
641            if (value && !field.checkValidity()) {
642                field.reportValidity();
643                field.focus();
644                return false;
645            }
646        }
647
648        return true;
649    }
650
651
652    function showLoader() {
653        const overlay = document.querySelector('.overlayForAjax');
654        const submitButton = document.getElementById('FormSubmitButton');
655        if (overlay) {
656            overlay.style.display = 'block';
657        }
658
659        if (submitButton) {
660            submitButton.disabled = true;
661        }
662
663        document.body.style.pointerEvents = 'none';
664        document.body.style.cursor = 'wait';
665    }
666
667    function validateParticipantsBeforeSubmit() {
668
669        const participantBlocks = participantsContainer.querySelectorAll('.participant-block-real');
670
671        if (participantBlocks.length === 0) {
672            console.log('Ошибка: нет участников');
673            Swal.fire({
674                title: 'Добавьте участников',
675                text: 'Для отправки формы необходимо добавить хотя бы одного участника',
676                type: 'warning',
677                confirmButtonText: 'OK'
678            });
679            return false;
680        }
681
682        if (!checkAllAgreements()) {
683            Swal.fire({
684                title: 'Необходимо согласие',
685                text: 'Все участники должны дать согласие на обработку персональных данных',
686                type: 'warning',
687                confirmButtonText: 'OK'
688            });
689            return false;
690        }
691
692        let allParticipantsValid = true;
693        let firstInvalidBlock = null;
694
695        participantBlocks.forEach((block, index) => {
696            const participantNumber = index + 1;
697            const fio = block.querySelector('.participant-fio')?.value.trim();
698            const position = block.querySelector('.participant-position')?.value.trim();
699            const phone = block.querySelector('.participant-phone')?.value.trim();
700            const phoneNumbers = phone ? phone.replace(/\D/g, '') : '';
701
702            const isFioValid = !!fio;
703            const isPositionValid = !!position;
704            const isPhoneValid = phoneNumbers && phoneNumbers.length >= 11;
705
706            if (!isFioValid || !isPositionValid || !isPhoneValid) {
707                allParticipantsValid = false;
708                if (!firstInvalidBlock) {
709                    firstInvalidBlock = block;
710                }
711
712                if (!isFioValid) markFieldAsInvalid(block.querySelector('.participant-fio'));
713                if (!isPositionValid) markFieldAsInvalid(block.querySelector('.participant-position'));
714                if (!isPhoneValid) markFieldAsInvalid(block.querySelector('.participant-phone'));
715            }
716        });
717
718        if (!allParticipantsValid) {
719            if (firstInvalidBlock) {
720                firstInvalidBlock.scrollIntoView({ behavior: 'smooth', block: 'center' });
721            }
722
723            Swal.fire({
724                title: 'Заполните данные участников',
725                html: 'Пожалуйста, проверьте что у всех участников заполнены:<br>' +
726                    '• ФИО<br>' +
727                    '• Должность<br>' +
728                    '• Номер телефона (11 цифр)',
729                type: 'warning',
730                confirmButtonText: 'OK'
731            });
732
733            return false;
734        }
735        return true;
736    }
737
738    function updatePriceAndTotalSum() {
739        const isDiscount = statusCheckbox.checked;
740        const price = isDiscount ? 25000 : 35000;
741        statusHidden.value = isDiscount ? "true" : "false";
742    }
743
744    function updateParticipantsCount() {
745        const participantBlocks = participantsContainer.querySelectorAll('.participant-block-real');
746        const count = participantBlocks.length;
747        countParticipantsInput.value = count;
748        const participantType = statusHidden.value;
749    }
750
751    function generateGuid() {
752        return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
753            const r = Math.random() * 16 | 0;
754            const v = c == 'x' ? r : (r & 0x3 | 0x8);
755            return v.toString(16);
756        });
757    }
758
759    function addNewParticipant() {
760        participantCount++;
761        const newParticipant = participantTemplate.cloneNode(true);
762        newParticipant.style.display = 'block';
763        newParticipant.classList.remove('participant-block-template');
764        newParticipant.classList.add('participant-block-real');
765
766        const participantGuid = generateGuid().replace(/-/g, '');
767
768        const participantBlock = newParticipant.querySelector('.participant-block');
769        participantBlock.dataset.participantId = participantCount;
770        participantBlock.dataset.participantGuid = participantGuid;
771
772        updateParticipantFields(newParticipant, participantGuid);
773
774        participantsContainer.appendChild(newParticipant);
775
776        initPhoneMask(newParticipant.querySelector('.participant-phone'));
777
778        addEventHandlers(newParticipant);
779
780        updateParticipantsCount();
781
782    }
783
784    function updateParticipantFields(participantElement, guid) {
785        const allFields = participantElement.querySelectorAll('[name]');
786        allFields.forEach(field => {
787            const originalName = field.getAttribute('name');
788            let newName;
789
790            if (originalName.startsWith('participants_')) {
791                newName = originalName.replace('participants_0', `participants_${guid}`);
792            } else if (originalName.startsWith('ref.reg_application_event_form.participants_')) {
793                newName = originalName.replace('participants_0', `participants_${guid}`);
794            }
795
796            if (newName) {
797                field.setAttribute('name', newName);
798            }
799        });
800    }
801
802    function initPhoneMask(phoneInput) {
803        phoneInput.addEventListener('input', function (e) {
804            let input = e.target;
805            let value = input.value.replace(/\D/g, '');
806
807            let formattedValue = '';
808
809            if (value.length > 0) {
810                formattedValue = '+7 ';
811
812                if (value.length > 1) {
813                    formattedValue += '(' + value.substring(1, 4);
814                }
815                if (value.length >= 4) {
816                    formattedValue += ') ' + value.substring(4, 7);
817                }
818                if (value.length >= 7) {
819                    formattedValue += '-' + value.substring(7, 9);
820                }
821                if (value.length >= 9) {
822                    formattedValue += '-' + value.substring(9, 11);
823                }
824            }
825
826            input.value = formattedValue;
827
828            syncHiddenFields(input.closest('.participant-block'));
829        });
830
831        phoneInput.addEventListener('keydown', function (e) {
832            if ([46, 8, 9, 27, 13].includes(e.keyCode) ||
833                (e.keyCode === 65 && e.ctrlKey === true) ||
834                (e.keyCode === 67 && e.ctrlKey === true) ||
835                (e.keyCode === 86 && e.ctrlKey === true) ||
836                (e.keyCode === 88 && e.ctrlKey === true) ||
837                (e.keyCode >= 35 && e.keyCode <= 39)) {
838                return;
839            }
840
841            if ((e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105)) {
842                e.preventDefault();
843            }
844        });
845
846        phoneInput.addEventListener('paste', function (e) {
847            e.preventDefault();
848            let pastedText = (e.clipboardData || window.clipboardData).getData('text');
849            let numbers = pastedText.replace(/\D/g, '');
850
851            if (numbers.length > 0) {
852                phoneInput.value = numbers;
853                phoneInput.dispatchEvent(new Event('input'));
854            }
855        });
856    }
857
858    function syncHiddenFields(participantBlock) {
859        const fio = participantBlock.querySelector('.participant-fio').value;
860        const position = participantBlock.querySelector('.participant-position').value;
861        const phone = participantBlock.querySelector('.participant-phone').value;
862        const excursion = participantBlock.querySelector('.participant-excursion').checked;
863        const agreement = participantBlock.querySelector('.participant-agreement').checked;
864
865        const hiddenFio = participantBlock.querySelector('.hidden-fio');
866        const hiddenPosition = participantBlock.querySelector('.hidden-position');
867        const hiddenPhone = participantBlock.querySelector('.hidden-phone');
868        const hiddenExcursion = participantBlock.querySelector('.hidden-excursion');
869        const hiddenAgreement = participantBlock.querySelector('.hidden-agreement');
870
871        hiddenFio.value = fio;
872        hiddenPosition.value = position;
873        hiddenPhone.value = phone;
874        hiddenExcursion.value = excursion.toString();
875        hiddenAgreement.value = agreement.toString();
876
877        checkAllAgreements();
878    }
879
880    function addEventHandlers(participantElement) {
881        const participantBlock = participantElement.querySelector('.participant-block');
882        const inputs = participantElement.querySelectorAll('input[type="text"], input[type="tel"]');
883        inputs.forEach(input => {
884            input.addEventListener('input', function () {
885                syncHiddenFields(participantBlock);
886            });
887        });
888
889        participantElement.querySelector('.participant-excursion').addEventListener('change', function () {
890            syncHiddenFields(participantBlock);
891        });
892
893        participantElement.querySelector('.participant-agreement').addEventListener('change', function () {
894            syncHiddenFields(participantBlock);
895            checkAllAgreements();
896        });
897
898        participantElement.querySelector('.remove-participant').addEventListener('click', function (e) {
899            e.preventDefault();
900            removeParticipant(participantElement);
901        });
902    }
903
904    function removeParticipant(participantElement) {
905        Swal.fire({
906            title: 'Вы действительно хотите удалить участника?',
907            type: 'warning',
908            showCancelButton: true,
909            confirmButtonColor: '#3085d6',
910            cancelButtonColor: '#d33',
911            confirmButtonText: 'Да, удалить',
912            cancelButtonText: 'Отмена',
913            showLoaderOnConfirm: true,
914            preConfirm: () => {
915                return new Promise((resolve) => {
916                    participantElement.remove();
917                    updateParticipantsCount();
918                    checkAllAgreements();
919                    resolve();
920                });
921            },
922            allowOutsideClick: () => !Swal.isLoading()
923        }).then((result) => {
924            if (result.isConfirmed) {
925                Swal.fire({
926                    title: 'Удалено!',
927                    text: 'Участник успешно удален',
928                    icon: 'success',
929                    timer: 1500,
930                    showConfirmButton: false
931                });
932            }
933        });
934    }
935
936    function validateAllParticipants() {
937        const participantBlocks = participantsContainer.querySelectorAll('.participant-block-real');
938
939        if (participantBlocks.length === 0) {
940            Swal.fire({
941                title: 'Ошибка',
942                text: 'Добавьте хотя бы одного участника',
943                icon: 'error',
944                confirmButtonText: 'OK'
945            });
946            return false;
947        }
948
949        let isValid = true;
950        let firstInvalidBlock = null;
951        let errorMessages = [];
952
953        participantBlocks.forEach((block, index) => {
954            const participantNumber = index + 1;
955            const fioInput = block.querySelector('.participant-fio');
956            const positionInput = block.querySelector('.participant-position');
957            const phoneInput = block.querySelector('.participant-phone');
958
959            if (!fioInput || !positionInput || !phoneInput) {
960                isValid = false;
961                return;
962            }
963
964            const fio = fioInput.value.trim();
965            const position = positionInput.value.trim();
966            const phone = phoneInput.value.trim();
967            const phoneNumbers = phone.replace(/\D/g, '');
968
969            let participantErrors = [];
970
971            if (!fio) {
972                participantErrors.push('ФИО');
973                markFieldAsInvalid(fioInput);
974            } else {
975                markFieldAsValid(fioInput);
976            }
977
978            if (!position) {
979                participantErrors.push('должность');
980                markFieldAsInvalid(positionInput);
981            } else {
982                markFieldAsValid(positionInput);
983            }
984
985            if (!phoneNumbers || phoneNumbers.length < 11) {
986                participantErrors.push('номер телефона');
987                markFieldAsInvalid(phoneInput);
988            } else {
989                markFieldAsValid(phoneInput);
990            }
991
992            if (participantErrors.length > 0) {
993                isValid = false;
994                if (!firstInvalidBlock) {
995                    firstInvalidBlock = block;
996                }
997
998                const errorMsg = `Участник ${participantNumber}: ${participantErrors.join(', ')}`;
999                errorMessages.push(errorMsg);
1000            } else {
1001                console.log(`Участник ${participantNumber} - OK`);
1002            }
1003        });
1004
1005        if (!isValid) {
1006
1007            if (firstInvalidBlock) {
1008                firstInvalidBlock.scrollIntoView({ behavior: 'smooth', block: 'center' });
1009            }
1010
1011            Swal.fire({
1012                title: 'Ошибка заполнения',
1013                html: 'Пожалуйста, проверьте заполнение всех полей у участников:<br><br>' +
1014                    errorMessages.map(msg => `• ${msg}`).join('<br>'),
1015                type: 'error',
1016                confirmButtonText: 'OK'
1017            });
1018        } else {
1019            console.log('Все участники валидны');
1020        }
1021
1022        return isValid;
1023    }
1024
1025    function validateAllBankFields() {
1026        const fieldsToValidate = [
1027            { selector: '.bank-long-name', minLength: 1, message: 'Название банка обязательно' },
1028            { selector: '.bank-number-department', minLength: 1, message: 'Номер отделения обязателен' },
1029            { selector: '.bank-number-branch', minLength: 1, message: 'Номер филиала обязателен' },
1030            { selector: '.bank-bik', minLength: 9, message: 'БИК должен содержать 9 цифр' },
1031            { selector: '.bank-loro-account', minLength: 20, message: 'Корр. счет должен содержать 20 цифр' },
1032            { selector: '.account-number', minLength: 20, message: 'Номер счета должен содержать 20 цифр' }
1033        ];
1034
1035        let isValid = true;
1036        let firstInvalidField = null;
1037
1038        fieldsToValidate.forEach(fieldConfig => {
1039            const field = document.querySelector(fieldConfig.selector);
1040            if (field) {
1041                const fieldIsValid = validateBankField(field, fieldConfig.minLength, fieldConfig.message);
1042                if (!fieldIsValid) {
1043                    isValid = false;
1044                    if (!firstInvalidField) {
1045                        firstInvalidField = field;
1046                    }
1047                }
1048            }
1049        });
1050
1051        if (!isValid && firstInvalidField) {
1052            firstInvalidField.scrollIntoView({ behavior: 'smooth', block: 'center' });
1053            firstInvalidField.focus();
1054        }
1055
1056        return isValid;
1057    }
1058
1059    function markFieldAsInvalid(field) {
1060        field.classList.add('field-error');
1061        field.classList.remove('field-valid');
1062    }
1063
1064    function markFieldAsValid(field) {
1065        field.classList.remove('field-error');
1066        field.classList.add('field-valid');
1067    }
1068
1069    function clearValidationStyles() {
1070        const fields = participantsContainer.querySelectorAll('.participant-fio, .participant-position, .participant-phone');
1071        fields.forEach(field => {
1072            field.classList.remove('field-error', 'field-valid');
1073        });
1074    }
1075
1076    function syncAllParticipantsFields() {
1077        const participantBlocks = participantsContainer.querySelectorAll('.participant-block-real');
1078        participantBlocks.forEach(block => {
1079            syncHiddenFields(block);
1080        });
1081    }
1082
1083    function initBankFieldsMasks() {
1084        const bikInput = document.querySelector('.bank-bik');
1085        if (bikInput) {
1086            bikInput.addEventListener('input', function (e) {
1087                let value = e.target.value.replace(/\D/g, '');
1088                if (value.length > 9) {
1089                    value = value.substring(0, 9);
1090                }
1091                e.target.value = value;
1092            });
1093        }
1094
1095        const loroInput = document.querySelector('.bank-loro-account');
1096        if (loroInput) {
1097            loroInput.addEventListener('input', function (e) {
1098                let value = e.target.value.replace(/\D/g, '');
1099                if (value.length > 20) {
1100                    value = value.substring(0, 20);
1101                }
1102                e.target.value = value;
1103            });
1104        }
1105
1106        const accountInput = document.querySelector('.account-number');
1107        if (accountInput) {
1108            accountInput.addEventListener('input', function (e) {
1109                let value = e.target.value.replace(/\D/g, '');
1110                if (value.length > 20) {
1111                    value = value.substring(0, 20);
1112                }
1113                e.target.value = value;
1114            });
1115        }
1116    }
1117
1118    function initBankFieldsSync() {
1119        const bankFields = [
1120            { visible: '.bank-long-name', hidden: '.hidden-bank-long-name' },
1121            { visible: '.bank-bik', hidden: '.hidden-bank-bik' },
1122            { visible: '.bank-loro-account', hidden: '.hidden-bank-loro-account' },
1123            { visible: '.account-number', hidden: '.hidden-account-number' }
1124        ];
1125
1126        bankFields.forEach(field => {
1127            const visibleInput = document.querySelector(field.visible);
1128            const hiddenInput = document.querySelector(field.hidden);
1129
1130            if (visibleInput && hiddenInput) {
1131                visibleInput.addEventListener('input', function () {
1132                    hiddenInput.value = this.value;
1133                });
1134
1135                hiddenInput.value = visibleInput.value;
1136
1137                visibleInput.addEventListener('change', function () {
1138                    hiddenInput.value = this.value;
1139                });
1140            }
1141        });
1142    }
1143
1144    function syncAllBankFields() {
1145        const fields = [
1146            '.bank-long-name',
1147            '.bank-bik', '.bank-loro-account', '.account-number'
1148        ];
1149
1150        fields.forEach(selector => {
1151            const visibleInput = document.querySelector(selector);
1152            const hiddenInput = document.querySelector('.hidden-' + selector.substring(1));
1153
1154            if (visibleInput && hiddenInput) {
1155                hiddenInput.value = visibleInput.value;
1156            }
1157        });
1158    }
1159
1160    // Функция проверки всех согласий
1161    function checkAllAgreements() {
1162        const submitButton = document.getElementById('FormSubmitButton');
1163        const submitMessage = document.getElementById('submitMessage');
1164
1165        const mainAgreementCheckbox = document.getElementById('created-order-season');
1166        const isMainAgreementChecked = mainAgreementCheckbox ? mainAgreementCheckbox.checked : false;
1167
1168        const allAgreementCheckboxes = document.querySelectorAll('.participant-agreement');
1169        const participantAgreementCheckboxes = Array.from(allAgreementCheckboxes).filter(checkbox => {
1170            const name = checkbox.getAttribute('name') || '';
1171            return !name.includes('participants_0.');
1172        });
1173
1174        if (participantAgreementCheckboxes.length === 0) {
1175            if (isMainAgreementChecked) {
1176                submitButton.disabled = false;
1177                submitMessage.style.display = 'none';
1178                return true;
1179            } else {
1180                submitButton.disabled = true;
1181                submitMessage.style.display = 'block';
1182                return false;
1183            }
1184        }
1185
1186        let allParticipantsAgreed = true;
1187        participantAgreementCheckboxes.forEach(checkbox => {
1188            if (!checkbox.checked) {
1189                allParticipantsAgreed = false;
1190            }
1191        });
1192
1193        const allAgreed = isMainAgreementChecked && allParticipantsAgreed;
1194
1195        if (allAgreed) {
1196            submitButton.disabled = false;
1197            submitMessage.style.display = 'none';
1198            return true;
1199        } else {
1200            submitButton.disabled = true;
1201            submitMessage.style.display = 'block';
1202            return false;
1203        }
1204    }
1205
1206</script>
vendor: 1 bytes, line 1206
1206

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.