PageSourceSearch

https://poseidongroup.ru/local/templates/concept_kraken_s1/js/forms.js

js poseidongroup.ru collected 2026-09-28 06:33:57 UTC 20,746 bytes, 659 lines download raw bytes

1var site_id = "";
2var cur_pos = 0;
3var cart_page = "N";
4
5function getChar(evt) {
6    evt = (evt) ? evt : window.event;
7    var charCode = (evt.which) ? evt.which : evt.keyCode;
8    if (charCode > 31 && (charCode < 46 || charCode > 57)) {
9        return null;
10    }
11    return true;
12}
13
14
15
16function mobileMenuPositionFooter() {
17    if ($('.open-menu-mobile').height() > ($(
18            'div.open-menu-mobile div.menu-mobile-inner').outerHeight() + $(
19            'div.open-menu-mobile div.foot-wrap').outerHeight(true))) $(
20        'div.open-menu-mobile div.foot-wrap').addClass('absolute');
21    else {
22        $('div.open-menu-mobile div.foot-wrap').removeClass('absolute');
23    }
24}
25
26function openMenuFooterPos() {
27    var totalHeight = $('.open-menu .head-menu-wrap').outerHeight(true) + $(
28        '.open-menu .body-menu').outerHeight(true) + $(
29        '.open-menu .footer-menu-wrap').outerHeight(true);
30    var needHeight = $('.open-menu').height() - totalHeight + $(
31        '.open-menu .body-menu').outerHeight();
32    if ($(window).height() > totalHeight) $('.open-menu .body-menu').css(
33        'min-height', needHeight + 'px');
34}
35
36function krakenResizeVideo() {
37    var win_height = $('div.video-modal').height();
38    var modal = 590;
39    if ($(window).width() > 767) {
40        if (win_height > modal) $("div.video-modal div.kraken-modal-dialog").addClass(
41            'pos-absolute');
42        else {
43            $("div.video-modal div.kraken-modal-dialog").removeClass('pos-absolute');
44        }
45    } else {
46        $("div.video-modal div.kraken-modal-dialog").addClass('pos-absolute');
47    }
48}
49
50function scrollToBlock(dist, elem) {
51
52    if(elem)
53    {
54        $('div.wrapper').removeClass('blur');
55        $("body").removeClass("modal-open");
56        $("div.modalArea").children().remove();
57
58        var moreDist = 0;
59        if ($('header').hasClass("fixed")) moreDist = 70;
60        if ($('div').is(".catalog-card-wrap") || $('div').is(".catalog-list-wrap")) {
61            moreDist = 40;
62            if ($('header').hasClass("fixed")) moreDist = 110;
63            if (elem) {
64                if (elem.hasClass('review')) moreDist = 130;
65            }
66        }
67
68        var destinationhref = parseInt($(dist).offset().top - moreDist);
69        
70        $("html:not(:animated),body:not(:animated)").animate({
71            scrollTop: destinationhref
72        }, 1000, "linear", function() {
73
74            setTimeout(
75                function(){
76
77                    if( 100 < Math.abs(parseInt($(dist).offset().top - moreDist) - destinationhref) )
78                    {
79                        $("html:not(:animated),body:not(:animated)").animate({
80                            scrollTop: parseInt($(dist).offset().top - moreDist)
81                        }, 300, "linear");
82                    }
83                }, 300);
84          }
85        );
86
87    }
88}
89
90function timerCookie(form) {
91    var timeout = true;
92    var timerVal = form.find('input.timerVal').val();
93    var forCookieTime = parseFloat(form.find('input.forCookieTime').val());
94    var totalTime = 0;
95    var mainTime = new Date().getTime();
96    var idElem = form.find("input[name='element']").val();
97    var idSect = form.find('input.idSect').val();
98    var firstEnter = BX.getCookie('_krakenFirstEnter' + idSect + idElem);
99    var firstEnterVal = BX.getCookie('_krakenFirstEnterVal' + idSect + idElem);
100
101    setTimeout(function() {
102        form.css('min-height', form.outerHeight());
103    }, 100);
104    form.find('.krakentimer').addClass('active');
105
106    if(forCookieTime <= 0)
107        forCookieTime = 1;
108    
109
110    if (typeof(firstEnter) == "undefined" || firstEnterVal != timerVal) {
111
112
113        BX.setCookie('_krakenFirstEnter' + idSect + idElem, mainTime, {
114            expires: forCookieTime * 60 * 60
115        });
116        BX.setCookie('_krakenFirstEnterVal' + idSect + idElem, timerVal, {
117            expires: forCookieTime * 60 * 60
118        });
119        firstEnter = BX.getCookie('_krakenFirstEnter' + idSect + idElem);
120        firstEnterVal = BX.getCookie('_krakenFirstEnterVal' + idSect + idElem);
121    }
122
123
124    totalTime = ((mainTime - firstEnter) / 1000).toFixed();
125
126
127    if (totalTime < timerVal * 60) timerVal = timerVal * 60 - totalTime;
128    else{
129        timeout = false;
130    }
131
132
133
134    if (timeout) form.find('.krakentimer').countdown({
135        until: timerVal,
136        format: 'HMS',
137        onExpiry: liftOff,
138        layout: form.find('.krakentimer').html()
139    }, $.countdown.regionalOptions['ru']);
140    else {
141        form.find('.questions').removeClass('active');
142        form.find('.timeout_text').addClass('active');
143    }
144
145    function liftOff() {
146        form.find('.questions').removeClass('active');
147        form.find('.timeout_text').addClass('active');
148    }
149}
150
151function parseCount(newVal, step, minVal) {
152    var ost = newVal % step;
153    var step_ = step - ost;
154
155    newVal = newVal - minVal;
156    newVal -= (newVal % step);
157
158    if(step_ >= ost)
159    {
160        newVal += minVal;
161    }
162
163    else
164    {
165        newVal += minVal + step;
166    }
167
168
169    if (newVal <= minVal || isNaN(newVal))
170        newVal = minVal;
171
172    return newVal;
173}
174
175function formatNum(val) {
176    val = String(val).replace(/(\d)(?=(\d{3})+([^\d]|$))/g, '$1 ');
177    return val;
178}
179
180
181function formAttentionScroll(dist, parent) {
182    parent.animate({
183        scrollTop: dist
184    }, 700);
185}
186
187
188
189$(document).on('change', ".form.send input[type='file']",
190    function(){
191
192        var inp = $(this);
193        var file_list_name = "";
194
195        $(inp[0].files).each(
196            function(key){
197                file_list_name += "<span>"+inp[0].files[key].name+"</span><br/>";
198            }
199        );
200
201
202        if(!file_list_name.length)
203            return;
204
205        inp.parents('form.send').addClass('file-download');
206        inp.parents('label').find('.area-files-name').html(file_list_name);
207        inp.parents('label').removeClass("area-file");
208        inp.closest('.load-file').removeClass("has-error");
209
210    }
211);
212
213
214
215
216$(document).on("click", "form.form input[type='checkbox']", function() {
217    $(this).parents("div.wrap-agree").removeClass("has-error");
218});
219
220
221
222function validGroupCheckbox(arParams){
223
224    var error = 0;
225
226    for (key in arParams){
227
228        var cheked = false;
229
230        for (var i = 0; i < arParams[key].length; i++){
231
232            if(arParams[key][i].checked)
233                cheked = true;
234        }
235
236        if(!cheked)
237        {
238            if(error == 0)
239                error = 1;
240
241            for (var i = 0; i < arParams[key].length; i++){
242
243                $(arParams[key][i]).addClass('has-error');
244            }
245        }
246    }
247
248    return error;
249}
250
251function validGroupSelect(arParams){
252    var error = 0;
253
254    for (key in arParams){
255
256        var cheked = false;
257
258        for (var i = 0; i < arParams[key].length; i++){
259
260            if(arParams[key][i].checked)
261                cheked = true;
262        }
263
264        if(!cheked)
265        {
266            if(error == 0)
267                error = 1;
268
269            $(arParams[key][0]).parents(".form-select").addClass('has-error');
270        }
271    }
272    return error;
273}
274
275
276function sendForm(arParams)
277{
278
279    var error = 0,
280        formSendAll = new FormData(),
281        actionGoals = "CALLBACK";
282
283    if(arParams.form_block.attr("id"))
284        formSendAll.append("element", arParams.form_block.attr("id").replace("form-", ""));
285
286    formSendAll.append("send", "Y");
287    formSendAll.append("tmpl_path", $("input.tmpl_path").val());
288    /*formSendAll.append("typeForm", arParams.typeForm);
289    formSendAll.append("fromBasket", arParams.fromBasket);*/
290    formSendAll.append("site_id", $("input.site_id").val());
291    formSendAll.append("url", decodeURIComponent(location.href));
292
293
294    if(arParams.form_block.hasClass('form-page-cart'))
295        actionGoals = "ORDER";
296    else if(arParams.form_block.hasClass('fast-order'))
297        actionGoals = "FAST_ORDER";
298
299
300
301
302    for (var i = 1; i <= 10; i++){
303        if($("input#custom-input-"+i).val().length>0)
304            formSendAll.append("custom-input-"+i, $("input#custom-input-"+i).val());
305    }
306
307
308    if (typeof(arParams.agreecheck.val()) != "undefined") {
309        if (!arParams.agreecheck.prop("checked")) {
310            arParams.agreecheck.parents("div.wrap-agree").addClass("has-error");
311            error = 1;
312        }
313    }
314    $("input[type='email'], input[type='text'], input[type='password'], textarea", arParams.form_block).each(
315        function(key, value) {
316            if ($(this).hasClass("email") && $(this).val().length > 0) {
317                if (!(
318                        /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
319                    ).test($(this).val())) {
320                    $(this).parent("div.input").addClass("has-error");
321                    error = 1;
322                }
323            }
324            if ($(this).hasClass("require")) {
325                if ($(this).val().trim().length <= 0){
326                    $(this).val("");
327                    $(this).parent("div.input").addClass("has-error");
328                    error = 1;
329                }
330            }
331        }
332    );
333
334
335    $("input[type='file']", arParams.form_block).each(function(key, value) {
336        if ($(this).hasClass("require")) {
337            if ($(this).closest('.load-file').find('.area-file').length>0) {
338                $(this).closest('.load-file').addClass("has-error");
339                error = 1;
340            }
341        }
342    });
343
344
345
346    if (!$('.kraken-modal').hasClass('form-modal'))
347    {
348        var otherHeight = 0;
349
350        if ($('header').hasClass('fixed'))
351            otherHeight = $('header .header-top').outerHeight(true);
352
353    }
354
355
356
357    var arChecbox = {}, newKey = null;
358
359    $("input.check-require[type='checkbox']", arParams.form_block).each(
360        function(key, value)
361        {
362            newKey = $(this).attr('name').replace("[]", "");
363
364            if(typeof arChecbox[newKey] == "undefined")
365                arChecbox[newKey] = [];
366            
367            arChecbox[newKey].push(this);
368        }
369    );
370
371    if(newKey && !error)
372        error = validGroupCheckbox(arChecbox);
373
374    delete arChecbox;
375    newKey = null;
376
377    var arRadio = {};
378    $(".select-require input.opinion[type='radio']", arParams.form_block).each(
379        function(key, value)
380        {
381            newKey = $(this).attr('name');
382
383            if(typeof arRadio[newKey] == "undefined")
384                arRadio[newKey] = [];
385            
386            arRadio[newKey].push(this);
387        }
388    );
389
390    if(newKey && !error)
391        error = validGroupSelect(arRadio);
392
393    delete arChecbox;
394    newKey = null;
395
396
397
398    if (error == 1) {
399        if ($('.kraken-modal').hasClass('form-modal'))
400        {
401            formAttentionScroll(arParams.form_block.find('.has-error:first').offset().top - arParam
401s.form_block.parents(
402                '.kraken-modal-dialog').offset().top, arParams.form_block.parents(".kraken-modal"));
403        }
404        else if (arParams.form_block.hasClass('form-cart') && !arParams.form_block.hasClass('form-page-cart'))
405        {
406            formAttentionScroll(arParams.form_block.find('.has-error:first').offset().top - arParams.form_block.parents(".body").offset().top, arParams.form_block.parents(".cart-parent"));
407        }
408        else
409        {
410            formAttentionScroll(arParams.form_block.find('.has-error:first').offset().top - otherHeight, $("html:not(:animated),body:not(:animated)"));
411        }
412    }
413    if (error == 0) {
414        arParams.form_block.css({
415            "height": arParams.form_block.outerHeight() + "px"
416        });
417
418        form_arr = arParams.form_block.find(':input,select,textarea').serializeArray();
419
420        for (var i = 0; i < form_arr.length; i++)
421        {
422            formSendAll.append(form_arr[i].name, form_arr[i].value);
423        };
424
425        if (arParams.form_block.hasClass('file-download'))
426        {
427            arParams.form_block.find('input[type=file]').each(function(key)
428            {
429
430                var inp = $(this);
431                var file_list_name = "";
432
433                $(inp[0].files).each(
434                    function(k){
435                        formSendAll.append(inp.attr('name'), inp[0].files[k], inp[0].files[k].name);
436                    }
437                );
438
439            });
440        }
441        
442        if(arParams.captchaToken.length>0)
443            formSendAll.append("captchaToken", arParams.captchaToken);
444
445            
446        arParams.button.removeClass("active");
447        arParams.load.addClass("active");
448        setTimeout(function() {
449            $.ajax({
450                url: arParams.path,
451                method: 'POST',
452                contentType: false,
453                processData: false,
454                data: formSendAll,
455                dataType: 'json',
456                success: function(json) {
457                    /*$("body").append(json);*/
458                    
459                    console.log(json.CAPTCHA_SCORE);
460                    if (json.OK == "N") {
461                        arParams.button.addClass("active");
462                        arParams.load.removeClass("active");
463                    }
464                    if (json.OK == "Y") 
465                    {
466                        if (!arParams.form_block.hasClass('form-page-cart')) 
467                        {
468                            arParams.questions.removeClass("active");
469                            arParams.thank.addClass("active");
470                        }
471
472                        /*if(actionGoals=="CALLBACK")
473                            addGoal(actionGoals);*/
474                        
475                    
476                        $.ajax({
477                            url: "/bitrix/tools/kraken/ajax/ajax_hit_page.php",
478                            method: 'POST',
479                            success: function (json) {}
480                        });
481
482                        setTimeout(function() {
483                            if ($('.kraken-modal').hasClass('form-modal'))
484                                formAttentionScroll(arParams.form_block.find('.thank').offset().top - arParams.form_block.parents(
485                                    '.kraken-modal-dialog').offset().top, arParams.form_block.parents(".kraken-modal"));
486                            else if (arParams.form_block.hasClass('form-cart') && !arParams.form_block.hasClass('form-page-cart')) {
487                                formAttentionScroll(arParams.form_block.find('.thank').offset().top - arParams.form_block.parents(
488                                    ".body").offset().top, arParams.form_block.parents(".cart-parent"));
489                            } else {
490                                formAttentionScroll(arParams.form_block.find('.thank').offset().top -
491                                    otherHeight, $("html:not(:animated),body:not(:animated)"));
492                            }
493                        }, 300);
494
495                        if (arParams.form_block.hasClass('form-cart')){
496                            
497                            setTimeout(function()
498                            {
499                                clearBasket();
500                                arParams.form_block.find(".areacart-form").children().remove();
501                                arParams.form_block.find(".cart-back").removeClass('active');
502                                arParams.form_block.find(".areacart-form").removeClass('active');
503                                arParams.form_block.find(".info-table").addClass('active');
504                            }, 3000);
505                        }
506
507                        if (arParams.form_block.hasClass('form-page-cart')){
508                            clearBasket();
509                            $('div.google-spin-wrapper').addClass('active');
510                            $(".cart-first-block").find(".part-wrap").hide();
511                            $(".cart-first-block").find(".form-cart-wrap").hide();
512                        }
513
514                        if(typeof json.CART_LINK != "undefined")
515                        {
516                            if(json.CART_LINK.length>0){
517                                setTimeout(function() {
518                                    window.location.href = json.CART_LINK;
519                                }, 1000);
520                            }
521                        }
522
523                        if (typeof(arParams.linkHREF) != "undefined") 
524                        {
525                            setTimeout(function() {
526                                window.location.href = arParams.linkHREF;
527                            }, 3200);
528                        }
529
530
531
532                        if (json.SCRIPTS.length > 0)
533                            $('body').append("<script>"+json.SCRIPTS+"</script>");
534
535                    }
536                }
537            });
538        }, 1000);
539    }
540}
541
542
543$(document).on("click", "button.btn-submit", function(){
544
545    var form = $(this).parents("form.send");
546
547    if(form.length>0)
548    {
549        
550        var path = "/bitrix/tools/kraken/ajax/forms.php";
551        if (form.hasClass('form-cart') || form.hasClass('form-page-cart')) 
552            path = "/bitrix/components/concept/kraken.cart/order.php";
553
554
555        paramsForm = {
556            form_block: form,
557            path: path,
558            button: $(this),
559            linkHREF: $(this).attr("data-link"),
560            header: $("input[name='header']", form),
561            agreecheck: $("input.agreecheck", form),
562            questions: $("div.questions", form),
563            load: $("div.load", form),
564            thank: $("div.thank", form),
565            captchaToken: ""
566
567        };
568
569        if($("body").hasClass('captcha'))
570        {
571            grecaptcha.execute($(".captcha-site-key").val(), {action: 'homepage'}).then(function(token) {
572
573                paramsForm.captchaToken = token;
574                sendForm(paramsForm);
575            });
576        }
577        else{
578            sendForm(paramsForm);
579        }
580        
581    }
582    
583});
584$(document).on("focus", "form input[type='text'], form input[type='email'], form textarea", function() {
585    $(this).parent("div.input").removeClass("has-error");
586    if ($(this).val().length <= 0 && !$(this).hasClass("phone")) {
587        $(this).attr("data-placeholder", $(this).attr("placeholder"));
588        $(this).attr("placeholder", "");
589    }
590});
591$(document).on("blur", "form input[type='text'], form textarea", function() {
592    if ($(this).val().length <= 0 && !$(this).hasClass("phone")) $(this).attr(
593        "placeholder", $(this).attr("data-placeholder"));
594});
595$(document).on("keypress", "form.form div.count input", function(e) {
596    e = e || event;
597    if (e.ctrlKey || e.altKey || e.metaKey) return;
598    var chr = getChar(e);
599    if (chr == null) return false;
600});
601$(document).on("keyup", "form.form div.count input", function(e) {
602    var value = $(this).val().toString();
603    var newVal = "";
604    for (var i = 0; i < value.length; i++) {
605        if (value[i] == "0" || value[i] == "1" || value[i] == "2" || value[i] ==
606            "3" || value[i] == "4" || value[i] == "5" || value[i] == "6" || value[i] ==
607            "7" || value[i] == "8" || value[i] == "9") newVal += value[i];
608    }
609    if (newVal == 0) newVal = 1;
610    $(this).val(newVal);
611    if ($(this).val() == "") $(this).parent().addClass('in-focus');
612});
613$(document).on("click", "form.form div.count span.plus", function(e) {
614    var input = $(this).parent("div.count").find("input");
615    var value = parseFloat(input.val());
616    if (isNaN(value)) value = 0;
617    value += 1;
618    input.val(value);
619    if ($(this).val() == "") $(this).parent().addClass('in-focus');
620});
621$(document).on("click", "form.form div.count span.minus", function(e) {
622    var input = $(this).parent("div.count").find("input");
623    var value = parseFloat(input.val());
624    if (isNaN(value)) value = 0;
625    value -= 1;
626    if (value < 0) value = '';
627    if (value == 0) value = 1;
628    input.val(value);
629});
630$(document).on("keypress", ".only-num", function(e) {
631    e = e || event;
632    if (e.ctrlKey || e.altKey || e.metaKey) return;
633    var chr = getChar(e);
634    if (chr == null) return false;
635});
636$(document).on("focus", "input.focus-anim, textarea.focus-anim", function() {
637    if ($(this).val() == "") $(this).parent().addClass('in-focus');
638});
639$(document).on("blur", "input.focus-anim, textarea.focus-anim", function() {
640    element = $(this);
641    setTimeout(function() {
642        if (element.val() == "") element.parent().removeClass('in-focus');
643    }, 200);
644});
645
646
647$(document).on('click', '.inp-show-js-padding',
648    function(){
649
650        var str = $(this).find(".inp-show-js-length").text().length;
651
652        if(str >= 48)
653            $(this).find("textarea").addClass('two-rows');
654
655        if(str >= 78)
656            $(this).find("textarea").addClass('three-rows');
657  
658    }
659);

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.