PageSourceSearch

https://lanta-net.ru/

html lanta-net.ru collected 2026-09-26 08:30:53 UTC 61,895 bytes, 1,414 lines download raw bytes

1<!doctype html>
2<html>
3<head>
4    
5     <title>LanTa - интернет, цифровое ТВ, телефония, видеонаблюдение | LanTa — 20 лет с вами!</title>
6     <meta name="description" content="Официальный сайт интернет-провайдера LanTa в Тамбове. Подключить интернет, цифровое ТВ, телефонию, видеонаблюдение, по лучшим тарифам. По всем вопросам обращайтесь +7 (4752) 42-99-99">
7     <meta name="Keywords" content=" LanTa, подключить интернет, цифровое ТВ"> 
8    <base href="https://lanta-net.ru/" />
9    <meta charset="UTF-8" />
10    <meta http-equiv="X-UA-Compatible" content="IE=edge">
11    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
12    <meta name="yandex-verification" content="b75ce3e231c9ca30" />
13    <link href="/css/bootstrap.min.css" rel="stylesheet">
14    <link href="/css/bootstrap-grid.min.css" rel="stylesheet">
15    <link href="/css/bootstrap-reboot.min.css" rel="stylesheet">
16    <link href="/css/style.css"  rel="stylesheet" type="text/css"> 
17    <link href="/slick/slick/slick.css" rel="stylesheet">
18    <link href="/slick/slick/slick-theme.css" rel="stylesheet">
19    <link rel="stylesheet" type="text/css" href="/tooltipster/dist/css/tooltipster.bundle.min.css" />
20    <link rel="stylesheet" type="text/css" href="/tooltipster/dist/css/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min.css" />
21    <link href="/accordion/css/jquery.accordion.css"  rel="stylesheet" type="text/css">
22    <link href="/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" >
23    <!-- Yandex.Metrika counter -->
24<script type="text/javascript" >
vendor: 300 bytes, lines 24-29
24
25   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
26   m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
27   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
28
29   ym(
2954486055
vendor: 123 bytes, lines 29-34
29, "init", {
30        clickmap:true,
31        trackLinks:true,
32        accurateTrackBounce:true,
33        webvisor:true
34   });
35</script>
35
36<noscript><div><img src="https://mc.yandex.ru/watch/54486055" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
37<!-- /Yandex.Metrika counter -->
38 </head>
39<div class="top_menu_bg"><div class="container"><nav class="navbar navbar-expand-md  navbar-dark" id="top_menu">
40    <div class="navbar-collapse collapse" id="collapsingNavbar">
41        
42        <ul class="navbar-nav"><li class="nav-item active"><a class="nav-link" href="/">Квартира</a></li><li class="nav-item"><a class="nav-link" href="main/chastny-sektor.html">Частный дом</a></li><li class="nav-item"><a class="nav-link" href="main/dlya-biznesa.html">Бизнес</a></li></ul>
43
44       <!--
45       <ul class="navbar-nav">
46            <li class="nav-item"><a class="nav-link" href="/">Для дома</a></li>
47            <li class="nav-item"><a class="nav-link" href="main/dlya-biznesa.html">Для бизнеса</a></li>
48            <li class="nav-item"><a class="nav-link" href="main/chastny-sektor.html">Частный сектор</a></li>
49        </ul>
50        -->
51        
52        <ul class="navbar-nav ml-auto">
53            <li class="nav-item oplat">
54                <a class="nav-link" href="oplata.html"><img src="/images/credit-card.png">Оплата</a>
55            </li>
56			      <li class="nav-item">
57                <a class="nav-link" href="podderzhka.html"><img src="/images/help.png">Поддержка</a>
58            </li>
59			      <li class="nav-item" style="background: #0093be;">
60                <a class="nav-link last" href="https://lc.lanta-net.ru/"><img src="/images/profile.png">Личный кабинет</a>
61            </li>
62        </ul>
63    </div>
64</nav>
65</div></div>
66<div class="top_menu_second_bg"><div class="container"><nav class="navbar navbar-expand-lg navbar-light" id="top_menu_second">
67<!--Logo-->
68<a href="/" class="navbar-brand d-flex"><img src="/images/logo.png"></a>
69<!--Second menu-->
70<div class="navbar-collapse collapse wrap" id="collapsingNavbar2">
71    <ul class="navbar-nav new-icon"><li class="nav-item"><a class="nav-link" href="main/home/paketyi-uslug.html" >Пакеты услуг</a></li><li class="nav-item dropdown">
72    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
73        Интернет
74    </a>
75    <div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="main/home/internet/tarifyi.html" >Тарифы</a> <a class="dropdown-item" href="main/home/internet/gigabit-po-medi.html" >Гигабитное подключение</a> <a class="dropdown-item" href="main/home/internet/tochki-dostupa-free-wi-fi.html" >Точки доступа Free Wi-Fi</a> <a class="dropdown-item" href="main/home/internet/fiksirovannyij-ip-adres.html" >Фиксированный IP-адрес</a> <a class="dropdown-item" href="main/home/internet/domennoe-imya.html" >Доменное имя</a> <a class="dropdown-item" href="main/home/internet/ptr-zapis.html" >PTR-запись</a> </div>
76</li><li class="nav-item dropdown">
77    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
78        ТВ
79    </a>
80    <div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="main/home/tv/televidenie.html" >Каналы</a> <a class="dropdown-item" href="main/home/tv/tv2.html" >Оборудование IP TV</a> </div>
81</li><li class="nav-item"><a class="nav-link" href="main/home/telefoniya.html" >Телефон</a></li><li class="nav-item"><a class="nav-link" href="main/home/domofon.html" >Домофон</a></li><li class="nav-item"><a class="nav-link" href="http://cam.lanta-net.ru/" target="_blank">Видеонаблюдение</a></li><li class="nav-item"><a class="nav-link" href="main/home/akczii.html" >Акции</a></li></ul>
82</div>
83<!--Mobile menu button-->
84<button class="navbar-toggler menumobile-but" type="button" data-toggle="collapse" data-target="#menumobile">
85<span class="navbar-toggler-icon"></span>
86</button>
87<!--Phone block-->
88<a class="nav-link last last_phone" href="https://lanta-net.ru/ochered-zvonkov.html" ><img src="/images/phone-24.png"><span class="phone">42-99-99</span></a>
89<!--Mobile menu-->
90<div class="navbar-collapse collapse wrap" id="menumobile">
91  <ul class="navbar-nav"><li  id="main-link1" class="nav-item dropdown-submenu lev1">
92    <a class=" nav-link " href="https://lanta-net.ru/" >Квартира</a>
93
94   <ul class="dropdown-menu"><li class="nav-item mm">	
95<a href="main/home/paketyi-uslug.html"  class="nav-link">Пакеты услуг</a>
96</li>
97<li  id="main-link20" class="nav-item dropdown-submenu lev2">
98    <a class=" nav-link submenu-arrow" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#"  >Интернет</a>
99
100   <ul class="dropdown-menu"><li class="nav-item mm">	
101<a href="main/home/internet/tarifyi.html"  class="nav-link">Тарифы</a>
102</li>
103<li class="nav-item mm">	
104<a href="main/home/internet/gigabit-po-medi.html"  class="nav-link">Гигабитное подключение</a>
105</li>
106<li class="nav-item mm">	
107<a href="main/home/internet/tochki-dostupa-free-wi-fi.html"  class="nav-link">Точки доступа Free Wi-Fi</a>
108</li>
109<li class="nav-item mm">	
110<a href="main/home/internet/fiksirovannyij-ip-adres.html"  class="nav-link">Фиксированный IP-адрес</a>
111</li>
112<li class="nav-item mm">	
113<a href="main/home/internet/domennoe-imya.html"  class="nav-link">Доменное имя</a>
114</li>
115<li class="nav-item mm">	
116<a href="main/home/internet/ptr-zapis.html"  class="nav-link">PTR-запись</a>
117</li>
118</ul>
119</li>
120
121
122<li  id="main-link28" class="nav-item dropdown-submenu lev2">
123    <a class=" nav-link submenu-arrow" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#"  >ТВ</a>
124
125   <ul class="dropdown-menu"><li class="nav-item mm">	
126<a href="main/home/tv/televidenie.html"  class="nav-link">Каналы</a>
127</li>
128<li class="nav-item mm">	
129<a href="main/home/tv/tv2.html"  class="nav-link">Оборудование IP TV</a>
130</li>
131</ul>
132</li>
133
134
135<li class="nav-item mm">	
136<a href="main/home/telefoniya.html"  class="nav-link">Телефон</a>
137</li>
138<li class="nav-item mm">	
139<a href="http://cam.lanta-net.ru/" target="_blank" class="nav-link">Видеонаблюдение</a>
140</li>
141<li class="nav-item mm">	
142<a href="main/home/domofon.html"  class="nav-link">Домофон</a>
143</li>
144<li class="nav-item mm">	
145<a href="main/home/akczii.html"  class="nav-link">Акции</a>
146</li>
147</ul>
148</li>
149
150
151<li  id="main-link99" class="nav-item dropdown-submenu lev1">
152    <a class=" nav-link " href="main/chastny-sektor.html" >Частный дом</a>
153
154   <ul class="dropdown-menu"><li class="nav-item mm">	
155<a href="main/chastny-sektor/paketyi-uslug-chastnyij-sektor.html"  class="nav-link">Пакеты услуг</a>
156</li>
157<li  id="main-link112" class="nav-item dropdown-submenu lev2">
158    <a class=" nav-link submenu-arrow" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#"  >Интернет</a>
159
160   <ul class="dropdown-menu"><li class="nav-item mm">	
161<a href="main/chastny-sektor/internet/tarifyi.html"  class="nav-link">Тарифы</a>
162</li>
163<li class="nav-item mm">	
164<a href="main/chastny-sektor/internet/fiksirovannyij-ip.html"  class="nav-link">Фиксированный IP-адрес</a>
165</li>
166<li class="nav-item mm">	
167<a href="main/chastny-sektor/internet/domennoe-imya.html"  class="nav-link">Доменное имя</a>
168</li>
169<li class="nav-item mm">	
170<a href="main/chastny-sektor/internet/ptr-zapis.html"  class="nav-link">PTR-запись</a>
171</li>
172</ul>
173</li>
174
175
176<li  id="main-link119" class="nav-item dropdown-submenu lev2">
177    <a class=" nav-link submenu-arrow" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#"  >ТВ</a>
178
179   <ul class="dropdown-menu"><li class="nav-item mm">	
180<a href="main/chastny-sektor/tv/kopiya-kanalyi.html"  class="nav-link">Каналы</a>
181</li>
182<li class="nav-item mm">	
183<a href="main/chastny-sektor/tv/oborudovanie-ip-tv.html"  class="nav-link">Оборудование IP TV</a>
184</li>
185</ul>
186</li>
187
188
189<li class="nav-item mm">	
190<a href="main/chastny-sektor/telefoniya.html"  class="nav-link">Телефония</a>
191</li>
192<li class="nav-item mm">	
193<a href="http://cam.lanta-net.ru/"  class="nav-link">Видеонаблюдение</a>
194</li>
195<li class="nav-item mm">	
196<a href="main/chastny-sektor/akczii.html"  class="nav-link">Акции</a>
197</li>
198</ul>
199</li>
200
201
202<li  id="main-link7" class="nav-item dropdown-submenu lev1">
203    <a class=" nav-link " href="main/dlya-biznesa.html" >Бизнес</a>
204
205   <ul class="dropdown-menu"><li  id="main-link89" class="nav-item dropdown-submenu lev2">
206    <a class=" nav-link submenu-arrow" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#"  >Услуги</a>
207
208   <ul class="dropdown-menu"><li class="nav-item mm">	
209<a href="main/dlya-biznesa/uslugi/internet.html"  class="nav-link">Интернет</a>
210</li>
211<li class="nav-item mm">	
212<a href="main/dlya-biznesa/uslugi/telefoniya.html"  class="nav-link">Телефония</a>
213</li>
214<li class="nav-item mm">	
215<a href="http://cam.lanta-net.ru/" target="_blank" class="nav-link">Видеонаблюдение</a>
216</li>
217<li class="nav-item mm">	
218<a href="main/dlya-biznesa/uslugi/tochki-dostupa-free-wi-fi.html"  class="nav-link">Точки доступа Free Wi-Fi</a>
219</li>
220<li class="nav-item mm">	
221<a href="main/dlya-biznesa/uslugi/arenda-kanala-svyazi.html"  class="nav-link">Аренда канала связи</a>
222</li>
223<li class="nav-item mm">	
224<a href="main/dlya-biznesa/uslugi/fiksirovannyij-ip.html"  class="nav-link">Фиксированный IP</a>
225</li>
226<li class="nav-item mm">	
227<a href="main/dlya-biznesa/uslugi/sozdanie-lokalnyix-setej.html"  class="nav-link">Локальные сети</a>
228</li>
229<li class="nav-item mm">	
230<a href="main/dlya-biznesa/uslugi/televidenie.html"  class="nav-link">Телевидение</a>
231</li>
232</ul>
233</li>
234
235
236<li class="nav-item mm">	
237<a href="main/dlya-biznesa/gotovyie-resheniya-dlya-biznesa.html"  class="nav-link">Готовые решения для бизнеса</a>
238</li>
239</ul>
240</li>
241
242
243</ul>
244   <ul class="navbar-nav ml-auto">
245            <li class="nav-item oplat">
246                <a class="nav-link" href="oplata.html">
246Оплата</a>
247            </li>
248			      <li class="nav-item">
249                <a class="nav-link" href="podderzhka.html">Поддержка</a>
250            </li>
251			      <li class="nav-item">
252                <a class="nav-link last" href="https://lc.lanta-net.ru/">Личный кабинет</a>
253            </li>
254        </ul>
255</div>
256</nav></div></div>
257	 <!--Картинки слайдер-->
258<div style="width: 100%;background: #3f7a8a;">
259<div class="container d-none d-sm-block"><div id="home_slider" class="carousel slide" data-ride="carousel">
260<ol class="carousel-indicators">
261    <li data-target="#home_slider" data-slide-to="0" class="active"></li>
262    <li data-target="#home_slider" data-slide-to="1"></li>
263    <li data-target="#home_slider" data-slide-to="2"></li>
264  </ol>
265  <div class="carousel-inner">
266    <div class="carousel-item active">
267      <a href="main/home/akczii/bonusnaya-programma.html"><img class="d-block w-100" src="/images/bonusi.jpg" alt="Бонусы"></a>
268    </div>
269    <div class="carousel-item">
270      <a href="main/home/akczii/privedi-druga.html"><img class="d-block w-100" src="/images/friends.jpg" alt="Приведи друга"></a>
271    </div>
272    <div class="carousel-item">
273      <img class="d-block w-100" src="/images/join_us.jpg" alt="Легкий переезд">
274    </div>
275  </div>
276  <a class="carousel-control-prev" href="#home_slider" role="button" data-slide="prev">
277    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
278    <span class="sr-only">Previous</span>
279  </a>
280  <a class="carousel-control-next" href="#home_slider" role="button" data-slide="next">
281    <span class="carousel-control-next-icon" aria-hidden="true"></span>
282    <span class="sr-only">Next</span>
283  </a>
284</div></div></div>
285 <!--/Картинки слайдер-->
286<div class="container home_tarif_slider_wrapper">
287<div class="slider home_tarif_slider">
288			<div class="item"><div class="h1">Лайт</div>
289<div class="price_block"><span class="price">750</span><span class="caption">руб/мес</span></div>
290<div class="item_benef_wrap">
291<div class="item_benef">
292<ul style="list-style: none;">
293<li><img src="/images/worldwide.png" />до 100 Мбит/с</li>
294<li><img src="/images/tv.png" />ТВ Лайт</li>
295</ul>
296</div>
297</div>
298
299<div class="item_btns_wrap">
300<div class="item_btns"><a class="choose"  tabindex="0" href="/main/home/paketyi-uslug.html">Подробнее</a></div>
301<div class="item_btns"><a type="button" class="btn btn-outline-primary" href="#" data-toggle="modal" data-target="#contact-modal"  tabindex="0">Подключить</a></div>
302</div>
303</div>
304
305					<div class="item"><div class="h1">Базовый</div>
306<div class="price_block"><span class="price">900</span><span class="caption">руб/мес</span></div>
307<div class="item_benef_wrap">
308<div class="item_benef">
309<ul style="list-style: none;">
310<li><img src="/images/worldwide.png" />до 100 Мбит/с</li>
311<li><img src="/images/tv.png" />ТВ Базовый</li>
312</ul>
313</div>
314</div>
315
316<div class="item_btns_wrap">
317    <div class="item_btns"><a class="choose"  tabindex="0" href="/main/home/paketyi-uslug.html">Подробнее</a></div>
318<div class="item_btns"><a type="button" class="btn btn-outline-primary" href="#" data-toggle="modal" data-target="#contact-modal"  tabindex="0">Подключить</a></div>
319
320</div>
321</div>
322<div class="item"><div class="h1">Лайт+</div>
323<div class="price_block"><span class="price">950</span><span class="caption">руб/мес</span></div>
324<div class="item_benef_wrap">
325<div class="item_benef">
326<ul style="list-style: none;">
327<li><img src="/images/worldwide.png" />до 200 Мбит/с</li>
328<li><img src="/images/tv.png" />ТВ Лайт</li>
329</ul>
330</div>
331</div>
332
333<div class="item_btns_wrap">
334    <div class="item_btns"><a class="choose"  tabindex="0" href="/main/home/paketyi-uslug.html">Подробнее</a></div>
335<div class="item_btns"><a type="button" class="btn btn-outline-primary" href="#" data-toggle="modal" data-target="#contact-modal"  tabindex="0">Подключить</a></div>
336
337</div>
338</div>
339
340			<div class="item"><div class="h1">Базовый+</div>
341<div class="price_block"><span class="price">1050</span><span class="caption">руб/мес</span></div>
342<div class="item_benef_wrap">
343<div class="item_benef">
344<ul style="list-style: none;">
345<li><img src="/images/worldwide.png" />до 200 Мбит/с</li>
346<li><img src="/images/tv.png" />ТВ Базовый</li>
347</ul>
348</div>
349</div>
350
351<div class="item_btns_wrap">
352    <div class="item_btns"><a class="choose"  tabindex="0" href="/main/home/paketyi-uslug.html">Подробнее</a></div>
353<div class="item_btns"><a type="button" class="btn btn-outline-primary" href="#" data-toggle="modal" data-target="#contact-modal"  tabindex="0">Подключить</a></div>
354
355</div>
356</div>
357
358					<div class="item"><div class="h1">Полный+</div>
359<div class="price_block"><span class="price">1250</span><span class="caption">руб/мес</span></div>
360<div class="item_benef_wrap">
361<div class="item_benef">
362<ul style="list-style: none;">
363<li><img src="/images/worldwide.png" />до 200 Мбит/с</li>
364<li><img src="/images/tv.png" />ТВ Полный</li>
365</ul>
366</div>
367</div>
368
369<div class="item_btns_wrap">
370    <div class="item_btns"><a class="choose"  tabindex="0" href="/main/home/paketyi-uslug.html">Подробнее</a></div>
371<div class="item_btns"><a type="button" class="btn btn-outline-primary" href="#" data-toggle="modal" data-target="#contact-modal"  tabindex="0">Подключить</a></div>
372
373</div>
374
375</div>
376</div>
377</div>
378
379<style>
380    .payment__inner {
381        border: 2px solid #005082;
382        border-radius: 8px;
383        margin-bottom: 3rem;
384        padding-bottom: 2rem;
385    }
386    .payment__lead {
387        font-size: 3.3rem;
388        padding-bottom: 1.5rem;
389        text-align: center;
390    }
391    .payment__lc {
392        color: #005292;
393        font-size: 1.1rem;
394        font-weight: bold;
395    }
396    .payment__lc-link {
397        text-decoration: underline;
398    }
399    .payment-form :placeholder-shown {
400        text-transform: uppercase;
401    }
402    .payment-form .is-invalid ~ .form-text {
403        display: none;
404    }
405    .payment-form__forgot-link {
406        color: black;
407        font-weight: bold;
408        text-decoration: underline;
409    }
410    .payment-form__submit {
411        margin-top: 1rem;
412    }
413    .payment-form__eq {
414        text-transform: none !important;
415    }
416    .payment__vp {
417        font-size: 1.2rem;
418        font-weight: bold;
419    }
420    .payment__vp-link {
421        color: black;
422        text-decoration: underline;
423    }
424    .logo-sbp {
425        width: auto !important;
426    }
427</style>
428
429<div class="paymant">
430    <div class="container payment__inner">
431        <div class="payment__lead">Оплата без комиссии</div>
432        <div class="row">
433            <div class="col-md-6 col-sm-12">
434                <p class="bold payment__lc">
435                    Обращаем ваше внимание, вы можете подключить услугу автоплатёж в
436                    <a class="payment__lc-link" href="https://lc.lanta-net.ru/">Личном кабинете</a>
437                </p>
438
439                <form id="payment" class="payment-form">
440                    <div class="form-group payment-form__contract">
441                        <input type="text" name="contact" inputmode="numeric" id="contract" class="form-control" placeholder="Номер договора">
442                        <div class="invalid-feedback">Номер договора должен содержать от 4 до 6 цифр</div>
443                        <small class="form-text text-muted">Введите цифры Вашего 4-х - 6-ти значного номера договора</small>
444                        <a class="payment-form__forgot-link" href="podderzhka/nomber-contract.html">Забыли номер договора?</a>
445                    </div>
446
447                    <div class="form-group payment-form__amount">
448                        <input type="text" inputmode="decimal" name="amount" id="amount" class="form-control" placeholder="Сумма платежа">
449                        <div class="invalid-feedback">Сумма платежа должна быть положительной и не должна превышать 15 000 ₽</div>
450                    </div>
451
452                    <div class="form-group payment-form__submit text-center">
453                        <button type="submit" class="btn btn-primary payment-form__sbp">
454                            Оплатить <img class="logo-sbp" width="24" height="24" src="/images/payment/sbp-mb.svg"> сбп
455                        </button>
456                        <div class="mt-2">
457                            <button type="submit" class="btn btn-link payment-form__eq">Оплатить картой</button>
458                        </div>
459                    </div>
460                </form>
461            </div>
462            <div class="col-md-6 col-sm-12">
463                <p class="payment__vp">
464                    Безопасно пополняйте баланс на сайте или выберите любой другой
465                    <a class="payment__vp-link" href="https://vp.ru/common-modal/?action=provider&guid=lanta&utm_source=widget&utm_medium=lanta_full&utm_campaign=lanta-net.ru">удобный способ пополнения</a>
466                </p>
467            </div>
468        </div>
469    </div>
470
471    <div class="modal fade" id="payment-modal" tabindex="-1" role="dialog" aria-hidden="true">
472        <div class="modal-dialog" role="document">
473            <div class="modal-content">
474                <div class="modal-header">
475                    <h5 class="modal-title">Статус платежа</h5>
476                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
477                        <span aria-hidden="true">&times;</span>
478                    </button>
479                </div>
480                <div class="modal-body text-center">
481                    <div class="spinner-border text-primary" role="status"></div>
482                </div>
483                <div class="modal-footer" style="justify-content: space-between;">
484                    <div class="payment-countdown"></div>
485                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
486                </div>
487            </div>
488        </div>
489    </div>
490</div>
491
492<script>
493    ;(function(document) {
494        const form = document.forms.payment;
495        const fields = form.elements;
496
497        const modalContainer = document.querySelector('#payment-modal');
498
499        /* API methods */
500        const createPayment = (type, payload) => {
501            return fetch(`https://proxy-payments.lanta-net.ru/payments/call_pay/${type}`, {
502                method: 'POST',
503                headers: {
504                    'Content-Type': 'application/json'
505                },
506                body: JSON.stringify(payload)
507            })
508            .then(response => response.json());
509        };
510
511        const getPaymentStatus = (url) => fetch(url).then(response => response.json());
512
513
514        /* Open SBP window and after it was closed trying to request result */
515        const paymentHandler = payment => {
516            const deadline = new Date(payment.deadline).getTime();
517            let sbpWindow;
518            /* Pop-up hack */
519            setTimeout(() => sbpWindow = window.open(payment.payload, '_blank'));
520            
521            modalContainer.querySelector('.modal-body').insertAdjacentHTML(
522                'beforeend',
523                `<p class="text-left">Если вкладка со страницей оплаты не открылась, пожалуйста перейдите по <a href="${payment.payload}" target="_blank">ссылке</a></p>`
524            );
525
526            /* Countdown timer */
527            const countdownElement = document.querySelector('.payment-countdown');
528            const countdown = setInterval(() => {
529                const nowDiff = (deadline - new Date()) / 1000;
530                if (nowDiff < 1) {
531                    clearInterval(countdown);
532                }
533
534                const minutes = Math.floor((nowDiff % 86400 % 3600) / 60);
535                const seconds = Math.floor(nowDiff % 86400 % 3600 % 60);
536
537                countdownElement.textContent = `Время до завершения: ${minutes} мин. ${seconds} сек.`;
538            }, 1000);
539
540            const timer = setInterval(() => {
541                getPaymentStatus(payment.status_link)
542                .then(data => {
543                    if (data.status !== 'ok') {
544                        modalContainer.querySelector('.modal-body').textContent = data.message;
545                        throw new Error('Failed status received');
546                    }
547
548                    if (data.response.status !== 'IN_PROCESS' || Date.now() > deadline) {
549                        if (sbpWindow !== null && sbpWindow.closed === false) {
550                            sbpWindow.close();
551                        }
552                        paymentStatusHandler(data.response.status);
553                        clearInterval(timer);
554                    }
555                });
556            }, 5000);
557        };
558
559        /* Show payment status and reset form */
560        const paymentStatusHandler = (status) => {
561            const modalBody = modalContainer.querySelector('.modal-body');
562
563            if (status === 'ACCEPTED') {
564                modalBody.textContent = 'Платеж успешно принят';
565                form.reset();
566            } else {
567                modalBody.textContent = 'Платеж не завершен';
568            }
569        }
570
571        document.addEventListener('DOMContentLoaded', () => {
572            const params = new URLSearchParams(document.location.search);
573            const payStatus = params.get('status');
574            if (payStatus !== null) {
575                $(modalContainer).modal('show');
576                paymentStatusHandler('success' === payStatus ? 'ACCEPTED' : 'FAIL');
577            }
578            
579            window.history.replaceState(null, '', window.location.pathname);
580        });
581
582
583        /* Input masks */
584        fields.contract.onfocus = () => fields.contract.value = fields.contract.value.startsWith('ФЛ-') ? fields.contract.value : 'ФЛ-' ;
585        fields.contract.onblur = () => fields.contract.value = fields.contract.value !== 'ФЛ-' ? fields.contract.value : '';
586
587        fields.contract.oninput = () => {
588            const value = fields.contract.value.replace(/\D+/g, '').substring(0, 6);
589            fields.contract.value = `ФЛ-${value}`;
590        };
591        fields.amount.oninput = () => {
592            fields.amount.value = fields.amount.value.replace(/[^0-9,.]|([\.,].*)[\.,]|([\.,]\d{1,2}).*/g, '$1$2');
593        };
594
595        /* Handle form submit and verification */
596        form.onsubmit = event => {
597            event.preventDefault();
598            event.stopPropagation();
599
600            [...fields].forEach(field => field.classList.remove('is-invalid'));
601
602            if (false === /ФЛ-\d{4,6}/.test(fields.contract.value)) {
603                fields.contract.classList.add('is-invalid');
604            }
605
606            const amountValue = parseFloat(fields.amount.value.replace(',', '.'));
607            if (isNaN(amountValue) || amountValue <= 0 || amountValue > 15000) {
608                fields.amount.classList.add('is-invalid');
609            }
610
611            if (form.querySelectorAll('.is-invalid').length > 0) {
612                return;
613            }
614
615            const isEqPayment = event.submitter.classList.contains('payment-form__eq');
616
617            createPayment(isEqPayment === false ? 'sbp' : 'eq', {
618                id_client: contract.value,
619                amount: amountValue,
620                source: 'site'
621            })
622            .then(data => {
623                if (data.status !== 'ok') {
624                    modalContainer.querySelector('.modal-body').textContent = data.message;
625                    return;
626                }
627                
628                if (isEqPayment) {
629                    window.location = data.response.formUrl;
630                } else {
631                    paymentHandler(data.response);
632                }
633            })
634            .catch(error => console.log(error));
635
636            modalContainer.querySelector('.modal-body').innerHTML = '<div class="spinner-border text-primary" role="status"></div>';
637            $(modalContainer).modal('show');
638        };
639    })(document);
640</script>
640
641
642<div class="modal fade" id="tarif" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle">
643  <div class="modal-dialog modal-dialog-centered" role="document">
644    <div class="modal-content">
645      <div class="modal-header">
646        <div class="modal-title h5" id="exampleModalLongTitle">Ваши данные</div>
647        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
648          <span aria-hidden="true">×</span>
649        </button>
650      </div>
651      <div class="modal-body">
652     <form>
653	   <div class="form-group">
654    <input class="form-control" id="contact_lead" placeholder="Имя" type="text">
655  </div>
656  <div class="form-group">
657    <input class="form-control" id="tel_lead" placeholder="Номер телефона" type="tel">
658  </div>
659</form>
660
661      </div>
662      <div class="modal-footer">
663        <button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
664        <button type="button" class="btn btn-primary">Отправить</button>
665      </div>
666    </div>
667  </div>
668</div>
669
670
671<!-- Android App block -->
672
673<style>
674.app-download-section {
675    background: radial-gradient(circle at 50% 200px, #0c79b5, #000a47);
676    padding: 40px 0;
677    text-align: center;
678}
679
680.app-download-section h2 {
681    color: #fff;
682    font-family: PTSansBold, 'PT Sans', Arial, sans-serif;
683    font-size: 26px;
684    margin-bottom: 10px;
685}
686
687.app-download-section .app-subtitle {
688    color: rgba(255, 255, 255, 0.6);
689    font-family: PTSansRegular, 'PT Sans', Arial, sans-serif;
690    font-size: 14px;
691    margin-bottom: 28px;
692}
693
694.app-options {
695    display: flex;
696    justify-content: center;
697    gap: 40px;
698    flex-wrap: wrap;
699}
700
701.app-option {
702    display: flex;
703    flex-direction: column;
704    align-items: center;
705}
706
707.app-option-label {
708    color: rgba(255, 255, 255, 0.5);
709    font-family: PTSansRegular, 'PT Sans', Arial, sans-serif;
710    font-size: 12px;
711    text-transform: uppercase;
712    letter-spacing: 0.5px;
713    margin-bottom: 12px;
714}
715
716.app-option .qr-wrapper {
717    background: #fff;
718    border-radius: 8px;
719    padding: 10px;
720    margin-bottom: 14px;
721}
722
723.app-option .qr-wrapper img {
724    display: block;
725    width: 180px;
726    height: 180px;
727}
728
729.app-download-btn {
730    display: inline-block;
731    background: #00c2f6;
732    color: #000a47;
733    padding: 10px 28px;
734    border-radius: 8px;
735    text-decoration: none !important;
736    font-family: PTSansBold, 'PT Sans', Arial, sans-serif;
737    font-size: 15px;
738    transition: all 0.3s ease;
739    border: 2px solid transparent;
740    min-width: 200px;
741}
742
743.app-download-btn:hover {
744    background: transparent;
745    color: #00c2f6;
746    border-color: #00c2f6;
747}
748
749@media (max-width: 520px) {
750    .app-options {
751        gap: 30px;
752    }
753    .app-option .qr-wrapper img {
754        width: 150px;
755        height: 150px;
756    }
757}
758</style>
759<div style="clear: both"></div>
760<section class="app-download-section">
761  <div class="container">
762    <h2>Мобильное приложение LanTa</h2>
763
764    <div class="app-options">
765
766      <div class="app-option">
767        <span class="app-option-label">Google Play</span>
768        <div class="qr-wrapper">
769          <!-- QR-код для .apk -->
770          <img src="/qrgoogleplay.png" alt="QR-код Google Play">
771        </div>
772        <a target="_blank" href="https://play.google.com/store/apps/details?id=org.intexco.lantaapp" class="app-download-btn">Открыть в Google Play</a>
773      </div>
774
775      <div class="app-option">
776        <span class="app-option-label">Huawei AppGallery</span>
777        <div class="qr-wrapper">
778          <!-- QR-код для Huawei AppGallery -->
779          <img src="/qr_huawei.png" alt="QR-код Huawei AppGallery">
780        </div>
781        <a target="_blank" href="https://appgallery.huawei.com/#/app/C111655065" class="app-download-btn">Открыть в AppGallery</a>
782      </div>
783      
784      <div class="app-option">
785        <span class="app-option-label">Apple AppStore</span>
786        <div class="qr-wrapper">
787          <!-- QR-код для Huawei AppGallery -->
788          <img src="/qr_apple.png" alt="QR-код AppStore">
789        </div>
790        <a target="_blank" href="https://apps.apple.com/ru/app/lnt/id6759717181" class="app-download-btn">Открыть в Apple AppStore</a>
791      </div>
792      
793      <div class="app-option">
794        <span class="app-option-label">WebApp</span>
795        <div class="qr-wrapper">
796          <!-- QR-код для Huawei AppGallery -->
797          <img src="/qr_pwa.png" alt="QR-код веб приложение">
798        </div>
799        <a target="_blank" href="https://mobile.lanta-net.ru" class="app-download-btn">Открыть веб-приложение</a>
800      </div>
801
802    </div>
803  </div>
804</section>
805
806<!-- Android App block end -->
807
808<div class="check"><a href="https://lanta-net.ru/zayavka-na-podklyuchenie.html"><img src="/images/check.png"/></a></div>
809<footer class="footer">
810      <div class="container">
811       <div class="row">
812<div class="col-6 col-sm">
813<div class="h3">О нас</div>
814<ul>
815<li><a href="o-nas/o-kompanii.html">О компании</a></li>
816<li><a href="o-nas/adresa-ofisov.html">Адреса офисов</a></li>
817<li><a href="o-nas/dokumentyi.html">Документы</a></li>
818<li><a href="o-nas/contacts.html">Контакты</a></li>
819</ul>
820</div>
821<div class="col-6 col-sm">
822<div class="h3">Услуги</div>
823<ul>
824<li><a href="/">Для квартиры</a></li>
825<li><a href="main/chastny-sektor.html">Для частного дома</a></li>
826<li><a href="main/dlya-biznesa.html">Для бизнеса</a></li>
827<!--<li><a href="ochered-zvonkov.html">Очередь звонков</a></li>-->
828</ul>
829</div>
830<div class="col-6 col-sm third_column">
831<div class="h3">Социальные проекты</div>
832<ul>
833<li><a href="http://korobka.lanta-net.ru/" target="_blank">Коробка для спама</a></li>
834<li><a href="http://deti.lanta-net.ru/" target="_blank">Дети - наше будущее</a></li>
835<li><a href="https://friends.podari-zhizn.ru/node/1738" target="_blank">Безумное чаепитие</a></li>
836<li><a href="main/home/internet/tochki-dostupa-free-wi-fi.html">Бесплатный Wi-Fi</a></li>
837<li><a href="soczialnyie-proektyi/utilizacziya-batareek.html">Утилизация батареек</a></li>
838<!--<li><a href="shkola-predprinimatelya.html">Школа предпринимателя</a></li>-->
839</ul>
840</div>
841<div class="col-6 col-sm four_column">
842<ul>
843<li><a href="vakansii.html">Вакансии</a></li>
844<li><a href="podderzhka.html">Поддержка</a></li>
845<li><a href="oplata.html">Способы оплаты</a></li>
846<li><a href="novosti.html">Новости</a></li>
847</ul>
848</div>
849<div class="col-12 col-sm solials">
850<!--    <a href="https://www.facebook.com/lanta.tambov" target="_blank"><img src="/images/fb.png" /></a> -->
851<!--    <a href="https://www.instagram.com/lanta.tambov/" target="_blank"><img src="/images/inst.png" /></a> -->
852    <a href="https://vk.com/lanta.tambov" target="_blank"><img src="/images/vk.png" /></a>
853<!--    <a href="https://www.youtube.com/channel/UCyA5-Y7p4tw70XNCytek9AA/videos" target="_blank"><img src="/images/youtube.png" /></a> --></div>
854</div>
855      </div>
856    </footer>
857<script src="/js/jquery.min.js" ></script>
vendor: 1 bytes, line 857
857
858<script src="/js/popper.min.js"></script>
vendor: 1 bytes, line 858
858
859<script src="/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 859
859
860<script src="/slick/slick/slick.min.js"></script>
vendor: 1 bytes, line 860
860
861<script src="/js/iso.js"></script>
vendor: 1 bytes, line 861
861
862<script type="text/javascript" src="/tooltipster/dist/js/tooltipster.bundle.min.js"></script>
vendor: 1 bytes, line 862
862
863<script src="/accordion/js/jquery.accordion.js"></script>
vendor: 1 bytes, line 863
863
864<script src="/js/validator.js"></script>
864
865
866<!-- Begin Talk-Me {literal} --> 
866<script type='text/javascript'> (function(d, w, m) { window.supportAPIMethod = m; var s = d.createElement('script'); s.type ='text/javascript'; s.id = 'supportScript'; s.charset = 'utf-8'; s.async = true; var id = '3beb2614f4573475b18bd25deb77f6e9'; s.src = '//lcab.talk-me.ru/support/support.js?h='+id; var sc = d.getElementsByTagName('script')[0]; w[m] = w[m] || function() { (w[m].q = w[m].q || []).push(arguments); }; if (sc) sc.parentNode.insertBefore(s, sc); else d.documentElement.firstChild.appendChild(s); })(document, window, 'TalkMe'); </script>
866 <!-- {/literal} End Talk-Me -->
867
868<script>
vendor: 358 bytes, lines 868-873
868
869    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
870        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
871          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
872    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
873    ga('create', '
873UA-66399591-1
vendor: 40 bytes, lines 873-874
873', 'auto');
874    ga('send', 'pageview');
875</script>
875
876
877<script>
878
879$(document).ready(function(){
880
881
882$('.dropdown-menu a.dropdown-toggle').on('click', function(e) {
883  if (!$(this).next().hasClass('show')) {
884    $(this).parents('.dropdown-menu').first().find('.show').removeClass("show");
885  }
886  var $subMenu = $(this).next(".dropdown-menu");
887  $subMenu.toggleClass('show');
888
889
890  $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function(e) {
891    $('.dropdown-submenu .show').removeClass("show");
892  });
893
894
895  return false;
896});
897
898$('.accordion').accordion({
899    transitionSpeed: 300,
900    transitionEasing: 'ease',
901    controlElement: '[data-control]',
902    contentElement: '[data-content]',
903    groupElement: '[data-accordion-group]',
904     singleOpen: false
905});
906
907
908$('.tooltip').tooltipster({
909    theme: 'tooltipster-light',
910    side: 'right',
911      trigger:"custom",
912   triggerOpen: {
913        mouseenter: true,
914        tap: true
915    },
916    triggerClose: {
917        mouseleave: true,
918        originClick: true,
919        tap: true
920    }
921});
922
923
924$('.tooltip2').tooltipster({
925    theme: 'tooltipster-light',
926    side: 'right',
927    maxWidth: '300',
928     trigger:"custom",
929  triggerOpen: {
930        mouseenter: true,
931        tap: true
932    },
933    triggerClose: {
934        mouseleave: true,
935        originClick: true,
936        tap: true
937    }
938});
939
940//Валидация формы оплаты     
941     $(function(){
942 $('#checkAgree').on('change', function(){
943 if($('#checkAgree').prop('checked')){
944 $('#oplataSubmit').attr('disabled', false);
945 }else{
946 $('#oplataSubmit').attr('disabled', true);
947 }
948 });
949});
950
951            
952
953//всплывающий тултип у канала
954$(function () {
955  $('[data-toggle="tooltip"]').tooltip();
956})
957
958
959
960});
961
962$('.navbar-nav a').each(function () {
963if (this.href == location.href) $(this).addClass('active');
964});
965
966//слайдеры
967$('.home_tarif_slider').slick({
968  centerMode: true,
969  centerPadding: '0px',
970   autoplay: false,
971  slidesToShow: 3,
972  arrows:true,
973  responsive: [
974    {
975      breakpoint: 768,
976      settings: {
977        arrows: false,
978        centerMode: true,
979        centerPadding: '10px',
980        slidesToShow: 3
981      }
982    },
983    {
984      breakpoint: 560,
985      settings: {
986        arrows: true,
987        centerMode: true,
988        centerPadding: '20px',
989        slidesToShow: 1
990      }
991    }
992  ]
993});
994</script>
vendor: 1 bytes, line 994
994
995<script>
996
997
998// кнопка категорий для ТВ каналов
999var $grid = $('.grid').isotope({
1000  itemSelector: '.element-item',
1001  layoutMode: 'fitRows',
1002  getSortData: {
1003    category: '[data-category]',
1004  }
1005});
1006var filterFns = {
1007  numberGreaterThan50: function() {
1008    var number = $(this).find('.number').text();
1009    return parseInt( number, 10 ) > 50;
1010  },
1011
1012};
1013
1014$('.filters').on( 'click', 'button', function() {
1015  var filterValue = $( this ).attr('data-filter');
1016  filterValue = filterFns[ filterValue ] || filterValue;
1017  $grid.isotope({ filter: filterValue });
1018});
1019$('.button-group').each( function( i, buttonGroup ) {
1020  var $buttonGroup = $( buttonGroup );
1021  $buttonGroup.on( 'click', 'button', function() {
1022    $buttonGroup.find('.is-checked').removeClass('is-checked');
1023    $( this ).addClass('is-checked');
1024  });
1025});
1026
1027
1028
1029
1030//Данные о выбранном тарифе на странице "частный сектор"
1031$('#tv_tarify .chastny_tarify button,#chastny .chastny_tarify button').click( function() {
1032var tvtarifname= $(this).data('tvtarifname');
1033var tvchastny_paket= $(this).data('tvchastny_paket');
1034var tvchastnyspeed= $(this).data('tvchastnyspeed');
1035var tvchastnyprice= $(this).data('tvchastnyprice');
1036$("#tv_tarif_name").text(tvtarifname);
1037$("#tv_chastny_paket").text(tvchastny_paket);
1038$("#tv_chastny_speed").text(tvchastnyspeed);
1039$("#tv_chastny_price").text(tvchastnyprice);
1040$('#chastny_zayavka').modal('show');
1041     });
1042
1043
1044 $('.channels a,.tv_buy a').click( function() {
1045  $(this).toggleClass('active');
1046  });
1047
1048</script>
1048
1049
1050
1051
1052<!-- Modal -->
1053<div class="modal fade" id="callback-modal" tabindex="-1" role="dialog" aria-labelledby="callback-modal-title">
1054    <div class="modal-dialog modal-lg" role="document">
1055        <div class="modal-content">
1056            <div class="modal-header">
1057                <h4 class="modal-title" id="callback-modal-title">Заказать звонок</h4>
1058                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
1059            </div>
1060            <div class="modal-body">
1061                <form novalidate id="callback">
1062                    <div class="row">
1063                        <div class="col-md-6">
1064                            <div class="form-group">
1065                                <label for="callback-modal-input-name">ФИО</label>
1066                                <input type="text" name="callback-modal-input-name" required minlength="2" placeholder="Иванов Иван Иванович" data-validator-messages='{ "minlength": "Слишком короткое имя!", "required": "Это обязательное поле!" }' class="form-control" id="callback-modal-input-name"/>
1067                            </div>
1068                        </div>
1069                        <div class="col-md-6">
1070                            <div class="form-group">
1071                                <label for="callback-modal-input-phone">Телефон</label>
1072                                <input type="text" name="callback-modal-input-phone" required placeholder="81234567890" data-validator-pattern="phoneExt" data-validator-messages='{ "required": "Это обязательное поле!", "pattern": "Некорректный номер телефона!" }' class="form-control" id="callback-modal-input-phone"/>
1073                            </div>
1074                        </div>
1075                    </div>
1076                    <input id="important-field" name="important-field" class="d-none" type="text" value=""/>
1077                </form>
1078            </div>
1079            <div class="modal-footer">
1080                <button type="submit" class="btn btn-primary" id="callback-modal-button-submit">Отправить</button>
1081            </div>
1082        </div>
1083    </div>
1084</div>
1085
1086<script>
1087$(document).ready(function() {
1088    // Динамически создавать скрипты при открытии модалки
1089    $('#callback-modal').on('show.bs.modal', function(e) {
1090        var nameInput = $('#callback-modal-input-name'),
1091            phoneInput = $('#callback-modal-input-phone'),
1092            importantField = $('#important-field');
1093        $('#callback-modal-button-submit').on('click', function(e) {
1094            var valid = Validator.validate(document, {
1095                fields: [
1096                    'callback-modal-input-name',
1097                    'callback-modal-input-phone',
1098                ]
1099            }),
1100            $this = $(this);
1101            // Отмена действия по умолчанию
1102            e.preventDefault();
1103            // Проверка полей
1104            if (valid && $this.is(':disabled') === false) {
1105                $this.attr('disabled', '');
1106                // Создание заявки на подключение
1107                $.ajax({
1108                    url: '/request_call.php',
1109                    type: 'POST',
1110                    data: $.param({
1111                        name: nameInput.val(),
1112                        phone: phoneInput.val(),
1113                        important_field: importantField.val()
1114                    })
1115                }).done(function(data) {
1116                    alert(data);
1117                    nameInput.val(null);
1118                    phoneInput.val(null);
1119                    importantField.val(null);
1120                    $('#callback-modal').modal('hide');
1121                }).fail(function(err) {
1122                    alert(err.responseText);
1123                }).always(function() {
1124                    $this.removeAttr('disabled');
1125                });
1126            }
1127        });
1128    });
1129});
1130</script>
1130
1131
1132<!-- Modal -->
1133<div class="modal fade" id="contact-modal" tabindex="-1" role="dialog" aria-labelledby="contact-modal-title">
1134    <div class="modal-dialog modal-lg" role="document">
1135        <div class="modal-content">
1136            <div class="modal-header">
1137                <h4 class="modal-title" id="contact-modal-title">Заявка на подключение</h4>
1138                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
1139            </div>
1140            <div class="modal-body">
1141                <form novalidate>
1142                    <div class="row">
1143                        <div class="col-md-6">
1144                            <div class="form-group">
1145                                <label for="contact-modal-input-name">
1146                                    ФИО
1147                                    <i class="required"></i>
1148                                </label>
1149                                <input type="text" name="contact-modal-input-name" required minlength="2" placeholder="Иванов Иван Иванович" data-validator-messages='{ "minlength": "Слишком короткое имя!", "required": "Это обязательное поле!" }' class="form-control" id="contact-modal-input-name"/>
1150                            </div>
1151                        </div>
1152                        <div class="col-md-6">
1153                            <div class="form-group">
1154                                <label for="contact-modal-input-phone">
1155                                    Телефон
1156                                    <i class="required"></i>
1157                                </label>
1158                                <input type="text" name="contact-modal-input-phone" required placeholder="81234567890" data-validator-pattern="phoneExt" data-validator-messages='{ "required": "Это обязательное поле!", "pattern": "Некорректный номер телефона!" }' class="form-control" id="contact-modal-input-phone"/>
1159                            </div>
1160                        </div>
1161                    </div>
1162                    <div class="form-group">
1163                        <label>Адрес</label>
1164                        <p>Укажите на карте Ваш адрес, либо воспользуйтесь поиском.</p>
1165                        <div id="map-container"></div>
1166                        <input type="hidden" id="contact-modal-input-geopos"/>
1167                        <input type="hidden" id="contact-modal-input-geotext"/>
1168                    </div>
1169                    <div class="form-group">
1170                        <label for="contact-modal-textarea-address">
1171                            Ваш адрес
1172                            <i class="required"></i>
1173                        </label>
1174                        <textarea name="contact-modal-textarea-address" class="form-control" id="contact-modal-textarea-address" required data-validator-messages='{ "required": "Это обязательное поле!" }'></textarea>
1175                    </div>
1176                    <div class="row">
1177                        <div class="col-md-6">
1178                            <div class="form-group">
1179                                <label for="contact-modal-input-info">Дополнительная информация</label>
1180                                <input type="text" name="contact-modal-input-info" placeholder="Время, удобное для звонка, номер квартиры, подъезда и т.д." class="form-control" id="contact-modal-input-info"/>
1181                            </div>
1182                        </div>
1183                        <div class="col-md-6">
1184                            <div class="form-group">
1185                                <label for="contact-modal-input-promocode">Промокод</label>
1186                                <input type="text" name="contact-modal-input-promocode" placeholder="" class="form-control" id="contact-modal-input-promocode"/>
1187                            </div>
1188                        </div>
1189                    </div>
1190                    <div class="checkbox">
1191                        <label for="contact-modal-checkbox-agreed">
1192                            <input type="checkbox" name="contact-modal-checkbox-agreed" id="contact-modal-checkbox-agreed" style="margin-right: 4px;"/>
1193                            Я согласен с условиями обработки <a href="/Docs/pd.doc">моих персональных данных</a>
1194                            <i class="required"></i>
1195                        </label>
1196                    </div>
1197                    <p><i class="required"></i> &mdash; Поля обязательные для заполнения</p>
1198                </form>
1199            </div>
1200            <div class="modal-footer">
1201                <button type="submit" class="btn btn-primary" id="contact-modal-button-submit" disabled>Отправить</button>
1202            </div>
1203        </div>
1204    </div>
1205</div>
1206<script>
1207$(document).ready(function() {
1208    // Динамически создавать скрипты при открытии модалки
1209    $('#contact-modal').on('show.bs.modal', function(e) {
1210        var addressTextarea = $('#contact-modal-textarea-address'),
1211            agreeCheckbox = $('#contact-modal-checkbox-agreed'),
1212            infoInput = $('#contact-modal-input-info'),
1213            geoposInput = $('#contact-modal-input-geopos'),
1214            geotextInput = $('#contact-modal-input-geotext'),
1215            nameInput = $('#contact-modal-input-name'),
1216            phoneInput = $('#contact-modal-input-phone'),
1217            promocodeInput = $('#contact-modal-input-promocode');
1218    //    phoneInput.inputmask('(999) 999-9999');
1219        // Сделать кнопку неактивной, если не стоит галочка
1220        agreeCheckbox.on('change', function(e) {
1221            var $this = $(this),
1222                btn = $('#contact-modal-button-submit');
1223            if ($this.is(':checked') === false) {
1224                btn.attr('disabled', 'disabled');
1225            } else {
1226                btn.removeAttr('disabled');
1227            }
1228        });
1229        // API Яндекс.Карт
1230        var ymapsScript = document.createElement('script');
1231        ymapsScript.id = 'ymaps-script';
1232        ymapsScript.src = '//api-maps.yandex.ru/2.1/?apikey=07378b65-0d18-4a14-bf51-ccbef99be3ca&lang=ru_RU';
1233        // При загрузке API Яндекс.Карт выполнить внутренний скрипт
1234        ymapsScript.onload = function() {
1235            var map = $('<div/>');
1236            map.attr('id', 'map');
1237            $('#map-container').append(map);
1238            // Выполнить внутренний скрипт
1239            ymaps.ready(function() {
1240                var myMap = new ymaps.Map('map', {
1241                        center: [52.730486, 41.452401],
1242                        zoom: 11,
1243                        controls: [
1244                            'fullscreenControl',
1245                            'geolocationControl',
1246                            'rulerControl',
1247                            'typeSelector',
1248                            'zoomControl'
1249                        ]
1250                    }, {
1251                        restrictMapArea: [
1252                            [53.80, 39.93],
1253                            [51.59, 43.23]
1254                        ]
1255                    }),
1256                    myPlacemark;
1257                // Вписать границы карты под её контейнер
1258                myMap.container.fitToViewport();
1259                // Отключить масштабирование при скролле на карте
1260                myMap.behaviors.disable('scrollZoom');
1261                // Создадим экземпляр элемента управления «поиск по карте»
1262                var searchControl = new ymaps.control.SearchControl({
1263                    options: {
1264                        // size: 'large',        // Поиск с развернутым полем ввода
1265                        noPlacemark: true, // Не отображать метку
1266                        noSuggestPanel: true, // Не показывать панель подсказок
1267                        useMapBounds: true // Использовать границы карты
1268                    }
1269                });
1270                myMap.controls.add(searchControl);
1271                // Геокодирование по выбранному элементу из списка (с размещением метки)
1272                searchControl.events.add('resultselect', function(e) {
1273                    var index = e.get('index');
1274                    searchControl.getResult(index).then(function(res) {
1275                        var coords = res.geometry.getCoordinates();
1276                        // Вызвать геокодер
1277                        getGeoCode(
1278                            coords,
1279                            onGeoCodeSuccess,
1280                            onGeoCodeError
1281                        );
1282                    });
1283                });
1284                // Геокодирование по клику на карте (с размещением метки)
1285                myMap.events.add('click', function(e) {
1286                    var coords = e.get('coords');
1287                    // Вызвать геокодер
1288                    getGeoCode(
1289                        coords,
1290                        onGeoCodeSuccess,
1291                        onGeoCodeError
1292                    );
1293                });
1294                function getCoords(geoObject) {
1295                    return geoObject.Point.pos.split(' ').reverse().map(function(value) {
1296                        return parseFloat(value);
1297                    });
1298                };
1299                function getName(geoObject) {
1300                    return geoObject.name;
1301                };
1302                function getText(geoObject) {
1303                    return geoObject.metaDataProperty.GeocoderMetaData.Address.formatted;
1304                };
1305                function getGeoCode(coords, onSuccess, onError) {
1306                    // Обратное гео-кодирование
1307                    $.get('https://geocode-maps.yandex.ru/1.x/?apikey=07378b65-0d18-4a14-bf51-ccbef99be3ca&geocode=' + coords[1] + ',' + coords[0] + '&kind=house&results=1&format=json', onSuccess).fail(onError);
1308                };
1309                function onGeoCodeSuccess(data) {
1310                    var geoObject = data.response.GeoObjectCollection.featureMember[0].GeoObject,
1311                        coords = getCoords(geoObject),
1312                        name = getName(geoObject),
1313                        text = getText(geoObject);
1314                    // Установить метку
1315                    setPlacemark(coords, name);
1316                    geoposInput.val(coords);
1317                    geotextInput.val(text);
1318                    // Адрес в отдельном поле (для информативности)
1319                    addressTextarea.val(text || '');
1320                };
1321                function onGeoCodeError() {
1322                    alert('Ошибка определения гео-объекта.');
1323                };
1324                function createPlacemark() {
1325                    return new ymaps.Placemark([], {}, {
1326                        draggable: true,
1327                        preset: 'islands#blueStretchyIcon'
1328                    });
1329                };
1330                function setPlacemark(coords, text) {
1331                    // Проверим, не создан ли Placemark
1332                    // Если нет, то создаём и навешиваем обработчик события dragend
1333                    if (!myPlacemark) {
1334                        myPlacemark = createPlacemark();
1335                        // Геокодирование по событию dragend метки
1336                        myPlacemark.events.add('dragend', function(e) {
1337                            // Вызвать геокодер
1338                            getGeoCode(
1339                                myPlacemark.geometry.getCoordinates(),
1340                                onGeoCodeSuccess,
1341                                onGeoCodeError
1342                            );
1343                        });
1344                        myMap.geoObjects.add(myPlacemark);
1345                    }
1346                    // Изменяем вершины через свойство geometry геообъекта.
1347                    myPlacemark.geometry.setCoordinates(coords);
1348                    // Подсказка для метки
1349                    myPlacemark.properties.set('iconContent', text || '');
1350                };
1351            });
1352        };
1353        document.body.appendChild(ymapsScript);
1354        $('#contact-modal-button-submit').on('click', function(e) {
1355            var valid = Validator.validate(document, {
1356                fields: [
1357                    'contact-modal-input-name',
1358                    'contact-modal-input-phone',
1359                    'contact-modal-textarea-address'
1360                ]
1361            }),
1362            $this = $(this);
1363            // Отмена действия по умолчанию
1364            e.preventDefault();
1365            // Проверка полей
1366            if (valid && $this.is(':disabled') === false) {
1367                if (geoposInput.val().length > 0 && geotextInput.val().length > 0) {
1368                    $this.attr('disabled', '');
1369                    // Создание заявки на подключение
1370                    $.ajax({
1371                        url: '/request_connection.php',
1372                        type: 'POST',
1373                        data: $.param({
1374                            address: addressTextarea.val(),
1375                            geo_pos: geoposInput.val(),
1376                            geo_text: geotextInput.val(),
1377                            info: infoInput.val(),
1378                            name: nameInput.val(),
1379                            phone: phoneInput.val(),
1380                            promocode: promocodeInput.val()
1381                        })
1382                    }).done(function(data) {
1383                        alert(data);
1384                        addressTextarea.val(null);
1385                        geoposInput.val(null);
1386                        geotextInput.val(null);
1387                        infoInput.val(null);
1388                        nameInput.val(null);
1389                        phoneInput.val(null);
1390                        promocodeInput.val(null);
1391                        $('#contact-modal').modal('hide');
1392                    }).fail(function(err) {
1393                        alert(err.responseText);
1394                    }).always(function() {
1395                        $this.removeAttr('disabled');
1396                    });
1397                } else {
1398                    alert('Пожалуйста, укажите адрес на карте!');
1399                }
1400            }
1401        });
1402    });
1403    // Удалять скрипты при закрытии модалки
1404    $('#contact-modal').on('hide.bs.modal', function(e) {
1405        $('#map').remove();
1406        $('#ymaps-script').remove();
1407    });
1408});
1409</script>
1409
1410
1411
1412</body>
1413
1414</html>

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.