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.