1var contactRecaptcha, callRecaptcha, contactsRecaptcha; 2 3$(document).ready(function(){ 4 calcHeight(); 5 6 $(window).resize(function() { 7 calcHeight(); 8 }); 9 10 var url = new URL(window.location.href); 11 url.searchParams.delete('l_id'); 12 window.history.pushState({ path: url.href }, '', url.href); 13 14 if($('.cookies-panel').length){ 15 setTimeout(function(){ 16 $('.cookies-panel').addClass('opened'); 17 }, 2000); 18 } 19 20 $(document).on('click', '.close-cookies-btn', function(){ 21 $.ajax({ 22 type:'GET', 23 url: '/accept-cookies', 24 data:{}, 25 processData: false, 26 contentType: false, 27 success:function(data){ 28 $('.cookies-panel').removeClass('opened'); 29 }, 30 error:function(data){ 31 32 } 33 }); 34 }); 35 36 $(document).on('click', '.google-play-btn', function(e){ 37 var btn = $(this); 38 ym(89356185,'reachGoal','clickGooglePlay'); 39 40 setTimeout(function(){ 41 document.location = $(btn).data('href'); 42 }, 1000); 43 }); 44 $(document).on('click', '.app-store-btn', function(e){ 45 var btn = $(this); 46 ym(89356185,'reachGoal','clickAppStore'); 47 48 setTimeout(function(){ 49 document.location = $(btn).data('href'); 50 }, 1000); 51 }); 52 53 $(document).on('submit', '#contactsForm', function(e){ 54 e.preventDefault(); 55 var form = $('#contactsForm')[0]; 56 var data = new FormData(form); 57 58 var url = $(form).attr('action'); 59 60 $(form).find('.invalid-feedback').remove(); 61 $(form).find('.form-input, label').removeClass('is-invalid'); 62 $(form).find('label').removeClass('form-control'); 63 $(form).find('button.main-btn').attr('disabled', true); 64 if(data){ 65 $.ajax({ 66 type:'POST', 67 url: url, 68 data:data, 69 processData: false, 70 contentType: false, 71 success:function(data){ 72 $('#contactModal').modal('hide'); 73 showMessage('<p>ÐаÑа заÑвка пÑинÑÑа!</p><p>ÐÑ ÑкоÑо Ðам оÑвеÑим.</p>', 'success', 5); 74 $(form).find('.form-input').val(''); 75 $(form).find('button.main-btn').attr('disabled', false); 76 77 grecaptcha.reset(contactRecaptcha); 78 }, 79 error:function(data){ 80 var errors = data.responseJSON.errors; 81 var errMsg = 'Ðоле не заполнено или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑоÑмаÑ', 82 policyError = 'ÐожалÑйÑÑа подÑвеÑдиÑе ÑоглаÑие Ñ ÑÑловиÑми'; 83 84 $.each(errors, function(input, error){ 85 $(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 86 if(input == 'acceptPolicy'){ 87 $(form).find('input[name="acceptPolicy"]').closest('label').addClass('form-control is-invalid').after('<span class="invalid-feedback" role="alert">'+policyError+'</span>') 88 }else{ 89 $(form).find('.form-input[name="'+input+'"]').after('<span class="invalid-feedback" role="alert">'+errMsg+'</span>'); 90 } 91 }); 92 93 $(form).find('button.main-btn').attr('disabled', false); 94 95 grecaptcha.reset(contactRecaptcha); 96 } 97 }); 98 } 99 }); 100 101 var checkScroll; 102 $(document).scroll(function(e){ 103 if($(this).scrollTop() > 30){ 104 $('header').addClass('fixed-header'); 105 if($('body').hasClass('dark-mode')){ 106 if($('.page').hasClass('driver-page')){ 107 //$('header').find('.main-logo').attr('src', '/static_images/logo.svg'); 108 } 109 } 110 }else{ 111 $('header').removeClass('fixed-header'); 112 if($('body').hasClass('dark-mode') && !$('.main-menu').hasClass('open')){ 113 if($('.page').hasClass('driver-page')){ 114 //$('header').find('.main-logo').attr('src', '/static_images/logo_light.svg'); 115 } 116 } 117 } 118 }); 119 120 $(document).on('click', '.show-modal-btn', function(){ 121 var msg = $(this).data('dialog-message'), 122 target = $(this).data('target'); 123 console.log(target, msg); 124 $(target).find('.dialog-text').html(msg); 125 $(target).modal('show'); 126 }); 127 128 $('#callModal').on('hidden.bs.modal', function (e) { 129 $(this).find('.dialog-text').html(''); 130 }); 131 132 $(document).on('submit', '#callForm', function(e){
133 e.preventDefault(); 134 var form = $('#callForm')[0]; 135 var data = new FormData(form); 136 137 var url = '/request-call'; 138 139 $(form).find('.invalid-feedback').remove(); 140 $(form).find('.form-input').removeClass('is-invalid'); 141 $(form).find('button.main-btn').attr('disabled', true); 142 if(data){ 143 $.ajax({ 144 type:'POST', 145 url: url, 146 data:data, 147 processData: false, 148 contentType: false, 149 success:function(data){ 150 $('#callModal').modal('hide'); 151 showMessage('<p>ÐаÑа заÑвка пÑинÑÑа!</p><p>ÐÑ ÑкоÑо Ðам оÑвеÑим.</p>', 'success', 5); 152 $(form).find('.form-input').val(''); 153 $(form).find('button.main-btn').attr('disabled', false); 154 155 grecaptcha.reset(callRecaptcha); 156 }, 157 error:function(data){ 158 var errors = data.responseJSON.errors; 159 160 var errMsg = 'Ðоле не заполнено или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑоÑмаÑ', 161 policyError = 'ÐожалÑйÑÑа подÑвеÑдиÑе ÑоглаÑие Ñ ÑÑловиÑми'; 162 163 $.each(errors, function(input, error){ 164 $(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 165 if(input == 'acceptPolicy'){ 166 $(form).find('input[name="acceptPolicy"]').closest('label').addClass('form-control is-invalid').after('<span class="invalid-feedback" role="alert">'+policyError+'</span>') 167 }else{ 168 $(form).find('.form-input[name="'+input+'"]').after('<span class="invalid-feedback" role="alert">'+errMsg+'</span>'); 169 } 170 }); 171 $(form).find('button.main-btn').attr('disabled', false); 172 173 grecaptcha.reset(callRecaptcha); 174 } 175 }); 176 } 177 }); 178 179 $(document).on('submit', '#partnersForm', function(e){ 180 e.preventDefault(); 181 var form = $('#partnersForm')[0]; 182 var data = new FormData(form); 183 184 var url = $(form).attr('action'); 185 186 $(form).find('.invalid-feedback').remove(); 187 $(form).find('.form-input, .form-control').removeClass('is-invalid'); 188 $(form).find('button.main-btn').attr('disabled', true); 189 if(data){ 190 $.ajax({ 191 type:'POST', 192 url: url, 193 data:data, 194 processData: false, 195 contentType: false, 196 success:function(data){ 197 if($('#partnersModal').length){ 198 $('#partnersModal').modal('hide'); 199 } 200 //showMessage('<p>ÐаÑа заÑвка пÑинÑÑа!</p><p>ÐÑ ÑообÑим Ðам инÑоÑмаÑÐ¸Ñ Ð¾ даÑе и вÑемени пÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑеÑенÑии по Email или в СÐС ÑообÑении.</p><p>ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии ÐÑ Ð¼Ð¾Ð¶ÐµÑе обÑаÑиÑÑÑÑ Ð² наÑÑ ÑлÑÐ¶Ð±Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки.</p>', 'success', 10); 201 $('#resultDialogModal').modal(); 202 $(form).find('.form-input').val(''); 203 $(form).find('button.main-btn').attr('disabled', false); 204 }, 205 error:function(data){ 206 var errors = data.responseJSON.errors; 207 208 var errMsg = 'Ðоле не заполнено или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑоÑмаÑ', 209 policyError = 'ÐожалÑйÑÑа подÑвеÑдиÑе ÑоглаÑие Ñ ÑÑловиÑми'; 210 211 $.each(errors, function(input, error){ 212 $(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 213 if(input == 'acceptPolicy'){ 214 $(form).find('input[name="acceptPolicy"]').closest('label').addClass('form-control is-invalid').after('<span class="invalid-feedback" role="alert">'+policyError+'</span>') 215 }else{ 216 $(form).find('.form-input[name="'+input+'"]').after('<span class="invalid-feedback" role="alert">'+errMsg+'</span>'); 217 } 218 }); 219 $(form).find('button.main-btn').attr('disabled', false); 220 } 221 }); 222 } 223 }); 224 225 $(document).on('submit', '#webinarForm', function(e){ 226 e.preventDefault(); 227 var form = $('#webinarForm')[0]; 228 var data = new FormData(form); 229 230 var url = $(form).attr('action'); 231
232 $(form).find('.invalid-feedback').remove(); 233 $(form).find('.form-input, .form-control').removeClass('is-invalid'); 234 $(form).find('button.main-btn').attr('disabled', true); 235 if(data){ 236 $.ajax({ 237 type:'POST', 238 url: url, 239 data:data, 240 processData: false, 241 contentType: false, 242 success:function(data){ 243 if($('#webinarModal').length){ 244 $('#webinarModal').modal('hide'); 245 } 246 showMessage('<p>ÐаÑа заÑвка пÑинÑÑа!</p><p>ÐÑ ÑообÑим Ðам инÑоÑмаÑÐ¸Ñ Ð¾ даÑе и вÑемени пÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²ÐµÐ±Ð¸Ð½Ð°Ñа по Email или в СÐС ÑообÑении.</p><p>ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии ÐÑ Ð¼Ð¾Ð¶ÐµÑе обÑаÑиÑÑÑÑ Ð² наÑÑ ÑлÑÐ¶Ð±Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки.</p>', 'success', 10); 247 $(form).find('.form-input').val(''); 248 $(form).find('button.main-btn').attr('disabled', false); 249 }, 250 error:function(data){ 251 var errors = data.responseJSON.errors; 252 253 var errMsg = 'Ðоле не заполнено или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑоÑмаÑ', 254 policyError = 'ÐожалÑйÑÑа подÑвеÑдиÑе ÑоглаÑие Ñ ÑÑловиÑми'; 255 256 $.each(errors, function(input, error){ 257 $(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 258 if(input == 'acceptPolicy'){ 259 $(form).find('input[name="acceptPolicy"]').closest('label').addClass('form-control is-invalid').after('<span class="invalid-feedback" role="alert">'+policyError+'</span>') 260 }else{ 261 $(form).find('.form-input[name="'+input+'"]').after('<span class="invalid-feedback" role="alert">'+errMsg+'</span>'); 262 } 263 }); 264 $(form).find('button.main-btn').attr('disabled', false); 265 } 266 }); 267 } 268 }); 269 270 // poll functionality 271 setTimeout(function(){ 272 $('.show-poll-btn').click(); 273 }, 10000); 274 275 $(document).on('click', '.show-poll-btn', function(){ 276 $('#pollModal').show(); 277 }); 278 279 $(document).on('click', '.change-step-btn', function(){ 280 var step = $(this).data('step'); 281 282 $(this).closest('.poll-step').removeClass('active-step'); 283 $('.poll-step[data-step="'+step+'"]').addClass('active-step'); 284 }); 285 286 $(document).on('submit', '#pollForm', function(e){ 287 e.preventDefault(); 288 var form = $('#pollForm')[0]; 289 var data = new FormData(form); 290 291 var url = '/send-poll'; 292 293 $(form).find('.invalid-feedback').remove(); 294 $(form).find('.form-input').removeClass('is-invalid'); 295 $(form).find('button.main-btn').attr('disabled', true); 296 if(data){ 297 $.ajax({ 298 type:'POST', 299 url: url, 300 data:data, 301 processData: false, 302 contentType: false, 303 success:function(data){ 304 $('.poll-step').removeClass('active-step'); 305 $('.poll-step[data-step="6"]').addClass('active-step'); 306 $(form).find('button.main-btn').attr('disabled', false); 307 }, 308 error:function(data){ 309 var errors = data.responseJSON.errors; 310 311 $('.poll-step').removeClass('active-step'); 312 $('.poll-step[data-step="2"]').addClass('active-step'); 313 314 $.each(errors, function(input, error){ 315 var errMsg = ''; 316 if(input == 'name'){ 317 errMsg = 'Ðоле должно бÑÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾'; 318 } 319 if(input == 'phone'){ 320 errMsg = 'Ðоле не заполнено или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑоÑмаÑ'; 321 } 322 var inputItem = $(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 323 324 $(inputItem).after('<span class="invalid-feedback" role="alert">'+errMsg+'</span>'); 325 }); 326 $(form).find('button.main-btn').attr('disabled', false); 327 } 328 }); 329 } 330 }); 331 332 $(document).on('click', '.close-poll-btn', function(){ 333 $.ajax({ 334 type:'GET', 335 url: '/close-poll', 336 data:{}, 337 processData: false, 338 contentType: false, 339 success:function(data){ 340 $('#pollModal .close').click(); 341 }, 342 error:function(data){ 343 344 } 345 }); 346 }); 347 348 $(document).on('click', '.answer-btn', function(){ 349 var answersBlock = $(this).closest('.poll-answers'), 350 questionInput = $('input[name="'+ answersBlock.data('question')+'"]'); 351 352 answersBlock.find('.answer-btn').removeClass('active-answer'); 353 $(this).addClass('active-answer'); 354 355 $(questionInput).val($(this).html()); 356 }); 357 358 $(document).on('submit', '#brandingForm', function(e){
359 e.preventDefault(); 360 var form = $('#brandingForm')[0]; 361 var data = new FormData(form); 362 363 var url = $(form).attr('action'); 364 365 $(form).find('.invalid-feedback').remove(); 366 $(form).find('.form-input, label').removeClass('is-invalid'); 367 $(form).find('label').removeClass('form-control'); 368 $(form).find('button.main-btn').attr('disabled', true); 369 if(data){ 370 $.ajax({ 371 type:'POST', 372 url: url, 373 data:data, 374 processData: false, 375 contentType: false, 376 success:function(data){ 377 showMessage('ÐаÑа заÑвка оÑпÑавлена!'); 378 $(form).find('.form-input').val(''); 379 $(form).find('button.main-btn').attr('disabled', false); 380 }, 381 error:function(data){ 382 var errors = data.responseJSON.errors; 383 var errMsg = 'Ðоле не заполнено или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑоÑмаÑ'; 384 385 $.each(errors, function(input, error){ 386 $(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 387 }); 388 $(form).find('input[name="phone"]').after('<span class="invalid-feedback" role="alert">'+errMsg+'</span>'); 389 $(form).find('button.main-btn').attr('disabled', false); 390 } 391 }); 392 } 393 }); 394 395 $(document).on('click', '.scroll-to-btn', function(){ 396 if($('.menu-open').length){ 397 $('.menu-btn').trigger('click'); 398 } 399 scrollTo($(this).data('scroll-to')); 400 }); 401 402 $(document).on('submit', '#getContactsForm', function(e){ 403 e.preventDefault(); 404 var form = $('#getContactsForm')[0]; 405 var data = new FormData(form); 406 407 var url = $(form).attr('action'); 408 409 $(form).find('.invalid-feedback').remove(); 410 $(form).find('.form-input, label').removeClass('is-invalid'); 411 412 if(data){ 413 $.ajax({ 414 type: form.method, 415 url: url, 416 data:data, 417 processData: false, 418 contentType: false, 419 success:function(data){ 420 if(data.contacts){ 421 $('.contacts-container').html(data.contacts); 422 }else{ 423 grecaptcha.reset(contactsRecaptcha); 424 } 425 }, 426 error:function(data){ 427 var errors = data.responseJSON.errors; 428 429 //$(form).find('.form-input[name="'+input+'"]').addClass('is-invalid'); 430 $(form).find('#contactsRecaptcha').after('<span class="invalid-feedback d-block" role="alert">'+errors.recaptcha[0]+'</span>'); 431 432 grecaptcha.reset(contactsRecaptcha); 433 } 434 }); 435 } 436 }); 437 438}); 439 440function showMessage(message, type = 'success', delay = 3){ 441 $('.info-message').remove(); 442 $('.page').append('<div class="info-message '+type+'-message">'+message+'</div>'); 443 444 $('.info-message').fadeIn().delay(delay*1000).fadeOut(); 445 delay++; 446 setTimeout(function(){ 447 $('.info-message').remove(); 448 }, delay*1000); 449} 450 451function onRequestSubmit() { 452 $('#contactsForm').submit(); 453} 454function onCallSubmit() { 455 $('#callForm').submit(); 456} 457 458function onPartnerSubmit() { 459 $('#partnersForm').submit(); 460} 461 462function onBrandingSubmit(token) { 463 $('#brandingForm').submit(); 464} 465 466function checkLength(input, length = 15) { 467 if($(input).val().length == length) 468 return false; 469 return true; 470} 471 472function onloadCallback(){ 473 var sitekey = '6LdzTPggAAAAADi4F7SShCmNf3jH--NJ2K5h5jmJ'; 474 475 contactRecaptcha = grecaptcha.render('contactRecaptcha', { 476 'sitekey' : sitekey, 477 //'size': 'invisible', 478 }); 479 480 if($('#callRecaptcha').length){ 481 callRecaptcha = grecaptcha.render('callRecaptcha', { 482 'sitekey' : sitekey, 483 //'size': 'invisible', 484 }); 485 } 486 487 if($('#contactsRecaptcha').length){ 488 contactsRecaptcha = grecaptcha.render('contactsRecaptcha', { 489 'sitekey' : sitekey, 490 }); 491 } 492} 493 494function scrollTo(scrollToElem){ 495 $('html, body, .page').animate({ 496 scrollTop: $(scrollToElem).offset().top - 70 497 }, 1000); 498} 499 500function calcHeight(){ 501 let vh = window.innerHeight * 0.01; 502 $('body').attr('style', '--vh:'+vh+'px'); 503}
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.