1try { 2 window.IS_PROD = jQuery( '#is_prod' ).html().trim() == true; 3 if ( ! IS_PROD) { 4 console.log( 'Staging Server Detected' ); 5 } 6} catch (e) { 7 // console.log(e); 8} 9 10var ITM_jPlayer = window.ITM_jPlayer || {}; 11ITM_jPlayer.ITM_jPlayerLoad = false; 12ITM_jPlayer.ITM_jPlayerLoad_Flag = ''; 13 14window.console.log( 'hi to jquery.jplayer-init-latest.js file loaded..........' ); // we need this.... 15 16jQuery( document ).ready( 17 function( $ ){ 18 readyFn_jPlayerFunc( $ , 'document.ready' ); 19 ITM_jPlayer.ITM_jPlayerLoad_Flag = 'document.ready'; 20 } 21); 22 23// jQuery(document).ready(function($) { // WPB-518 24function readyFn_jPlayerFunc( $ , flagCheck = '') { 25 if (ITM_jPlayer.ITM_jPlayerLoad) { 26 window.console.log( 'ITM_jPlayerLoad return : ' + flagCheck ); 27 window.console.log( 'ITM_jPlayerLoad_Flag : ' + ITM_jPlayer.ITM_jPlayerLoad_Flag ); 28 29 // donot want to call this func again..... from pjax.... 30 return; 31 } 32 33 ITM_jPlayer.ITM_jPlayerLoad = true; 34 35 window.console.log( 'HERE >>>>> readyFn_jPlayerFunc >> jquery.jplayer-init-latest.js..... ' + flagCheck ); 36 37 // -------------------------------------------------- 38 // WPB-402 39 // AWS CONFIGURATION 40 // WPB-7232 AWS SDK can be slow/blocked on first load; don't let it abort player + menu init. 41 var awsSdkLoaded = (typeof AWS !== 'undefined'); 42 if (awsSdkLoaded) { 43 AWS.config.credentials = new AWS.CognitoIdentityCredentials( 44 { 45 IdentityPoolId: 'us-east-1:adc43218-48bc-4c15-87ed-037b09ebb86d' 46 } 47 ); 48 AWS.config.region = 'us-east-1'; 49 } 50 51 // STATE 52 // make a default kinesis var for context 53 var kinesis; 54 // define record holding array 55 var recordData_init_latest = []; 56 // var recordData_init_download = []; 57 58 var recordData_audio = []; // fill up one another array 59 60 var currentTime = 0; 61 var fileDuration=0; 62 // -------------------------------------------------- 63 64 // JPlayer instance is set by player.php module 65 if (typeof JPlayer === 'object') { 66 updatePlayerTheme( JPlayer.playerThemeSettings ); 67 // No need to check upon playlists (done by player.php) 68 // audio is array of audio objects (playlist for current player) 69 $( JPlayer.playlists ).each( 70 function(num, audio) { 71 // WPB-5494 72 var unique_id_chk_val = num; 73 try { 74 var unique_val_player = JPlayer.playlists_unique_ids[num]; 75 if (unique_val_player) { 76 unique_id_chk_val = unique_val_player; 77 num = unique_id_chk_val; 78 } 79 } catch (e) { 80 } 81 82 // There is player in html for each plalist 83 var player = $( '#player-' + num ), 84 container = player.parents( '.player-container' ), 85 loader = container.find( '.loading' ), 86 playIndex = 0, 87 hasPreroll = false; 88 89 // Player ui elements 90 var currentTitle = container.find( '.jp-current-title' ); // jp-title , episodeTitle 91 92 // WD-705 93 container.find( '.jp-play' ).bind( 94 "click", 95 function() { 96 var srcAudioValue = player.find( 'audio' ).prop( "src" ); 97 if (srcAudioValue) { 98 } else { 99 playlistConfig( playIndex ); 100 } 101 } 102 ); 103 // --------------------------------------------------------- 104 105 function guid_1() { 106 function s4() { 107 return Math.floor( (1 + Math.random()) * 0x10000 ) 108 .toString( 16 ) 109 .substring( 1 ); 110 } 111 return ( 112 s4() + 113 s4() + 114 "-" + 115 s4() + 116 "-" + 117 s4() + 118 "-" + 119 s4() + 120 "-" + 121 s4() + 122 s4() + 123 s4() 124 ); 125 } 126 127 $( "#player-interface-" + num + " .jp-mute" ).on( 128 'click', 129 function(ev) { 130 $( this ).hide(); 131 $( "#player-interface-" + num + " .jp-unmute" ).show(); 132 } 133 ); 134 135 $( "#player-interface-" + num + " .jp-unmute" ).on( 136 'click', 137 function(ev) { 138 $( this ).hide(); 139 $( "#player-interface-" + num + " .jp-mute" ).show(); 140 } 141 ); 142 143 var uuid_1; 144 var midPausedTime; 145 var midrollExists; 146 var postrollExists; 147 var midMp3;
148 var originalMp3; 149 var prerollMp3; 150 var player_flag; 151 var currentlyPlaying=''; 152 var midrollPlayed=false; 153 var midrollPlaying=false; 154 155 var status = player.jPlayer( 156 { 157 ready: function(event) { 158 uuid_1 = guid_1(); 159 midPausedTime = 0; 160 midrollExists = false; 161 postrollExists = false; 162 midMp3 = ''; 163 164 if(audio[0].preroll==1){ 165 currentlyPlaying='preroll'; 166 } 167 else{ 168 currentlyPlaying='original'; 169 } 170 171 172 // Set initial player media 173 // playlistConfig(playIndex); //WD-705 -- stop during page load. and bind on play button click. 174 175 // Loader is showing only while page loads 176 loader.remove(); 177 178 $( this ).jPlayer( 179 "setMedia", 180 { 181 mp3: audio[playIndex].mp3, 182 } 183 ); 184 185 // Check autoplay feature 186 if (player.attr( 'data-autoplay' ) === '1') { 187 player.jPlayer( 'play' ); 188 } 189 190 // When volume is disabled there need to be some css changes done 191 if (event.jPlayer.status.noVolume) { 192 container.addClass( 'no-volume' ); 193 } 194 195 }, 196 play: function() { 197 198 if (isPreroll()) 199 currentlyPlaying = 'preroll'; 200 201 202 // ------------------------------ 203 // WPB-435 204 var dfp_video_ad_tag_val = eval( 'wpb_jplayer_settings_' + num ).dfp_video_ad_tag; 205 if (dfp_video_ad_tag_val) { 206 var videoPlayerContDivObj = document.getElementById( 'vid-container-' + num ); 207 if (videoPlayerContDivObj.style.display == 'block') { 208 jQuery( "#player-" + num ).jPlayer( 'stop' ); 209 eval( 'vid' + num ).play(); // play video direct ads. 210 return; 211 } 212 } 213 214 var player_flag = checkPlaylistPlayer( num ); 215 // ------------------------------ 216 217 // Avoid both jPlayers playing together. 218 player.jPlayer( "pauseOthers" ); 219 collectStats(); 220 },
221 oggSupport: false, 222 swfPath: "/wp-content/plugins/wpb-show-core/modules/jplayer", 223 supplied: "mp3", 224 wmode: "window", 225 cssSelectorAncestor: "#player-interface-" + num, 226 noVolume: false, 227 } 228 ); 229 230 //WPB-6000 231 // WPB-7232 podcast_player_new.js may be missing after a PJAX load; don't abort the rest of init. 232 if (typeof podcastMenu_New === 'function') { 233 subscribeMenu_New(num); // WPB-6000 234 podcastMenu_New(num); 235 stylingActions_New(num); 236 } 237 238 player.bind(jQuery.jPlayer.event.timeupdate, function(event) { // Add a listener to report the time play began 239 currentTime = Math.round( event.jPlayer.status.currentTime ); 240 fileDuration = Math.round( event.jPlayer.status.duration); 241 }); 242 243 $( "#play-btn-" + num ).click( 244 function(){ 245 var srcAudioValue = player.find( 'audio' ).prop( "src" ); 246 $( ".jp-image canvas" ).hide() 247 $( ".jp-play" ).removeClass( "hidden" ); 248 $( "#pause-btn-" + num ).removeClass( "hidden" ); 249 } 250 ); 251 252 // WPB-6000 253 $( "#backword-btn-" + num ).click( 254 function(){ 255 player_flag = checkPlaylistPlayer( num ); 256 if (player_flag == 'advance_playlist') { 257 currentlyPlaying= jQuery('#currentlyPlaying-'+num).val(); 258 } 259 260 if(currentlyPlaying=='original' || currentlyPlaying=='original_part'){ 261 player.jPlayer( "pause"); 262 setTimeout(function() { 263 $('#pause-btn-'+num).show(); 264 $('#play-btn-'+num).hide(); 265 $('#pause-btn-'+num).removeClass( "hidden" ); 266 },10); 267 268 setTimeout(function() { 269 player.jPlayer( "play", currentTime-15 ); 270 },300); 271 } 272 } 273 ); 274 275 $( "#forword-btn-" + num ).click( 276 function(){ 277 player_flag = checkPlaylistPlayer( num ); 278 if (player_flag == 'advance_playlist') { 279 currentlyPlaying= jQuery('#currentlyPlaying-'+num).val(); 280 } 281 282 if(currentlyPlaying=='original' || currentlyPlaying=='original_part'){ 283 player.jPlayer( "pause"); 284 setTimeout(function() { 285 $('#pause-btn-'+num).show(); 286 $('#play-btn-'+num).hide(); 287 $('#pause-btn-'+num).removeClass( "hidden" ); 288 },10); 289 setTimeout(function() { 290 player.jPlayer( "play", currentTime+15 ); 291 },300); 292 } 293 } 294 ); 295 296 $( "#speed-control-menu-" + num + " li" ).click( 297 function(){ 298 var speedSelected = $( this ).html(); 299 $( "#speed-control-btn-" + num).css("color", $( "#speed-control-menu-"+num ).attr( "textColor" )); 300 301 speedSelected = speedSelected.replace( "x", "" ); 302 if (speedSelected != "1" || speedSelected != 1) { 303 $( "#speed-control-btn-" + num ).css("color", $( "#speed-control-menu-"+num ).attr( "primarycolor" ));; 304 } else { 305 $( "#speed-control-btn-" + num ).css("color", $( "#speed-control-menu-"+num ).attr( "textColor" )); 306 } 307 308 player.jPlayer( "option","playbackRate", speedSelected ); 309 $( "#speed-control-btn-" + num ).html( speedSelected + "x" ); 310 } 311 ); 312 313 /** 314 * Setup player media according to passed index 315 * 316 * @param {int} index playlist index 317 * @return {[type]} [description] 318 */ 319 function playlistConfig(index) { 320 player.jPlayer( "setMedia", audio[index] ); 321 } 322 323 /** 324 * Set current playing title 325 */ 326 function setTitle() { 327 currentTitle.html( audio[playIndex].title ); 328 } 329 330 // Create an ended event handler to move to the next item 331 player.on( 332 $.jPlayer.event.ended, 333 function(event) { 334 var player_flag = checkPlaylistPlayer( num ); 335 336 if(typeof currentlyPlaying=='undefined'){ 337 currentlyPlaying = 'original'; 338 } 339 if(typeof postrollExists=='undefined'){ 340 postrollExists = false;
341 } 342 343 if(typeof postrollExists=='undefined'){ 344 postrollExists = false; 345 } 346 347 348 if (currentlyPlaying == 'postroll') { 349 container.find( '.jp-title' ).html( audio[playIndex].title ); 350 player.jPlayer( "setMedia", audio[playIndex] ); 351 currentlyPlaying = 'original'; 352 return; 353 } 354 355 if ( ! postrollExists) { 356 if (isPreroll() == false && (currentlyPlaying == 'original' || currentlyPlaying == 'original_part')) { 357 container.find( '.jp-title' ).html( audio[playIndex].title ); 358 player.jPlayer( "setMedia", audio[playIndex] ); 359 return; 360 } 361 } 362 363 if ( ! midrollExists) { 364 if (currentlyPlaying == 'original') { 365 currentlyPlaying = 'original_part' 366 } 367 } 368 369 if (postrollExists) { 370 if (isPreroll() == false && currentlyPlaying == 'original_part') { 371 currentlyPlaying = 'postroll'; 372 var ObjAdv = document.getElementById( 'hid-advinfo-' + num ); 373 if (ObjAdv.value != '') { 374 var advArray = ObjAdv.value.split( '^#^' ); 375 376 var postrollIdArr = advArray[1].split( '^@^' ); 377 var postroll_id = postrollIdArr[1]; 378 var postrollmp3Arr = advArray[2].split( '^@^' ); 379 var postroll_mp3 = postrollmp3Arr[1]; 380 381 player.jPlayer( 382 "setMedia", 383 { 384 mp3: postroll_mp3, 385 } 386 ); 387 388 player.jPlayer( "play" ); 389 return; 390 } 391 } 392 }else{ 393 if(currentlyPlaying!='midroll') 394 currentlyPlaying = 'original'; 395 } 396 397 if (isPreroll() == false) { 398 $( "#play-btn-" + num ).removeClass( "hidden" ); 399 $( "#play-btn-" + num ).css( "display", "block" ); 400 401 // single player and once actual audio stop to play then hide equilizer. 402 // better audio stats plugin deactivate. 403 } 404 405 if (currentlyPlaying == 'midroll') { 406 currentlyPlaying = 'original_part'; 407 // on finish of midroll, start original audio again 408 player.jPlayer( 409 "setMedia", 410 { 411 mp3: originalMp3, 412 } 413 ); 414 415 container.find( '.jp-title' ).html( audio[playIndex].title ); 416 player.jPlayer( 'play',midPausedTime ); 417 418 $( ".jp-image canvas" ).hide() 419 $( ".jp-play" ).removeClass( "hidden" ); 420 $( "#pause-btn-" + num ).removeClass( "hidden" ); 421 } else { 422 currentlyPlaying='original'; 423 playListNext(); // as usual means only preroll and then actual audio. 424 } 425 } 426 ); 427 428 player.bind( 429 jQuery.jPlayer.event.ready, 430 function(event) { 431 player_flag = checkPlaylistPlayer( num ); 432 if (player_flag == 'advance_playlist') { 433 return; 434 } 435 if (isPreroll()) { 436 originalMp3 = audio[playIndex + 1].mp3; 437 prerollMp3 = audio[playIndex].mp3; 438 currentlyPlaying='preroll'; 439 } else { 440 originalMp3 = audio[playIndex].mp3; 441 prerollMp3 = ''; // no prerolls. 442 currentlyPlaying='original'; 443 } 444 445 var ObjAdv = document.getElementById( 'hid-advinfo-' + num ); 446 447 if (ObjAdv.value != '') { 448 var advArray = ObjAdv.value.split( '^#^' ); 449 var midrollIdArr = advArray[3].split( '^@^' ); 450 var midroll_id = midrollIdArr[1]; 451 var midrollmp3Arr = advArray[4].split( '^@^' ); 452 var midroll_mp3 = midrollmp3Arr[1]; 453 454 if (midroll_mp3 != '') { 455 midrollExists = true; 456 midMp3 = midroll_mp3; 457 } else { 458 midrollExists = false;
459 } 460 461 var postrollIdArr = advArray[1].split( '^@^' ); 462 var postroll_id = postrollIdArr[1]; 463 var postrollmp3Arr = advArray[2].split( '^@^' ); 464 var postroll_mp3 = postrollmp3Arr[1]; 465 466 if (postroll_mp3 != '') { 467 postrollExists = true; 468 } else { 469 postrollExists = false; 470 } 471 472 } 473 } 474 ); 475 476 player_flag = checkPlaylistPlayer( num ); 477 478 if (player_flag != 'advance_playlist') { 479 480 player.bind( 481 jQuery.jPlayer.event.timeupdate, 482 function(event) { 483 if (player_flag == 'advance_playlist') { 484 return; 485 } 486 487 if (currentlyPlaying != 'original') { 488 return; 489 } 490 491 if ( ! midrollExists) { 492 //player.unbind( jQuery.jPlayer.event.timeupdate ); 493 return; 494 } 495 496 if(midrollPlayed) 497 return; 498 499 var midDuration = Math.round( event.jPlayer.status.duration / 2 ); 500 var current = Math.round( event.jPlayer.status.currentTime ); 501 502 if (midDuration > 0 && (current >= midDuration)) { 503 midPausedTime = event.jPlayer.status.currentTime; 504 505 player.jPlayer( 506 "setMedia", 507 { 508 mp3: midMp3, 509 } 510 ); 511 currentlyPlaying = 'midroll'; 512 player.jPlayer( "play" ); 513 514 midrollPlayed=true; 515 } 516 } 517 ); 518 } 519 520 /** 521 * Play next playlist item 522 * 523 * @return {void} 524 */ 525 function playListNext() { 526 var index = (playIndex + 1 < audio.length) ? playIndex + 1 : 0; 527 playListChange( index ); 528 529 // There is no repeat, and player is minimized 530 if (index == 0) { 531 // minimizePlayer(); 532 $( "#play-btn-" + index ).removeClass( "hidden" ); 533 $( "#pause-btn-" + index ).addClass( "hidden" ); 534 } else { 535 player.jPlayer( 'play' ); 536 } 537 } 538 539 /** 540 * Set audio according to passed index 541 * 542 * @param {int} index playlist index 543 * @return {void} 544 */ 545 function playListChange(index) { 546 playIndex = index; 547 playlistConfig( index ); 548 } 549 550 /** 551 * Check if playlist item is preroll 552 * 553 * @param {int} index playlist item to check 554 * @return {bool} 555 */ 556 function isPreroll(index) { 557 if (typeof index == 'number') { 558 return audio[index].hasOwnProperty( 'preroll' ); 559 } else { 560 return audio[playIndex].hasOwnProperty( 'preroll' ); 561 } 562 } 563 564 /** 565 * Toggle player condition classes on player container 566 */ 567 player 568 .on( 569 $.jPlayer.event.play, 570 function(event) { 571 container 572 .addClass( 'playing' ) 573 .removeClass( 'pause' ); 574 575 // Handle Preroll classes 576 if (isPreroll()) { 577 container.addClass( 'playing-preroll' ); 578 currentlyPlaying='preroll'; 579 } else { 580 container.removeClass( 'playing-preroll' ); 581 } 582 } 583 ) 584 .on( 585 $.jPlayer.event.pause, 586 function(event) { 587 container 588 .addClass( 'pause' ) 589 .removeClass( 'playing' ); 590 } 591 ); 592 593 /** 594 * Collect player statistics 595 * Stats is collected for 596 * 597 * @return {void} 598 */ 599 function collectStats() { 600 // ---------------------------------------------------------------------- 601 var player_flag = checkPlaylistPlayer( num ); 602 603 var blogid = eval( 'wpb_jplayer_settings_' + num ).blogid; 604 var gmt_offset_site = eval( 'wpb_jplayer_settings_' + num ).gmt_offset_site; 605 var ck_dm = eval( 'wpb_jplayer_settings_' + num ).ck_dm; 606 607 var ajax_url_val = eval( 'wpb_jplayer_settings_' + num ).ajaxurl_path; 608 var ajax_simple = 0; 609 if (ajax_url_val) { 610 ajax_url_val = eval( 'wpb_jplayer_settings_' + num ).siteUrl + ajax_url_val; 611 ajax_simple = 1; 612 } else { 613 ajax_url_val = ajaxurl; // as usual. 614 } 615 616 if (player_flag == 'advance_playlist') { 617 var ObjHid = document.getElementById( 'hid-extra-' + num ); 618 var field_arr = ObjHid.value.split( '^#^' );
619 var field1_arr = field_arr[0].split( '^@^' ); 620 var e_id = field1_arr[1]; 621 var field2_arr = field_arr[1].split( '^@^' ); 622 var p_id = field2_arr[1]; 623 var field3_arr = field_arr[2].split( '^@^' ); 624 var flag_play = field3_arr[1]; 625 // WPB-434 626 var field4_arr = field_arr[3].split( '^@^' ); 627 var pod_id = field4_arr[1]; 628 var field5_arr = field_arr[4].split( '^@^' ); 629 var ply_f = field5_arr[1]; 630 if (flag_play == 'episode') { 631 var send_ajax_call = true; 632 var flag_array_fill = ''; 633 634 if (document.getElementById( 'hid-palyed-' + num ).value) { 635 var played_str = document.getElementById( 'hid-palyed-' + num ).value; 636 var played_arr = document.getElementById( 'hid-palyed-' + num ).value.split( ':' ); 637 if (in_array_js_check( e_id, played_arr ) != -1) { 638 // in array then donot insert it again. 639 send_ajax_call = false; 640 641 flag_array_fill = 'ALREADY_INTO_ARRAY'; 642 } else { 643 document.getElementById( 'hid-palyed-' + num ).value = played_str + ':' + e_id; 644 flag_array_fill = 'ADD_INTO_ARRAY'; // another episode id, next one. 645 uuid_1 = guid_1(); // new number for new episode id. ( next episode ) 646 } 647 } else { 648 document.getElementById( 'hid-palyed-' + num ).value = e_id; 649 650 flag_array_fill = 'FIRST_TIME'; 651 } 652 if (send_ajax_call) { 653 var data = {}; 654 if (ajax_simple) { 655 data.blogid = blogid; 656 data.gmt_offset_site = gmt_offset_site; 657 data.ck_dm = ck_dm; 658 data.ajax_simple = ajax_simple; 659 } 660 data.action = 'player_played'; 661 data.type = 'audio'; 662 data.topic = 'audio_player_stats'; // WPB-402 663 data.id = e_id; 664 data.preroll_id = p_id; 665 data.player_type = 'advance_playlist'; 666 data.podcast_id = pod_id; // WPB-434 667 data.flag_call = 'wpb_req_playlist_without_duration'; 668 data.uuid_1 = uuid_1; 669 670 // -------------------------------------------------- 671 // WPB-402 672 var record = { 673 topic: 'audio_player_stats', 674 data: data 675 }; 676 677 var params = { // for AWS Kinesis 678 Data: JSON.stringify( record ) + ",", 679 PartitionKey: 'partition-' + ( awsSdkLoaded ? AWS.config.credentials.identityId : '' ) // WPB-7232 680 } 681 682 recordData_audio.push( num + ':' + data.id ); 683 684 recordData_init_latest.push( params ); 685 // stop below individual ajax request for playlist player. 686 // -------------------------------------------------- 687 688 } 689 } //End of if (flag_play == 'episode') 690 return; 691 } //End of if (player_flag == 'advance_playlist') 692 // ---------------------------------------------------------------------- 693 694 // WPB-434 695 var pod_id = 0; 696 try { 697 var ObjHid = document.getElementById( 'hid-extra-' + num ); 698 var field_arr = ObjHid.value.split( '^#^' ); 699 var field1_arr = field_arr[0].split( '^@^' ); 700 var e_id = field1_arr[1]; 701 var field2_arr = field_arr[1].split( '^@^' ); 702 var p_id = field2_arr[1]; 703 var field3_arr = field_arr[2].split( '^@^' ); 704 var flag_play = field3_arr[1]; 705 var field4_arr = field_arr[3].split( '^@^' ); 706 var pod_id = field4_arr[1]; 707 var field5_arr = field_arr[4].split( '^@^' ); 708 var ply_f = field5_arr[1]; 709 } catch (e) { 710 } 711 712 // as usual code for single episode player. 713 var type, 714 action = 'player_played', 715 data = {}; 716 717 if ( ! audio[playIndex].hasOwnProperty( 'played' )) { 718 type = (isPreroll()) ? 'preroll' : 'audio'; 719 720 // Prepare data to send with notification request 721 data.action = action; 722 723 if (ajax_simple) { 724 data.blogid = blogid; 725 data.gmt_offset_site = gmt_offset_site; 726 data.ck_dm = ck_dm; 727 data.ajax_simple = ajax_simple; 728 } 729 730 data.topic = 'audio_player_stats'; // WPB-402 731 732 data.type = type; 733 data.id = audio[playIndex].id; 734 var got_preroll_id = false;
735 736 // Send preroll id if audio is playing and current plalist contains preroll 737 if ( ! isPreroll() && hasPreroll) { 738 data.preroll_id = audio[0].id; 739 got_preroll_id = true; 740 } 741 742 data.podcast_id = pod_id; // WPB-434 743 data.flag_call = 'wpb_req_single_without_duration'; 744 data.uuid_1 = uuid_1; 745 746 if (data.type == 'preroll') { 747 return; // stop ajax request too for preroll, instead of stop into php method, to improve code. 748 } 749 750 // -------------------------------------------------- 751 // WPB-402 752 var record = { 753 topic: 'audio_player_stats', 754 data: data 755 }; 756 757 var params = { // for AWS Kinesis 758 Data: JSON.stringify( record ) + ",", 759 PartitionKey: 'partition-' + ( awsSdkLoaded ? AWS.config.credentials.identityId : '' ) // WPB-7232 760 } 761 762 recordData_audio.push( num + ':' + data.id ); 763 764 recordData_init_latest.push( params ); 765 // stop below individual ajax request for single player. 766 // -------------------------------------------------- 767 768 audio[playIndex].played = 1; 769 } 770 } 771 772 function in_array_js_check(needle, haystack) { 773 var found = 0; 774 for (var i = 0, len = haystack.length; i < len; i++) { 775 if (haystack[i] == needle) { 776 return i; 777 } 778 found++; 779 } 780 return -1; 781 } 782 783 // WPB-227 784 function checkPlaylistPlayer(num) { 785 var player_unique_index_val = num; 786 787 788 var player_flag = ''; 789 try { 790 var playlists_arr = eval( 'playlists_arr_' + player_unique_index_val ); 791 if (playlists_arr) { 792 player_flag = 'advance_playlist'; 793 } 794 } catch (e) { 795 } 796 797 if(player_flag=='advance_playlist'){ 798 if($('#jplayer-single-type-'+num).length>0) 799 player_flag = 'single'; 800 } 801 802 return player_flag; 803 } 804 805 // DOWNLOAD CLICK in any case whether better audio stats activate or not and for both the players. 806 // single player, and playlist player both. 807 container.on( 808 'click', 809 ".jp_download", 810 function(ev) { 811 var player_flag = checkPlaylistPlayer( num ); 812 var blogid = eval( 'wpb_jplayer_settings_' + num ).blogid; 813 var gmt_offset_site = eval( 'wpb_jplayer_settings_' + num ).gmt_offset_site; 814 var ajax_url_val = eval( 'wpb_jplayer_settings_' + num ).ajaxurl_path; 815 var ajax_simple = 0; 816 if (ajax_url_val) { 817 ajax_url_val = eval( 'wpb_jplayer_settings_' + num ).siteUrl + ajax_url_val; 818 ajax_simple = 1; 819 } else { 820 ajax_url_val = ajaxurl; // as usual. 821 } 822 823 // ----------------------------------------------- 824 if (player_flag == 'advance_playlist') { 825 var ObjHid = document.getElementById( 'hid-extra-' + num ); 826 var field_arr = ObjHid.value.split( '^#^' ); 827 var field1_arr = field_arr[0].split( '^@^' ); 828 var e_id = field1_arr[1]; 829 var field2_arr = field_arr[1].split( '^@^' ); 830 var p_id = field2_arr[1]; 831 var field3_arr = field_arr[2].split( '^@^' ); 832 var flag_play = field3_arr[1]; 833 // WPB-434 834 var field4_arr = field_arr[3].split( '^@^' ); 835 var pod_id = field4_arr[1]; 836 var field5_arr = field_arr[4].split( '^@^' ); 837 var ply_f = field5_arr[1]; 838 839 var data = {}; 840 if (ajax_simple) { 841 data.blogid = blogid; 842 data.gmt_offset_site = gmt_offset_site; 843 // data.ck_dm = ck_dm; 844 data.ajax_simple = ajax_simple; 845 } 846 data.action = 'track_episode_download'; 847 data.type = 'audio'; 848 data.topic = 'audio_player_stats_download'; // WPB-402 849 data.id = e_id; 850 data.preroll_id = p_id; 851 data.player_type = 'advance_playlist'; 852 data.podcast_id = pod_id; // WPB-434 853 data.flag_call = 'wpb_download_req_playlist'; 854 855 /* WPB-518 */ 856 var client_signature = jQuery( "#client_signature" ); 857 if (client_signature) { 858 data.http_signature = client_signature.html().trim(); 859 } 860 861 var client_ip = jQuery( "#client_ip" ); 862 if (client_ip) { 863 data.ipv4_long = client_ip.html().trim(); 864 } 865 866 var client_ua = jQuery( "#client_ua" ); 867 if (client_ua) { 868 data.user_agent = client_ua.html().trim(); 869 } 870 871 var uuid_download = guid_1(); 872 data.uuid_download = uuid_download; 873 874 // -------------------------------------------------- 875 // WPB-402 876 var record = { 877 topic: 'audio_player_stats', 878 data: data 879 }; 880 881 /* WPB-518 staging testing */ 882 if ( ! IS_PROD) { 883 record.topic = 'audio_player_stats_test'; 884 } 885 886 var params = { // for AWS Kinesis 887 Data: JSON.stringify( record ) + ",", 888 PartitionKey: 'partition-' + ( awsSdkLoaded ? AWS.config.credentials.identityId : '' ) // WPB-7232 889 } 890 891 recordData_init_latest.push( params ); 892 return; 893 } 894 895 // ----------------------------------------------- 896 897 // WPB-434 898 var pod_id = 0; 899 try { 900 var ObjHid = document.getElementById( 'hid-extra-' + num ); 901 var field_arr = ObjHid.value.split( '^#^' );
902 var field1_arr = field_arr[0].split( '^@^' ); 903 var e_id = field1_arr[1]; 904 var field2_arr = field_arr[1].split( '^@^' ); 905 var p_id = field2_arr[1]; 906 var field3_arr = field_arr[2].split( '^@^' ); 907 var flag_play = field3_arr[1]; 908 var field4_arr = field_arr[3].split( '^@^' ); 909 var pod_id = field4_arr[1]; 910 var field5_arr = field_arr[4].split( '^@^' ); 911 var ply_f = field5_arr[1]; 912 } catch (e) { 913 } 914 915 // WPB-431 916 var type, 917 action = 'track_episode_download', 918 data = {}; 919 920 type = (isPreroll()) ? 'preroll' : 'audio'; 921 922 // Prepare data to send with notification request 923 data.action = action; 924 925 if (ajax_simple) { 926 data.blogid = blogid; 927 data.gmt_offset_site = gmt_offset_site; 928 // data.ck_dm = ck_dm; 929 data.ajax_simple = ajax_simple; 930 } 931 932 var preroll_id = 0; 933 var episode_id = 0; 934 if (isPreroll( 0 )) { 935 episode_id = audio[1].id; 936 preroll_id = audio[0].id; 937 } else { // no prerolls into audio array, only 0 index. 938 episode_id = audio[0].id; 939 } 940 941 data.id = episode_id; 942 data.preroll_id = preroll_id; 943 data.podcast_id = pod_id; 944 945 data.topic = 'audio_player_stats_download'; // WPB-402 + WPB-431 946 947 data.type = type; 948 data.flag_call = 'wpb_download_req_single'; // for both better audio stats activate or not. 949 950 /* WPB-518 */ 951 var client_signature = jQuery( "#client_signature" ); 952 if (client_signature) { 953 data.http_signature = client_signature.html().trim(); 954 } 955 956 var client_ip = jQuery( "#client_ip" ); 957 if (client_ip) { 958 data.ipv4_long = client_ip.html().trim(); 959 } 960 961 var client_ua = jQuery( "#client_ua" ); 962 if (client_ua) { 963 data.user_agent = client_ua.html().trim(); 964 } 965 966 var uuid_download = guid_1(); 967 data.uuid_download = uuid_download; 968 969 // -------------------------------------------------- 970 // WPB-402 + WPB-431 971 var record = { 972 topic: 'audio_player_stats', 973 data: data 974 }; 975 976 /* WPB-518 staging testing */ 977 if ( ! IS_PROD) { 978 record.topic = 'audio_player_stats_test'; 979 } 980 981 var params = { // for AWS Kinesis 982 Data: JSON.stringify( record ) + ",", 983 PartitionKey: 'partition-' + ( awsSdkLoaded ? AWS.config.credentials.identityId : '' ) // WPB-7232 984 } 985 986 recordData_init_latest.push( params ); 987 } 988 ); 989 990 } 991 ) // foreach playlists loop 992 } // instance presence check 993 994 // -------------------------------------------------------------- 995 // put outside foreach playlists loop. 996 // WPB-402 997 if (awsSdkLoaded) { // WPB-7232
998 AWS.config.credentials.get( 999 function(err) { 1000 // attach event listener 1001 if (err) { 1002 return; 1003 } 1004 // create kinesis service object 1005 kinesis = new AWS.Kinesis( 1006 { 1007 apiVersion: '2013-12-02' 1008 } 1009 ); 1010 1011 var call_this_func = 0; 1012 1013 setInterval( 1014 function() { 1015 1016 if ( ! IS_PROD) { 1017 // console.log("Local/Staging Debug: recordData_init_latest.length : "+recordData_init_latest.length); 1018 // console.log("Local/Staging Debug: recordData_init_download.length : "+recordData_init_download.length); 1019 } 1020 1021 if ( ! recordData_init_latest.length) { 1022 if ( ! IS_PROD) { 1023 // console.log("Local/Staging Debug: recordData_init_latest.length not found."); 1024 } 1025 return; 1026 } // dont do anything if there is no records 1027 1028 if (recordData_init_latest.length == 0) { 1029 if ( ! IS_PROD) { 1030 // console.log("Local/Staging Debug: recordData_init_latest.length = 0"); 1031 } 1032 return; 1033 } 1034 1035 // upload data to Amazon Kinesis 1036 if (kinesis) { 1037 call_this_func = 1; 1038 1039 kinesis.putRecords( 1040 { 1041 Records: recordData_init_latest, 1042 //Records: recordData_Local, // checking with local variable. 1043 StreamName: 'iap-stats-pipeline' 1044 }, 1045 function(err, data) { 1046 if (err) { 1047 } 1048 recordData_init_latest = []; 1049 1050 if ( ! IS_PROD) { 1051 console.log( "Local/Staging Debug: recordData_init_latest to []" ); 1052 } 1053 1054 call_this_func = 0; 1055 } 1056 ); 1057 // clear record data 1058 } // if there is a kinesis 1059 }, 1060 10000 1061 ); // set interval - 10 seconds - WPB-7003 1062 // can we change interval from 1000 ( 1 second ) to other seconds ? 1063 1064 } 1065 ); 1066 } // WPB-7232 awsSdkLoaded 1067 // -------------------------------------------------------------- 1068 1069 // }); 1070}; //ducment ready end. 1071 1072 1073// common for wpb code both the players. 1074function hideAudioPlayerShowVideoPlayer(unique_num) { 1075 var returnInfoArr = getObjectInfo( unique_num ); 1076 var audioPlayerDivObj = returnInfoArr['audioPlayerDivObj']; 1077 var videoPlayerDivObj = returnInfoArr['videoPlayerDivObj']; 1078 var videoPlayerContDivObj = returnInfoArr['videoPlayerContDivObj']; 1079 1080 var dfp_video_ad_tag_val = eval( 'wpb_jplayer_settings_' + unique_num ).dfp_video_ad_tag; 1081 if (dfp_video_ad_tag_val) { 1082 if (eval( 'gotVideo_' + unique_num )) { 1083 // donot hide audio player again, if pause and start. 1084 } else { 1085 audioPlayerDivObj.style.display = 'none'; 1086 videoPlayerContDivObj.style.display = 'block'; 1087 eval( 'gotVideo_' + unique_num + '=true;' ); 1088 1089 return true; 1090 } 1091 } 1092 1093 return false; 1094} 1095 1096function getObjectInfo(unique_num) { 1097 var audioPlayerDivObj = document.getElementById( 'aud-' + unique_num ); 1098 var videoPlayerDivObj = document.getElementById( 'vid-' + unique_num ); 1099 var videoPlayerContDivObj = document.getElementById( 'vid-container-' + unique_num ); 1100 1101 var returnInfoArr = []; 1102 1103 returnInfoArr['audioPlayerDivObj'] = audioPlayerDivObj; 1104 returnInfoArr['videoPlayerDivObj'] = videoPlayerDivObj; 1105 returnInfoArr['videoPlayerContDivObj'] = videoPlayerContDivObj; 1106 1107 return returnInfoArr; 1108} 1109 1110// WPB-435 -- used in file videojs.vast.js 1111function getHidExtraInfo(num_unique) { 1112 var ObjHid = document.getElementById( 'hid-extra-' + num_unique ); 1113 1114 if (ObjHid && ObjHid != 'undefined') { 1115 // if find then only. otherwise blank. 1116 } else { 1117 var hidExtraInfoArr = []; 1118 1119 hidExtraInfoArr['e_id'] = ''; 1120 hidExtraInfoArr['p_id'] = ''; 1121 hidExtraInfoArr['flag_play'] = ''; 1122 hidExtraInfoArr['pod_id'] = ''; 1123 hidExtraInfoArr['ply_f'] = ''; 1124 hidExtraInfoArr['audio_mp3'] = ''; 1125 hidExtraInfoArr['audio_title'] = ''; 1126 1127 return hidExtraInfoArr; 1128 } 1129 1130 var field_arr = ObjHid.value.split( '^#^' );
1131 var field1_arr = field_arr[0].split( '^@^' ); 1132 var e_id = field1_arr[1]; 1133 var field2_arr = field_arr[1].split( '^@^' ); 1134 var p_id = field2_arr[1]; 1135 var field3_arr = field_arr[2].split( '^@^' ); 1136 var flag_play = field3_arr[1]; 1137 var field4_arr = field_arr[3].split( '^@^' ); 1138 var pod_id = field4_arr[1]; 1139 var field5_arr = field_arr[4].split( '^@^' ); 1140 var ply_f = field5_arr[1]; 1141 1142 var audio_mp3 = ''; 1143 var audio_title = ''; 1144 try { 1145 var field6_arr = field_arr[5].split( '^@^' ); 1146 var audio_mp3 = field6_arr[1]; 1147 var field7_arr = field_arr[6].split( '^@^' ); 1148 var audio_title = field7_arr[1]; 1149 } catch (e) { 1150 } 1151 1152 var hidExtraInfoArr = []; 1153 1154 hidExtraInfoArr['e_id'] = e_id; 1155 hidExtraInfoArr['p_id'] = p_id; 1156 hidExtraInfoArr['flag_play'] = flag_play; 1157 hidExtraInfoArr['pod_id'] = pod_id; 1158 hidExtraInfoArr['ply_f'] = ply_f; 1159 hidExtraInfoArr['audio_mp3'] = audio_mp3; 1160 hidExtraInfoArr['audio_title'] = audio_title; 1161 1162 return hidExtraInfoArr; 1163} 1164// WPB-435 -- used in file videojs.vast.js 1165function checkPlaylistPlayer(num) { 1166 var player_unique_index_val = num; 1167 var player_flag = ''; 1168 try { 1169 var playlists_arr = eval( 'playlists_arr_' + player_unique_index_val ); 1170 if (playlists_arr) { 1171 player_flag = 'advance_playlist'; 1172 } 1173 } catch (e) { 1174 } 1175 1176 if(player_flag=='advance_playlist'){ 1177 if($('#jplayer-single-type-'+num).length>0) 1178 player_flag = 'single'; 1179 } 1180 1181 return player_flag; 1182} //End of func checkPlaylistPlayer 1183 1184// WPB-3671 -- same func called in pjax theme file. 1185function callEqualizer(jQueryParam, flagChk, playerUnqIdx) { 1186 jQuery( ".jp-jplayer" ).each( 1187 function() { 1188 var playerUniqId = jQuery( this ).attr( 'id' ); 1189 playerUniqId = playerUniqId.replace( "player-", "" ); 1190 eval( 'callEqualizer_' + playerUniqId + '();' ); 1191 } 1192 ); 1193} 1194 1195var Equalizer = function(_canvas, _numBars, _height, _barRatio, _paddingRatio, _growSpeed, _shrinkSpeed, _color) { 1196 // --------------------------------------- 1197 // Private Variables 1198 // --------------------------------------- 1199 if (_barRatio > 1 || _paddingRatio > 1) { 1200 console.error( "There was a problem with the ratio value provided. They must be less than or equal to 1. Given Values:", _barRatio, _paddingRatio ); 1201 return; 1202 } 1203 var animating = false; 1204 var midPoint = 0; 1205 var maxBarHeight = _height; 1206 var maxBarSmall = 50; 1207 var minBarHeight = 20; 1208 var barRatio = _barRatio; 1209 var paddingRatio = _paddingRatio; 1210 var barPadding = 10; 1211 var barWidth = 10; 1212 var totalBars = _numBars; 1213 var barColor = _color; 1214 var canvas = document.getElementById( _canvas ); 1215 var ctx = canvas.getContext( "2d" ); 1216 var bar = []; 1217 var width = canvas.width; 1218 var speed = { 1219 grow: _growSpeed, 1220 shrink: _shrinkSpeed 1221 }; 1222 1223 // var mousePos = { 1224 // x: 0, y: 0 1225 // }; 1226 var resizeTimeOut = false;
1227 // ----------------------------- 1228 // Bind function calls to dom 1229 // ----------------------------- 1230 init(); 1231 // ----------------------------- 1232 // init() 1233 // - Begins the animation sequence 1234 // ----------------------------- 1235 function init() { 1236 initBars(); 1237 // bindResizeEvents(); 1238 // bindMouseMove(); 1239 } 1240 1241 function start() { 1242 animating = true; 1243 update(); 1244 } 1245 1246 function initBars() { 1247 resize( jQuery( window ).width() ); 1248 var barHeight = 0, 1249 x = 0, 1250 y = 0; 1251 midpoint = width / 2; 1252 for (var i = 0; i < totalBars; i++) { 1253 x = (i + i) * barPadding + (barWidth * i); 1254 1255 barHeight = randomizeHeight( x ); 1256 y = getHeight( barHeight ); 1257 1258 bar.push( 1259 { 1260 height: barHeight, 1261 buffHeight: barHeight, 1262 direction: -1, 1263 x: x, 1264 y: y 1265 } 1266 ); 1267 } 1268 } 1269 // ----------------------------- 1270 // stop() 1271 // - Stops the animation sequence 1272 // ----------------------------- 1273 function stop() { 1274 animating = false; 1275 } 1276 // ----------------------------- 1277 // draw() 1278 // - Draw the contents of an individual frame 1279 // ----------------------------- 1280 function draw() { 1281 for (var index = 0; index < bar.length; index++) { 1282 ctx.fillStyle = barColor; 1283 ctx.clearRect( bar[index].x, bar[index].y, barWidth, bar[index].height ); 1284 bar[index].y = getHeight( bar[index].height ); 1285 bar[index].x = (index + index) * barPadding + (barWidth * index); 1286 // if (mousePos.x >= bar[index].x - barWidth * 10 && 1287 // mousePos.x < bar[index].x + barWidth * 10 && 1288 // Math.abs(mousePos.y - maxBarHeight / 2) < 100) { 1289 // bar[index].direction = -1; 1290 // } 1291 if (bar[index].height < bar[index].buffHeight && bar[index].direction > 0) { 1292 bar[index].height += speed.grow; 1293 } else if (bar[index].direction > 0) { 1294 bar[index].direction = -1; 1295 } 1296 // If increasing grow it 1297 if (bar[index].height > bar[index].buffHeight / 1.25 && bar[index].direction < 0) { 1298 bar[index].height -= speed.shrink; 1299 } else if (bar[index].direction < 0) { 1300 bar[index].buffHeight = randomizeHeight( bar[index].x ); 1301 bar[index].direction = 1; 1302 } 1303 ctx.fillRect( bar[index].x, bar[index].y, barWidth, bar[index].height ); 1304 } 1305 var grd = ctx.createLinearGradient( 146.000, 0.000, 154.000, 4000.000 ); 1306 /* var grd = ctx.createLinearGradient(146.000, 0.000, 154.000, 600.000);*/ 1307 // Add colors 1308 grd.addColorStop( 0.000, 'rgba(255, 255, 255, 0.000)' ); 1309 grd.addColorStop( 1.000, 'rgba(0, 0, 0, 1.000)' ); 1310 // Fill with gradient 1311 ctx.fillStyle = grd; 1312 ctx.fillRect( 0, 400, width, 400 ); 1313 } 1314 // -----------------------------
1315 // update() 1316 // - Redraws Canvas each frame 1317 // ----------------------------- 1318 function update() { 1319 if ( ! animating) { 1320 return; 1321 } 1322 draw(); 1323 requestAnimationFrame( update ); 1324 } 1325 // ----------------------------- 1326 // getHeight() 1327 // - Returns the height in relation to the maxBarHeight 1328 // ----------------------------- 1329 function getHeight(_height) { 1330 return Math.round( (maxBarHeight - _height) / 2 ); 1331 } 1332 // ----------------------------- 1333 // randomizeHeight() 1334 // - Calculate a new maxheight to reach when increasing in size 1335 // ----------------------------- 1336 function randomizeHeight(pos) { 1337 var maxVal, 1338 temp; 1339 if (pos > midPoint) { 1340 pos = pos - midPoint; 1341 temp = Math.abs( (pos / midPoint) - 1 ); 1342 } else { 1343 temp = (pos / midPoint); 1344 if (temp == 0) { 1345 temp = 0.01; 1346 } 1347 } 1348 maxVal = temp * maxBarHeight; 1349 return Math.floor( (Math.random() * maxVal) + minBarHeight ); 1350 } 1351 // ----------------------------- 1352 // resize() 1353 // - Handles resizing the canvas elements according to a specified canvas width 1354 // ----------------------------- 1355 function resize(_width) { 1356 width = _width; 1357 canvas.width = _width; 1358 midPoint = _width / 2; 1359 totalWidth = Math.abs( _width / totalBars ); 1360 barWidth = Math.ceil( totalWidth * barRatio ); 1361 barPadding = Math.ceil( totalWidth * paddingRatio ); 1362 } 1363 // ----------------------------- 1364 // setSpeed() 1365 // - set speed values used to grow or shrink the size 1366 // ----------------------------- 1367 function setSpeed(_grow, _shrink) { 1368 speed.grow = _grow; 1369 speed.shrink = _shrink; 1370 } 1371 // --------------------------------------- 1372 // Publicly Accessible Variables / Functions 1373 // --------------------------------------- 1374 return ({ 1375 start: start, 1376 stop: stop 1377 }); 1378} //End of Equalizer
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.