PageSourceSearch

https://www.kswvradio.com/wp-content/plugins/wpb-show-core/modules/jplayer/jquery.jplayer-init-latest.js

js kswvradio.com collected 2026-10-09 01:01:34 UTC 45,837 bytes, 1,378 lines download raw bytes

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.