PageSourceSearch

https://xn---5500-gweub3hg.xn--p1ai/bitrix/templates/concept_hameleon/js/forms.js

js xn---5500-gweub3hg.xn--p1ai collected 2026-10-05 00:40:09 UTC 27,188 bytes, 797 lines download raw bytes

1function formAttentionScroll(dist, parent){
2    $(parent).animate({
3        scrollTop: dist
4    }, 700);
5    
6}
7$(document).ready(
8    function(){
9
10
11        if($(".form-block form").is(".send"))
12        {
13            $("form input[name='url']").val(location.href);
14            $.datetimepicker.setLocale('ru');
15            $('form.form .date').datetimepicker({
16                timepicker: false,
17                format: 'd/m/Y',
18                scrollMonth: false,
19                scrollInput: false,
20                dayOfWeekStart: 1
21            });
22        }
23        
24    }
25);
26
27$(document).on('change', ".form.send input[type='file']",
28    function(){
29
30    	var inp = $(this);
31        var file_list_name = "";
32
33    	$(inp[0].files).each(
34            function(key){
35                file_list_name += "<span>"+inp[0].files[key].name+"</span><br/>";
36            }
37        );
38
39
40        if(!file_list_name.length)
41            return;
42
43        inp.parents('form.send').addClass('file-download');
44        inp.parents('label').find('.area-files-name').html(file_list_name);
45        inp.parents('label').removeClass("area-file");
46        inp.closest('.load-file').removeClass("has-error");
47
48    }
49);
50
51$(document).on("click", "form.form input[type='checkbox']",
52    function(){
53        $(this).parents("div.wrap-agree").removeClass("has-error");
54        
55    }
56);
57/*send form*/
58
59function sendForm(arParams)
60{
61    var error = 0,
62        formSendAll = new FormData(),
63        actionGoals = "CALLBACK";
64
65    if(arParams.form_block.hasClass('order'))
66        actionGoals = "ORDER";
67    else if(arParams.form_block.hasClass('fast-order'))
68        actionGoals = "FAST_ORDER";
69
70
71    formSendAll.append("send", "Y");
72    formSendAll.append("tmpl_path", $("input.tmpl_path").val());
73    formSendAll.append("section_iblock_id", $("input.iblock-landing").val());
74    var sessid = "";
75    if(typeof BX !== "undefined" && typeof BX.bitrix_sessid === "function")
76        sessid = BX.bitrix_sessid();
77    if(sessid.length <= 0)
78    {
79        var sessidInput = $("input[name='sessid']").first();
80        if(sessidInput.length > 0)
81            sessid = sessidInput.val();
82    }
83    if(sessid.length > 0)
84        formSendAll.append("sessid", sessid);
85
86    for (var i = 1; i <= 10; i++) {
87        if($("input#custom-input-"+i).val().length>0)
88            formSendAll.append("custom-input-"+i, $("input#custom-input-"+i).val());
89    }
90
91
92    if(typeof(arParams.agreecheck.val()) != "undefined"){
93        if(!arParams.agreecheck.prop("checked")){
94            arParams.agreecheck.parents("div.wrap-agree").addClass("has-error");
95            error = 1;
96        }
97    }
98
99
100
101
102    $("input[type='text'], input[type='email'], input[type='password'], textarea", arParams.form_block).each(
103        function(key, value){
104
105            if($(this).hasClass("email") && $(this).val().length > 0){
106                if(!(/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test($(this).val())){
107                    $(this).parent("div.input").addClass("has-error");
108                    error = 1;
109                }
110            }
111            if($(this).hasClass("require")){
112                if($(this).val().trim().length <= 0){
113                    $(this).val("");
114                    $(this).parent("div.input").addClass("has-error");
115                    error = 1;
116                }
117            }
118        }
119    );
120    $("input[type='file']", arParams.form_block).each(
121        function(key, value){
122            if($(this).hasClass("require")){
123                if($(this).closest('.load-file').find('.area-file').length>0){
124                    $(this).closest('.load-file').addClass("has-error");
125                    error = 1;
126                }
127            }
128        }
129    );
130    if(!$('.ham-modal').hasClass('form-modal')){
131        var otherHeight = 0;
132        if($('header').hasClass('slide'))
133            otherHeight = $('header .header-block').outerHeight(true);
134    }
135    if(error == 1){
136        if($('.ham-modal').hasClass('form-modal'))
137            formAttentionScroll(arParams.form_block.find('.has-error:first').offset().top - arParam
137s.form_block.parents('.ham-modal-dialog').offset().top, ".ham-modal");
138
139        else if(arParams.form_block.hasClass('form-box'))
140            formAttentionScroll(arParams.form_block.find('.has-error:first').offset().top - arParams.form_block.parents(".body").offset().top, ".box-parent");
141
142        else{
143            formAttentionScroll(arParams.form_block.find('.has-error:first').offset().top - otherHeight, "html:not(:animated),body:not(:animated)");
144        }
145    }
146
147
148
149    if(error == 0){
150        arParams.form_block.css({
151            "height": arParams.form_block.outerHeight() + "px"
152        });
153
154
155        form_arr = arParams.form_block.find(':input,select,textarea').serializeArray();
156
157        for (var i = 0; i < form_arr.length; i++)
158        {
159            formSendAll.append(form_arr[i].name, form_arr[i].value);
160        };
161
162        if (arParams.form_block.hasClass('file-download'))
163        {
164            arParams.form_block.find('input[type=file]').each(function(key)
165            {
166
167                var inp = $(this);
168                var file_list_name = "";
169
170                $(inp[0].files).each(
171                    function(k){
172                        formSendAll.append(inp.attr('name'), inp[0].files[k], inp[0].files[k].name);
173                    }
174                );
175
176            });
177        }
178
179        if(arParams.captchaToken.length>0)
180            formSendAll.append("captchaToken", arParams.captchaToken);
181        
182       
183        arParams.button.removeClass("active");
184        arParams.load.addClass("active"); 
185        var timeOut = setTimeout(
186            function(){
187                $.ajax({
188                    url: arParams.path,
189                    method: 'POST',
190                    contentType: false,
191                    processData: false,
192                    data: formSendAll,
193                    dataType: 'json',
194                    success: function(json){
195
196                        /*console.log(json);
197
198                        $("body").prepend(json);*/
199
200                        if(json.OK == "N"){
201                            arParams.button.addClass("active");
202                            arParams.load.removeClass("active");
203                        }
204                        if(json.OK == "Y")
205                        {
206
207                            arParams.questions.removeClass("active");
208                            arParams.thank.addClass("active");
209
210                            $.ajax({
211                                url: "/",
212                                method: 'POST',
213                                success: function(json){}
214
215                            });
216
217                            if(actionGoals == "CALLBACK")
218                                addGoal(actionGoals);
219
220                           
221
222                            setTimeout(
223                                function()
224                                {
225
226                                    if($('.ham-modal').hasClass('form-modal'))
227                                        formAttentionScroll(arParams.form_block.find('.thank').offset().top - arParams.form_block.parents('.ham-modal-dialog').offset().top, ".ham-modal");
228
229                                    else if(arParams.form_block.hasClass('form-box'))
230                                        formAttentionScroll(arParams.form_block.find('.thank').offset().top - arParams.form_block.parents(".body").offset().top, ".box-parent");
231
232                                    else{
233                                        formAttentionScroll(arParams.form_block.find('.thank').offset().top - otherHeight, "html:not(:animated),body:not(:animated)");
234                                    }
235
236                                }, 300);
237
238
239                            if(arParams.form_block.hasClass('form-box'))
240                            {
241                                setTimeout(
242                                    function(){
243                                        
244                                        arParams.form_block.find(".areabox-form").children().remove();
245                                        arParams.form_block.find(".box-back").removeClass('active');
246                                        arParams.form_block.find(".areabox-form").removeClass('active');
247                                        arParams.form_block.find(".info-table").addClass('active');
248
249                                        var redirect = "";
250                                        if(typeof(json.PAYMENT_REDIRECT) != "undefined")
251                                        {
252                                            if(json.PAYMENT_REDIRECT.length > 0)
253                                                redirect = json.PAYMENT_REDIRECT;
254                                        }
255
256                                        updateBox("","","","clear","", redirect);
257
258                                    }, 2000);
259                            }
260
261                            if(typeof(arParams.linkHREF) != "undefined")
262                            {
263
264                                setTimeout(
265                                    function()
266                                    {
267                                        location.href = arParams.linkHREF;
268
269                                    }, 3000);
270                            }
271
272                            if(json.SCRIPTS.length > 0)
273                                $('body').append("<script>"+json.SCRIPTS+"</script>");
274                        }                         
275                    }
276                });
277                clearTimeout(timeOut);
278            }, 1000);
279    }
280
281}
282
283$(document).on("click", "button.btn-submit", function()
284{
285
286    var form = $(this).parents("form.send");
287    var path = "/bitrix/templates/concept_hameleon/ajax/forms.php";
288
289    if(form.hasClass('form-box'))
290        path = "/bitrix/components/concept/hameleon_cart/order.php";
291
292
293    paramsForm = {
294        form_block: form,
295        path: path,
296        button: $(this),
297        linkHREF: $(this).attr("data-link"),
298        header: $("input[name='header']", form),
299        agreecheck: $("input[name='checkboxAgree']", form),
300        questions: $("div.questions", form),
301        load: $("div.load", form),
302        thank: $("div.thank", form),
303        captchaToken: ""
304
305    };
306
307    if($("input.captcha-site-key").length>0)
308    {
309        grecaptcha.execute($("input.captcha-site-key").val(), {action: 'homepage'}).then(function(token) {
310            paramsForm.captchaToken = token;
311            sendForm(paramsForm);
312        });
313    }
314    else{
315        sendForm(paramsForm);
316    } 
317
318});
319$(document).on("click", "a.form-close",
320    function(){
321        $("div.click-for-reset.on").removeClass("on");
322        $('div.wrapper').removeClass('blur');
323        $('body').removeClass("modal-open");
324        $('.wrap-modal.open').removeClass('blur');
325
326        if(device.ios()){
327            $("body").removeClass("modal-ios");
328            window.scrollTo(0, cur_pos);
329        }
330    }
331);
332
333$(document).on('click', '.call-modal',
334    function(){
335        if(!$("body").hasClass("modal-ios"))
336            cur_pos = $(document).scrollTop();
337
338            var path = '',
339                area = '',
340                value = $(this).attr("data-call-modal"),
341                header = $(this).attr("data-header"),
342                from = $(this).attr("data-from-open-modal"),
343		        platform = $(this).attr("data-platform-video"),
344                element_id = "",
345                element_type = "",
346                other_complect = "";
347
348            site_id = $("input.site_id").val();
349            ib = $("input.ib").val();
350            sect = $("input.sect").val();
351            btn_type = $("input.btn_type").val();
352            
353
354            if($(this).hasClass("more-modal-info")){
355                element_id = $(this).attr("data-element-id");
356                element_type = $(this).attr("data-element-type");
357
358                if($(this).hasClass('from-modal'))
359                    other_complect = $(this).parents(".tabs-content").find("input[name='other_complect']:checked").val();
360            }
361
362            var type = "";
363            var box_form = "";
364
365            var th = $(this);
366
367            $('div.wrapper').addClass('blur');
368
369            if($(this).hasClass('box-form'))
370            {
371                area = 'areabox-form';
372                path = 'form_box.php';
373                value = value.replace("form", "");
374
375                if($(this).hasClass('main-click'))
376                    box_form = "Y";
377            }
378
379            if($(this).hasClass('callform')){
380                area = 'modalAreaForm';
381                path = 'formmodal.php';
382                value = value.replace("form", "");
383            }
384
385
386            if($(this).hasClass('callvideo')){
387                area = 'modalAreaVideo';
388                path = 'videomodal.php';
389            }
390
391            if($(this).hasClass('callmodal')){
392                area = 'modalAreaWindow';
393                path = 'windowmodal.php';
394                value = value.replace("modal", "");
395            }
396
397            if($(this).hasClass('callagreement')){
398                area = 'modalAreaAgreement';
399                path = 'agreemodal.php';
400                value = value.replace("agreement", "");
401            }
402
403
404            $('.google-spin-wrapper').addClass('active');
405
406            $.post("/bitrix/templates/concept_hameleon/ajax/" + path,{
407                    resVal: value,
408                    site_id: site_id,
409                    type: type,
410                    btn_type: btn_type,
411                    section: sect,
412                    ib: ib,
413                    element_id: element_id,
414                    element_type: element_type,
415                    other_complect: other_complect,
416                    box_form: box_form,
417		    platform: platform
418		    
419
420                },
421
422                function(html){
423
424                    $("body").addClass("modal-open");
425
426                    if(device.ios() && !th.hasClass('box-form')){
427                        $("body").addClass("modal-ios");
428                    }
429
430                    $('div.' + area).html(html);
431                    $('.google-spin-wrapper').removeClass('active');
432
433                    if(from == 'open-menu'){
434                        $('div.open-menu').addClass('blur');
435                        $('div.' + area).find('.close-modal').addClass('open-menu');
436                    }
437
438                    var timeOut = setTimeout(
439                        function(){
440                            $('div.' + area).find('.ham-modal').addClass('active');
441                            clearTimeout(timeOut);
442                        }, 300);
443
444
445                    if(area == 'modalAreaForm'){
446                        var timeOut2 = setTimeout(
447                            function(){
448
449                                $('div.modalAreaForm').find("form input[name='url']").val(decodeURIComponent(location.href));
450
451                                $('div.modalAreaForm').addClass('z-index-99999');
452
453                                if(typeof(comment) != "undefined"){
454                                    if(comment.length > 0)
455                                        $("div.modalAreaForm").find("div.add_text").html(comment);
456
457                                }
458
459                                if(typeof(formTitle) != "undefined"){
460                                    if(formTitle.length > 0)
461                                        $('div.modalAreaForm').find("form input[name='comment']").val(formTitle);
462                                }
463
464                                if(typeof(header) != "undefined"){
465                                    if(header.length > 0)
466                                        $('div.modalAreaForm').find("form input[name='header']").val(header);
467                                }
468                                $.datetimepicker.setLocale('ru');
469                                $('div.modalAreaForm form.form .date').datetimepicker({
470                                    timepicker: false,
471                                    format: 'd/m/Y',
472                                    scrollMonth: false,
473                                    scrollInput: false,
474                                    dayOfWeekStart: 1
475                                });
476                                clearTimeout(timeOut2);
477                            }, 100
478                        );
479                    }
480
481                    if(area == 'modalAreaVideo'){
482                        var timeOut2 = setTimeout(
483                            function(){
484                                var win_height = $('div.video-modal').height();
485                                var modal = 590;
486                                if($(window).width() > 767){
487                                    if(win_height > modal)
488                                        $("div.video-modal div.ham-modal-dialog").addClass('pos-absolute');
489                                    else{
490                                        $("div.video-modal div.ham-modal-dialog").removeClass('pos-absolute');
491                                    }
492                                }
493                                else{
494                                    $("div.video-modal div.ham-modal-dialog").addClass('pos-absolute');
495                                }
496
497                                clearTimeout(timeOut2);
498                            }, 100
499                        );
500                    }
501
502
503                    if(th.hasClass('from-modalform')){
504                        $('div.modalAreaForm').addClass('z-index-99999');
505                        $('div.modalAreaAgreement').find('.close-modal').addClass('from-modal');
506                        $('div.modalAreaAgreement').find('.close-modal').addClass('from-modalform');
507                        $('div.form-modal').addClass('blur');
508                    }
509
510                    if(th.hasClass('from-openmenu')){
511                        $('div.modalAreaForm').find('.close-modal').addClass('from-modal');
512                        $('div.modalAreaAgreement').find('.close-modal').addClass('from-modal');
513                        $('div.modalAreaAgreement').find('.close-modal').addClass('from-openmenu');
514                        $('div.modalAreaForm').find('.close-modal').addClass('from-openmenu');
515                        $('div.open-menu').addClass('blur');
516                        $('div.modalAreaWindow').find('.close-modal').addClass('from-modal');
517                        $('div.modalAreaWindow').find('.close-modal').addClass('from-openmenu');
518                    }
519
520                    if(th.hasClass('from-set')){
521                        $('div.modalAreaForm').find('.close-modal').addClass('from-modal');
522                        $('div.modalAreaWindow').find('.close-modal').addClass('from-modal');
523                    }
524
525                    if(th.hasClass('from-tariff')){
526                        $('div.wrap-modal').addClass('blur');
527                        $('div.modalAreaAgreement').find('.close-modal').addClass('from-tariff');
528                        $('div.modalAreaForm').find('.close-modal').addClass('from-tariff');
529                        $('div.modalAreaWindow').find('.close-modal').addClass('from-tariff');
530                    }
531
532                    if(area == 'areabox-form')
533                    {                    
534                        th.parents(".wrapper-mbox").find(".info-table").removeClass('active');
535                        th.parents(".wrapper-mbox").find(".box-back").addClass('active');
536                        th.parents(".wrapper-mbox").find(".areabox-form").addClass('active');
537                        th.parents(".wrapper-mbox").find("form input[name='url']").val(decodeURIComponent(location.href));
538                        $.datetimepicker.setLocale('ru');
539                        $('.wrapper-mbox form.form .date').datetimepicker({
540                            timepicker: false,
541                            format: 'd/m/Y',
542                            scrollMonth: false,
543                            scrollInput: false,
544                            dayOfWeekStart: 1
545                        });
546                    }
547
548                    $('.lazyload').Lazy();
549
550                }
551            );
552        
553        
554
555    }
556);
557$(document).on('click', '.close-modal',
558    function(){
559        $('div.modalAreaForm form.form .date').datetimepicker('destroy');
560        $(this).parents("div.modalArea.z-index-99999").removeClass('z-index-99999');
561        if(!($(this).hasClass('from-modal')) && !($(this).hasClass('from-tariff'))){
562            $('div.wrapper').removeClass('blur');
563            $("body").removeClass("modal-open");
564
565            if(device.ios()){
566                $("body").removeClass("modal-ios");
567                window.scrollTo(0, cur_pos);
568            }
569        }
570        if($(this).hasClass('from-modalform'))
571            $('div.form-modal').removeClass('blur');
572
573        if($(this).hasClass('from-openmenu'))
574            $('div.open-menu').removeClass('blur');
575
576        if($(this).hasClass('from-tariff'))
577            $('div.wrap-modal').removeClass('blur');
578
579        if($(this).hasClass('wind-close'))
580            $(this).parents("div.shadow-modal-wind-contact").removeClass('on');
581
582        else{
583            $(this).parents("div.modalArea").children().remove();
584        }
585
586        
587    }
588);
589$(document).on("click", ".box-back",
590    function(e){
591        $(this).removeClass('active');
592        $(this).parents(".wrapper-mbox").find(".areabox-form").removeClass('active');
593        $(this).parents(".wrapper-mbox").find(".info-table").addClass('active');
594
595        
596    }
597);
598$(document).on('click', '.open_modal_contacts',
599    function(){
600        $('div.shadow-modal-wind-contact').addClass('on');
601        $('div.wrapper').addClass('blur');
602        $("body").addClass("modal-open");
603
604        if(device.ios()){
605            cur_pos = $(document).scrollTop();
606            $("body").addClass("modal-ios");
607        }
608
609        
610    }
611);
612$(document).on("click", ".btn-modal-open",
613    function(){
614        cur_pos = $(document).scrollTop();
615
616        var added = "N";
617        if($(this).parents(".element").find(".click_box").hasClass('added'))
618            added = "Y";
619
620
621        $('div.google-spin-wrapper').addClass('active');
622
623        $.post("/bitrix/templates/concept_hameleon/ajax/modal.php",{
624            element_id: $(this).attr('data-element-id'),
625            name: $(this).attr('data-detail'),
626            all_id: $(this).attr('data-all-id'),
627            site_id: $("input.site_id").val(),
628            land_id: $("input.sect").val(),
629            land_iblock_id: $("input.ib").val(),
630            block_header: $(this).attr('data-header'),
631            added: added,
632            catalog_id: $(this).attr('data-main-catalog-id')
633
634            },
635
636            function(html){
637
638                $('div.wrap-modal').addClass('open');
639                $('div.wrapper').addClass('blur');
640                $('body').addClass('modal-open');
641                $('.shadow-detail').addClass('active');
642                $("div.modal-container").html(html);
643
644            
645
646
647                $(".wrap-modal-inner").addClass('open');
648                $('div.no-click-block').addClass('on');
649
650                $('div.google-spin-wrapper').removeClass('active');
651                $(".area_for_mini_box").addClass('mod_cat_opened');
652            }
653        );
654
655        
656    }
657);
658/*for close detail-modal*/
659$(document).on("click", "a.wrap-modal-close",
660    function(){
661        $('div.wrap-modal').removeClass('open');
662        $('.shadow-detail').removeClass('active');
663        $('body').removeClass('modal-open');
664        $('div.wrapper').removeClass('blur');
665        $('div.no-click-block').removeClass('on');
666
667        if($(".area_for_mini_box").hasClass("mod_cat_opened"))
668            $(".area_for_mini_box").removeClass('mod_cat_opened');
669
670        if(device.ios()){
671            window.scrollTo(0, cur_pos);
672            $("body").removeClass("modal-ios");
673        }
674
675        
676    }
677);
678/*hide and show placeholder*/
679$(document).on("focus", "form input[type='text'], input[type='email'], form textarea",
680    function(){
681        $(this).parent("div.input").removeClass("has-error");
682        
683    }
684);
685$(document).on("blur", "form input[type='text'], input[type='email'], form textarea",
686    function(){
687        $(this).parent("div.input").removeClass("has-error");
688        
689    }
690);
691$(document).on('click', '.select-list-choose',
692    function(){
693        $(this).parents('.form-select').addClass('open');
694        
695    }
696);
697$(document).on('click', '.ar-down',
698    function(){
699        if($(this).parents('.form-select').hasClass('open'))
700            $(this).parents('.form-select').removeClass('open');
701        else{
702            $(this).parents('.form-select').addClass('open');
703        }
704        
705    }
706);
707$(document).on('click', '.form-select .name',
708    function(){
709        $(this).parents('.form-select').find('.select-list-choose').removeClass('first').find(".list-area").text($(this).text());
710        $(this).parents('.form-select').removeClass('open');
711    }
712);
713
714$(document).mouseup(function (e){
715    var div = $(".form-select");
716    if (!div.is(e.target)
717        && div.has(e.target).length === 0) {
718        div.removeClass('open');
719    }
720    
721});
722
723
724
725$(document).on('change', ".box-choose-select",
726    function(){
727        $(this).parents(".parent-choose-select").find(".inp-show-js").removeClass('active');
728        $(this).parents(".parent-choose-select").find(".inp-show-js[data-choose-select='"+$(this).attr("data-choose-select")+"']").addClass('active');
729        
730});
731$(document).on("focus", "input.focus-anim",
732    function(){
733        if($(this).val() == "")
734            $(this).parent().addClass('in-focus');
735
736        
737    }
738);
739$(document).on("blur", "input.focus-anim",
740    function(){
741        if($(this).val() == "")
742            $(this).parent().removeClass('in-focus');
743
744        
745    }
746);
747/**/
748$(document).on("keypress", ".only-num",
749    function(e){
750        e = e || event;
751        if(e.ctrlKey || e.altKey || e.metaKey) return;
752        var chr = getChar(e);
753        if(chr == null) return;
754        if(chr < '0' || chr > '9'){
755            return false;
756        }
757    }
758);
759/*focus input*/
760$(document).on("focus", "input.focus-anim, textarea.focus-anim",
761    function(){
762        if($(this).val() == "")
763            $(this).parent().addClass('in-focus');
764
765        
766    }
767);
768$(document).on("blur", "input.focus-anim, textarea.focus-anim",
769    function(){
770        element = $(this);
771        var timeOut = setTimeout(
772            function(){
773                if(element.val() == "")
774                    element.parent().removeClass('in-focus');
775
776                clearTimeout(timeOut);
777            }, 200
778        );
779
780        
781    }
782);
783
784$(document).on('click', '.inp-show-js-padding',
785    function(){
786
787        var str = $(this).find(".inp-show-js-length").text().length;
788
789        if(str >= 48)
790            $(this).find("textarea").addClass('two-rows');
791
792        if(str >= 78)
793            $(this).find("textarea").addClass('three-rows');
794  
795    }
796);
797

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.