PageSourceSearch

https://otvprim.tv/local/templates/otvprim/js/custom.js?otv1035

js otvprim.tv collected 2026-10-02 06:30:59 UTC 20,913 bytes, 708 lines download raw bytes

1// карусель галереи в сюжете "экскурсии для детей"
2$(document).ready(function(){
3$('.post-gallery').owlCarousel({
4    loop:true,
5    margin:10,
6    nav:true,
7    dots:false,
8    items:1
9});
10
11$('#gallery_outer').show();
12setTimeout(function() {
13$('#gallery_inner').owlCarousel({
14	margin: 10,
15    nav: true,
16	dots: false,
17    loop: false,
18	rewind: true,
19	autoplay: true,
20	autoplayTimeout: 5000,
21	autoplayHoverPause: true,
22	mouseDrag: false,
23    /*startPosition: 0,
24    singleItem: true,*/
25    responsiveRefreshRate: 0,
26    responsiveClass: true,
27    responsive: {
28      0: {
29        items: 2,
30        //nav: false
31      },
32	  768: {
33        items: 4,
34        //nav: false
35      },
36      992: {
37        items: 5,
38        //nav: false
39      },
40	  1200: {
41        items: 6,
42        //nav: false
43      },
44    }
45});
46}, 10);
47
48});
49
50// галерея в сюжете "экскурсии для детей"
51$(document).ready(function() {
52	$('.popup-gallery').magnificPopup({
53		delegate: 'a',
54		type: 'image',
55		tLoading: 'Загрузка изображения #%curr%...',
56		mainClass: 'mfp-img-mobile',
57		gallery: {
58			enabled: true,
59			navigateByImgClick: true,
60			tCounter: '%curr% из %total%',
61			preload: [0,1] // Will preload 0 - before current, and 1 after the current image
62		},
63		image: {
64			tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
65			titleSrc: function(item) {
66				return item.el.attr('title') + '<small>&copy; ОТВ</small>';
67			}
68		}
69	});
70});
71
72// галереи в новостях
73$(document).ready(function() {
74	$('.sp-gallery-items').magnificPopup({
75		delegate: 'a',
76		type: 'image',
77		tClose: 'Закрыть',
78		tLoading: 'Загрузка изображения #%curr%...',
79		//mainClass: 'mfp-img-mobile',
80
81  mainClass: 'mfp-with-zoom', // this class is for CSS animation below
82  zoom: {
83    enabled: true, // By default it's false, so don't forget to enable it
84    duration: 300, // duration of the effect, in milliseconds
85    easing: 'ease-in-out', // CSS transition easing function
86    // The "opener" function should return the element from which popup will be zoomed in
87    // and to which popup will be scaled down
88    // By defailt it looks for an image tag:
89    opener: function(openerElement) {
90      // openerElement is the element on which popup was initialized, in this case its <a> tag
91      // you don't need to add "opener" option if this code matches your needs, it's defailt one.
92      return openerElement.is('img') ? openerElement : openerElement.find('img');
93    }
94  },
95		gallery: {
96			enabled: true,
97			navigateByImgClick: true,
98			tCounter: '%curr% из %total%',
99			tPrev: 'Назад',
100			tNext: 'Вперед',
101			preload: [0,1] // Will preload 0 - before current, and 1 after the current image
102		},
103		image: {
104			tError: '<a href="%url%">Изображение #%curr%</a> не удалось загрузить.',
105			titleSrc: function(item) {
106			  if (item.el.children().attr('alt') != null) {
107				return item.el.children().attr('alt') + '<small>&copy; ОТВ</small>';
108			  }
109			}
110		},
111		ajax: {
112			tError: 'Ошибка <a href="%url%">запроса</a>'
113		}
114	});
115});
116
117// start маски для форм
118$(document).ready(function() {
119$('.js-phone').mask('+7 (000) 000-0000');
120$('.js-numeric').mask('0ZZ', {
121            translation: {
122                'Z': {
123                    pattern: /[0-9]/, optional: true
124                }
125            }
126});
127$('.js-date').mask('00.00.0000');
128/*$('[data-feedback=1]').eq(0).submit(function(e){
129    e.preventDefault();
130    e.stopPropagation();
131
132return false;
133});*/
134});
135// end маски для форм
136
137// start форма "подать объявление"
138$(document).ready(function(){
139
140        let global_type = '6';
141
142        let calc =    function (){
143            let dictior = $('#8').prop('checked');
144
145            let str = $("#objForm-text").val().toString().trim();
146            let str_len = str.length;
147            let str_word = 0;
148            str = str.replace(/(\r\n|\n|\r)/gm," ");
149            str.split(' ').forEach(element => {
150                if(element.length>2) {
151                    str_word++;
152                    console.log(element,"СЛОВО");
153                }
154
155            });
156
157
158            let days = parseInt($("#objForm-period").val());
159            days = days<3?3:days;
160            let result = 0;
161            console.log(str_len,"str_len");
162            console.log(str_word,"str_word");
163            console.log(str,'str');
164            console.log(global_type,"global_type");
165            // a Расчет стоимости: Стоимость = (ОкруглитьВверх(КоличествоСимволовОбъявления/500)*1000*КоличествоДней*(1+50%*ОзвучитьДиктором))
166            // NEW Стоимость = (ОкруглитьВверх(КоличествоСимволовОбъявления/500)* 1500*КоличествоДней (1+50%ОзвучитьДиктором))
167            if(global_type == "7"){
168                result = Math.ceil(str_len/500)*1500*days;
169                if(dictior) {
170                    result *= 1.5;
171                }
172                console.log(result,"result a");
173            }else{
174
175                result = str_word<25?1000*days:((1000+(str_word-25)*50)*days);
176
177                result =   marginCalc(result,days,str_word);
178
179                console.log(result,"result m");
180            }
181            if(str_len===0) result = 0;
182            // m Расчет стоимости: Стоимость =(Если(КоличествоСловСтроки<25 Тогда Стоимость=1000 Иначе Стоимость=(1000+(КоличествоСловСтроки - 25)*50)*КоличествоДней)
183
184            if(result>1){
185
186            }else{
187                result = 0;
188            }
189
190
191            $("#cost-val").html(''+result);
192            $("#cost-val-form").val(''+result);
193        }
194
195
196        $("#objForm-period").change(function () {
197            let days = parseInt($("#objForm-period").val());
198           if(days<3){
199               $("#objForm-period").val(3);
200           }
201            calc();
202        })
203        $("#objForm-period").keyup(function () {
204            let days = parseInt($("#objForm-period").val());
205            if(days<3){
206                $("#objForm-period").val(3);
207            }
208            calc();
209        })
210
211/*        Подача бегущей строки:
212        1. Для бегущей строки учитываются в расчет только слова больше, чем 2 символа.
213        2. Расчет, сделанный ранее, используется для расчета базовой цены.
214        3. Итоговая цена считается от количества дней, которые заказывает клиент:
215           от 3 дней до 6 дней = 2700р + 900р за каждый день больше 3 + Количество дней * 50р за каждое слово, свыше 25 слов
216           от 7 дней до 13 дней = 5000р + 750р за каждый день больше 7 + Количество дней * 50р за каждое слово, свыше 25 слов
217           от 14 дней до 27 дней = 9500р + 700р за каждый день больше 14 + Количество дней * 50р за каждое слово, свыше 25 слов
218           от 28 дней и выше = 18000р + 650р за каждый день больше 28 + Количество дней * 50р за каждое слово, свыше 25 слов
219
220
221        55 слов
222        Для бегущей строки на 8 дней стоимость
223        5000р+750р+(55-25)*50 * 8 = 5 750 + 30*50*8 =5750+12000=17750*/
224        function marginCalc(base,days,words){
225            let result = base;
226
227            console.log(days,words,'days_and_words');
228            if(days>=3 && days<=6){
229                result = 2700 + (900 * (days-3)) + ( days * (50 * (words>25?(words - 25):0)));
230            }
231            if(days>=7 && days<=13){
232                result = 5000 + (750 * (days-7)) + ( days * (50 * (words>25?(words - 25):0)));
233            }
234            if(days>=14 && days<=27){
235                result = 9500 + (700 * (days-14)) + ( days * (50 * (words>25?(words - 25):0)));
236            }
237            if(days>=28){
238                result = 18000 + (650 * (days-28)) + ( days * (50 * (words>25?(words - 25):0)));
239            }
240
241                return result;
242        }
243     function showFizOrg(type){
244         $(".mgc-fiz-org").hide();
245         $('.mgc-'+type+'-stat').show();
246         if(type === 'fiz') {
247             $('.fiz').prop('required', true);
248             $('.org').prop('required', false);
249         };
250         if(type === 'org') {
251             $('.fiz').prop('required', false);
252             $('.org').prop('required', true);
253         };
254
255     }
256        $("input[name='form_radio_SIMPLE_QUESTION_865']").click(function(){
257            showFizOrg($(this).val()==='10'?'org':'fiz');
258            calc();
259        });
260
261        function showType(type){
262            global_type = type;
263            $(".mgc-a-m").hide();
264            $('.mgc-'+type+'-stat').show();
265
266            calc();
267        }
268
269        $("input[name='form_radio_SIMPLE_QUESTION_241']").click(function(){
270            showType($(this).val());
271            calc();
272        });
273
274
275        $("#8").click(function(){
276            console.log("Озвучить диктором (+50%)");
277            calc();
278        });
279
280        let to = $("#objForm-text");
281        to.change(function(){
282            calc();
283        });
284        to.keyup(function(){
285            calc();
286        });
287
288
289        showType('m');
290        showFizOrg('fiz');
291
292
293        $(".js-btn-click2").click(function(e){
294            e.preventDefault();
295            e.stopPropagation();
296            let form = $(this).closest('form');
297            let datas = form.serializeArray();
298            console.log(datas,'SERIALISER');
299
300
301            let data = { };
302            let requires = [];
303            let names = {};
304            let app_csrf_token = form.find('[name=app_csrf_token]').eq(0).val();
305            if(app_csrf_token.length<1){
306                alert('Что - то пошло не так, перезагрузите страницу и попробуйте заново!');
307                return ;
308            }
309
310            if(!$('[name=personal]').eq(0).prop('checked')){
311                alert('Необходимо согласиться с условиями обработки персональных данных!');
312                return ;
313            }
314
315
316           let ttype = $("input[name='form_radio_SIMPLE_QUESTION_865']:checked").val()==='N'?'org':'fiz';
317
318            for(let n in datas){
319                let le  = $("[name='"+datas[n].name+"']");
320                let require = le . prop('required');
321                let placeholder = le.attr('placeholder');
322
323                if(require){
324
325                    let clo = le.closest('.mgc-fiz-org');
326                    console.log(clo.hasClass('mgc-'+ ttype+'-stat'),'NAME ' + 'mgc-'+ ttype+'-stat'+ " " + datas[n].name);
327                    let in_trust_type = clo.eq(0).hasClass('mgc-'+ ttype+'-stat');
328                    if(le.val()==='' && in_trust_type){
329
330                        if(typeof placeholder==='undefined'){
331                            alert('Заполнены не все обязательные поля!');
332                            return;
333
334                        }
335                        alert('Не заполнено поле "'+placeholder+'"!');
336                        return;
337                    }else{
338                        if(in_trust_type)
339                        requires.push(datas[n].name);
340                    }
341
342                    /*   if(le . attr('type') ==='text'){
343
344                       }*/
345                }
346
347                if(typeof placeholder!=='undefined'){
348                    names[datas[n].name]   = placeholder;
349                }
350
351                data[datas[n].name] = datas[n].value;
352            }
353
354            data['_requires'] = requires;
355            data['_names'] = names;
356
357});
358});
359// end форма "подать объявление"
360
361// start tooltips in table row	
362$(document).ready(function() {
363
364$('.table-tv [data-toggle="tooltip"]:not([title=""])').addClass('has-title');
365
366$('.table-tv [data-toggle="tooltip"]').each(function () {
367  $(this).tooltip({
368    trigger: 'hover click focus',
369    container: $(this).parent('.position-relative')
370  });
371});
372
373});
374// end tooltips in table row
375
376// start quiz
377$(document).ready(function() {
378var q_total = 0;
379var q_correct = 0;
380var q_wrong = 0;
381var q_answered = 0;
382$('[id^="groupQ"]').each(function () {
383  q_total = q_total + 1;
384});
385
386$('[id^="groupQ"] [id^="rbQ"]').on('click', function() { 
387
388	var attr = $(this).attr('data-answer');
389	$(this).closest('[id^="groupQ"]').addClass('disabled');
390	$(this).closest('[id^="groupQ"]').find('[id^="rbQ"]').attr( "disabled", "disabled" );
391	q_answered = q_answered + 1;
392    
393	if (typeof attr !== 'undefined' && attr !== 'false' && attr !== false) {
394	  //alert('true')
395	  q_correct = q_correct + 1;
396	}
397	else {
398	  //alert('false')
399	  $(this).addClass('wrong');
400	  $(this).closest('[id^="groupQ"]').find('.badge').removeClass('badge-success');
401	  $(this).closest('[id^="groupQ"]').find('.badge').addClass('badge-danger');
402	  q_wrong = q_wrong + 1;
403	}
404	
405	if (q_answered == q_total) {
406	  //alert('тест пройден');
407	  $('#qCorrect').text(q_correct);
408	  $('#qWrong').text(q_wrong);
409	  $('#qResults').removeClass('d-none');
410	}
411});
412
413});
414// end quiz
415
416// start our projects slider
417$(document).ready(function () {
418  var owl = $('.owl-projects');
419  owl.owlCarousel({
420    //loop: true,
421    items: 4,
422	slideBy: 3,
423	margin: 7.5,
424    responsiveRefreshRate: 0,
425	/*autoplay: true,
426	autoplayHoverPause: true,
427	autoplayTimeout: 9000,*/
428	/*animateOut: 'animate__fadeOutDown',
429	animateIn: 'animate__fadeInDown',*/
430	
431	nav: false,
432	//navText: ["<i class='fa-solid fa-chevron-left'></i>","<i class='fa-solid fa-chevron-right'></i>"],
433
434	onInitialized: callback3,
435	onTranslate: callback2,
436	onTranslated: callback,
437	
438	responsive: {
439      0: {
440        items: 1,
441		slideBy: 1,
442		//margin: 15,
443      },
444	  768: {
445        items: 2,
446		slideBy: 1,
447		//margin: 15,
448      },
449      992: {
450        items: 3,
451        slideBy: 2,
452		//margin: 15,
453      },
454      1200: {
455        items: 4,
456        slideBy: 3,
457        //margin: 15,
458      },
459      1360: {
460        items: 4,
461        slideBy: 3,
462		//margin: 15,
463      }
464    }
465  });
466  
467  function callback(event) {
468  /*$('.owl-slider').addClass("active-loaded");
469  $('.owl-slider').removeClass("active-loading");*/
470  
471   /*$('.owl-slider .active').addClass("active-loaded");*/
472   /*setTimeout(function () {
473                $('.owl-slider.active').addClass("active-loaded");
474            }, 500);*/
475   
476    /*alert(event.item.count);
477	alert(event.item.index);*/
478	/*if (event.item.index === event.item.count - 1) {
479      // It's the last
480	  alert('123');
481    }*/
482  }
483  
484  function callback2(event) {
485 /* $('.owl-slider').removeClass("active-loaded");*/
486  //$('.owl-slider').addClass("active-loading");
487  }
488  
489  function callback3(event) {
490  $('.owl-slider').addClass("owl-onInitialized");
491  }
492  
493/*$(".owl-slider .owl-next").on("click", function() {
494  $('.owl-slider').addClass("active-loaded1");
495});
496$(".owl-slider .owl-prev").on("click", function() {
497  $('.owl-slider').addClass("active-loaded2");
498});
499*/
500});
501// end our projects slider
502
503// start our partners slider
504$(document).ready(function () {
505  var owl = $('.owl-partners');
506  owl.owlCarousel({
507    //loop: true,
508    items: 4,
509	slideBy: 3,
510	margin: 7.5,
511    responsiveRefreshRate: 0,
512	/*autoplay: true,
513	autoplayHoverPause: true,
514	autoplayTimeout: 9000,*/
515	/*animateOut: 'animate__fadeOutDown',
516	animateIn: 'animate__fadeInDown',*/
517	
518	nav: false,
519	//navText: ["<i class='fa-solid fa-chevron-left'></i>","<i class='fa-solid fa-chevron-right'></i>"],
520
521	onInitialized: callback3,
522	onTranslate: callback2,
523	onTranslated: callback,
524	
525	responsive: {
526      0: {
527        items: 1,
528		slideBy: 1,
529		//margin: 15,
530      },
531	  768: {
532        items: 2,
533		slideBy: 1,
534		//margin: 15,
535      },
536      992: {
537        items: 3,
538        slideBy: 2,
539		//margin: 15,
540      },
541      1200: {
542        items: 4,
543        slideBy: 3,
544        //margin: 15,
545      },
546      1360: {
547        items: 4,
548        slideBy: 3,
549		//margin: 15,
550      }
551    }
552  });
553  
554  function callback(event) {
555  /*$('.owl-slider').addClass("active-loaded");
556  $('.owl-slider').removeClass("active-loading");*/
557  
558   /*$('.owl-slider .active').addClass("active-loaded");*/
559   /*setTimeout(function () {
560                $('.owl-slider.active').addClass("active-loaded");
561            }, 500);*/
562   
563    /*alert(event.item.count);
564	alert(event.item.index);*/
565	/*if (event.item.index === event.item.count - 1) {
566      // It's the last
567	  alert('123');
568    }*/
569  }
570  
571  function callback2(event) {
572 /* $('.owl-slider').removeClass("active-loaded");*/
573  //$('.owl-slider').addClass("active-loading");
574  }
575  
576  function callback3(event) {
577  $('.owl-slider').addClass("owl-onInitialized");
578  }
579  
580});
581// end our partners slider
582
583// start clocks in top
584$(document).ready(function() {
585    function updateTime(){
586        var today = new Date();
587        var time = today.getHours() + ":" + ((today.getMinutes() < 10)?"0":"") + today.getMinutes();
588        document.getElementById("topClock").textContent=time;
589    }
590    setInterval(function(){
591        updateTime();
592    },1000);
593    updateTime();
594});
595// end clocks in top
596
597// start tv programs tabs
598$(document).ready(function() {
599$(".js-tv-progr").click(function(){
600  $(".js-tv-progr").removeClass("active");
601  $(this).addClass("active");
602})
603});
604// end tv programs tabs
605
606// start одинаковая высота карточек в разных колонках
607$(document).ready(function() {
608var lenta1_heights = [];
609var lenta2_heights = [];
610
611function eqHeight(){
612//setTimeout(function () {
613
614$('.col-lenta1 .card-news').each(function (index, element) {
615  //console.log('Индекс элемента: ' + index + '; высота элемента: ' +$(element).height());
616  $(this).css('height', 'auto');
617  lenta1_heights[index] = $(element).css( "height" );
618});
619
620$('.col-lenta2 .card-news').each(function (index, element) {
621  //console.log('Индекс элемента: ' + index + '; высота элемента: ' +$(element).height());
622  $(this).css('height', 'auto');
623  lenta2_heights[index] = $(element).css( "height" );
624});
625
626/*console.log(lenta1_heights);
627console.log(lenta2_heights);*/
628
629var i;
630for (i = 0; i < 10; i = i + 1) {
631
632if (lenta1_heights[i] > lenta2_heights[i]) {
633$('.col-lenta2 .card-news').eq(i).css('height', lenta1_heights[i]);
634} else {
635$('.col-lenta1 .card-news').eq(i).css('height', lenta2_heights[i]);
636}
637
638}
639
640//}, 1200);
641}
642$(window).on('load resize',eqHeight);
643});
644// end одинаковая высота карточек в разных колонках
645
646
647$(document).ready(function() {
648var currentUrl = window.location.href;
649if (currentUrl.includes("/results.php?WEB_FORM_ID")) {
650  //alert('results');
651  
652  if (currentUrl.includes("?WEB_FORM_ID=2")) {
653    $(".btn-back-wf2").removeClass("d-none");
654  }
655  if (currentUrl.includes("?WEB_FORM_ID=3")) {
656    $(".btn-back-wf3").removeClass("d-none");
657  }
658  if (currentUrl.includes("?WEB_FORM_ID=4")) {
659   $(".btn-back-wf4").removeClass("d-none");
660  }
661  if (currentUrl.includes("?WEB_FORM_ID=6")) {
662   $(".btn-back-wf6").removeClass("d-none");
663  }
664
665  if (currentUrl.includes("&formresult=addok")) {
666    $(".formresult-addok").removeClass("d-none");
667  }
668  else {
669    $(".formresult-error").removeClass("d-none");
670  }
671}
672});
673
674
675
676//$('#goto').tooltip();
677
678// ---- START file browse "placeholder" label text change to filename
679//save "placeholders" text
680var singlefileText = $('.custom-file-input + .custom-file-label').html();
681
682//reset files "placeholder" text
683$('.custom-file-input').on('click', function() {
684   $(this).val('');
685   $('.custom-file-input + .custom-file-label').html(singlefileText);
686});
687
688//change "placeholder" to file name(s)
689$(document).ready(function () {
690  $('.custom-file-input').on('change',function(){
691    //singlefile
692    var fileName = $(this).val();
693    fileName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length);
694    //$(this).next('.custom-file-label').html(fileName); //default bootstrap markup
695    $('.custom-file-input + .custom-file-label').html(fileName); //cf7 bootstrap markup 
696	
697	/*
698	//multifile
699	var files = $(this).prop("files");
700	var names = $.map(files, function(val) { return val.name + ' '; } );
701	$(this).closest('p').find('.custom-file-label').html(names); //cf7 bootstrap markup
702	*/
703  });
704
705});
706// ---- END file browse "placeholder" label text change to filename
707
708

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.