1var getRandomInt = function(min, max){ 2 return Math.floor(Math.random() * (max - min)) + min; 3} 4 5var number_format = function(number, decimals, dec_point, thousands_sep) { 6 number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); 7 var n = !isFinite(+number) ? 0 : +number, 8 prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), 9 sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, 10 dec = (typeof dec_point === 'undefined') ? '.' : dec_point, 11 s = '', 12 toFixedFix = function(n, prec){ 13 var k = Math.pow(10, prec); 14 return '' + (Math.round(n*k)/k).toFixed(prec); 15 }; 16 17 // Fix for IE parseFloat(0.55).toFixed(0) = 0; 18 s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); 19 20 if (s[0].length > 3) { 21 s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); 22 } 23 24 if ((s[1] || '') 25 .length < prec) { 26 s[1] = s[1] || ''; 27 s[1] += new Array(prec - s[1].length + 1).join('0'); 28 } 29 30 return s.join(dec); 31} 32 33var CheckTopMenuDotted = function(){ 34 var menu = $('nav.mega-menu'); 35 var menuMoreItem = menu.find('td.js-dropdown'); 36 if(menu.parents('.collapse').css('display') == 'none'){ 37 return false; 38 } 39 40 var block_w = menu.closest('div').actual('width'); 41 var menu_w = menu.find('table').actual('outerWidth'); 42 var afterHide = false;
43 44 while(menu_w > block_w) { 45 menuItemOldSave = menu.find('td').not('.nosave').last(); 46 if(menuItemOldSave.length){ 47 menuMoreItem.show(); 48 menuItemNewSave = '<li class="' + (menuItemOldSave.hasClass('dropdown') ? 'dropdown-submenu ' : '') + (menuItemOldSave.hasClass('active') ? 'active ' : '') + '" data-hidewidth="' + menu_w + '">' + menuItemOldSave.find('.wrap').html() + '</li>'; 49 menuItemOldSave.remove(); 50 menuMoreItem.find('> .wrap > .dropdown-menu').prepend(menuItemNewSave); 51 menu_w = menu.find('table').actual('outerWidth'); 52 afterHide = true; 53 } 54 else{ 55 break; 56 } 57 } 58 59 if(!afterHide) { 60 do { 61 var menuItemOldSaveCnt = menuMoreItem.find('>.wrap>.dropdown-menu>li').length; 62 if(!menuItemOldSaveCnt) { 63 menuMoreItem.hide(); 64 break; 65 } 66 else { 67 menuItemOldSave = menuMoreItem.find('>.wrap>.dropdown-menu>li').first(); 68 var hideWidth = menuItemOldSave.attr('data-hidewidth'); 69 if(hideWidth > block_w) { 70 break 71 } 72 else { 73 menuItemNewSave = '<td class="' + (menuItemOldSave.hasClass('dropdown-submenu') ? 'dropdown ' : '') + (menuItemOldSave.hasClass('active') ? 'active ' : '') + '" data-hidewidth="' + block_w + '"><div class="wrap">' + menuItemOldSave.html() + '</div></td>'; 74 menuItemOldSave.remove(); 75 $(menuItemNewSave).insertBefore(menu.find('td.js-dropdown')); 76 if(!menuItemOldSaveCnt) { 77 menuMoreItem.hide(); 78 break; 79 } 80 } 81 } 82 menu_w = menu.find('table').actual('outerWidth'); 83 } 84 while(menu_w <= block_w); 85 } 86 87 menu.find('td').css('visibility', 'visible'); 88 89 return false; 90} 91 92var CheckTopVisibleMenu = function(that) { 93 var dropdownMenu = $('.dropdown-menu:visible').last(); 94 if(dropdownMenu.length){ 95 dropdownMenu.find('a').css('white-space', ''); 96 dropdownMenu.css('left', ''); 97 dropdownMenu.css('right', ''); 98 dropdownMenu.removeClass('toright'); 99 100 var dropdownMenu_left = dropdownMenu.offset().left; 101 if(typeof(dropdownMenu_left) != 'undefined'){ 102 var menu = dropdownMenu.parents('.mega-menu'); 103 var menu_width = menu.outerWidth(); 104 var menu_left = menu.offset().left; 105 var menu_right = menu_left + menu_width; 106 var isToRight = dropdownMenu.parents('.toright').length > 0; 107 var parentsDropdownMenus = dropdownMenu.parents('.dropdown-menu'); 108 var isHasParentDropdownMenu = parentsDropdownMenus.length > 0; 109 if(isHasParentDropdownMenu){ 110 var parentDropdownMenu_width = parentsDropdownMenus.first().outerWidth(); 111 var parentDropdownMenu_left = parentsDropdownMenus.first().offset().left; 112 var parentDropdownMenu_right = parentDropdownMenu_width + parentDropdownMenu_left; 113 } 114 115 if(parentDropdownMenu_right + dropdownMenu.outerWidth() > menu_right){ 116 dropdownMenu.find('a').css('white-space', 'normal'); 117 } 118 119 var dropdownMenu_width = dropdownMenu.outerWidth(); 120 var dropdownMenu_right = dropdownMenu_left + dropdownMenu_width; 121 122 if(dropdownMenu_right > menu_right || isToRight){ 123 var addleft = 0; 124 addleft = menu_right - dropdownMenu_right; 125 if(isHasParentDropdownMenu || isToRight){ 126 dropdownMenu.css('left', 'auto'); 127 dropdownMenu.css('right', '100%'); 128 dropdownMenu.addClass('toright'); 129 } 130 else{ 131 var dropdownMenu_curLeft = parseInt(dropdownMenu.css('left')); 132 dropdownMenu.css('left', (dropdownMenu_curLeft + addleft) + 'px'); 133 } 134 } 135 } 136 } 137} 138 139var CheckPopupTop = function(){ 140 var popup = $('.jqmWindow.show'); 141 if(popup.length){ 142 var windowHeight = $(window).height(); 143 var popupTop = parseInt(popup.css('top')); 144 var popupHeight = popup.height(); 145 146 if(windowHeight >= popupHeight){ 147 // center 148 popupTop = (windowHeight - popupHeight) / 2; 149 } 150 else{ 151 if(documentScrollTop > documentScrollTopLast){ 152 // up 153 popupTop -= documentScrollTop - documentScrollTopLast; 154 } 155 else if(documentScrollTop < documentScrollTopLast){ 156 // down 157 popupTop += documentScrollTopLast - documentScrollTop; 158 } 159 160 if(popupTop + popupHeight < windowHeight){ 161 // bottom 162 popupTop = windowHeight - popupHeight; 163 } 164 else if(popupTop > 0){ 165 // top 166 popupTop = 0; 167 } 168 } 169 popup.css('top', popupTop + 'px'); 170 } 171} 172 173var CheckMainBannerSliderVText = function(slider){ 174 if(slider.parents('.banners-big').length){ 175 var sh = slider.height(); 176 slider.find('.item').each(function() { 177 var curSlideTextInner = $(this).find('.text .inner'); 178 if(curSlideTextInner.length){
179 var ith = curSlideTextInner.actual('height'); 180 var p = (ith >= sh ? 0 : Math.floor((sh - ith) / 2)); 181 curSlideTextInner.css('padding-top', p + 'px'); 182 } 183 }); 184 } 185} 186 187var CheckStickyFooter = function() { 188 $(window).resize(function() { // BX.addCustomEvent('onWindowResize', function(eventdata) { 189 try{ 190 var footerHeight = $('footer').outerHeight(); 191 ignoreResize.push(true); 192 $('footer').css('margin-top', '-' + footerHeight + 'px'); 193 $('.body').css('margin-bottom', '-' + footerHeight + 'px'); 194 $('.main').css('padding-bottom', footerHeight + 25 + 'px'); 195 ignoreResize.pop(); 196 } 197 catch(e){} 198 }); 199} 200 201var getGridSize = function(counts) { 202 var z = parseInt($('.body_media').css('top')); 203 return (z == 2 ? counts[0] : z == 1 ? counts[1] : counts[2]); 204} 205 206var CheckFlexSlider = function(){ 207 $('.flexslider:not(.thmb)').each(function(){ 208 var slider = $(this); 209 slider.resize(); 210 var counts = slider.data('flexslider').vars.counts; 211 if(typeof(counts) != 'undefined'){ 212 var cnt = getGridSize(counts); 213 var to0 = (cnt != slider.data('flexslider').vars.minItems || cnt != slider.data('flexslider').vars.maxItems || cnt != slider.data('flexslider').vars.move); 214 if(to0){ 215 slider.data('flexslider').vars.minItems = cnt; 216 slider.data('flexslider').vars.maxItems = cnt; 217 slider.data('flexslider').vars.move = cnt; 218 slider.flexslider(0); 219 slider.resize(); 220 slider.resize(); // twise! 221 } 222 } 223 }); 224} 225 226var CheckHeaderFixed = function(){ 227 var header = $('header.canfixed'); 228 if(header.length){ 229 var headerLogoAndMenuRow = header.find('.logo_and_menu-row'); 230 if(headerLogoAndMenuRow.length){ 231 var isHeaderFixed = false; 232 var headerCanFix = true; 233 var headerFixedHeight = 53; 234 var headerNormalHeight = headerLogoAndMenuRow.actual('outerHeight'); 235 var headerDiffHeight = headerNormalHeight - headerFixedHeight; 236 var mobileBtnMenu = $('.btn.btn-responsive-nav'); 237 $(window).scroll(function(){ 238 var headerTop = $('#panel:visible').outerHeight(); 239 var scrollTop = $(window).scrollTop(); 240 if(!isHeaderFixed){ 241 headerNormalHeight = headerLogoAndMenuRow.actual('outerHeight'); 242 headerDiffHeight = headerNormalHeight - headerFixedHeight; 243 } 244 245 headerCanFix = !mobileBtnMenu.is(':visible') && !$('.dropdown-menu:visible').length; 246 247 if(!isHeaderFixed){ 248 if((scrollTop > headerNormalHeight + headerTop) && headerCanFix){ 249 isHeaderFixed = true; 250 var headerNext = header.next(); 251 if(headerNext.length){ 252 var mt = parseInt(headerNext.css('margin-top')); 253 } 254 header.css('top', '-' + headerNormalHeight + 'px'); 255 header.addClass('fixed'); 256 if(headerNext.length){ 257 headerNext.css('margin-top', headerNormalHeight + mt + 'px'); 258 } 259 header.delay(0).animate({top: '0'}, 300); 260 } 261 } 262 else if(isHeaderFixed || !headerCanFix){ 263 if((scrollTop <= headerDiffHeight + headerTop) || !headerCanFix){ 264 isHeaderFixed = false; 265 header.stop(true, true).css('top', ''); 266 header.removeClass('fixed'); 267 var headerNext = header.next(); 268 if(headerNext.length){ 269 headerNext.css('margin-top', ''); 270 } 271 CheckTopMenuDotted(); 272 } 273 } 274 }); 275 } 276 } 277} 278 279var CheckObjectsSizes = function() { 280 $('.container iframe,.container object,.container video').each(function() { 281 var height_attr = $(this).attr('height'); 282 var width_attr = $(this).attr('width'); 283 if (height_attr && width_attr) { 284 $(this).css('height', $(this).outerWidth() * height_attr / width_attr); 285 } 286 }); 287} 288 289var InitScrollToTop = function(){ 290 if(arScorpOptions.THEME.SCROLLTOTOP_TYPE !== 'NONE'){ 291 scrollToTopAnimateClassIn = arScorpOptions.THEME.SCROLLTOTOP_TYPE.indexOf('ROUND') !== -1 ? 'rotateIn' : 'rubberBand'; 292 scrollToTopAnimateClassOut = arScorpOptions.THEME.SCROLLTOTOP_TYPE.indexOf('ROUND') !== -1 ? 'rotateOut' : 'flipOutX'; 293 294 $('body').append($('<a />').addClass('scroll-to-top ' + arScorpOptions.THEME.SCROLLTOTOP_TYPE + ' ' + arScorpOptions.THEME.SCROLLTOTOP_POSITION).attr({'href': '#', 'id': 'scrollToTop'})); 295 296 $scrolltotop = $('#scrollToTop'); 297 298 $scrolltotop.click(function(e){ 299 e.preventDefault(); 300 $('body, html').animate({scrollTop : 0}, 500); 301 return false;
302 }); 303 } 304} 305 306var CheckScrollToTop = function(){ 307 if($scrolltotop.length){ 308 if(documentScrollTop > 150){ 309 $scrolltotop.stop(true, true).addClass('visible').addClass('animated'); 310 if(scrollToTopAnimateClassOut){ 311 $scrolltotop.removeClass(scrollToTopAnimateClassOut); 312 } 313 if(scrollToTopAnimateClassIn){ 314 $scrolltotop.addClass(scrollToTopAnimateClassIn); 315 } 316 } 317 else{ 318 $scrolltotop.stop(true, true).removeClass('visible'); 319 if(scrollToTopAnimateClassIn){ 320 $scrolltotop.removeClass(scrollToTopAnimateClassIn); 321 } 322 if(scrollToTopAnimateClassOut){ 323 $scrolltotop.addClass(scrollToTopAnimateClassOut); 324 } 325 } 326 327 var bottom = 23; 328 var scrollVal = $(window).scrollTop(); 329 var windowHeight = $(window).height(); 330 var footerOffset = $('footer').offset().top; 331 332 if(scrollVal + windowHeight > footerOffset){ 333 $scrolltotop.css('bottom', bottom + scrollVal + windowHeight - footerOffset); 334 } 335 else if(parseInt($scrolltotop.css('bottom')) > bottom){ 336 $scrolltotop.css('bottom', bottom); 337 } 338 } 339} 340 341function pauseMainBanner(){ 342 $('.banners-big .flexslider').flexslider('pause'); 343} 344 345function playMainBanner(){ 346 $('.banners-big .flexslider').flexslider('play'); 347} 348 349function startMainBannerSlideVideo($slide){ 350 var slideActiveIndex = $slide.attr('data-slide_index') 351 var $slides = $slide.closest('.items').find('.item[data-slide_index="'+ slideActiveIndex +'"]') // current slide & cloned 352 var videoSource = $slide.attr('data-video_source') 353 354 if(videoSource){ 355 $slides.addClass('loading') 356 pauseMainBanner() 357 358 var videoPlayerSrc = $slide.attr('data-video_src') 359 var videoSoundDisabled = $slide.attr('data-video_disable_sound') 360 var bVideoSoundDisabled = videoSoundDisabled == 1 361 var videoLoop = $slide.attr('data-video_loop') 362 var bVideoLoop = videoLoop == 1 363 var videoCover = $slide.attr('data-video_cover') 364 var bVideoCover = videoCover == 1 // && !isMobile 365 var videoUnderText = $slide.attr('data-video_under_text') 366 var bVideoUnderText = videoUnderText == 1 367 var videoPlayer = $slide.attr('data-video_player') 368 var bVideoPlayerYoutube = videoPlayer === 'YOUTUBE' 369 var bVideoPlayerVimeo = videoPlayer === 'VIMEO' 370 var bVideoPlayerRutube = videoPlayer === 'RUTUBE' 371 var bVideoPlayerHtml5 = videoPlayer === 'HTML5' 372 373 if(videoPlayerSrc && !$slide.find('.video').length){ 374 375 var InitPlayer = function(){ 376 $slides.each(function(i, node){ 377 var $_slide = $(node); 378 var videoID = getRandomInt(100, 1000); 379 var bClone = $_slide.hasClass('clone') 380 381 if(bVideoPlayerYoutube){ 382 $_slide.prepend('<iframe id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'); 383 } 384 else if(bVideoPlayerVimeo){ 385 $_slide.prepend('<iframe id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'); 386 } 387 else if(bVideoPlayerRutube){ 388 videoPlayerSrc = videoPlayerSrc + '&playerid=' + videoID; 389 $_slide.prepend('<iframe id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'); 390 } 391 else if(bVideoPlayerHtml5){ 392 $_slide.prepend('<video id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '"' + (bVideoLoop ? ' loop ' : '') + (bVideoSoundDisabled || bClone ? ' muted ' : '') + '><source src="'+ videoPlayerSrc +'" type=\'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\' /><p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video</p></iframe>'); 393 } 394 395 if(typeof(players) !== 'undefined' && players){ 396 players[videoID] = { 397 id: 'player_' + videoID, 398 mute: bVideoSoundDisabled || bClone, 399 loop: bVideoLoop, 400 cover: bVideoCover, 401 videoPlayer: videoPlayer, 402 slideIndex: slideActiveIndex, 403 clone: bClone, 404 playing: false 405 }; 406 407 if(bVideoPlayerYoutube){ 408 window[players[videoID].id] = new YT.Player( 409 players[videoID].id, { 410 events: { 411 'onReady': function (e) { 412 //var videoID = e.target.h.id.replace('player_', ''); 413 //console.log($(e.target).attr('id'));
414 if(videoID){ 415 var mute = players[videoID].mute 416 var cover = players[videoID].cover 417 var clone = players[videoID].clone 418 419 // mute sound 420 if(mute || clone){ 421 window[players[videoID].id].mute() 422 } 423 424 // cover video 425 if(cover){ 426 CoverPlayer() 427 } 428 429 // not start clone video playing 430 if(clone){ 431 setTimeout(function(){ 432 e.target.pauseVideo() 433 }, 100) 434 } 435 else{ 436 // stop slider 437 pauseMainBanner() 438 439 e.target.playVideo() 440 } 441 442 // update slide class 443 var $slide = $('#player_' + videoID).closest('.item') 444 $slide.addClass('started') 445 $slide.removeClass('loading') 446 } 447 }, 448 'onStateChange': function (e){ 449 //var videoID = e.target.h.id.replace('player_', ''); 450 //console.log(e.target); 451 //console.log(videoID); 452 if(videoID){ 453 var clone = players[videoID].clone 454 var loop = players[videoID].loop 455 var slideIndex = players[videoID].slideIndex 456 457 if(!clone){ 458 if(e.data === YT.PlayerState.PLAYING){ 459 players[videoID].playing = true 460 461 // stop slider 462 pauseMainBanner() 463 } 464 else if(e.data === YT.PlayerState.PAUSED){ 465 players[videoID].playing = false 466 467 // sync time in cloned players & pause 468 var time = Math.floor(window[players[videoID].id].getCurrentTime() * 10) / 10 469 window[players[videoID].id].seekTo(time, true) 470 for(var j in players){ 471 if(players[j].slideIndex == slideIndex && players[j].clone){ 472 window[players[j].id].pauseVideo() 473 window[players[j].id].seekTo(time, true) 474 } 475 } 476 } 477 else if(e.data === YT.PlayerState.ENDED){ 478 players[videoID].playing = false 479 if(loop){ 480 e.target.playVideo() 481 } 482 else{ 483 // play slider 484 playMainBanner() 485 } 486 } 487 } 488 } 489 } 490 } 491 } 492 ); 493 } 494 else if(bVideoPlayerVimeo){ 495 window[players[videoID].id] = new Vimeo.Player(document.getElementById(players[videoID].id), {autopause: false, byline: false, loop: false, title: false}); 496 window[players[videoID].id].on('loaded', onVimeoPlayerReady) 497 window[players[videoID].id].on('play', onVimeoPlayerStateChange) 498 window[players[videoID].id].on('pause', onVimeoPlayerStateChange) 499 window[players[videoID].id].on('ended', onVimeoPlayerStateChange) 500 } 501 else if(bVideoPlayerRutube){ 502 document.getElementById(players[videoID].id).onload = function(e){ 503 var videoID = this.id.replace('player_', '') 504 players[videoID].contentWindow = this.contentWindow 505 onRutubePlayerReady(videoID) 506 } 507 } 508 else if(bVideoPlayerHtml5){ 509 document.getElementById(players[videoID].id).addEventListener('loadeddata', onHtml5PlayerReady) 510 document.getElementById(players[videoID].id).addEventListener('play', onHtml5PlayerStateChange) 511 document.getElementById(players[videoID].id).addEventListener('pause', onHtml5PlayerStateChange) 512 document.getElementById(players[videoID].id).addEventListener('ended', onHtml5PlayerStateChange) 513 } 514 } 515 }); 516 } 517 518 if(!bVideoPlayerHtml5){ 519 var obPlayerVariable = '' 520 var fnPlayerVariable = '' 521 if(typeof window['YoutubePlayerScriptLoaded'] === 'undefined'){ 522 window['YoutubePlayerScriptLoaded'] = false 523 } 524 if(typeof window['VimeoPlayerScriptLoaded'] === 'undefined'){ 525 window['VimeoPlayerScriptLoaded'] = false 526 } 527 if(typeof window['RutubePlayerListnersAdded'] === 'undefined'){ 528 window['RutubePlayerListnersAdded'] = false 529 } 530 531 // load script 532 if(bVideoPlayerYoutube){ 533 obPlayerVariable = 'YT' 534 fnPlayerVariable = 'Player' 535 if(!window['YoutubePlayerScriptLoaded']){ 536 var script = document.createElement('script'); 537 script.src = "https://www.youtube.com/iframe_api"; 538 var firstScriptTag = document.getElementsByTagName('script')[0]; 539 firstScriptTag.parentNode.insertBefore(script, firstScriptTag); 540 window['YoutubePlayerScriptLoaded'] = true; 541 } 542 } 543 else if(bVideoPlayerVimeo){ 544 obPlayerVariable = 'Vimeo' 545 if(!window['VimeoPlayerScriptLoaded']){ 546 var script = document.createElement('script'); 547 script.src = 'https://player.vimeo.com/api/player.js'; 548 (document.head || document.documentElement).appendChild(script); 549 window['VimeoPlayerScriptLoaded'] = true 550 } 551 } 552 else if(bVideoPlayerRutube){ 553 if(!window['RutubePlayerListnersAdded']){ 554 window.addEventListener('message', function(e){ 555 if(e.origin.indexOf('rutube.ru') !== -1){ 556 var message = JSON.parse(e.data) 557 if(typeof message === 'object' && message){ 558 if(typeof message.type !== 'undefined' && message.type){ 559 var videoID = false 560 561 for(var j in players){ 562 if(typeof players[j].contentWindow !== 'undefined'){ 563 if(players[j].contentWindow == e.source){ 564 videoID = j 565 break 566 } 567 } 568 } 569
570 if(videoID){ 571 switch (message.type) { 572 case 'player:changeState': 573 onRutubePlayerStateChange(videoID, message.data.state) 574 break 575 case 'player:currentTime': 576 onRutubePlayerCurrentTime(videoID, message.data.time) 577 break 578 } 579 } 580 } 581 } 582 } 583 }); 584 } 585 } 586 587 if(!obPlayerVariable.length){ 588 InitPlayer() 589 } 590 else{ 591 // wait player class 592 if(typeof window[obPlayerVariable] === 'object'){ 593 if(!fnPlayerVariable.length || (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === 'function')){ 594 595 InitPlayer() 596 } 597 } 598 else{ 599 var waitPlayerInterval = setInterval(function(){ 600 if(typeof window[obPlayerVariable] === 'object'){ 601 if(!fnPlayerVariable.length || (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === 'function')){ 602 603 clearInterval(waitPlayerInterval) 604 605 InitPlayer() 606 } 607 } 608 }, 50) 609 } 610 } 611 612 } 613 else{ 614 InitPlayer() 615 } 616 } 617 } 618} 619 620var CoverPlayer = function(){ 621 var $videoCover = $('.video.cover') 622 if($videoCover.length){ 623 var bannersHeight = $('.banners-big').height() 624 var bannersWidth = $('.banners-big').width() 625 var windowWidth = $(window).width() 626 var height = windowWidth * 9 / 16 627 $videoCover.css({'height': height + 'px', 'margin-top': ((bannersHeight - height) / 2) + 'px'}) 628 } 629} 630 631/* 632function onYoutubePlayerReady(e) { 633 var videoID = e.target.h.id.replace('player_', ''); 634 //console.log($(e.target).attr('id')); 635 if(videoID){ 636 var mute = players[videoID].mute 637 var cover = players[videoID].cover 638 var clone = players[videoID].clone 639 640 // mute sound 641 if(mute || clone){ 642 window[players[videoID].id].mute() 643 } 644 645 // cover video 646 if(cover){ 647 CoverPlayer() 648 } 649 650 // not start clone video playing 651 if(clone){ 652 setTimeout(function(){ 653 e.target.pauseVideo() 654 }, 100) 655 } 656 else{ 657 // stop slider 658 pauseMainBanner() 659 660 e.target.playVideo() 661 } 662 663 // update slide class 664 var $slide = $('#player_' + videoID).closest('.item') 665 $slide.addClass('started') 666 $slide.removeClass('loading') 667 } 668} 669 670function onYoutubePlayerStateChange(e){ 671 var videoID = e.target.h.id.replace('player_', ''); 672 //console.log(e.target); 673 console.log($(e.target)); 674 if(videoID){ 675 var clone = players[videoID].clone 676 var loop = players[videoID].loop 677 var slideIndex = players[videoID].slideIndex 678 679 if(!clone){ 680 if(e.data === YT.PlayerState.PLAYING){ 681 players[videoID].playing = true 682 683 // stop slider 684 pauseMainBanner() 685 } 686 else if(e.data === YT.PlayerState.PAUSED){ 687 players[videoID].playing = false 688 689 // sync time in cloned players & pause 690 var time = Math.floor(window[players[videoID].id].getCurrentTime() * 10) / 10 691 window[players[videoID].id].seekTo(time, true) 692 for(var j in players){ 693 if(players[j].slideIndex == slideIndex && players[j].clone){ 694 window[players[j].id].pauseVideo() 695 window[players[j].id].seekTo(time, true) 696 } 697 } 698 } 699 else if(e.data === YT.PlayerState.ENDED){ 700 players[videoID].playing = false 701 if(loop){ 702 e.target.playVideo() 703 } 704 else{ 705 // play slider 706 playMainBanner() 707 } 708 } 709 } 710 } 711} 712*/ 713 714function onVimeoPlayerReady(e){ 715 var videoID = this.element.id.replace('player_', '') 716 if(videoID){ 717 var mute = players[videoID].mute 718 var cover = players[videoID].cover 719 var clone = players[videoID].clone 720 721 // mute sound 722 if(mute || clone){ 723 window[players[videoID].id].setVolume(0) 724 } 725 726 // cover video 727 if(cover){ 728 CoverPlayer() 729 } 730 731 // not start clone video playing 732 if(clone){ 733 setTimeout(function(){ 734 window[players[videoID].id].pause() 735 }, 100) 736 } 737 else{ 738 // stop slider 739 pauseMainBanner() 740 741 window[players[videoID].id].play() 742 } 743 744 // update slide class 745 var $slide = $('#player_' + videoID).closest('.item') 746 $slide.addClass('started') 747 $slide.removeClass('loading') 748 } 749} 750 751function onVimeoPlayerStateChange(e){
752 var videoID = this.element.id.replace('player_', '') 753 if(videoID){ 754 var cover = players[videoID].cover 755 var clone = players[videoID].clone 756 var loop = players[videoID].loop 757 var slideIndex = players[videoID].slideIndex 758 759 if(!clone){ 760 window[players[videoID].id].getPaused().then(function(paused){ 761 if(paused){ 762 players[videoID].playing = false 763 764 // sync time in cloned players & pause 765 window[players[videoID].id].getCurrentTime().then(function(seconds){ 766 var time = Math.floor(seconds * 10) / 10 767 window[players[videoID].id].setCurrentTime(time).then(function(seconds){ 768 for(var j in players){ 769 if(players[j].slideIndex == slideIndex && players[j].clone){ 770 window[players[j].id].pause() 771 window[players[j].id].setCurrentTime(time).then(function(seconds){}) 772 } 773 } 774 }) 775 }) 776 } 777 else{ 778 window[players[videoID].id].getEnded().then(function(ended){ 779 if(ended){ 780 players[videoID].playing = false 781 if(loop){ 782 window[players[videoID].id].play() 783 } 784 else{ 785 // play slider 786 playMainBanner() 787 } 788 } 789 else{ 790 players[videoID].playing = true 791 792 // stop slider 793 pauseMainBanner() 794 } 795 }) 796 } 797 }) 798 } 799 } 800} 801 802function onRutubePlayerReady(videoID){ 803 if(videoID){ 804 var mute = players[videoID].mute 805 var cover = players[videoID].cover 806 var clone = players[videoID].clone 807 var player = document.getElementById(players[videoID].id) 808 809 // mute sound 810 if(mute || clone){ 811 player.contentWindow.postMessage(JSON.stringify({ 812 type: 'player:mute', 813 data: {} 814 }), '*') 815 } 816 817 // cover video 818 if(cover){ 819 CoverPlayer() 820 } 821 822 // not start clone video playing 823 if(clone){ 824 setTimeout(function(){ 825 player.contentWindow.postMessage(JSON.stringify({ 826 type: 'player:pause', 827 data: {} 828 }), '*') 829 }, 100) 830 } 831 else{ 832 // stop slider 833 pauseMainBanner() 834 835 player.contentWindow.postMessage(JSON.stringify({ 836 type: 'player:play', 837 data: {} 838 }), '*') 839 } 840 841 // update slide class 842 var $slide = $('#player_' + videoID).closest('.item') 843 $slide.addClass('started') 844 $slide.removeClass('loading') 845 } 846} 847 848function onRutubePlayerCurrentTime(videoID, time){ 849 if(videoID){ 850 players[videoID].time = time 851 } 852} 853 854function onRutubePlayerStateChange(videoID, state){ 855 if(videoID){ 856 var clone = players[videoID].clone 857 var loop = players[videoID].loop 858 var slideIndex = players[videoID].slideIndex 859 var player = document.getElementById(players[videoID].id) 860 861 if(!clone){ 862 if(state === 'playing'){ 863 players[videoID].playing = true 864 865 // stop slider 866 pauseMainBanner() 867 } 868 else if(state === 'paused'){ 869 players[videoID].playing = false 870 871 // sync time in cloned players & pause 872 var time = Math.floor(players[videoID].time * 10) / 10 873 player.contentWindow.postMessage(JSON.stringify({ 874 type: 'player:setCurrentTime', 875 data: {time: time} 876 }), '*') 877 for(var j in players){ 878 if(players[j].slideIndex == slideIndex && players[j].clone){ 879 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 880 type: 'player:pause', 881 data: {} 882 }), '*') 883 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 884 type: 'player:setCurrentTime', 885 data: {time: time} 886 }), '*') 887 } 888 } 889 } 890 else if(state === 'stopped'){ 891 players[videoID].playing = false 892 if(loop){ 893 player.contentWindow.postMessage(JSON.stringify({ 894 type: 'player:play', 895 data: {} 896 }), '*') 897 } 898 else{ 899 // play slider 900 playMainBanner() 901 } 902 } 903 } 904 } 905} 906 907function onHtml5PlayerReady(e){ 908 var videoID = e.target.id.replace('player_', '') 909 if(videoID){ 910 var mute = players[videoID].mute 911 var cover = players[videoID].cover 912 var clone = players[videoID].clone 913 914 // mute sound 915 if(mute || clone){ 916 $('#' + players[videoID].id).prop('muted', true); 917 } 918 919 // cover video 920 if(cover){ 921 CoverPlayer() 922 } 923 924 // not start clone video playing 925 if(clone){ 926 e.target.pause() 927 } 928 else{ 929 // stop slider 930 pauseMainBanner() 931 932 e.target.play() 933 } 934 935 // update slide class 936 var $slide = $('#player_' + videoID).closest('.item') 937 $slide.addClass('started') 938 $slide.removeClass('loading') 939 } 940} 941 942function onHtml5PlayerStateChange(e){ 943 var videoID = e.target.id.replace('player_', '')
944 if(videoID){ 945 var cover = players[videoID].cover 946 var clone = players[videoID].clone 947 var loop = players[videoID].loop 948 var slideIndex = players[videoID].slideIndex 949 950 if(!clone){ 951 if(e.target.paused){ 952 players[videoID].playing = false 953 954 // sync time in cloned players & pause 955 var time = Math.floor(e.target.currentTime * 10) / 10 956 e.target.currentTime = time 957 for(var j in players){ 958 if(players[j].slideIndex == slideIndex && players[j].clone){ 959 document.getElementById(players[j].id).pause() 960 document.getElementById(players[j].id).currentTime = time 961 } 962 } 963 } 964 else if(e.target.ended){ 965 players[videoID].playing = false 966 if(loop){ 967 e.target.play() 968 } 969 else{ 970 // play slider 971 playMainBanner() 972 } 973 } 974 else{ 975 players[videoID].playing = true 976 977 // stop slider 978 pauseMainBanner() 979 } 980 } 981 } 982} 983 984var waitingExists = function(selector, delay, callback){ 985 if(typeof(callback) !== 'undefined' && selector.length && delay > 0){ 986 delay = parseInt(delay); 987 delay = (delay < 0 ? 0 : delay); 988 989 if(!$(selector).length){ 990 setTimeout(function(){ 991 waitingExists(selector, delay, callback); 992 }, delay); 993 } 994 else{ 995 callback(); 996 } 997 } 998} 999 1000var waitingNotExists = function(selectorExists, selectorNotExists, delay, callback){ 1001 if(typeof(callback) !== 'undefined' && selectorExists.length && selectorNotExists.length && delay > 0){ 1002 delay = parseInt(delay); 1003 delay = (delay < 0 ? 0 : delay); 1004 1005 setTimeout(function(){ 1006 if(selectorExists.length && !$(selectorNotExists).length){ 1007 callback(); 1008 } 1009 }, delay); 1010 } 1011} 1012 1013function onLoadjqm(hash){ 1014 var name = $(hash.t).data('name'), 1015 top = (($(window).height() > hash.w.height()) ? Math.floor(($(window).height() - hash.w.height()) / 2) : 0) + 'px'; 1016 $.each($(hash.t).get(0).attributes, function(index, attr){ 1017 if(/^data\-autoload\-(.+)$/.test(attr.nodeName)){ 1018 var key = attr.nodeName.match(/^data\-autoload\-(.+)$/)[1]; 1019 var el = $('input[name="'+key.toUpperCase()+'"]'); 1020 el.val( $(hash.t).data('autoload-'+key) ).attr('readonly', 'readonly'); 1021 el.attr('title', el.val()); 1022 } 1023 }); 1024 if($(hash.t).data('autohide')){ 1025 $(hash.w).data('autohide', $(hash.t).data('autohide')); 1026 } 1027 if(name == 'order_product'){ 1028 if($(hash.t).data('product')) { 1029 $('input[name="PRODUCT"]').val($(hash.t).data('product')).attr('readonly', 'readonly').attr('title', $('input[name="PRODUCT"]').val()); 1030 } 1031 } 1032 if(name == 'question'){ 1033 if($(hash.t).data('product')) { 1034 $('input[name="NEED_PRODUCT"]').val($(hash.t).data('product')).attr('readonly', 'readonly').attr('title', $('input[name="NEED_PRODUCT"]').val()); 1035 } 1036 } 1037 hash.w.addClass('show').css({'margin-left': '-' + Math.floor(hash.w.width() / 2) + 'px', 'top': top, 'opacity': 1}); 1038} 1039 1040function onHide(hash){ 1041 if($(hash.w).data('autohide')){ 1042 eval($(hash.w).data('autohide')); 1043 } 1044 hash.w.css('opacity', 0).removeClass('show'); 1045 hash.o.remove(); 1046 setTimeout(function(){ 1047 hash.w.empty(); 1048 }, 200); 1049} 1050 1051NativeActual = function(node, method, bOuter, bIncMargin){ 1052 if(typeof node === 'object' && node.nodeType && (typeof method === 'string') && method.length){ 1053 var r 1054 var bHidden = node.offsetParent === null 1055 if(bHidden){ 1056 var styleAttr = node.getAttribute('style') 1057 node.setAttribute('style', 'visibility: hidden !important; display: block !important;') 1058 } 1059 var style = node.currentStyle || window.getComputedStyle(node) 1060 if(method === 'height'){ 1061 r = node.offsetHeight - (!bOuter ? parseInt(style.paddingTop) + parseInt(style.paddingBottom) : 0) + (bIncMargin ? parseInt(style.marginTop) + parseInt(style.marginBottom) : 0) 1062 } 1063 else if(method === 'width'){ 1064 r = node.offsetWidth - (!bOuter ? parseInt(style.paddingLeft) + parseInt(style.paddingRight) : 0) + (bIncMargin ? parseInt(style.marginLeft) + parseInt(style.marginRight) : 0) 1065 } 1066 if(bHidden){ 1067 if(styleAttr === null){ 1068 node.removeAttribute('style') 1069 } 1070 else{ 1071 node.setAttribute('style', styleAttr) 1072 } 1073 } 1074 return r 1075 } 1076 return null 1077} 1078 1079$.fn.equalizeHeights = function(outer, native){ 1080 var arHeight = this.map(function(i, e){ 1081 if(typeof native !== 'undefined' && native){
1082 return NativeActual(e, 'height', outer); 1083 } 1084 else{ 1085 return $(e).actual(outer ? 'outerHeight' : 'height'); 1086 } 1087 }).get(); 1088 1089 var maxHeight = ((tmp = Math.max.apply(this, arHeight)) % 2) ? --tmp : tmp; 1090 1091 return this.height(maxHeight); 1092} 1093 1094$.fn.sliceHeight = function(options){ 1095 function _slice(el){ 1096 el.each(function() { 1097 $(this).css({'line-height': '', 'height': ''}); 1098 }); 1099 if(typeof(options.autoslicecount) === 'undefined' || options.autoslicecount !== false){ 1100 var elw = (el.first().hasClass('item') ? el.first().outerWidth() : el.first().parents('.item').outerWidth()); 1101 var elsw = el.first().parents('.items').outerWidth(); 1102 if(!elsw){ 1103 elsw = el.first().parents('.row').outerWidth(); 1104 } 1105 if(elsw && elw){ 1106 options.slice = Math.floor(elsw / elw); 1107 } 1108 } 1109 if(options.slice){ 1110 for(var i = 0, c = el.length; i < c; i += options.slice){ 1111 $(el.slice(i, i + options.slice)).equalizeHeights(options.outer, options.native); 1112 } 1113 } 1114 if(options.lineheight){ 1115 var lineheightAdd = parseInt(options.lineheight); 1116 if(isNaN(lineheightAdd)){ 1117 lineheightAdd = 0; 1118 } 1119 el.each(function() { 1120 $(this).css('line-height', ($(this).actual('height') + lineheightAdd) + 'px'); 1121 }); 1122 } 1123 } 1124 1125 var options = $.extend({ 1126 slice: null, 1127 outer: false, 1128 lineheight: false, 1129 autoslicecount: true, 1130 native: true 1131 }, options); 1132 1133 var el = $(this); 1134 _slice(el); 1135 1136 BX.addCustomEvent('onWindowResize', function(eventdata) { 1137 ignoreResize.push(true); 1138 _slice(el); 1139 ignoreResize.pop(); 1140 }); 1141} 1142 1143$.fn.jqmEx = function(){ 1144 $(this).each(function(){ 1145 var _this = $(this); 1146 var name = _this.data('name'); 1147 1148 if(name.length){ 1149 var script = arScorpOptions['SITE_DIR'] + 'ajax/form.php'; 1150 var paramsStr = ''; var trigger = ''; var arTriggerAttrs = {}; 1151 $.each(_this.get(0).attributes, function(index, attr){ 1152 var attrName = attr.nodeName; 1153 var attrValue = _this.attr(attrName); 1154 trigger += '[' + attrName + '=\"' + attrValue + '\"]'; 1155 arTriggerAttrs[attrName] = attrValue;
1156 if(/^data\-param\-(.+)$/.test(attrName)){ 1157 var key = attrName.match(/^data\-param\-(.+)$/)[1]; 1158 paramsStr += key + '=' + attrValue + '&'; 1159 } 1160 }); 1161 1162 var triggerAttrs = JSON.stringify(arTriggerAttrs); 1163 var encTriggerAttrs = encodeURIComponent(triggerAttrs); 1164 script += '?' + paramsStr + 'data-trigger=' + encTriggerAttrs; 1165 1166 if(!$('.' + name + '_frame[data-trigger="' + encTriggerAttrs + '"]').length){ 1167 if(_this.attr('disabled') != 'disabled'){ 1168 $('body').find('.' + name + '_frame[data-trigger="' + encTriggerAttrs + '"]').remove(); 1169 $('body').append('<div class="' + name + '_frame jqmWindow" style="width:500px" data-trigger="' + encTriggerAttrs + '"></div>'); 1170 $('.' + name + '_frame[data-trigger="' + encTriggerAttrs + '"]').jqm({trigger: trigger, onLoad: function(hash){onLoadjqm(hash);}, onHide: function(hash){onHide(hash);}, ajax:script}); 1171 } 1172 } 1173 } 1174 }); 1175} 1176 1177var InitFlexSlider = function() { 1178 $('.flexslider:not(.thmb):not(.flexslider-init)').each(function(){ 1179 var slider = $(this); 1180 var options; 1181 var defaults = { 1182 animationLoop: false, 1183 controlNav: false, 1184 directionNav: true, 1185 animation: "slide" 1186 } 1187 var config = $.extend({}, defaults, options, slider.data('plugin-options')); 1188 if(typeof(config.counts) != 'undefined' && config.direction !== 'vertical'){ 1189 config.maxItems = getGridSize(config.counts); 1190 config.minItems = getGridSize(config.counts); 1191 config.move = getGridSize(config.counts); 1192 config.itemWidth = 200; 1193 } 1194 1195 config.after = config.start = function(slider){ 1196 var eventdata = {slider: slider}; 1197 BX.onCustomEvent('onSlide', [eventdata]); 1198 } 1199 1200 config.end = function(slider){ 1201 var eventdata = {slider: slider}; 1202 BX.onCustomEvent('onSlideEnd', [eventdata]); 1203 } 1204 1205 slider.flexslider(config).addClass('flexslider-init'); 1206 if(config.controlNav) 1207 slider.addClass('flexslider-control-nav'); 1208 if(config.directionNav) 1209 slider.addClass('flexslider-direction-nav'); 1210 }); 1211} 1212 1213 1214// BASKET 1215var setBasketItemsClasses = function(){ 1216 if(typeof(arBasketItems) !== 'undefined' && Object.keys(arBasketItems).length){ 1217 for(var key in arBasketItems){ 1218 $('[data-item]').each(function(){ 1219 if($(this).data('item').ID == key){ 1220 $(this).find('.buy_block').addClass('in'); 1221 } 1222 }); 1223 } 1224 } 1225} 1226 1227var Summ = function(el, counterInputValueNew, price){ 1228 if(counterInputValueNew <= 0){ 1229 counterInputValueNew = 1; 1230 } 1231 var summ = number_format(counterInputValueNew*price, 0, '.', ' '); 1232 var allSumm = 0; 1233 el.closest('.items').find('.item').each(function(){ 1234 var $this = $(this), 1235 price = parseFloat($this.find('input[name=PRICE]').val()), 1236 count = parseFloat($this.find('input.count').val()); 1237 if(count <= 0){ 1238 count = 1; 1239 } 1240 if(!isNaN(price) && !isNaN(count)){ 1241 allSumm += count*price; 1242 } 1243 }); 1244 allSumm = number_format(parseFloat(allSumm), 0, '.', ' '); 1245 el.closest('.item').find('.summ .price_val').text(summ); 1246 el.closest('.basket').find('.foot .total>span').text(allSumm); 1247} 1248 1249var timerBasketUpdate = false; 1250var BasketCounter = function(el){ 1251 var bClassMinus = (el.hasClass('minus')), 1252 bClassPlus = (el.hasClass('plus')), 1253 bClassCount = (el.hasClass('count')), 1254 $buyBlock = el.closest('.buy_block'), 1255 $counterInput = el.closest('.counter').find('input.count'), 1256 counterInputValue = parseFloat($.trim($counterInput.val())), 1257 price = parseFloat($buyBlock.find('input[name=PRICE]').val()), 1258 bAjax = (el.closest('.basket').length ? true : false); 1259 1260 // class minus button 1261 if(bClassMinus){ 1262 var counterInputValueNew = counterInputValue - 1; 1263 if(counterInputValueNew <= 0){ 1264 counterInputValueNew = 1; 1265 } 1266 $counterInput.val(counterInputValueNew); 1267 if(bAjax){ 1268 Summ(el, counterInputValueNew, price); 1269 if(timerBasketUpdate){ 1270 clearTimeout(timerBasketUpdate); 1271 timerBasketUpdate = false; 1272 } 1273 timerBasketUpdate = setTimeout(function(){ 1274 BasketUpdate(el, counterInputValueNew); 1275 timerBasketUpdate = false; 1276 }, 700); 1277 } 1278 } 1279 // class plus button 1280 else if(bClassPlus){ 1281 var counterInputValueNew = counterInputValue + 1; 1282 var counterInputMaxCount = Math.pow(10, parseInt($counterInput.attr('maxlength')))
1282- 1; 1283 if(counterInputValueNew > counterInputMaxCount){ 1284 counterInputValueNew = counterInputMaxCount; 1285 } 1286 $counterInput.val(counterInputValueNew); 1287 if(bAjax){ 1288 Summ(el, counterInputValueNew, price); 1289 if(timerBasketUpdate){ 1290 clearTimeout(timerBasketUpdate); 1291 timerBasketUpdate = false; 1292 } 1293 timerBasketUpdate = setTimeout(function(){ 1294 BasketUpdate(el, counterInputValueNew); 1295 timerBasketUpdate = false; 1296 }, 700); 1297 } 1298 } 1299 // class input 1300 else if(bClassCount){ 1301 var counterInputValueNew = counterInputValue; 1302 if(counterInputValueNew <= 0 || isNaN(counterInputValueNew)){ 1303 counterInputValueNew = 1; 1304 } 1305 el.val(counterInputValueNew); 1306 if(bAjax){ 1307 BasketUpdate(el, counterInputValueNew); 1308 } 1309 } 1310 1311 var getCurUri = $.trim($('input[name=getPageUri]').val()); 1312 if(!getCurUri && !el.closest('.basket.fly').length){ 1313 $buyBlock.find('.to_cart').data('quantity', counterInputValueNew); 1314 } 1315} 1316 1317var BasketUpdate = function(el, counterInputValueNew){ 1318 var itemData = el.closest('[data-item]').data('item'), 1319 itemData = (typeof(arBasketItems) === 'object' && typeof(arBasketItems[itemData.ID]) === 'object' ? arBasketItems[itemData.ID] : itemData), 1320 $buyBlock = el.closest('.buy_block'), 1321 scrollTop = ($('.basket.fly').length ? $('.basket.fly .items_wrap').scrollTop() : ($('.basket_top:visible').length ? $('.basket_top .items:visible').scrollTop() : '')); 1322 1323 if(typeof(itemData) != 'undefined' && !isNaN(itemData.ID) && itemData.ID > 0 && !$buyBlock.hasClass('loading')){ 1324 $.ajax({ 1325 url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php', 1326 data: {itemData: itemData, quantity: counterInputValueNew}, 1327 beforeSend: function(){ 1328 $buyBlock.addClass('loading'); 1329 }, 1330 complete: function(){ 1331 $buyBlock.removeClass('loading'); 1332 }, 1333 success: function(data){ 1334 if(typeof(data) === 'object'){ 1335 arBasketItems = data; 1336 } 1337 1338 var getCurUri = $.trim($('input[name=getPageUri]').val()); 1339 1340 if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && arScorpOptions['THEME']['ORDER_BASKET_VIEW'] === 'HEADER' && $('.basket_top').length){ 1341 $.ajax({ 1342 url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php', 1343 type: 'POST', 1344 beforeSend: function(){ 1345 $buyBlock.addClass('loading'); 1346 }, 1347 complete: function(){ 1348 $buyBlock.removeClass('loading'); 1349 }, 1350 success: function(html){ 1351 $buyBlock.removeClass('in'); 1352 1353 $('.ajax_basket').html(html); 1354 $('.basket_top .items').scrollTop(scrollTop); 1355 1356 if(!getCurUri){ 1357 setTimeout(function(){ 1358 $('.basket_top .dropdown').addClass('expanded'); 1359 }, basketShowDelay); 1360 1361 setTimeout(function(){ 1362 $('.basket_top .dropdown').removeClass('expanded'); 1363 }, basketHideDelay); 1364 } 1365 } 1366 }); 1367 } 1368 1369 if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && arScorpOptions['THEME']['ORDER_BASKET_VIEW'] === 'FLY' && $('.basket.fly').length){ 1370 $.ajax({ 1371 url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php', 1372 type: 'POST', 1373 beforeSend: function(){ 1374 $buyBlock.addClass('loading'); 1375 }, 1376 complete: function(){ 1377 $buyBlock.removeClass('loading'); 1378 }, 1379 success: function(html){ 1380 $('.ajax_basket').html(html); 1381 $('.basket.fly .items_wrap').scrollTop(scrollTop); 1382 } 1383 }); 1384 } 1385 1386 if(getCurUri){ 1387 $.ajax({ 1388 url: getCurUri, 1389 type: 'POST', 1390 beforeSend: function(){ 1391 $buyBlock.addClass('loading'); 1392 }, 1393 complete: function(){ 1394 $buyBlock.removeClass('loading'); 1395 }, 1396 success: function(html){ 1397 if($('.basket.default').length){ 1398 $('.basket.default').html(html); 1399 } 1400 } 1401 }); 1402 } 1403 } 1404 }); 1405 } 1406} 1407 1408var scrollToTopAnimateClassIn = false; 1409var scrollToTopAnimateClassOut = false; 1410var players = {} 1411 1412var isMobile = jQuery.browser.mobile 1413if(isMobile){ 1414 document.documentElement.className += ' mobile' 1415} 1416 1417var $body = {} 1418var $scrolltotop = {} 1419 1420$(document).ready(function(){ 1421 $body = $('body') 1422 1423 InitScrollToTop(); 1424 CheckStickyFooter(); 1425 1426 if(!jQuery.browser.safari){ 1427 CheckTopMenuDotted(); 1428 CheckHeaderFixed(); 1429 1430 setTimeout(function() { 1431 $(window).resize(); // need to check resize flexslider & menu 1432 }, 350); 1433 1434 $(window).scroll(); 1435 } 1436 else{ 1437 setTimeout(function() { 1438 $(window).resize(); // need to check resize flexslider & menu 1439 setTimeout(function(){ 1440 CheckHeaderFixed(); 1441 setTimeout(function(){ 1442 $(window).scroll(); 1443 }, 50); 1444 }, 50); 1445 }, 350); 1446 } 1447 1448 setBasketItemsClasses(); 1449 1450 $('.blink img').blink(); 1451 1452 waitingNotExists('#bx-composite-banner .bx-composite-btn', '#footer .col-sm-3.hidden-md.hidden-lg #bx-composite-banner .bx-composite-btn', 500, function() { 1453 $('#footer .col-sm-3.hidden-md.hidden-lg #bx-composite-banner').html($('#bx-composite-banner .bx-composite-btn').parent().html()); 1454 }); 1455 1456 if(arScorpOptions['THEME']['USE_DEBUG_GOALS'] === 'Y'){
1457 $.cookie('_ym_debug', 1, {path: '/',}); 1458 } 1459 else{ 1460 $.cookie('_ym_debug', null, {path: '/',}); 1461 } 1462 1463 $.extend( $.validator.messages, { 1464 required: BX.message('JS_REQUIRED'), 1465 email: BX.message('JS_FORMAT'), 1466 equalTo: BX.message('JS_PASSWORD_COPY'), 1467 minlength: BX.message('JS_PASSWORD_LENGTH'), 1468 remote: BX.message('JS_ERROR') 1469 }); 1470 1471 $.validator.addMethod( 1472 'regexp', function( value, element, regexp ){ 1473 var re = new RegExp( regexp ); 1474 return this.optional( element ) || re.test( value ); 1475 }, 1476 BX.message('JS_FORMAT') 1477 ); 1478 1479 $.validator.addMethod( 1480 'filesize', function( value, element, param ){ 1481 return this.optional( element ) || ( element.files[0].size <= param ) 1482 }, 1483 BX.message('JS_FILE_SIZE') 1484 ); 1485 1486 $.validator.addMethod( 1487 'date', function( value, element, param ) { 1488 var status = false; 1489 if(!value || value.length <= 0){ 1490 status = true; 1491 } 1492 else{ 1493 var re = new RegExp('^([0-9]{2})(.)([0-9]{2})(.)([0-9]{4})$'); 1494 var matches = re.exec(value); 1495 if(matches){ 1496 var composedDate = new Date(matches[5], (matches[3] - 1), matches[1]); 1497 status = ((composedDate.getMonth() == (matches[3] - 1)) && (composedDate.getDate() == matches[1]) && (composedDate.getFullYear() == matches[5])); 1498 } 1499 } 1500 return status; 1501 }, BX.message('JS_DATE') 1502 ); 1503 1504 $.validator.addMethod( 1505 'datetime', function( value, element, param ) { 1506 var status = false; 1507 if(!value || value.length <= 0){ 1508 status = true; 1509 } 1510 else{ 1511 var re = new RegExp('^([0-9]{2})(.)([0-9]{2})(.)([0-9]{4}) ([0-9]{1,2}):([0-9]{1,2})$'); 1512 var matches = re.exec(value); 1513 if(matches){ 1514 var composedDate = new Date(matches[5], (matches[3] - 1), matches[1], matches[6], matches[7]); 1515 status = ((composedDate.getMonth() == (matches[3] - 1)) && (composedDate.getDate() == matches[1]) && (composedDate.getFullYear() == matches[5]) && (composedDate.getHours() == matches[6]) && (composedDate.getMinutes() == matches[7])); 1516 } 1517 } 1518 return status; 1519 }, BX.message('JS_DATETIME') 1520 ); 1521 1522 $.validator.addMethod( 1523 'extension', function(value, element, param){ 1524 param = typeof param === 'string' ? param.replace(/,/g, '|') : 'png|jpe?g|gif'; 1525 return this.optional(element) || value.match(new RegExp('.(' + param + ')$', 'i')); 1526 }, BX.message('JS_FILE_EXT') 1527 ); 1528 1529 $.validator.addMethod( 1530 'captcha', function( value, element, params ){ 1531 return $.validator.methods.remote.call(this, value, element,{ 1532 url: arScorpOptions['SITE_DIR'] + 'ajax/check-captcha.php', 1533 type: 'post', 1534 data:{ 1535 captcha_word: value, 1536 captcha_sid: function(){ 1537 return $(element).closest('form').find('input[name="captcha_sid"]').val(); 1538 } 1539 } 1540 }); 1541 }, 1542 BX.message('JS_ERROR') 1543 ); 1544 1545 /*reload captcha*/ 1546 $('body').on( 'click', '.refresh', function(e){ 1547 e.preventDefault(); 1548 $.ajax({ 1549 url: arScorpOptions['SITE_DIR'] + 'ajax/captcha.php' 1550 }).done(function(text){ 1551 $('.captcha_sid').val(text); 1552 $('.captcha_img').attr('src', '/bitrix/tools/captcha.php?captcha_sid=' + text); 1553 }); 1554 }); 1555 1556 $.validator.addMethod( 1557 'recaptcha', function(value, element, param){ 1558 var id = $(element).closest('form').find('.g-recaptcha').attr('data-widgetid'); 1559 if(typeof id !== 'undefined'){ 1560 return grecaptcha.getResponse(id) != ''; 1561 } 1562 else{ 1563 return true; 1564 } 1565 }, BX.message('JS_RECAPTCHA_ERROR') 1566 ); 1567 1568 $.validator.addMethod( 1569 'processing_approval', function(value, element, param){ 1570 return $(element).is(':checked'); 1571 }, BX.message('JS_PROCESSING_ERROR') 1572 ); 1573 1574 $.validator.addClassRules({ 1575 'phone':{ 1576 regexp: arScorpOptions['THEME']['VALIDATE_PHONE_MASK'] 1577 }, 1578 'confirm_password':{ 1579 equalTo: 'input[name="REGISTER\[PASSWORD\]"]', 1580 minlength: 6 1581 }, 1582 'password':{ 1583 minlength: 6 1584 }, 1585 'inputfile':{ 1586 extension: arScorpOptions['THEME']['VALIDATE_FILE_EXT'], 1587 filesize: 5000000 1588 }, 1589 'datetime':{ 1590 datetime: '' 1591 }, 1592 'captcha':{ 1593 captcha: '' 1594 }, 1595 'recaptcha':{ 1596 recaptcha: '' 1597 }, 1598 'processing_approval':{ 1599 processing_approval: '' 1600 } 1601 }); 1602 1603 InitFlexSlider(); 1604 1605 // for check flexslider bug in composite mode 1606 waitingNotExists('.detail .galery #slider', '.detail .galery #slider .flex-viewport',
16061000, function() { 1607 InitFlexSlider(); 1608 setTimeout(function() { 1609 $(window).resize(); 1610 }, 350); 1611 }); 1612 1613 /*check mobile device*/ 1614 if(jQuery.browser.mobile){ 1615 $('.style-switcher').addClass('hidden'); 1616 $('.hint span').remove(); 1617 1618 $(document).on("click", '*[data-event="jqm"]', function (e) { 1619 e.preventDefault(); 1620 var _this = $(this); 1621 var name = _this.data('name'); 1622 1623 if(name.length){ 1624 var script = arScorpOptions['SITE_DIR'] + 'form/'; 1625 var paramsStr = ''; var arTriggerAttrs = {}; 1626 $.each(_this.get(0).attributes, function(index, attr){ 1627 var attrName = attr.nodeName; 1628 var attrValue = _this.attr(attrName); 1629 arTriggerAttrs[attrName] = attrValue; 1630 if(/^data\-param\-(.+)$/.test(attrName)){ 1631 var key = attrName.match(/^data\-param\-(.+)$/)[1]; 1632 paramsStr += key + '=' + attrValue + '&'; 1633 } 1634 }); 1635 1636 var triggerAttrs = JSON.stringify(arTriggerAttrs); 1637 var encTriggerAttrs = encodeURIComponent(triggerAttrs); 1638 script += '?name=' + name + '&' + paramsStr + 'data-trigger=' + encTriggerAttrs; 1639 location.href = script; 1640 } 1641 }); 1642 1643 $('.fancybox').removeClass('fancybox'); 1644 } 1645 else{ 1646 $(document).on('click', '*[data-event="jqm"]', function (e) { 1647 e.preventDefault(); 1648 $(this).jqmEx(); 1649 $(this).trigger('click'); 1650 }); 1651 } 1652 1653 $('a.fancybox:has(img)').fancybox(); 1654 1655 // Responsive Menu Events 1656 var addActiveClass = false; 1657 $('#mainMenu li.dropdown > a > i, #mainMenu li.dropdown-submenu > a > i').on('click', function(e){ 1658 e.preventDefault(); 1659 if($(window).width() > 979) return; 1660 addActiveClass = $(this).closest('li').hasClass('resp-active'); 1661 // $('#mainMenu').find('.resp-active').removeClass('resp-active'); 1662 if(!addActiveClass){ 1663 $(this).closest("li").addClass("resp-active"); 1664 }else{ 1665 $(this).closest("li").removeClass("resp-active"); 1666 } 1667 }); 1668 1669 if($('.styled-block .row > div.col-md-3').length){ 1670 BX.addCustomEvent('onWindowResize', function(eventdata) { 1671 try{ 1672 ignoreResize.push(true); 1673 $('.styled-block .row > div.col-md-3').each(function() { 1674 $(this).css({'height': '', 'line-height': ''}); 1675 var z = parseInt($('.body_media').css('top')); 1676 if(z > 0){ 1677 var rowHeight = $(this).parents('.row').first().actual('outerHeight'); 1678 $(this).css({'height': rowHeight + 'px', 'line-height' : rowHeight + 'px'}); 1679 } 1680 }); 1681 } 1682 catch(e){} 1683 finally{ 1684 ignoreResize.pop(); 1685 } 1686 }); 1687 } 1688 1689 if($('.order-block').length){ 1690 BX.addCustomEvent('onWindowResize', function(eventdata) { 1691 try{ 1692 ignoreResize.push(true); 1693 $('.order-block').each(function() { 1694 var cols = $(this).find('.row > div'); 1695 if(cols.length){ 1696 var colFirst = cols.first(); 1697 var colLast = cols.last(); 1698 var colText = colLast.find('.text'); 1699 var bText = colText.length; 1700 var bOnlyText = cols.length === 1 && bText; 1701 var bPrice = colFirst.find('.price').length; 1702 var z = parseInt($('.body_media').css('top')); 1703 1704 cols.css({'height': '', 'padding-top': '', 'padding-bottom': ''}); 1705 colText.css({'height': '', 'padding-top': '', 'padding-bottom': ''}); 1706 if((!bPrice && z > 0) || (bPrice && z > 1)){ 1707 var minHeight = 83; 1708 1709 if(!bOnlyText){ 1710 var colFirst_height = colFirst.outerHeight(); 1711 colFirst_height = colFirst_height >= minHeight ? colFirst_height : minHeight; 1712 } 1713 1714 if(bText){ 1715 var colLast_height = colLast.outerHeight(); 1716 colLast_height = colLast_height >= minHeight ? colLast_height : minHeight; 1717 } 1718 1719 var colMax_height = (bText ? (!bOnlyText ? (colLast_height >= colFirst_height ? colLast_height : colFirst_height) : colLast_height) : colFirst_height); 1720 1721 if(!bOnlyText){ 1722 var textPadding = 22 + (colMax_height - colFirst.outerHeight()) / 2; 1723 colFirst.css({'padding-top': textPadding + 'px', 'padding-bottom': textPadding + 'px', 'height': colMax_height + 'px'}); 1724 } 1725 if(bText){ 1726 colLast.css({'height': colMax_height + 'px'}); 1727 var textPadding = 22 + (colMax_height - colText.outerHeight()) / 2; 1728 colText.css({'padding-top': textPadding + 'px', 'padding-bottom': textPadding + 'px', 'height': colMax_height + 'px'}); 1729 } 1730 } 1731 } 1732 }); 1733 } 1734 catch(e){} 1735 finally{ 1736 ignoreResize.pop(); 1737 } 1738 }); 1739 } 1740
1741 $(document).on('click', '.mega-menu .dropdown-menu', function(e){ 1742 e.stopPropagation() 1743 }); 1744 1745 $(document).on('click', '.mega-menu .dropdown-toggle.more-items', function(e){ 1746 e.preventDefault(); 1747 }); 1748 1749 $(document).on('mouseenter', '.table-menu .dropdown,.table-menu .dropdown-submenu,.table-menu .dropdown-toggle', function () { 1750 CheckTopVisibleMenu(); 1751 }); 1752 1753 $(document).on('click', '.mega-menu .search-item .search-icon, .menu-row #title-search .fa-close', function (e) { 1754 e.preventDefault(); 1755 $('.menu-row #title-search').toggleClass('hide'); 1756 }); 1757 1758 $(document).on('keyup', '.mega-menu ul.nav .search input', function (e) { 1759 var inputValue = $(this).val(); 1760 $('.menu-row > .search input').val(inputValue); 1761 if(e.keyCode == 13){ 1762 $('.menu-row > .search form').submit(); 1763 } 1764 }); 1765 1766 $(document).on('keyup', '.menu-row > .search input', function (e) { 1767 var inputValue = $(this).val(); 1768 $('.mega-menu ul.nav .search input').val(inputValue); 1769 if(e.keyCode == 13){ 1770 $('.menu-row > .search form').submit(); 1771 } 1772 }); 1773 1774 $(document).on('click', '.mega-menu ul.nav .search button', function (e) { 1775 e.preventDefault(); 1776 var inputValue = $(this).parents('.search').find('input').val(); 1777 $('.menu-and-search .search input').val(inputValue); 1778 $('.menu-row > .search form').submit(); 1779 }); 1780 1781 $(document).on('click', '.filter .calendar', function (e) { 1782 var button = $(this).next(); 1783 if(button.hasClass('calendar-icon')){ 1784 button.trigger('click'); 1785 } 1786 }); 1787 1788 /* toggle */ 1789 var $this = this, 1790 previewParClosedHeight = 25; 1791 1792 $('section.toggle > label').prepend($('<i />').addClass('fa fa-plus')); 1793 $('section.toggle > label').prepend($('<i />').addClass('fa fa-minus')); 1794 $('section.toggle.active > p').addClass('preview-active'); 1795 $('section.toggle.active > div.toggle-content').slideDown(350, function() {}); 1796 1797 $('section.toggle > label').click(function(e){ 1798 var parentSection = $(this).parent(), 1799 parentWrapper = $(this).parents('div.toogle'), 1800 previewPar = false, 1801 isAccordion = parentWrapper.hasClass('toogle-accordion'); 1802 1803 if(isAccordion && typeof(e.originalEvent) != 'undefined') { 1804 parentWrapper.find('section.toggle.active > label').trigger('click'); 1805 } 1806 1807 parentSection.toggleClass('active'); 1808 1809 // Preview Paragraph 1810 if( parentSection.find('> p').get(0) ){ 1811 previewPar = parentSection.find('> p'); 1812 var previewParCurrentHeight = previewPar.css('height'); 1813 previewPar.css('height', 'auto'); 1814 var previewParAnimateHeight = previewPar.css('height'); 1815 previewPar.css('height', previewParCurrentHeight); 1816 } 1817 1818 // Content 1819 var toggleContent = parentSection.find('> div.toggle-content'); 1820 1821 if( parentSection.hasClass('active') ){ 1822 $(previewPar).animate({ 1823 height: previewParAnimateHeight 1824 }, 350, function() { 1825 $(this).addClass('preview-active'); 1826 }); 1827 toggleContent.slideDown(350, function() {}); 1828 } 1829 else{ 1830 $(previewPar).animate({ 1831 height: previewParClosedHeight 1832 }, 350, function() { 1833 $(this).removeClass('preview-active'); 1834 }); 1835 toggleContent.slideUp(350, function() {}); 1836 } 1837 }); 1838 1839 /* accordion */ 1840 $('.accordion-head').on('click', function(e){ 1841 e.preventDefault(); 1842 if(!$(this).next().hasClass('collapsing')){ 1843 $(this).toggleClass('accordion-open'); 1844 $(this).toggleClass('accordion-close'); 1845 } 1846 }); 1847 1848 /* progress bar */ 1849 $('[data-appear-progress-animation]').each(function(){ 1850 var $this = $(this); 1851 $this.appear(function(){ 1852 var delay = ($this.attr('data-appear-animation-delay') ? $this.attr('data-appear-animation-delay') : 1); 1853 if( delay > 1 ) 1854 $this.css('animation-delay', delay + 'ms'); 1855 $this.addClass($this.attr('data-appear-animation')); 1856 1857 setTimeout(function(){ 1858 $this.animate({ 1859 width: $this.attr('data-appear-progress-animation') 1860 }, 1500, 'easeOutQuad', function() { 1861 $this.find('.progress-bar-tooltip').animate({ 1862 opacity: 1 1863 }, 500, 'easeOutQuad'); 1864 }); 1865 }, delay); 1866 }, {accX: 0, accY: -50}); 1867 }); 1868 1869 $('a[rel=tooltip],a[data-toggle=tooltip],span[data-toggle=tooltip]').tooltip(); 1870 $('a[rel=tooltip],a[data-toggle=tooltip],span[data-toggle=tooltip]').on('click', function(){ 1871 var tooltip = $(this).next()[0]; 1872 $('.tooltip-inner').closest('.tooltip').each(function(){ 1873 if($(this)[0] != tooltip){ 1874 $(this).prev().tooltip('hide'); 1875 } 1876 }); 1877 }); 1878 $(document).click(function(e){ 1879 if(!$(e.target).closest('.filter .bx_filter_parameters_box_title a[data-toggle="tooltip"]').length){ 1880 $('.tooltip-inner').closest('.tooltip').each(function(){ 1881 $(this).prev().tooltip('hide'); 1882 }); 1883 } 1884 }); 1885 1886 $(document).on('change', 'select.sort', function () { 1887 location.href = $(this).val(); 1888 }); 1889 1890 setTimeout(function(th){ 1891 $('.catalog.group.list .item').each(function(){ 1892 var th = $(this); 1893 if((tmp = th.find('.image').outerHeight() - th.find('.text_info').outerHeight()) > 0){ 1894 th.find('.text_info .titles').height(th.find('.text_info .titles').outerHeight() + tmp); 1895 } 1896 1897 }) 1898 }, 50); 1899 1900 /*item galery*/ 1901 1902 $(document).on('click', '.thumbs .item a', function (e) { 1903 e.preventDefault(); 1904 $('.thumbs .item').removeClass('current'); 1905 $(this).closest('.item').toggleClass('current'); 1906 $('.slides li' + $(this).attr('href')).addClass('current').siblings().removeClass('current'); 1907 }); 1908 1909 $(document).on('click', 'header.fixed .btn-responsive-nav', function () { 1910 $('html, body').animate({scrollTop: 0}, 400); 1911 }); 1912 1913 $('body').on('click', '.form .refresh-page', function(){ 1914 var href = $(this).attr('data-url'); 1915 if(typeof href !== 'undefined'){ 1916 location.href = href; 1917 } 1918 else{ 1919 location.href = location.href; 1920 } 1921 }); 1922 1923 $(document).on('click', '.print', function(){ 1924 window.print(); 1925 }); 1926 1927 // click on HTML5 video 1928 $(document).on('click', 'video.video', function(e){ 1929 var videoID = e.target.id.replace('player_', '')
1930 if(videoID){ 1931 if(players[videoID].playing){ 1932 e.target.pause() 1933 } 1934 else{ 1935 e.target.play() 1936 } 1937 } 1938 }) 1939 1940 // START VIDEO BUTTON 1941 $(document).on('click', '.banners-big .item .btn-video', function(){ 1942 $(this).addClass('loading'); 1943 startMainBannerSlideVideo($(this).closest('.item')); 1944 }); 1945 1946 // basket fly auto close 1947 $(document).on('click', function(){ 1948 if($('.basket.fly').length && $('.ajax_basket').hasClass('opened')){ 1949 $('.ajax_basket').removeClass('opened'); 1950 } 1951 }); 1952 1953 $(document).on('click', '.basket.fly', function(e){ 1954 e.stopPropagation(); 1955 }); 1956 1957 // counter input events 1958 $(document).on('keydown', '.count', function(e){ 1959 // Allow: backspace, delete, tab, escape, enter and . 1960 if($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 1961 // Allow: Ctrl+A, Command+A 1962 (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) || 1963 // Allow: home, end, left, right, down, up 1964 (e.keyCode >= 35 && e.keyCode <= 40)) { 1965 // let it happen, don't do anything 1966 return; 1967 } 1968 // Ensure that it is a number and stop the keypress 1969 if((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)){ 1970 e.preventDefault(); 1971 } 1972 }); 1973 1974 $(document).on('keyup', '.count', function(e){ 1975 var $this = $(this); 1976 Summ($this, $this.val(), $this.closest('.item').find('input[name=PRICE]').val()); 1977 }); 1978 1979 $(document).on('blur', '.count', function(){ 1980 BasketCounter($(this)); 1981 }); 1982 1983 $(document).on('click', '.minus, .plus', function(e){ 1984 e.stopPropagation(); 1985 BasketCounter($(this)); 1986 }); 1987 1988 var basketShowDelay = 100; 1989 var basketHideDelay = 1000; 1990 1991 // Add2Basket 1992 $(document).on('click', '.to_cart', function(e){ 1993 e.stopPropagation(); 1994 1995 var $item = $(this).closest('[data-item]'), 1996 $buyBlock = $item.find('.buy_block'), 1997 itemData = $item.data('item'), 1998 itemQuantity = parseFloat($buyBlock.find('.to_cart').data('quantity')); 1999 2000 if(isNaN(itemQuantity) || itemQuantity <= 0){ 2001 itemQuantity = 1; 2002 } 2003 2004 if(!isNaN(itemData.ID) && parseInt(itemData.ID) > 0 && !$buyBlock.hasClass('loading')){ 2005 $.ajax({ 2006 url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php', 2007 type: 'POST', 2008 data: {itemData: itemData, quantity: itemQuantity}, 2009 beforeSend: function(){ 2010 $buyBlock.addClass('loading'); 2011 }, 2012 complete: function(){ 2013 $buyBlock.removeClass('loading'); 2014 }, 2015 success: function(html){ 2016 $buyBlock.addClass('in'); 2017 2018 var countItem = ($('.basket').length ? parseInt($('.basket .count').text()) : parseInt($('.basket_top:visible .count').text())); 2019 ++countItem; 2020 $('.basket_top .count, .basket .count').text(countItem).removeClass('empted'); 2021 $('.ajax_basket').html(html); 2022 2023 if(arScorpOptions['THEME']['USE_SALE_GOALS'] !== 'N'){ 2024 var eventdata = {goal: 'goal_basket_add', params: {itemData: itemData, quantity: itemQuantity}}; 2025 BX.onCustomEvent('onCounterGoals', [eventdata]); 2026 } 2027 2028 if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'HEADER' && $('.basket_top').length){ 2029 if(!$('.basket_top .dropdown').hasClass('expanded')){ 2030 setTimeout(function(){ 2031 $('.basket_top .dropdown').addClass('expanded'); 2032 }, basketShowDelay); 2033 setTimeout(function(){ 2034 $('.basket_top .dropdown').removeClass('expanded'); 2035 }, basketHideDelay); 2036 } 2037 } 2038 else if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'FLY' && $('.basket.fly').length){ 2039 setTimeout(function(){ 2040 if(!$('.ajax_basket').hasClass('opened')){ 2041 $('.ajax_basket').addClass('opened'); 2042 } 2043 }, basketShowDelay); 2044 } 2045 } 2046 }); 2047 } 2048 }); 2049 2050 // remove from basket 2051 $(document).on('click', '.remove', function(){ 2052 var $item = $(this).closest('[data-item]'), 2053 $buyBlock = $item.find('.buy_block'), 2054 itemData = $item.data('item'), 2055 bRemove = 'Y', 2056 bRemoveAll = ($.trim($(this).closest('[data-remove_all]').data('remove_all')) === 'Y' ? 'Y' : false); 2057 countItem = ($('.basket').length ? parseInt($('.basket .item').length) : parseInt($('.basket_top:visible .item').length)), 2058 bOneItem = (countItem - 1 <= 0), 2059 scrollTop = ($('.basket.fly').length ? $('.basket.fly .items_wrap').scrollTop() : ($('.basket_top:visible').length ? $('.basket_top .items:visible').scrollTop() : '')); 2060 2061 var _ajax = function(){ 2062 $.ajax({ 2063 url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php', 2064 data: {itemData: itemData, remove: bRemove, removeAll: bRemoveAll}, 2065 beforeSend: function(){ 2066 $buyBlock.addClass('loading'); 2067 }, 2068 complete: function(){ 2069 $buyBlock.removeClass('loading'); 2070 }, 2071 success: function(html){ 2072 if(bRemoveAll){ 2073 $('.buy_block').removeClass('in'); 2074 $('.basket .count, .basket_top .count').text(0).addClass('empted'); 2075 } 2076 else{ 2077 $('[data-item]').each(function(){ 2078 if($(this).data('item').ID == itemData.ID){ 2079 $(this).find('.buy_block').removeClass('in'); 2080 } 2081 }); 2082 2083 var countItem = ($('.basket').length ? parseInt($('.basket .count').text()) : parseInt($('.basket_top:visible .count').text())); 2084 --countItem; 2085 $('.basket .count, .basket_top .count').text(countItem); 2086 if(!countItem){ 2087 $('.basket .count, .basket_top .count').addClass('empted'); 2088 } 2089 } 2090 2091 $('.ajax_basket').html(html); 2092 2093 if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'HEADER' && $('.basket_top').length){ 2094 $('.basket_top .items').scrollTop(scrollTop); 2095 } 2096 2097 if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'FLY' && $('.basket.fly').length){ 2098 $('.ajax_basket').addClass('opened'); 2099 $('.basket.fly .items_wrap').scrollTop(scrollTop); 2100 } 2101 2102 if(arScorpOptions['THEME']['USE_SALE_GOALS'] !== 'N'){ 2103 var eventdata = {goal: 'goal_basket_remove', params: {itemData: itemData, remove: bRemove, removeAll: bRemoveAll}}; 2104 BX.onCustomEvent('onCounterGoals', [eventdata]); 2105 } 2106 2107 var getCurUri = $.trim($('input[name=getPageUri]').val()); 2108 if(getCurUri){ 2109 $.ajax({ 2110 url: getCurUri, 2111 type: 'POST', 2112 beforeSend: function(){ 2113 $buyBlock.addClass('loading'); 2114 }, 2115 complete: function(){ 2116 $buyBlock.removeClass('loading'); 2117 }, 2118 success: function(html){ 2119 if($('.basket.default').length){ 2120 $('.basket.default').html(html); 2121 } 2122 } 2123 }); 2124 } 2125 2126 } 2127 }); 2128 } 2129 2130 if(bRemoveAll || (typeof(itemData) !== 'undefined' && (!isNaN(itemData.ID) && itemData.ID > 0) && !$buyBlock.hasClass('loading'))){ 2131 if(bRemoveAll){ 2132 $('.basket_wrap').fadeOut(200, function(){ 2133 $('.basket').find('.basket_empty').fadeIn(200, function(){ 2134 _ajax(); 2135 }); 2136 }); 2137 } 2138 else{ 2139 if(bOneItem){ 2140 if($item.closest('.basket_top').length){ 2141 $item.closest('.dropdown').animate({opacity: 0}, 200, function(){ 2142 _ajax(); 2143 }); 2144 } 2145 else{ 2146 $item.closest('.basket_wrap').fadeOut(200, function(){ 2147 $item.closest('.basket').find('.basket_empty').fadeIn(200, function(){ 2148 _ajax(); 2149 }); 2150 }); 2151 } 2152 } 2153 else{ 2154 $item.animate({opacity: 0}, 200).slideUp(200, function(){ 2155 _ajax(); 2156 }); 2157 } 2158 } 2159 } 2160 }); 2161}); 2162 2163 2164var waitCounter = function(idCounter, delay, callback){
2165 var obCounter = window['yaCounter' + idCounter]; 2166 if(typeof obCounter == 'object'){ 2167 if(typeof callback == 'function'){ 2168 callback(); 2169 } 2170 } 2171 else{ 2172 setTimeout(function(){ 2173 waitCounter(idCounter, delay, callback); 2174 }, delay); 2175 } 2176} 2177 2178var waitReCaptcha = function(delay, callback){ 2179 if(typeof grecaptcha == 'object' && typeof grecaptcha.render === 'function'){ 2180 if(typeof callback == 'function'){ 2181 callback(); 2182 } 2183 } 2184 else{ 2185 setTimeout(function(){ 2186 waitReCaptcha(delay, callback); 2187 }, delay); 2188 } 2189} 2190 2191var reCaptchaRender = function(response){ 2192 if($('.g-recaptcha:not(.rendered)').length){ 2193 waitReCaptcha(50, function(){ 2194 $('.g-recaptcha:not(.rendered)').each(function(){ 2195 $this = $(this); 2196 $this.addClass('rendered') 2197 var id = grecaptcha.render($this[0], { 2198 sitekey: $this.attr('data-sitekey'), 2199 theme: $this.attr('data-theme'), 2200 size: $this.attr('data-size'), 2201 callback: $this.attr('data-callback'), 2202 }); 2203 $this.attr('data-widgetid', id); 2204 }); 2205 }); 2206 } 2207} 2208 2209var reCaptchaVerify = function(response){ 2210 $('.g-recaptcha.rendered').each(function(){ 2211 var id = $(this).attr('data-widgetid'); 2212 if(typeof(id) !== 'undefined'){ 2213 if(grecaptcha.getResponse(id) != ''){ 2214 $(this).closest('form').find('.recaptcha').valid(); 2215 } 2216 } 2217 }); 2218} 2219 2220var onCaptchaVerifyinvisible = function(response){ 2221 $('.g-recaptcha:last').each(function(){ 2222 var id = $(this).attr('data-widgetid'); 2223 if(typeof(id) !== 'undefined' && response){ 2224 if(!$(this).closest('form').find('.g-recaptcha-response').val()) 2225 $(this).closest('form').find('.g-recaptcha-response').val(response) 2226 if($('iframe[src*=recaptcha]').length) 2227 { 2228 $('iframe[src*=recaptcha]').each(function(){ 2229 var block = $(this).parent().parent(); 2230 if(!block.hasClass('grecaptcha-badge')) 2231 block.css('width', '100%'); 2232 }) 2233 } 2234 $(this).closest('form').submit(); 2235 } 2236 }) 2237} 2238 2239// var onCaptchaVerifynormal = function(response){ 2240// $('.g-recaptcha').each(function(){ 2241// var id = $(this).attr('data-widgetid'); 2242// if(typeof(id) !== 'undefined'){ 2243// if(grecaptcha.getResponse(id) != ''){ 2244// $(this).closest('form').find('.recaptcha').valid(); 2245// } 2246// } 2247// }); 2248// } 2249 2250BX.addCustomEvent('onSubmitForm', function(eventdata){ 2251 try{ 2252 if(!window.renderRecaptchaById || !window.asproRecaptcha || !window.asproRecaptcha.key) 2253 { 2254 eventdata.form.submit(); 2255 $(eventdata.form).closest('.form').addClass('sending'); 2256 return true; 2257 } 2258 2259 if(window.asproRecaptcha.params.recaptchaSize == 'invisible' && $(eventdata.form).find('.g-recaptcha').length) 2260 { 2261 if($(eventdata.form).find('.g-recaptcha-response').val()) 2262 { 2263 eventdata.form.submit(); 2264 $(eventdata.form).closest('.form').addClass('sending'); 2265 return true; 2266 } 2267 else 2268 { 2269 if(typeof grecaptcha != 'undefined'){ 2270 grecaptcha.execute($(eventdata.form).find('.g-recaptcha').data('widgetid')); 2271 } 2272 else{ 2273 return false; 2274 } 2275 } 2276 } 2277 else 2278 { 2279 eventdata.form.submit(); 2280 $(eventdata.form).closest('.form').addClass('sending'); 2281 return true; 2282 } 2283 } 2284 catch (e){ 2285 console.error(e); 2286 return true; 2287 } 2288}) 2289 2290// Events 2291var timerScroll = false, ignoreScroll = [], documentScrollTopLast = $(document).scrollTop(); 2292$(window).scroll(function(){ 2293 documentScrollTop = $(document).scrollTop(); 2294 2295 CheckPopupTop(); 2296 CheckScrollToTop(); 2297 2298 if(!ignoreScroll.length){ 2299 if(timerScroll){ 2300 clearTimeout(timerScroll); 2301 timerScroll = false; 2302 } 2303 timerScroll = setTimeout(function(){ 2304 BX.onCustomEvent('onWindowScroll', false); 2305 }, 100); 2306 } 2307 2308 documentScrollTopLast = documentScrollTop; 2309}); 2310 2311var timerResize = false, ignoreResize = []; 2312$(window).resize(function(){ 2313 documentScrollTop = $(document).scrollTop(); 2314 2315 CheckPopupTop(); 2316 CheckScrollToTop(); 2317 2318 if(!ignoreResize.length){ 2319 if(timerResize){ 2320 clearTimeout(timerResize); 2321 timerResize = false; 2322 } 2323 timerResize = setTimeout(function(){ 2324 BX.onCustomEvent('onWindowResize', false); 2325 }, 100); 2326 } 2327 2328 documentScrollTopLast = $(document).scrollTop(); 2329}); 2330 2331BX.addCustomEvent('onWindowScroll', function(eventdata) { 2332 try{ 2333 ignoreScroll.push(true); 2334 } 2335 catch(e){} 2336 finally{ 2337 ignoreScroll.pop(); 2338 } 2339}); 2340 2341BX.addCustomEvent('onWindowResize', function(eventdata) { 2342 try{ 2343 ignoreResize.push(true); 2344 CheckTopMenuDotted(); 2345 CheckTopVisibleMenu();
2346 CheckFlexSlider(); 2347 CheckMainBannerSliderVText($('.banners-big .flexslider')); 2348 CheckObjectsSizes(); 2349 CoverPlayer(); 2350 } 2351 catch(e){} 2352 finally{ 2353 ignoreResize.pop(); 2354 } 2355}); 2356 2357BX.addCustomEvent('onSlide', function(eventdata) { 2358 try{ 2359 ignoreResize.push(true); 2360 if(eventdata){ 2361 var slider = eventdata.slider; 2362 if(slider){ 2363 // add classes .curent & .shown to slide 2364 slider.find('.item').removeClass('current'); 2365 var curSlide = slider.find('.item.flex-active-slide'); 2366 var curSlideIndex = curSlide.attr('data-slide_index'); 2367 if(curSlideIndex.length){ 2368 curSlide.addClass('current'); 2369 slider.find('.item[data-slide_index=' + curSlideIndex + ']').addClass('shown'); 2370 slider.resize(); 2371 2372 // set main banners text vertical center 2373 CheckMainBannerSliderVText(slider); 2374 2375 // pause play video 2376 if(typeof(players) !== 'undefined' && players){ 2377 for(var j in players){ 2378 if(players[j].playing && !players[j].clone && (players[j].slideIndex != curSlideIndex)){ 2379 if((typeof window[players[j].id] == 'object')){ 2380 if(players[j].videoPlayer === 'YOUTUBE'){ 2381 window[players[j].id].pauseVideo() 2382 } 2383 else if(players[j].videoPlayer === 'VIMEO'){ 2384 window[players[j].id].pause() 2385 } 2386 else if(players[j].videoPlayer === 'RUTUBE'){ 2387 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 2388 type: 'player:pause', 2389 data: {} 2390 }), '*') 2391 } 2392 else if(players[j].videoPlayer === 'HTML5'){ 2393 document.getElementById(players[j].id).pause() 2394 } 2395 } 2396 } 2397 } 2398 } 2399 2400 // autoplay video 2401 var bVideoAutoPlay = curSlide.attr('data-video_autoplay') == 1 2402 if(bVideoAutoPlay){ 2403 startMainBannerSlideVideo(curSlide) 2404 } 2405 } 2406 } 2407 } 2408 } 2409 catch(e){} 2410 finally{ 2411 ignoreResize.pop(); 2412 } 2413}); 2414 2415BX.addCustomEvent('onSlideEnd', function(eventdata) { 2416 try{ 2417 ignoreResize.push(true); 2418 if(eventdata){ 2419 var slider = eventdata.slider; 2420 if(slider){ 2421 2422 } 2423 } 2424 } 2425 catch(e){} 2426 finally{ 2427 ignoreResize.pop(); 2428 } 2429}); 2430 2431BX.addCustomEvent('onCounterGoals', function(eventdata){ 2432 if(arScorpOptions['THEME']['USE_YA_COUNTER'] === 'Y'){ 2433 var idCounter = arScorpOptions['THEME']['YA_COUNTER_ID']; 2434 idCounter = parseInt(idCounter); 2435 2436 if(typeof eventdata != 'object'){ 2437 eventdata = {goal: 'undefined'}; 2438 } 2439 if(typeof eventdata.goal != 'string'){ 2440 eventdata.goal = 'undefined'; 2441 } 2442 2443 if(idCounter){ 2444 try{ 2445 waitCounter(idCounter, 50, function(){ 2446 var obCounter = window['yaCounter' + idCounter]; 2447 if(typeof obCounter == 'object'){ 2448 obCounter.reachGoal(eventdata.goal); 2449 } 2450 }); 2451 } 2452 catch(e){ 2453 console.error(e) 2454 } 2455 } 2456 else{ 2457 console.info('Bad counter id!', idCounter); 2458 } 2459 } 2460})
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.