1/** 2 * Main mathys theme js file 3 */ 4"use strict"; 5 6var slideStyle = ""; 7var callActionsOnLoad = false; 8var videoEnded = false; 9jQuery(document).ready(function($) { 10 var isHorizontalNav=false; 11 var horiMain = {}; 12 var horMain = {}; 13 if ( typeof wpbSliderArgs == 'undefined' ) 14 return; 15 16 if ( typeof $().swipe == 'function' ) 17 $.fn.swipe(); 18 19 /* Sliders 20 ======================================================*/ 21 if ( typeof $().carouFredSel != 'function' ) 22 return; 23 24 /** 25 * Vertical navigation class 26 ======================================================*/ 27 var VerticalNav = function( $main ) { 28 var self = this; 29 30 var $nav = $main.find('.wpb-slider-vertical-nav'); 31 32 // prev next block selector 33 this.mainBlockSelector = '.wpb-slider-vertical-nav-main'; 34 35 var $navMain = $main.find(self.mainBlockSelector); 36 37 // slides array 38 this.slides = $nav.find('a'); 39 40 // slides count 41 this.slidesCount = self.slides.length; 42 43 // count of visible items 44 this.visible = 1; 45 46 // count of slide pages 47 this.slidePages = 1; 48 49 // is active vertical navigation 50 this.activeSlider = null; 51 52 // slider args 53 this.args = {}; 54 55 // slider height 56 this.sliderHeight = $navMain.height(); 57 58 // item max height 59 this.itemMaxHeight = $navMain.attr("itemHeight"); 60 61 // check true if slider is loaded first time 62 this.isLoaded = false; 63 64 /** 65 * Construct object 66 */ 67 self.construct = function() { 68 if ( !self.isActive() ) 69 return; 70 71 self.setSliderHeight(); 72 73 self.calcSliderArgs(); 74 self.setSliderArgs(); 75 Actions.loadSlider( $nav, self.args ); 76 self.setSliderConfigArgs(); 77 78 self.onResizeNav(); 79 80 // set first time loaded 81 this.isLoaded = true; 82 } 83 84 self.setSliderHeight = function() { 85 this.sliderHeight = $navMain.height(); 86 } 87 88 /** 89 * On resize nav 90 */ 91 self.onResizeNav = function() { 92 $('body').on('wpbslWindowResize', function(){ 93 var h = $main.height(); 94 95 // update slides 96 this.slides = $nav.find('a'); 97 98 $navMain.height(h); 99 100 self.setSliderHeight(); 101 self.calcSlidesVisible(); 102 103 $nav.trigger('updateSizes'); 104 }); 105 } 106 107 /** 108 * Set slider config args to use this on slider actions 109 */ 110 self.setSliderConfigArgs = function() { 111 this.slidePages = self.getSlidePages(); 112 } 113 114 /** 115 * Get count slides pages 116 */ 117 self.getSlidePages = function() { 118 return Math.ceil( self.slidesCount / self.visible ); 119 } 120 121 /** 122 * Check is active vertiacal navigation 123 */ 124 self.isActive = function() { 125 if ( null === self.activeSlider ) 126 self.activeSlider = ( 0 == $nav.length ) ? false : true; 127 128 return self.activeSlider; 129 } 130 131 /** 132 * Slides args 133 */ 134 self.setSliderArgs = function() { 135 var prevNext = Actions.getPrevNext( $main, self.mainBlockSelector ); 136 for(var x in wpbSliderArgs){ 137 var currSliderId = x; 138 slideStyle = wpbSliderArgs[x]['thumb_slide_style']; 139 break; 140 } 141 var width = $($navMain).width(); 142 var args = { 143 responsive: true, 144 circular : false, 145 infinite : false, 146 direction : "up", 147 items: { 148 visible: self.visible 149 }, 150 height: '100%', 151 width: width, 152 auto: false, 153 scroll : { 154 items : 1, 155 duration : 1000 156 }, 157 swipe: { 158 onTouch: true, 159 onMouse: true 160 }, 161 prev: prevNext.prev, 162 next: prevNext.next, 163 pagination : false, 164 onCreate: function(data) { 165 var first = data.items.prevObject[0]; 166 Actions.bulletActions( $(first) ); 167 } 168 } 169 170 // 171 // check if slide style is fade then use fade style. 172 // 173 if(slideStyle == "fade"){ 174 args["scroll"] = { 175 items : 1, 176 fx : "fade", 177 duration : 1000 178 }; 179 }// end if. 180 181 this.args = args; 182 } 183 184 /** 185 * Calc nav-slider args 186 */ 187 self.calcSliderArgs = function() { 188 //self.calcItemMaxHeight(); 189 self.calcSlidesVisible(); 190 self.calcSlidesHeight(); 191 self.resizeItemImage(); 192 //self.ItemAlign(); 193 } 194 195 /** 196 * Calc slide-item max height 197 */ 198 self.calcItemMaxHeight = function() { 199 var maxHeight = 0; 200 201 self.slides.each(function(){ 202 var h = $(this).height(); 203 204 if ( h > maxHeight ) { 205 maxHeight = h; 206 }; 207 }); 208 209 this.itemMaxHeight = maxHeight; 210 } 211 212 /** 213 * Calc and set slides height 214 */ 215 self.calcSlidesHeight = function() { 216 //var itemHeight = self.sliderHeight / self.visible; 217 var itemHeight = $navMain.attr("itemHeight"); 218 self.slides.height(itemHeight); 219 } 220 221 /** 222 * Calc visible count and set single slide height 223 */ 224 self.calcSlidesVisible = function() { 225 var visible = 1; 226 227 visible = Math.floor( self.sliderHeight / self.itemMaxHeight ); 228 229 if ( visible > self.slidesCount ) 230 visible = self.slidesCount; 231 232 if ( visible == self.visible ) 233 return; 234 235 this.visible = visible; 236 237 //console.log(this.visible); 238 self.reInitSlider(visible); 239 } 240 241 /** 242 * Reinit slider 243 */ 244 self.reInitSlider = function( visible ) { 245 if ( false === self.isLoaded ) 246 return; 247 248 var args = { 249 items: { 250 visible: visible 251 } 252 } 253 254 $nav.trigger('configuration', args, true); 255 } 256 257 /**
258 * Calc slide page by curren position 259 */ 260 self.calcSlidePage = function( currentPos ) { 261 return Math.ceil( ++currentPos / self.visible ) - 1; 262 } 263 264 /** 265 * Get curren slider page on slider confing 266 */ 267 self.getCurrentPage = function() { 268 var page = 0; 269 270 $nav.trigger('currentPage', function(p){ 271 page = p; 272 }); 273 274 return page; 275 } 276 277 /** 278 * May be slide page 279 */ 280 self.mbDoSlide = function( currentPos ) { 281 // 282 // WD-414 - changes for sliding only one slide at a time. 283 // 284 self.slideTo( currentPos ); 285 Actions.bulletActions( self.slides.eq( currentPos ) ); 286 return; 287 288 var calcSlidePage = self.calcSlidePage( currentPos ), 289 currentPage = self.getCurrentPage(); 290 291 Actions.bulletActions( self.slides.eq( currentPos ) ); 292 293 if ( calcSlidePage == currentPage ) 294 return; 295 296 self.slideTo( calcSlidePage ); 297 } 298 299 /** 300 * Slide to 301 */ 302 self.slideTo = function( page ) { 303 if(slideStyle == "fade"){ 304 //$nav.trigger( 'slideToPage', page ); 305 $nav.trigger("slideToPage", [page, { 306 307 fx : "fade", 308 309 duration : 500 310 311 }]); 312 }else{ 313 $nav.trigger( 'slideToPage', page ); 314 } 315 }// end function 316 317 self.resizeItemImage = function() { 318 /*self.slides.each(function(){ 319 var itemHeight = $(this).height() 320 var img = $(this).find('img'); 321 $(img).css("margin",0); 322 $(img).css("width",'auto'); 323 $(img).css("height",Math.round(itemHeight - itemHeight * 5/ 100)-10); 324 });*/ 325 } 326 327 self.ItemAlign = function() { 328 329 var layoutHeight = $main.find('.caroufredsel_wrapper').height(); 330 331 var slideHeight = Math.round(layoutHeight/self.slidesCount); 332 slideHeight = slideHeight; 333 334 self.slides.each(function(){ 335 336 /*$(this).width($($navMain).width()); 337 $(this).height(slideHeight); 338 339 var span = $(this).find('span'); 340 $(span).width('100%'); 341 $(span).height('100%');*/ 342 343 //var img = $(this).find('img'); 344 //$(img).css("padding",0); 345 //$(img).css("margin",0); 346 //$(img).width('97%'); 347 //$(img).height('97%'); 348 }); 349 } 350 } 351 352 /** 353 * Vertical navigation class 354 ======================================================*/ 355 356 var HorizontalNav = function( $main ) { 357 horiMain = $main; 358 var self = this; 359 isHorizontalNav=true; 360 var $nav = $main.find('.wpb-slider-horizontal-nav'); 361 362 // prev next block selector 363 this.mainBlockSelector = '.wpb-slider-horizontal-nav-main'; 364 365 var $navMain = $main.find(self.mainBlockSelector); 366 367 // slides array 368 this.slides = $nav.find('a'); 369 370 // slides count 371 this.slidesCount = self.slides.length; 372 373 // count of visible items 374 this.visible = 1; 375 376 // count of slide pages 377 this.slidePages = 1; 378 379 // is active vertical navigation 380 this.activeSlider = null; 381 382 // slider args 383 this.args = {}; 384 385 // slider height 386 this.sliderWidth = $navMain.width(); 387 388 // item max height 389 this.itemMaxWidth = $navMain.attr("itemWidth"); 390 391 // check true if slider is loaded first time 392 this.isLoaded = false; 393 394 /** 395 * Construct object 396 */ 397 self.construct = function() { 398 if ( !self.isActive() ) 399 return; 400 401 var layoutWidth = $main.find('.wpb-slider-horizontal-nav-main').width(); 402 403 var layoutHeight = $main.find('.caroufredsel_wrapper').height(); 404 var topMargin = layoutHeight-140; 405 var slideWidth = Math.round(layoutWidth/self.slidesCount);
406 var slideContentTop = topMargin-100; 407 slideWidth= slideWidth-4; 408 self.calcSliderArgs(); 409 self.setSliderWidth(); 410 self.setSliderArgs(); 411 self.args.height=slideWidth; 412 self.args.width=slideWidth; 413 Actions.loadSlider( $nav, self.args ); 414 self.setSliderConfigArgs(); 415 416 self.onResizeNav(); 417 418 // set first time loaded*/ 419 this.isLoaded = true; 420 } 421 422 423 self.setSliderWidth = function() { 424 this.sliderWidth = $navMain.width(); 425 } 426 427 /** 428 * On resize nav 429 */ 430 self.onResizeNav = function() { 431 $('body').on('wpbslWindowResize', function(){ 432 var w = $main.width(); 433 434 // update slides 435 this.slides = $nav.find('a'); 436 437 //$navMain.width(w); 438 439 self.setSliderWidth(); 440 self.calcSlidesVisible(); 441 442 $nav.trigger('updateSizes'); 443 444 var ishorNavVisible=$('.wpb-slider-horizontal-nav-main').is(':visible'); 445 $('.wpb-slider').children(".with-thumbnail").each(function(){ 446 if(!ishorNavVisible){ 447 $(this).removeClass('with-thumb-height'); 448 $(this).addClass('without-thumb-height'); 449 $(this).find("img").addClass('wp-post-image-without-thumb'); 450 451 //WD-403 452 if ($(this).find(".slide-content").html()) { 453 if ($(this).find(".entry-title").html() || $(this).find(".entry-excerpt").html()) { 454 $(this).find(".slide-content").addClass('slide-content-block'); //common class into wpb-slider-default.css file. 455 } 456 457 //for layout 4 - horizontal nav class 458 //$(this).find(".slide-content").addClass('wp-slide-content-without-thumb-block'); 459 //$(this).find(".entry-excerpt").addClass('wp-slide-content-without-thumb-block'); //no need. just check with main span slide-content. 460 } 461 /*else { //no need to do none. 462 //$(this).find(".slide-content").addClass('slide-content-none'); 463 464 //$(this).find(".slide-content").addClass('wp-slide-content-without-thumb-none'); 465 }*/ 466 467 //same as into self.ItemAlign() method. 468 //var imght = $(this).find("img").attr("height"); 469 // $(this).find("img").css("height", imght+"px !important"); 470 }else{ 471 $(this).removeClass('without-thumb-height'); 472 $(this).addClass('with-thumb-height'); 473 $(this).find("img").removeClass('wp-post-image-without-thumb'); 474 475 //same as into self.ItemAlign() method. 476 //var imght = $(this).find("img").attr("height"); 477 // $(this).find("img").css("height", imght+"px !important"); 478 } 479 }); 480 481 $('.slider-nav').each(function(){ 482 if(!ishorNavVisible){ 483 $(this).removeClass('with-thumb-height-nav'); 484 $(this).addClass('without-thumb-height-nav'); 485 }else{ 486 $(this).removeClass('without-thumb-height-nav'); 487 $(this).addClass('with-thumb-height-nav'); 488 } 489 }); 490 491 }); 492 } 493 494 /** 495 * Set slider config args to use this on slider actions 496 */ 497 self.setSliderConfigArgs = function() { 498 this.slidePages = self.getSlidePages(); 499 } 500 501 /** 502 * Get count slides pages 503 */ 504 self.getSlidePages = function() { 505 return Math.ceil( self.slidesCount / self.visible ); 506 } 507 508 /** 509 * Check is active vertiacal navigation 510 */ 511 self.isActive = function() { 512 if ( null === self.activeSlider ) 513 self.activeSlider = ( 0 == $nav.length ) ? false : true; 514 515 return self.activeSlider; 516 } 517 518 /** 519 * Slides args 520 */ 521 self.setSliderArgs = function() { 522 var prevNext = Actions.getPrevNext( $main, self.mainBlockSelector ); 523 for(var x in wpbSliderArgs){ 524 var currSliderId = x; 525 slideStyle = wpbSliderArgs[x]['thumb_slide_style']; 526 break; 527 } 528 529 530 var args = { 531 responsive: true, 532 circular : false, 533 infinite : false, 534 direction : "left", 535 items: { 536 visible: self.visible 537 }, 538 /*height: '100%',*/ 539 width: $navMain.attr("itemWidth"), 540 /*height: $navMain.attr("itemHeight"),*/
541 auto: false, 542 scroll : { 543 items : 1, 544 duration : 1000 545 }, 546 swipe: { 547 onTouch: true, 548 onMouse: true 549 }, 550 prev: prevNext.prev, 551 next: prevNext.next, 552 pagination : false, 553 onCreate: function(data) { 554 var first = data.items.prevObject[0]; 555 Actions.bulletActions( $(first) ); 556 } 557 } 558 // 559 // check if slide style is fade then use fade style. 560 // 561 if(slideStyle == "fade"){ 562 args["scroll"] = { 563 items : 1, 564 fx : "fade", 565 duration : 1000 566 }; 567 }// end if. 568 569 this.args = args; 570 } 571 572 /** 573 * Calc nav-slider args 574 */ 575 self.calcSliderArgs = function() { 576 //self.calcItemMaxWidth(); 577 self.calcSlidesVisible(); 578 self.calcSlidesWidth(); 579 self.ItemAlign(); 580 } 581 582 /** 583 * Calc slide-item max height 584 */ 585 self.calcItemMaxWidth = function() { 586 var maxWidth = 0; 587 588 self.slides.each(function(){ 589 var w = $(this).width(); 590 if ( w > maxWidth ) { 591 maxWidth = w; 592 }; 593 }); 594 595 this.itemMaxWidth = maxWidth; 596 } 597 598 self.ItemAlign = function() { 599 var layoutWidth = $main.find('.wpb-slider-horizontal-nav-main').width(); 600 var layoutHeight = $main.find('.caroufredsel_wrapper').height(); 601 var topMargin = layoutHeight-$($navMain).height(); 602 var slideWidth = Math.round(layoutWidth/self.slidesCount);
603 var slideContentTop = topMargin-100; 604 slideWidth= slideWidth-1; 605 //$($nav).width(layoutWidth); 606 this.sliderWidth =layoutWidth; 607 // $($nav).height(140); 608 this.sliderWidth = layoutWidth; 609 //$main.find('.caroufredsel_wrapper').width(layoutWidth); 610 //$($navMain).width(layoutWidth); 611 // $($navMain).height(140); 612 //$($navMain).css("z-index",300); 613 //$($navMain).css("top",topMargin); 614 //$main.find('.slide-content').css("top",slideContentTop); 615 //$main.find('.wpb-slider-block').width(layoutWidth); 616 var ishorNavVisible=$('.wpb-slider-horizontal-nav-main').is(':visible'); 617 $('.wpb-slider').children(".with-thumbnail").each(function(){ 618 619 if(!ishorNavVisible){ 620 $(this).removeClass('with-thumb-height'); 621 $(this).addClass('without-thumb-height'); 622 $(this).find("img").addClass('wp-post-image-without-thumb'); 623 //console.log($(this).find("img").attr("height")); 624 625 var imght = $(this).find("img").attr("height"); //looks like they forgot to get value of variable imght, same as into else condition. so, just added. 626 $(this).find("img").css("height", imght+"px !important"); 627 628 //WD-403 629 if ($(this).find(".slide-content").html()) { 630 if ($(this).find(".entry-title").html() || $(this).find(".entry-excerpt").html()) { 631 $(this).find(".slide-content").addClass('slide-content-block'); 632 } 633 } 634 635 }else{ 636 $(this).removeClass('without-thumb-height'); 637 $(this).addClass('with-thumb-height'); 638 $(this).find("img").removeClass('wp-post-image-without-thumb'); 639 640 var imght = $(this).find("img").attr("height"); 641 $(this).find("img").css("height", imght+"px !important"); 642 643 //create one new div and append image inside that div. 644 /*var iDiv = document.createElement('div'); 645 iDiv.className = 'img-div'; 646 $(this).find("img").parent().append(iDiv); 647 648 $(this).find(".img-div").append($(this).find("img"));*/ 649 } 650 }); 651 652 653 $('.slider-nav').each(function(){ 654 if(!ishorNavVisible){ 655 $(this).removeClass('with-thumb-height-nav'); 656 $(this).addClass('without-thumb-height-nav'); 657 }else{ 658 $(this).removeClass('without-thumb-height-nav'); 659 $(this).addClass('with-thumb-height-nav'); 660 } 661 }); 662 $('.horz-nav').click(function(e){ 663 e.preventDefault(); 664 var curPage = self.getCurrentPage(); 665 if($(this).attr('class')=='prev horz-nav'){ 666 667 if(curPage==0) 668 var page = self.slidesCount; 669 else 670 var page = curPage-1; 671 672 673 }else if($(this).attr('class')=='next horz-nav'){ 674 if(curPage==self.slidesCount) 675 var page = 0; 676 else 677 var page = curPage+1; 678 } 679 680 if(page==0 || page==(self.slidesCount-1)){ 681 $nav.trigger("slideToPage", [page, { 682 duration : 0 683 }]); 684 }else{ 685 $nav.trigger( 'slideToPage', page ); 686 } 687 688 }); 689 690 //self.slides.each(function(){ 691 /*$(this).css("float","left"); 692 $(this).width(slideWidth); 693 694 var span = $(this).find('span'); 695 696 $(span).height($($navMain).height());*/ 697 698 //var img = $(this).find('img'); 699 //$(img).css("padding",0); 700 //$(img).css("margin",0); 701 //$(img).width('97%'); 702 //$(img).height('97%'); 703 //console.log(img); 704 705 706 //$(this).height(140); 707 //$(this).width('auto'); 708 //}); 709 710 /*$('.wpbsl-slide-link').each(function(){ 711 if(!ishorNavVisible){ 712 $(this).removeClass('with-thumb-height'); 713 $(this).addClass('without-thumb-height'); 714 }else{ 715 $(this).removeClass('without-thumb-height'); 716 $(this).addClass('with-thumb-height'); 717 } 718 });*/ 719 } 720 721 /** 722 * Calc and set slides height 723 */ 724 self.calcSlidesWidth = function() { 725 //var itemWidth = self.sliderWidth / self.visible; 726 var itemWidth = $navMain.attr("itemWidth"); 727 self.slides.width(itemWidth);
728 } 729 730 /** 731 * Calc visible count and set single slide height 732 */ 733 self.calcSlidesVisible = function() { 734 var visible = 1; 735 736 visible = Math.floor( self.sliderWidth / self.itemMaxWidth ); 737 738 if ( visible > self.slidesCount ) 739 visible = self.slidesCount; 740 741 if ( visible == self.visible ) 742 return; 743 744 this.visible = visible; 745 self.reInitSlider(visible); 746 } 747 748 /** 749 * Reinit slider 750 */ 751 self.reInitSlider = function( visible ) { 752 if ( false === self.isLoaded ) 753 return; 754 755 var args = { 756 items: { 757 visible: visible 758 } 759 } 760 761 $nav.trigger('configuration', args, true); 762 } 763 764 /** 765 * Calc slide page by curren position 766 */ 767 self.calcSlidePage = function( currentPos ) { 768 //console.log(currentPos+"--------------"+self.visible); 769 return Math.ceil( ++currentPos / self.visible ) - 1; 770 } 771 772 /** 773 * Get curren slider page on slider confing 774 */ 775 self.getCurrentPage = function() { 776 var page = 0; 777 778 $nav.trigger('currentPage', function(p){ 779 page = p; 780 }); 781 782 return page; 783 } 784 785 /** 786 * May be slide page 787 */ 788 self.mbDoSlide = function( currentPos ) { 789 self.slideTo( currentPos ); 790 Actions.bulletActions( self.slides.eq( currentPos ) ); 791 return; 792 var calcSlidePage = self.calcSlidePage( currentPos ), 793 currentPage = self.getCurrentPage(); 794 795 //console.log(self.slides.eq( currentPos +"--"+currentPage)); 796 Actions.bulletActions( self.slides.eq( currentPos ) ); 797 798 if ( calcSlidePage == currentPage ) 799 return; 800 801 self.slideTo( calcSlidePage ); 802 } 803 804 /** 805 * Slide to 806 */ 807 self.slideTo = function( page ) { 808 if(page==0 || page==1 || page==(self.slidesCount-1)){ 809 $nav.trigger("slideToPage", [page, { 810 duration : 0 811 }]); 812 }else{ 813 $nav.trigger( 'slideToPage', page ); 814 } 815 } 816 } 817 /** 818 * Main slider class 819 ======================================================*/ 820 821 var MainSlider = function( $main ) { 822 var self = this; 823 824 // vartical nav object 825 var verticalNav = {}; 826 var horizontalNav = {}; 827 828 //var contest = $main.context; 829 var className = jQuery($main).attr("class"); 830 831 var isHorizNav = false; 832 if(className.indexOf('wpbsl-layout-default-4')>0){ 833 isHorizNav = true; 834 } 835 // var $main = $('.js-wpb-slider-main-container'); 836 var $slider = $main.find('.wpb-slider'); 837 var $sliderBlock = $main.find('.wpb-slider-block'); 838 839 // slides array 840 this.slides = $slider.find('.wpbsl-slide'); 841 842 // Slider ID 843 this.ID = 0; 844 845 // Slider args 846 this.args = {}; 847 848 // bullets main block selector 849 this.bulletsBlockSelector = '.wpb-slider-bullets'; 850 851 // prev-next meain block selector 852 this.prevNextBlockSelector = '.wpb-slider-block'; 853 854 // is load slider 855 this.activeSlider = null; 856 857 this.BlockSizer = new BlockSizer( $sliderBlock ); 858 859 /** 860 * Construct object 861 */ 862 self.construct = function() { 863 self.setID(); 864 865 if ( !self.isLoad() ) 866 return; 867 868 self.setArgs(); 869 self.initBlockSizer(); 870 871 Actions.loadSlider( $slider, self.args ); 872 self.bullets(); 873 self.onResizeSlider(); 874 875 self.setSliderSize('onLoad'); 876 877 self.setBinds(); 878 } 879 880 /** 881 * Actions onLoad Window 882 */ 883 self.actionsOnLoad = function() { 884 self.setSliderSize('onLoad'); 885 self.setImagesSize(); 886 self.doEmbed(); 887 } 888 889 /** 890 * init BlockSizer object 891 */ 892 self.initBlockSizer = function() { 893 var w = self.args.meta.width; 894 var h = self.args.meta.height; 895 896 self.BlockSizer.init(w,h); 897 } 898 899 /** 900 * On resize window set slider size and set slide image size 901 */ 902 self.onResizeSlider = function() { 903 $('body').on('wpbslWindowResize', function() { 904 if ( !self.isSliderResize() ) 905 return; 906 907 self.setSliderSize( 'onResize' ); 908 909 $slider.trigger('currentVisible', function(visible){ 910 self.setImagesSize(); 911 }); 912 }); 913 } 914 915 /** 916 * Check is slider container is resize or no 917 */ 918 self.isSliderResize = function() { 919 return self.BlockSizer.isResize(); 920 } 921 922 /** 923 * set slider size 924 */ 925 self.setSliderSize = function( key ) { 926 switch( key ) { 927 case 'onResize': 928 self.BlockSizer.setSizeOnResize(); 929 break; 930 case 'onLoad': 931 self.BlockSizer.setSize(); 932 } 933 934 $slider.trigger('updateSizes'); 935 } 936 937 /** 938 * Check is load slider 939 */ 940 self.isLoad = function() { 941 if ( null !== self.activeSlider ) 942 self.activeSlider; 943 944 self.activeSlider = false; 945 946 // is set arg 'wpbSliderArgs' generated by php 947 if ( undefined === wpbSliderArgs ) 948 return self.activeSlider; 949 950 // is set slider args 951 if ( undefined === wpbSliderArgs[self.ID] ) 952 return self.activeSlider; 953 954 // is slider in page 955 if ( 0 == $slider.length ) 956 return self.activeSlider; 957 958 self.activeSlider = true; 959 960 return self.activeSlider; 961 } 962 963 /** 964 * Set slider ID 965 */ 966 self.setID = function() { 967 this.ID = Actions.getID( $main ); 968 } 969 970 /** 971 * Set slider args 972 */ 973 self.setArgs = function() { 974 var args = wpbSliderArgs[self.ID]; 975 976 args.onCreate = function(data) { 977 var $slide = $(data.items[0]); 978 979 data.items.prevObject.css('display','block'); 980 } 981 982 if ( args.prev_next ) { 983 var prevNext = Actions.getPrevNext( $main, self.prevNextBlockSelector ); 984 985 args.prev = prevNext.prev; 986 args.next = prevNext.next; 987 }; 988 989 args.scroll.onBefore = function(data) { 990 var $newSlide = $(data.items.visible[0]), 991 $oldSlide = $(data.items.old[0]); 992 993 if(isHorizNav) 994 self.horizontalNavItegration( $(this) ); 995 else 996 self.verticalNavItegration( $(this) ); 997
998 $oldSlide.trigger('wpbsl-stop-video'); 999 } 1000 1001 self.args = args; 1002 } 1003 1004 /** 1005 * Set images size 1006 */ 1007 self.setImagesSize = function() { 1008 var sliderSize = self.BlockSizer.getSize(); 1009 1010 var SetImageSize = new ImageSizer( self.slides, sliderSize ); 1011 1012 SetImageSize.setSizes(); 1013 } 1014 1015 /** 1016 * Set vertical nav 1017 */ 1018 self.setVerticalNav = function( nav ) { 1019 verticalNav = nav; 1020 } 1021 1022 /** 1023 * Set horizontal nav 1024 */ 1025 self.setHorizontalNav = function( nav ) { 1026 horizontalNav = nav; 1027 } 1028 1029 /** 1030 * Vertical navigation integration 1031 */ 1032 self.verticalNavItegration = function( $this ) { 1033 if ( undefined === verticalNav ) 1034 return; 1035 1036 if ( undefined == verticalNav || 'undefined' == verticalNav ) 1037 return; 1038 1039 //alert('here 1.....'); 1040 1041 try { 1042 if ( !verticalNav.isActive() ) { 1043 return; 1044 } 1045 } 1046 catch(err){ 1047 return; 1048 } 1049 1050 //alert('here 2.....'); 1051 1052 var position; 1053 1054 $this.trigger("currentPosition", function( pos ) { 1055 position = pos; 1056 }); 1057 verticalNav.mbDoSlide( position ); 1058 } 1059 /** 1060 * horizontal navigation integration 1061 */ 1062 self.horizontalNavItegration = function( $this ) { 1063 if ( undefined === horizontalNav ) 1064 return; 1065 1066 if ( undefined == horizontalNav || 'undefined' == horizontalNav ) 1067 return; 1068 1069 try { 1070 if ( !horizontalNav.isActive() ) { 1071 return; 1072 } 1073 } 1074 catch(err){ 1075 return; 1076 } 1077 1078 var position; 1079 1080 $this.trigger("currentPosition", function( pos ) { 1081 position = pos; 1082 }); 1083 1084 horizontalNav.mbDoSlide( position ); 1085 } 1086 1087 /** 1088 * Load bullets 1089 */ 1090 self.bullets = function() { 1091 var bullets = Actions.getBullets( $main, self.bulletsBlockSelector ); 1092 1093 if ( false !== bullets ) { 1094 Actions.doBullets( $slider, bullets ); 1095 }; 1096 } 1097 1098 self.doEmbed = function( $currentSlide ) { 1099 // $('body').on('onYouTubeIframeAPIReady', function(){ 1100 self.slides.each(function(){ 1101 var DoEmbedSlide = new EmbedSlide(); 1102 1103 DoEmbedSlide.init( $(this), $slider, $main ); 1104 }); 1105 // }); 1106 } 1107 1108 self.setBinds = function() { 1109 $main.on('wpbsl-show-prev-next', function(){ 1110 $(this).addClass('show-prev-next'); 1111 }); 1112 1113 $main.on('wpbsl-hide-prev-next', function(){ 1114 $(this).removeClass('show-prev-next'); 1115 }); 1116 1117 $sliderBlock.on({ 1118 //'wpbsl-slider-play': function(){ 1119 // $slider.trigger('play'); 1120 //}, 1121 'wpbsl-slider-pause': function(){ 1122 $slider.trigger('pause'); 1123 } 1124 }); 1125 } 1126 } 1127 1128 /** 1129 * Actions class 1130 ======================================================*/ 1131 var Actions = { 1132 // get navigation element 1133 getNav: function( $mainBlock, navClass ) { 1134 var $nav = $mainBlock.find( navClass ); 1135 1136 if ( $nav.length > 0 ) 1137 return $nav; 1138 1139 return false; 1140 }, 1141 // get bullets $ object 1142 getBullets: function( $mainBlock, navBlock ) { 1143 return this.getNav( $mainBlock, navBlock ); 1144 }, 1145 // get prev-next $ object 1146 getPrevNext: function( $mainBlock, navBlock ) { 1147 var $prevNext = this.getNav( $mainBlock, navBlock ); 1148 1149 var outNav = {}; 1150 var prev, next; 1151 1152 if ( false !== $prevNext ) { 1153 prev = { 1154 button: $prevNext.find('.prev'), 1155 key: 'left' 1156 } 1157 next = { 1158 button: $prevNext.find('.next'), 1159 key: 'right' 1160 } 1161 } else { 1162 prev = next = false; 1163 } 1164 1165 outNav = { 1166 prev : prev, 1167 next : next 1168 } 1169 1170 return outNav; 1171 }, 1172 // do bullets actions 1173 bulletActions: function( $bullet ) { 1174 $bullet.siblings().removeClass('active'); 1175 $bullet.addClass('active'); 1176 }, 1177 // do bullets 1178 doBullets: function( $slider, $bullets ) { 1179 $bullets.on( 'click', 'a', function(e) { 1180 e.preventDefault(); 1181 1182 var key = +$(this).data('item'); 1183 1184 $slider.trigger( 'slideTo', key ); 1185 }); 1186 }, 1187 // get id 1188 getID: function( $block ) { 1189 var idStr = $block.attr('id') 1190 return idStr.replace('wpb-slider-', ''); 1191 }, 1192 // load slider 1193 loadSlider : function( $slider, args ) { 1194 $slider.map(function(){ 1195 $slider.carouFredSel( args/*, {debug:true}*/ ); 1196 }); 1197 } 1198 } 1199 1200 /** 1201 * Window Resizer class 1202 ======================================================*/ 1203 var WindowResiser = function() { 1204 var self = this; 1205 1206 this.oldWidth = 0; 1207 1208 // set current window width 1209 self.setWindowWidth = function() { 1210 this.oldWidth = $(window).width(); 1211 } 1212 1213 // check is resize window 1214 self.isResize = function() { 1215 return ( self.oldWidth != $(window).width() ); 1216 } 1217
1218 // Trigger event on resize window 1219 self.onResizeSlider = function() { 1220 $(window).resize(function(){ 1221 if ( !self.isResize() ) 1222 return; 1223 1224 self.setWindowWidth(); 1225 1226 $('body').trigger('wpbslWindowResize'); 1227 1228 }); 1229 } 1230 } 1231 1232 /** 1233 * Block sizer class 1234 ======================================================*/ 1235 1236 var BlockSizer = function( $block ) { 1237 var self = this; 1238 1239 this.$block = $block; 1240 1241 this.w = 0; 1242 this.h = 0; 1243 1244 this.ratioWH = self.w / self.h; 1245 1246 // init class 1247 self.init = function( width, height ) { 1248 self._setWidth(width); 1249 self._setHeight(height); 1250 self._setRationWH(); 1251 } 1252 1253 // set ration width-height 1254 self._setRationWH = function() { 1255 this.ratioWH = self.w / self.h; 1256 } 1257 1258 // set block width 1259 self._setWidth = function( w ) { 1260 if ( !self._isset(w) ) 1261 w = self._getWidth(); 1262 1263 this.w = w; 1264 } 1265 1266 // get block width 1267 self._getWidth = function() { 1268 return self.$block.width(); 1269 } 1270 1271 // set block height 1272 self._setHeight = function(h) { 1273 if ( !self._isset(h) ) 1274 h = self._getHeight(); 1275 1276 this.h = h; 1277 } 1278 1279 // get block height 1280 self._getHeight = function() { 1281 return self.$block.height(); 1282 } 1283 1284 // check isset arg on no 1285 self._isset = function( arg ) { 1286 return !( undefined === arg ); 1287 } 1288 1289 // check is resize block (!not window) 1290 self.isResize = function( w ) { 1291 if ( !self._isset(w) ) 1292 w = self._getWidth(); 1293 1294 return !( w == self.w ); 1295 } 1296 1297 // get block size 1298 self.getSize = function() { 1299 return { 1300 width : self._getWidth(), 1301 height: self._getHeight() 1302 } 1303 } 1304 1305 // set size orResize window 1306 self.setSizeOnResize = function() { 1307 var w = self._getWidth(); 1308 1309 if ( !self.isResize(w) ) 1310 return; 1311 1312 self.setSize( w ); 1313 } 1314 1315 // set block size 1316 self.setSize = function( w ) { 1317 if ( !self._isset(w) ) ; 1318 w = self._getWidth(); 1319 1320 self._setWidth( w ); 1321 1322 var h = w / self.ratioWH; 1323 1324 self.$block.height(h); 1325 } 1326 } 1327 1328 /** 1329 * Image sizer class 1330 ======================================================*/ 1331 1332 var ImageSizer = function( slides, sliderSize ) { 1333 var self = this; 1334 1335 this.slides = slides; 1336 this.sliderSize = sliderSize; 1337 1338 /** 1339 * Set all images size 1340 */ 1341 self.setSizes = function() { 1342 self.slides.each(function(){ 1343 self.setImageSize( $(this) ); 1344 }); 1345 } 1346 1347 /** 1348 * Set single image size 1349 */ 1350 self.setImageSize = function( $slide ) { 1351 // clear attr 'style' for responsive 1352 var $img = $slide.find('.wp-post-image'); 1353 1354 if ( 0 == $img.length ) 1355 return; 1356 1357 var loop = 0; 1358 1359 $img.attr('style', ''); 1360 1361 var css = self.calcImageSize( $img, loop ); 1362 1363 if(!isHorizontalNav){ 1364 $img.css(css); 1365 } 1366 } 1367 1368 /** 1369 * Calculate image size 1370 */ 1371 self.calcImageSize = function( $img, loop ) { 1372 var width = self.sliderSize.width, 1373 height = self.sliderSize.height, 1374 imgH = $img.height(), 1375 imgW = $img.width(); 1376 1377 var css = {}; 1378 1379 loop++; 1380 //alert(width + ' -- ' + height + ' : ' + imgW + ' -- ' + imgH); 1381 // difference between image height and slider height 1382 var diffH = imgH - height; 1383 1384 // difference between image width and slider width 1385 var diffW = imgW - width; 1386 1387 //alert(diffW + ' -- ' + diffH); 1388 1389 // if image size smaller than slider size 1390 if ( diffH < 0 && diffW < 0 && 1 == loop ) { 1391 var dH = height / imgH; 1392 var dW = width / imgW; 1393 1394 // if number of increase is smaller by height 1395 if ( dH < dW ) { 1396 $img.height(height); 1397 } 1398 // if number of increase is smaller by width 1399 else { 1400 $img.width(width); 1401 } 1402 1403 return self.calcImageSize( $img, loop ); 1404 }; 1405 1406 // set image_width = slider_width and 1407 // set negative margin for image_height 1408 if ( diffW < 0 ) { 1409 var pr = width / imgW; 1410 var newH = imgH * pr; 1411 var margin = ( height - newH ) / 2; 1412 1413 css = { 1414 maxWidth : '100%', 1415 maxHeight: '1000%', 1416 height : newH, 1417 width : width, 1418 margin : margin + 'px 0' 1419 } 1420 } else 1421 1422 // set image_height = slider_height and 1423 // set negative margin for image_width 1424 if ( diffH < 0 ) { 1425 var pr = height / imgH; 1426 var newW = imgW * pr; 1427 var margin = ( width - newW ) / 2; 1428 1429 css = { 1430 maxWidth : '1000%', 1431 maxHeight: '100%', 1432 height : height, 1433 width : newW, 1434 margin : '0 '+ margin + 'px' 1435 } 1436 }; 1437 1438 return css; 1439 } 1440 } 1441 1442 var EmbedSlide = function() { 1443 var self = this; 1444 1445 this.toggleClass = 'show-embed'; 1446 1447 this.player = {}; 1448 1449 this.isFirstLoadedVideo = false; 1450 1451 self.init = function( $currentSlide, $slider, $mainBlock ) { 1452 1453 this.$slide = $currentSlide; 1454 1455 if ( !self.hasEmbed() ) 1456 return; 1457 1458 self.loadPlayer(); 1459 1460 this.$slider = $slider; 1461 this.$mainBlock = $mainBlock; 1462 1463 // 1464 // check if this is jwplatemform player. 1465 // condition 1 :find <script>
1465 tag in slide - get 'src' attribute - look for content.jwplatform.com 1466 // if above condition satisfied that means we have jwplayer embed with js that means call PlayPauseJWPlayer with play action. 1467 // 1468 var dataAttributeOfObjectTag = $currentSlide.find('script').attr("src"); 1469 if(dataAttributeOfObjectTag != undefined){ 1470 var ifThisIsKalturaCondition1 = dataAttributeOfObjectTag.search(/content\.jwplatform\.com/ig); 1471 if(ifThisIsKalturaCondition1 > 0){ 1472 this.$slide.isJWPlayer = true; 1473 // removed below if else condition from WD-632 1474 //if($currentSlide.find('object').attr("id") == undefined){ 1475 var playerIdWillBe = $currentSlide.find(".embed-content").find("div").attr("id"); 1476 //alert("1...."+$currentSlide.html()); 1477 //}else{ 1478 // var playerIdWillBe = $currentSlide.find('object').attr("id"); 1479 // alert("2...."+$currentSlide.html()); 1480 //} 1481 //alert(playerIdWillBe); 1482 this.$slide.jwPlayerId = playerIdWillBe; 1483 }else{ 1484 this.$slide.isJWPlayer = false; 1485 } 1486 }// end if - check if this is jqplayer 1487 this.$closeBtn = self.$slide.find('.embed-close-btn'); 1488 this.$slideLink = self.$slide.find('.wpbsl-slide-link'); 1489 self.setEvents(); 1490 self.mbPlayVideo(); 1491 self.mbStopVideo(); 1492 } 1493 1494 /** 1495 * Has slide embed or no 1496 */ 1497 self.hasEmbed = function() { 1498 return self.$slide.hasClass( 'has-slide-embed' ); 1499 } 1500 1501 /** 1502 * Set events on slide 1503 */ 1504 self.setEvents = function() { 1505 self.$slide.on('wpbsl-play-video', function(){ 1506 self.playVideo(); 1507 }); 1508 1509 self.$slide.on('wpbsl-stop-video', function(){ 1510 wait(1000); 1511 jQuery(".jwcontrols").css({ 1512 "z-index": "0"}); 1513 self.stopVideo(); 1514 }); 1515 } 1516 1517 /** 1518 * Maybe play video 1519 */ 1520 self.mbPlayVideo = function() { 1521 self.$slideLink.on('click', function(e){ 1522 e.preventDefault(); 1523 // - additional code of david added - 1524 if (jQuery(".embed-close-btn").css("display") === "none") { 1525 jQuery(".jwcontrols").css({ 1526 "z-index": "100" 1527 }); 1528 }// end if - 1529 self.playVideo(); 1530 }); 1531 } 1532 1533 /** 1534 * Maybe stop video 1535 */ 1536 self.mbStopVideo = function() { 1537 self.$closeBtn.on('click', function(e){ 1538 if (jQuery(".embed-close-btn").css("display") === "block") { 1539 jQuery(".jwcontrols").css({ 1540 "z-index": "0" 1541 }); 1542 }// end if. 1543 1544 e.preventDefault(); 1545 self.stopVideo(); 1546 }); 1547 } 1548 1549 /** 1550 * Play video - hide image and load video 1551 */ 1552 self.playVideo = function() { 1553 self.embedToggler('enable'); 1554 1555 self.navPrevNextToggler('hide'); 1556 1557 self.pauseSlider(); 1558 1559 // 1560 // hide title and content 1561 // 1562 self.$slide.find(".slide-content").css("display","none"); 1563 1564 // 1565 // check here if this slide is of JWPlayer then just play it directly. just after pause of slider. 1566 // and return from it directly. [WD-370] 1567 // 1568 if(self.$slide.isJWPlayer){ 1569 var isIE11 = !!navigator.userAgent.match(/Trident.*rv\:11\./); 1570 var ua = window.navigator.userAgent; 1571 var msie = ua.indexOf("MSIE "); 1572 // 1573 // if ie 11 1574 // 1575 if(isIE11 || msie > 0){ 1576 var currentHtml = self.$slide.html(); 1577 self.$slide.html(""); 1578 self.$slide.html(currentHtml); 1579 self.init( this.$slide, this.$slider, this.$mainBlock ); 1580 setTimeout(function(){jwplayer(self.$slide.jwPlayerId).play(true); }, 2000); 1581 }else{ 1582 jwplayer(self.$slide.jwPlayerId).play(true); 1583 } 1584 return; 1585 }// end if check if this is jwplayer then play it. 1586 self.loadPlayer(); 1587 } 1588 1589 /** 1590 * Load player 1591 */ 1592 self.loadPlayer = function() { 1593 if ( !self.$slide.hasClass( 'embed-type-youtube' ) ) 1594 return; 1595 if ( self.isFirstLoadedVideo ) { 1596 self.playPlayer(); 1597 return; 1598 } 1599 1600 this.isFirstLoadedVideo = true; 1601 1602 this.player = new YoutubePlayer(); 1603 self.player.init( self.$slide ); 1604 } 1605 1606 self.stopPlayer = function() { 1607 //if ( !self.isFirstLoadedVideo ) 1608 // return; 1609 1610 if ( 'undefined' == typeof self.player.stopVideo ) 1611 return; 1612 1613 self.player.stopVideo(); 1614 } 1615 1616 self.playPlayer = function() { 1617 self.player.playVideo(); 1618 } 1619 1620 /** 1621 * Stop video - show image and stop video 1622 */ 1623 self.stopVideo = function() { 1624 self.embedToggler('disable'); 1625 self.navPrevNextToggler('show'); 1626 self.$slide.find(".slide-content").css("display",""); 1627 // 1628 // check here if this slide is of JWPlayer then just puase it directly. just before play of slider. 1629 // and return from it directly. [WD-370] 1630 // 1631 if(self.$slide.isJWPlayer){ 1632 jwplayer(self.$slide.jwPlayerId).pause(true); 1633 self.playSlider(); 1634 return; 1635 }// end if check if this is jwplayer then play it. 1636 self.playSlider(); 1637 self.stopPlayer(); 1638 } 1639 1640 /** 1641 * Pause Slider 1642 */ 1643 self.pauseSlider = function() { 1644 //self.$slider.trigger('pause'); 1645 1646 //self.$slider.trigger( 'slideTo', [i, 0, true] ); 1647 //self.$slider.trigger('slideTo', $(this).index()); //no need right now. 1648 1649 setTimeout(function() { 1650 self.$slider.trigger('pause', true); 1651 //self.$slider.trigger('pause'); 1652 1653 //self.$slider.trigger('play',true); 1654 //self.$slider.trigger('stop'); 1655 1656 }, 1000); 1657 return false; 1658 } 1659 1660 /** 1661 * play Slider 1662 */ 1663 self.playSlider = function() { 1664 self.$slider.trigger('play'); 1665 } 1666 1667 /** 1668 * Show/hide prev-next nav 1669 */ 1670 self.navPrevNextToggler = function( key ) { 1671 self.$mainBlock.trigger('wpbsl-'+ key +'-prev-next'); 1672 } 1673 1674 /** 1675 * Enable/disable embed 1676 */ 1677 self.embedToggler = function( key ) { 1678 switch( key ) { 1679 case 'disable': 1680 self.$slide.removeClass(self.toggleClass); 1681 break; 1682 case 'enable': 1683 self.$slide.addClass(self.toggleClass); 1684 break; 1685 } 1686 } 1687 } 1688 1689 1690 var YoutubePlayer = function() { 1691 var self = this; 1692 1693 this.$slide; 1694 1695 this.videId = ''; 1696 1697 this.playerId = 'youtube-{sliderId}-{slideId}'; 1698 1699 this.player; 1700 1701 this.isFirstLoad = false; 1702 1703 self.init = function( $slide ) { 1704 this.$slide = $slide; 1705 1706 self.setPlayerArgs(); 1707 1708 this.player = new YT.Player( self.playerId, self.getArgs() ); 1709 } 1710 1711 self.setPlayerArgs = function() { 1712 var playerBlock = self.$slide.find('.youtube-player'); 1713 1714 this.playerId = playerBlock.attr('id'); 1715 this.videId = playerBlock.data('videoId'); 1716 } 1717 1718 self.getArgs = function() { 1719 return { 1720 height: '280', 1721 width: '500', 1722 videoId: self.videId, 1723 events: { 1724 'onReady': self.onPlayerReady, 1725 'onStateChange': self.onPlayerStateChange 1726 } 1727 } 1728 } 1729 1730 self.stopVideo = function() { 1731 if ( 'undefined' == typeof self.player.stopVideo ) 1732 return; 1733 1734 self.player.stopVideo(); 1735 } 1736 1737 self.playVideo = function() { 1738 if ( 'undefined' == typeof self.player.playVideo ) 1739 return; 1740 1741 self.player.playVideo(); 1742 } 1743 1744 /** 1745 * Video status event 1746 */ 1747 self.onPlayerStateChange = function(event) { 1748 if ( 0 != event.data ) 1749 return; 1750 1751 if (jQuery(".embed-close-btn").css("display") === "block") { 1752 jQuery(".jwcontrols").css({ 1753 "z-index": "0"}); 1754 } 1755
1756 self.$slide.trigger('wpbsl-stop-video'); 1757 } 1758 1759 /** 1760 * Player first time ready 1761 */ 1762 self.onPlayerReady = function(event) { 1763 setInterval( function() { 1764 var state = self.player.getPlayerState(); 1765 self.onPlayerStateChange( { 1766 data: state 1767 }); 1768 }, 3000); 1769 1770 if ( self.isFirstLoad ) 1771 return; 1772 1773 // autoplay in iOS not working 1774 // see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/AudioandVideoTagBasics/AudioandVideoTagBasics.html 1775 // find "...embedded media cannot be played automatically programatically in Safari on iOS - the user always initiates playback." 1776 if ( !is_iOSmobile() ) 1777 event.target.playVideo(); 1778 1779 self.isFirstLoad = true; 1780 } 1781 } 1782 1783 1784 /** 1785 * Load sliders 1786 ======================================================*/ 1787 var Sliders = {}; // loaded sliders object 1788 var $mainSliders = $('.js-wpb-slider-main-container'); 1789 1790 var DoReize = new WindowResiser(); 1791 DoReize.onResizeSlider(); 1792 1793 $mainSliders.map(function(){ 1794 var $main = $(this); 1795 1796 //var contest = $main.context; 1797 var className = jQuery($main).attr("class"); 1798 1799 // load main slider 1800 var Slider = new MainSlider( $main ); 1801 Slider.construct(); 1802 1803 if(className.indexOf('wpbsl-layout-default-4')>0){ 1804 var HorizNav = new HorizontalNav( $main ); 1805 HorizNav.construct(); 1806 Slider.setHorizontalNav( HorizNav ); 1807 1808 Sliders[Slider.ID] = { 1809 slider: Slider, 1810 nav: HorizNav 1811 }; 1812 }else{ 1813 // load vertical nav 1814 var VertNav = new VerticalNav( $main ); 1815 VertNav.construct(); 1816 Slider.setVerticalNav( VertNav ); 1817 1818 Sliders[Slider.ID] = { 1819 slider: Slider, 1820 nav: VertNav 1821 }; 1822 } 1823 }); 1824 1825 window.onload = function() { 1826 //alert('window.onload called.........'); 1827 //WD-561 onload is taking time to load because of page is not loaded completly. 1828 //in case we have twitter, pinterest , facebook , instragam etc.. on page. 1829 if (callActionsOnLoad) { 1830 //alert('window.onload 2'); 1831 } 1832 else { 1833 //alert('window.onload 1'); 1834 $mainSliders.map(function(){ 1835 var id = Actions.getID( $(this) ); 1836 var Slider = Sliders[id].slider; 1837 1838 Slider.actionsOnLoad(); 1839 }); 1840 callActionsOnLoad = true; 1841 } 1842 } 1843 1844 //WD-561 -- new fun call to set time out. 1845 function callFunActionsOnLoad() { 1846 //alert('callFunActionsOnLoad fun called.'); 1847 if (callActionsOnLoad) { 1848 //alert('callFunActionsOnLoad 2'); 1849 } 1850 else { 1851 //alert('callFunActionsOnLoad 1'); 1852 $mainSliders.map(function(){ 1853 var id = Actions.getID( $(this) ); 1854 var Slider = Sliders[id].slider; 1855 1856 Slider.actionsOnLoad(); 1857 }); 1858 callActionsOnLoad = true; 1859 } 1860 } 1861 1862 /** 1863 * Detect iOS 1864 */ 1865 function is_iOSmobile() { 1866 return navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false; 1867 } 1868 1869 function isIE() { 1870 var userAgent = navigator.userAgent; 1871 return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1; 1872 } 1873 1874 function wait(milliseconds){ 1875 const date = Date.now(); 1876 let currentDate = null; 1877 do { 1878 currentDate = Date.now(); 1879 } while (currentDate - date < milliseconds); 1880} 1881 1882 1883$(".wpbsl-slide-link").swipe({ 1884 tap: function(event, target) { 1885 // 1886 // check if this is embed slide then return from here. 1887 // 1888 if(this.find("span.play-icon").length > 0) 1889 return; 1890 1891 if(this.attr("target") != "_blank"){ 1892 //console.log("wpbsl-slide-link is clicked1"); 1893 //WPB-2714 1894 if (site_GlobalArr["sitePjax"] && site_GlobalArr["sitePjax"] != 'undefined') { 1895 if (site_GlobalArr["sitePjax"] == 'yes') { 1896 //dont need window.location.href for pjax sites. 1897 //2881 1898 if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 1899 try { 1900 var $ajaxLoader = $(".global-ajax-loader"); 1901 $ajaxLoader.fadeIn(); 1902 1903 $.pjax({url: this.attr("href") , container:'#pjax-wrapper'}); 1904 //$.pjax.reload('#pjax-wrapper', {url: this.attr("href")}); 1905 }catch(e){ 1906 window.location.href = this.attr("href"); 1907 } 1908 } 1909 } 1910 else { 1911 window.location.href = this.attr("href"); //as usual for normal sites for mobile device. 1912 } 1913 } 1914 else { 1915 window.location.href = this.attr("href"); //WPB-2666 1916 } 1917 }else if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 1918 window.open(this.attr("href")); 1919 } 1920 }, 1921 click: function(event, target) { 1922 // - additional code of david added - 1923 if (jQuery(".embed-close-btn").css("display") === "none") { 1924 jQuery(".jwcontrols").css({ 1925 "z-index": "100" 1926 }); 1927 }// end if - 1928 // 1929 // check if this is embed slide then return from here. 1930 // 1931 if(this.find("span.play-icon").length > 0) 1932 return; 1933 1934 //WD-561 1935 event = event || window.event; 1936 var mouseButtonClick = event.which; 1937 if (mouseButtonClick) { //1 -- left, 2 -- middle, 3 -- right 1938 if (mouseButtonClick == 3 || mouseButtonClick == '3') { 1939 return; 1940 } 1941 } 1942 1943 if(this.attr("target") != "_blank"){ 1944 //console.log("wpbsl-slide-link is clicked2"); 1945 //WPB-2714 1946 if (site_GlobalArr["sitePjax"] && site_GlobalArr["sitePjax"] != 'undefined') { 1947 if (site_GlobalArr["sitePjax"] == 'yes') { 1948 //dont need window.location.href for pjax sites. 1949 1950 //2881 1951 //alert(navigator.userAgent); 1952 if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 1953 try { 1954 var $ajaxLoader = $(".global-ajax-loader"); 1955 $ajaxLoader.fadeIn(); 1956 1957 $.pjax({url: this.attr("href") , container:'#pjax-wrapper'}); 1958 //$.pjax.reload('#pjax-wrapper', {url: this.attr("href")}); 1959 }catch(e){ 1960 window.location.href = this.attr("href"); 1961 } 1962 } 1963 } 1964 else { 1965 window.location.href = this.attr("href"); //as usual for normal sites for mobile device. 1966 } 1967 } 1968 else { 1969 window.location.href = this.attr("href"); //WPB-2666 1970 } 1971 }else if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 1972 window.open(this.attr("href")); 1973 } 1974 } 1975 1976 }); //End of swipe..... 1977 1978 // 1979 // checking if things works here 1980 // 1981 $(".entry-excerpt-thumb").each(function(){ 1982 var currentPostId = $(this).attr("post_id"); 1983 var currentPostExcerpt = $("#post-"+currentPostId).find(".slide-content").find(".entry-excerpt").html(); 1984 currentPostExcerpt = currentPostExcerpt.replace(/read more.../ig,""); 1985 var regex = /(<([^>]+)>)/ig 1986 currentPostExcerpt = currentPostExcerpt.replace(regex,""); 1987 $(this).html(currentPostExcerpt); 1988 }) 1989 1990 // 1991 // check if after loading everything it fixes issues. 1992 // 1993 if(!isHorizontalNav){ 1994 var totalNavigationHeight = $(".wpb-slider-vertical-nav-main").height(); 1995 var singleThumbHeight = $(".wpb-slider-vertical-nav-main").attr("itemheight"); 1996 //alert(totalNavigationHeight + ' -- ' + singleThumbHeight); //396/100 = 3.96 1997 var totalItemVisible = Math.floor( totalNavigationHeight / singleThumbHeight ); //3 -- as usual floor
1998 //var totalItemVisible = Math.ceil( totalNavigationHeight / singleThumbHeight ); //4 -- WD-561, tried with ceil 1999 //alert(totalItemVisible); 2000 2001 //WD-561 2002 var minusValue = 25; //default as ususl previous value. 2003 2004 if (totalItemVisible <= 3) { 2005 totalItemVisible = 4; 2006 minusValue = 32; 2007 } 2008 //alert('minusValue -- '+minusValue); 2009 2010 $(".wpb-slider-vertical-nav-main a.next").css("top",parseInt(singleThumbHeight*totalItemVisible-minusValue)+"px"); 2011 }// end if - check if tihs is vertical now then set arrows to proper position. 2012 else{ 2013 // 2014 // in horizantal condition. 2015 // 2016 var totalWidth = $(".wpb-slider-horizontal-nav-main").width(); 2017 $(".wpb-slider-horizontal-nav-main a.next").css("left",parseInt(totalWidth-20)+"px"); 2018 } 2019 2020 //WD-561 2021 setTimeout( callFunActionsOnLoad , 8000); //8 secs. 2022}); //End of document.ready
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.