PageSourceSearch

https://www.power1043.com/wp-content/plugins/wpb-better-audio-stat…wpb-jquery-jplayer.js?v=8-june-2026&ver=7.1

js power1043.com collected 2026-09-30 13:35:41 UTC 25,257 bytes, 674 lines download raw bytes

1var ITM_jPlayer_BetterAudioStats = window.ITM_jPlayer_BetterAudioStats || {};
2ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats = false;
3ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats_Flag = '';
4
5window.console.log('hi to wpb-jquery-jplayer.js file loaded..........'); //we need this....
6
7jQuery(document).ready(function( $ ){
8  readyFn_jPlayerFunc_BetterAudioStats( $ , 'document.ready' );
9  ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats_Flag = 'document.ready';
10});
11
12//jQuery(document).ready(function($) {
13function readyFn_jPlayerFunc_BetterAudioStats( $ , flagCheck = '') {
14
15  if (ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats) {
16    window.console.log('ITM_jPlayerLoad_BetterAudioStats return : '+flagCheck);
17    window.console.log('ITM_jPlayerLoad_BetterAudioStats_Flag : '+ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats_Flag);
18    //donot want to call this func again..... from pjax....
19    return;
20  }
21
22  ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats = true;
23
24  window.console.log('HERE >>>>> readyFn_jPlayerFunc_BetterAudioStats >> wpb-jquery-jplayer.js..... '+flagCheck);
25
26  try { // WPB-518
27    window.IS_PROD = jQuery('#is_prod').html().trim() == true;
28    if (!IS_PROD) {
29      console.log('Staging Server Detected');
30    }
31  } catch (e) {
32    // console.log(e);
33  }
34
35  //--------------------------------------------------
36  //WPB-402
37  // AWS CONFIGURATION
38  AWS.config.credentials = new AWS.CognitoIdentityCredentials({
39    IdentityPoolId: 'us-east-1:adc43218-48bc-4c15-87ed-037b09ebb86d'
40  });
41  AWS.config.region = 'us-east-1';
42
43  // STATE
44  // make a default kinesis var for context
45  var kinesis;
46  // define record holding array
47  var recordData = [];
48  //--------------------------------------------------
49
50  //*********************************************************************************
51  // JPlayer instance is set by player.php module
52  if (typeof JPlayer === "object") {
53    // No need to check upon playlists (done by player.php)
54    // audio is array of audio objects (playlist for current player)
55    $(JPlayer.playlists).each(function(num, audio) {
56      // There is player in html for each plalist
57      var player = $("#player-" + num),
58        container = player.parents(".player-container"),
59        loader = container.find(".loading"),
60        playIndex = 0,
61        hasPreroll = false;
62      // Player ui elements
63      var currentTitle = container.find(".jp-current-title");
64      //WD-705
65      container.find(".jp-play").bind("click", function() {
66        var srcAudioValue = player.find("audio").prop("src");
67        if (!srcAudioValue) {
68          playlistConfig(playIndex);
69        }
70      });
71      //---------------------------------------------------------
72
73      $("#player-interface-" + num + " .jp-mute").on("click", function(ev) {
74        $(this).hide();
75        $("#player-interface-" + num + " .jp-unmute").show();
76      });
77
78      $("#player-interface-" + num + " .jp-unmute").on("click", function(ev) {
79        $(this).hide();
80        $("#player-interface-" + num + " .jp-mute").show();
81      });
82
83      function guid() {
84        function s4() {
85          return Math.floor((1 + Math.random()) * 0x10000)
86            .toString(16)
87            .substring(1);
88        }
89        return (
90          s4() +
91          s4() +
92          "-" +
93          s4() +
94          "-" +
95          s4() +
96          "-" +
97          s4() +
98          "-" +
99          s4() +
100          s4() +
101          s4()
102        );
103      }
104
105      var pollingInterval;
106      var isPlaying = false;
107      var durationTime = -1;
108      var uuid;
109      var currentEpisodeId = 0;
110      var previousEpisodeId = 0;
111      var uuid_chk;
112
113      var status = player.jPlayer({
114        ready: function(event) {
115          window.console.log('wpb-jquery-jplayer.js >> JPlayer ready()');
116          uuid = guid();
117          // Loader is showing only while page loads
118          loader.remove();
119
120          // Check if current playlist has preroll inside
121          // Preroll is allways singlular and first
122          if (isPreroll()) {
123            hasPreroll = true;
124          }
125
126          // WPB-6344 -- during super cached page , change audio preroll through js.
127          var total_prerolls = JPlayer.total_prerolls;
128          if (total_prerolls >= 2) {
129            var all_preroll_info_js_arr = JPlayer.all_preroll_info_arr
130            const randomPreroll = all_preroll_info_js_arr[Math.floor(Math.random() * all_preroll_info_js_arr.length)];
131            console.log('random preroll_id : '+randomPreroll.preroll_id);
132            audio[playIndex].mp3 = randomPreroll.preroll_audio;
133            audio[playIndex].id = randomPreroll.preroll_id;
134            audio[playIndex].title = randomPreroll.preroll_title;
135          }
136
137          //WPB-3470 -- same as we have into -latest.js file advance player.
138          //we need to get duration properly during page load.
139          $(this).jPlayer("setMedia", {
140              mp3: audio[playIndex].mp3,
141          });
142
143          // Check autoplay feature
144          if (player.attr("data-autoplay") === "1") {
145            player.jPlayer("play");
146          }
147          // When volume is disabled there need to be some css changes done
148          if (event.jPlayer.status.noVolume) {
149            container.addClass("no-volume");
150          }
151        },
152        play: function() {
153
154          //WPB-435
155          var dfp_video_ad_tag_val = eval('wpb_jplayer_settings_' + num).dfp_video_ad_tag;
156          if (dfp_video_ad_tag_val) {
157            var videoPlayerContDivObj = document.getElementById('vid-container-' + num);
158            if (videoPlayerContDivObj.style.display == 'block') {
159              jQuery("#player-" + num).jPlayer('stop');
160              eval('vid' + num).play(); //play video direct ads.
161              return;
162            }
163          }
164
165          var player_flag = checkPlaylistPlayer(num);
166          if (player_flag == 'advance_playlist') {
167
168            player.jPlayer("pauseOthers");
169
170            container.addClass("playing").removeClass("pause");
171
172            var ObjHid = document.getElementById('hid-extra-' + num);
173            var field_arr = ObjHid.value.split('^#^');
174            var field1_arr = field_arr[0].split('^@^');
175            var e_id = field1_arr[1];
176            var field2_arr = field_arr[1].split('^@^');
177            var p_id = field2_arr[1];
178            var field3_arr = field_arr[2].split('^@^');
179            var flag_play = field3_arr[1];
180
181            if (flag_play == 'episode') {
182              //if (currentEpisodeId == 0)
183              currentEpisodeId = e_id;
184
185              isPlaying = true;
186              collectStats(durationTime, uuid, 'play_episode_playlist');
187
188              pollingInterval = setInterval(function() {
189                collectStats(durationTime, uuid, 'play_episode_playlist_interval');
190              }, 30000); //WPB-298 changed to 15 seconds, instead of 5 seconds ( 5000 )
191              // 30 seconds - WPB-7003
192            } else { //preroll
193              //isPlaying = false;
194
195              //clear cookie. so, when next preroll play then it should not insert last played episode.
196              //var ck_name = uuid;
197              //document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
198              //$.cookie(ck_name,null, {domain:'.'+ckDomain})
199
200              //no need.
201              /*if (uuid_chk) {
202                document.cookie = uuid_chk +'=; path=/; domain=.'+ckDomain+'; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
203              }*/
204
205              //for new episode set duration time to reset it.
206              durationTime = -1;
207              clearInterval(pollingInterval); //during preroll stop sending ajax request for previous episode id.
208            }
209            return;
210          } //End of if (player_flag == 'advance_playlist')
211
212          //as usual code for single episode player.
213          // Avoid both jPlayers playing together.
214          player.jPlayer("pauseOthers");
215          setTitle();
216
217          container.addClass("playing").removeClass("pause");
218
219          if (isPreroll()) {
220            container.addClass("playing-preroll");
221          } else {
222            isPlaying = true;
223            collectStats(durationTime, uuid, 'play_episode_single');
224            //WPB-306- I commented line because of multiple hits for duration for podcast playlist player
225            pollingInterval = setInterval(function() {
226              collectStats(durationTime, uuid, 'play_episode_single_interval');
227            }, 30000); //WPB-3867 changed to 20 seconds, instead of 5 seconds ( 5000 )
228            // 30 seconds - WPB-7003
229
230            container.removeClass("playing-preroll");
231          }
232        },
233        timeupdate: function(event) {
234          if (isPlaying === true) {
235            durationTime = event.jPlayer.status.currentTime;
236          }
237        },
238        pause: function() {
239          container.addClass("pause").removeClass("playing");
240
241          if (isPlaying === true) {
242            clearInterval(pollingInterval);
243            collectStats(durationTime, uuid, 'pause_episode');
244            isPlaying = false;
245          }
246        },
247        ended: function() {
248          //in play added code for advance playlist. so, return from here.
249          var player_flag = checkPlaylistPlayer(num);
250          if (player_flag == 'advance_playlist') {
251            return;
252          }
253
254          //as usual code for single episode player.
255          if (isPreroll() == false) {
256            $("#play-btn-" + num).removeClass("hidden");
257            $("#play-btn-" + num).css("display", "block");
258
259            //single player and once actual audio stop to play then hide equilizer.
260            //better audio stats plugin activated.
261            $("#eq-" + num).hide();
262          }
263          playListNext();
264        },
265        oggSupport: false,
266        swfPath: "/wp-content/plugins/wpb-show-core/modules/jplayer",
267        supplied: "mp3",
268        wmode: "window",
269        cssSelectorAncestor: "#player-interface-" + num,
270        noVolume: false
271      });
272
273      $("#play-btn-" + num).click(function() {
274        $("#play-btn-" + num).addClass("hidden");
275        $("#pause-btn-" + num).removeClass("hidden");
276      });
277
278      $("#pause-btn-" + num).click(function() {
279        $("#pause-btn-" + num).addClass("hidden");
280        $("#play-btn-" + num).removeClass("hidden");
281      });
282
283      /**
284       * Setup player media according to passed index
285       * @param  {int} index playlist index
286       * @return {[type]}       [description]
287       */
288      function playlistConfig(index) {
289        player.jPlayer("setMedia", audio[index]);
290      }
291
292      /**
293       * Set current playing title
294       */
295      function setTitle() {
296        currentTitle.html(audio[playIndex].title);
297      }
298
299      /**
300       * Play next playlist item
301       * @return {void}
302       */
303      function playListNext() {
304        var index = playIndex + 1 < audio.length ? playIndex + 1 : 0;
305        playListChange(index);
306
307        // There is no repeat, and player is minimized
308        if (index == 0) {
309          $("#play-btn-" + index).removeClass("hidden");
310          $("#pause-btn-" + index).addClass("hidden");
311        } else {
312          player.jPlayer("play");
313        }
314      }
315
316      /**
317       * Set audio according to passed index
318       * @param  {int} index playlist index
319       * @return {void}
320       */
321      function playListChange(index) {
322        playIndex = index;
323        playlistConfig(index);
324      }
325
326      /**
327       * Check if playlist item is preroll
328       * @param  {int}  index playlist item to check
329       * @return {bool}
330       */
331      function isPreroll(index) {
332        if (typeof index == "number") {
333          return audio[index].hasOwnProperty("preroll");
334        } else {
335          return audio[playIndex].hasOwnProperty("preroll");
336        }
337      }
338
339      var ajaxQueue = [];
340      //var ckArrCheck = [];
341
342      /**
343       * Collect player statistics
344       * Stats is collected for
345       * @return {void}
346       */
347      function collectStats(durationTime, uuid, flag_fun_call) {
348        //WPB-3351
349        if(AWS.config.credentials == null || typeof AWS.config.credentials === "undefined"){
350          // AWS CONFIGURATION
351          AWS.config.credentials = new AWS.CognitoIdentityCredentials({
352            IdentityPoolId: 'us-east-1:adc43218-48bc-4c15-87ed-037b09ebb86d'
353          });
354          AWS.config.region = 'us-east-1';
355        }
356        //----------------------------------------------------------------------
357        var player_flag = checkPlaylistPlayer(num);
358
359        var blogid = eval('wpb_jplayer_settings_' + num).blogid;
360        var gmt_offset_site = eval('wpb_jplayer_settings_' + num).gmt_offset_site;
361        var ck_dm = eval('wpb_jplayer_settings_' + num).ck_dm;
362
363        var ajax_url_val = eval('wpb_jplayer_settings_' + num).ajaxurl_path;
364        var ajax_simple = 0;
365        if (ajax_url_val) {
366          ajax_url_val = eval('wpb_jplayer_settings_' + num).siteUrl + ajax_url_val;
367          ajax_simple = 1;
368        } else {
369          ajax_url_val = ajaxurl; //as usual.
370        }
371        //======================= FOR PLAYLIST PLAYER ==========================
372        if (player_flag == 'advance_playlist') {
373          var ObjHid = document.getElementById('hid-extra-' + num);
374          var field_arr = ObjHid.value.split('^#^');
375          var field1_arr = field_arr[0].split('^@^');
376          var e_id = field1_arr[1];
377          var field2_arr = field_arr[1].split('^@^');
378          var p_id = field2_arr[1];
379          var field3_arr = field_arr[2].split('^@^');
380          var flag_play = field3_arr[1];
381          //WPB-434
382          var field4_arr = field_arr[3].split('^@^');
383          var pod_id = field4_arr[1];
384          var field5_arr = field_arr[4].split('^@^');
385          var ply_f = field5_arr[1];
386          if (flag_play == 'episode') {
387            var send_ajax_call = true; var current_index_of_elt = 0; var flag_array_fill = '';
388            var hidPlayedObj = document.getElementById('hid-palyed-' + num);
389
390            if (hidPlayedObj && hidPlayedObj != 'undefined') { //Cannot read property 'value' of null
391
392            if (document.getElementById('hid-palyed-' + num).value) {
393              var played_str = document.getElementById('hid-palyed-' + num).value;
394              var played_arr = document.getElementById('hid-palyed-' + num).value.split(':');
395              if (in_array_js_check(e_id, played_arr) != -1) {
396                //in array then donot insert it again.
397                //send_ajax_call = false; //no need here. as we need request every 15 seconds to add duration.
398
399                current_index_of_elt = in_array_js_check(e_id, played_arr);
400                if (current_index_of_elt == 0) {
401                  previousEpisodeId = played_arr[played_arr.length - 1];
402                  //var ck_name = uuid;
403                  //document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
404                  //clearInterval(pollingInterval);
405                } else {
406                  previousEpisodeId = played_arr[current_index_of_elt - 1];
407                }
408
409                flag_array_fill = 'ALREADY_INTO_ARRAY';
410
411                //uuid_chk = uuid; //donot use here. as it take old uuid.
412              } else {
413                document.getElementById('hid-palyed-' + num).value = played_str + ':' + e_id;
414
415                //set previous episode id.
416                var played_arr = document.getElementById('hid-palyed-' + num).value.split(':');
417                //if (played_arr.length >= 2)
418                //previousEpisodeId = played_arr[played_arr.length-2];
419
420                current_index_of_elt = in_array_js_check(e_id, played_arr);
421                previousEpisodeId = played_arr[current_index_of_elt - 1];
422
423                flag_array_fill = 'ADD_INTO_ARRAY'; //another episode id, next one.
424
425                //delete cookie
426                //var ck_name = uuid; //previous played episode cookie.
427                //document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
428                //$.cookie(ck_name,null, {domain:'.'+ckDomain})
429
430                //in WPB-402 we donot use cookie. so, we may donot need it.
431                if (uuid_chk) {
432                  try {
433                    document.cookie = uuid_chk + '=; path=/; domain=.' + ckDomain + '; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
434                    //$.cookie(uuid_chk,null, {domain:'.'+ckDomain})
435                  } catch (e) {}
436                }
437
438                //WPB-402 -- in case if preroll not set ??
439                durationTime = -1; //no need here, to reset duration. we already did into preroll things on play event.
440
441                uuid = guid();
441 //new number for new episode id. ( next episode )
442                uuid_chk = uuid;
443
444                //ajaxQueue.length = 0;
445                //ajaxQueue = [];
446              }
447            } else {
448              document.getElementById('hid-palyed-' + num).value = e_id;
449              flag_array_fill = 'FIRST_TIME';
450
451              uuid_chk = uuid;
452            }
453
454          }//End of if (hidPlayedObj && hidPlayedObj != 'undefined')
455
456            if (send_ajax_call) {
457              var extra_param_ck = ''; var ck_name = uuid;
458              //if (parseInt(currentEpisodeId) != parseInt(e_id)) {
459              
460              //extra_param_ck = 'wpb_code:'+current_index_of_elt+':'+flag_array_fill+':'+e_id+':ck_name@'+ck_name+':previous@'+previousEpisodeId+':current@'+currentEpisodeId+':'+flag_fun_call+':'+durationTime+':uuid@'+uuid+':uuid_chk@'+uuid_chk;
461              var data = {};
462              if (ajax_simple) {
463                data.blogid = blogid; data.gmt_offset_site = gmt_offset_site; data.ck_dm = ck_dm; data.ajax_simple = ajax_simple;
464              }
465              data.action = 'save_play_duration';
466              data.type = 'audio';
467              data.topic = 'audio_player_stats'; //WPB-402
468
469              data.id = e_id;
470              data.preroll_id = p_id;
471              data.player_type = 'advance_playlist';
472              data.duration = durationTime; /*data.uuid = uuid;*/
473              data.uuid = uuid_chk;
474              data.extra_param_ck = extra_param_ck;
475              data.flag_call = 'wpb_req_playlist';
476              data.flag_array_fill = flag_array_fill; //WPB-402 -- pass this too check in log file.
477
478              data.podcast_id = pod_id; //WPB-434
479
480              //ckArrCheck.push(uuid);
481
482              //--------------------------------------------------
483              //WPB-402
484              var record = {
485                topic: 'audio_player_stats',
486                data: data
487              };
488
489              if (!IS_PROD) {
490                record.topic = 'audio_player_stats_test';
491                console.log("Local/Staging Debug:", JSON.stringify(record, null, 2));
492              }
493
494              var params = { // for AWS Kinesis
495                Data: JSON.stringify(record) + ",",
496                PartitionKey: 'partition-' + AWS.config.credentials.identityId
497              }
498              recordData.push(params);
499              //stop below individual ajax request for single player.
500              //--------------------------------------------------
501
502              //WPB-402 -- stop this now. jquery ajax
503            } //End of if (send_ajax_call)
504
505          } //End of if (flag_play == 'episode')
506          else { //preroll.
507            //clear cookie and set new uuid name to cookie.
508            /*var ck_name = uuid;
509            uuid = guid();
510            document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';*/
511          }
512          return;
513        } //End of if (player_flag == 'advance_playlist')
514        //----------------------------------------------------------------------
515
516        //======================= FOR SINGLE PLAYER ==========================
517
518        //WPB-434
519        var pod_id = 0;
520        try {
521          var ObjHid = document.getElementById('hid-extra-' + num);
522          var field_arr = ObjHid.value.split('^#^');
523          var field1_arr = field_arr[0].split('^@^');
524          var e_id = field1_arr[1];
525          var field2_arr = field_arr[1].split('^@^');
526          var p_id = field2_arr[1];
527          var field3_arr = field_arr[2].split('^@^');
528          var flag_play = field3_arr[1];
529          var field4_arr = field_arr[3].split('^@^');
530          var pod_id = field4_arr[1];
531          var field5_arr = field_arr[4].split('^@^');
532          var ply_f = field5_arr[1];
533          //alert('advance_single >> '+e_id+' : '+p_id+' : '+pod_id);
534        } catch (e) {}
535
536        //as usual code for single episode player.
537        var type,
538          action = "save_play_duration",
539          data = {};
540
541        type = isPreroll() ? "preroll" : "audio";
542
543        //WPB-402
544        data.topic = 'audio_player_stats'; //i think no need here as we used into record var below.
545        //data.topic = 'audio_player_stats_without_domain';
546
547        // Prepare data to send with notification request
548        data.action = action;
549
550        if (ajax_simple) {
551          data.blogid = blogid; data.gmt_offset_site = gmt_offset_site; data.ck_dm = ck_dm;
552          data.ajax_simple = ajax_simple; let new_date = new Date(); data.date = new_date.toISOString();
553        }
554
555        data.type = type;
556        data.id = audio[playIndex].id;
557        data.duration = durationTime;
558        data.uuid = uuid;
559
560        // Send preroll id if audio is playing and current plalist contains preroll
561        if (!isPreroll() && hasPreroll) {
562          data.preroll_id = audio[0].id;
563        }
564
565        data.flag_call = 'wpb_req_single';
566        data.flag_array_fill = '';
567
568        data.podcast_id = pod_id; //WPB-434
569
570        //do we need to change here or not ? //WPB-402
571        //data.signature = '';
572
573        //if preroll then donot fill recordData array or send request.
574        if (type == 'preroll') {
575          return;
576        }
577
578        //--------------------------------------------------
579        //WPB-402
580        var record = {
581          topic: 'audio_player_stats',
582          //topic: 'audio_player_stats_without_domain',
583          //topic: 'iap-dev',
584          //lambda_signature: '', //later we can check here by passing it. right now no need.
585          data: data
586        };
587
588        if (!IS_PROD) {
589          record.topic = 'audio_player_stats_test';
590          console.log("Local/Staging Debug:", JSON.stringify(record, null, 2));
591        }
592
593        var params = { // for AWS Kinesis
594          //lambda_signature: '', //later we can check here by passing it. right now no need.
595          // add a comma to the json string to make it easier to parse the s3 file
596          Data: JSON.stringify(record) + ",",
597          // using the identityId as a partition so that it distibutes by user/browser
598          PartitionKey: 'partition-' + AWS.config.credentials.identityId
599        }
600        recordData.push(params);
601        //stop below individual ajax request for single player.
602        //--------------------------------------------------
603
604        // push each request to an array and use that to defer? use .done()
605        // stop ajax jquery.
606      } //End of function collectStats
607
608      function in_array_js_check(needle, haystack) {
609        var found = 0;
610        for (var i = 0, len = haystack.length; i < len; i++) {
611          if (haystack[i] == needle) return i;
612          found++;
613        }
614        return -1;
615      }
616
617      //WPB-227
618      function checkPlaylistPlayer(num) {
619        var player_unique_index_val = num;
620        var player_flag = '';
621        try {
622          var playlists_arr = eval('playlists_arr_' + player_unique_index_val);
623          if (playlists_arr) {
624            player_flag = 'advance_playlist';
625          }
626        } catch (e) {}
627
628        return player_flag;
629      } //End of func checkPlaylistPlayer
630    }); // foreach playlists loop
631
632  } // instance presence check
633  //*********************************************************************************
634
635  //--------------------------------------------------------------
636  //put outside foreach playlists loop.
637  //WPB-402
638  AWS.config.credentials.get(function(err) {
639    // attach event listener
640    if (err) {
641      return;
642    }
643    // create kinesis service object
644    kinesis = new AWS.Kinesis({
645      apiVersion: '2013-12-02'
646    });
647
648    setInterval(function() {
649      //return; //donot pass during local check.
650      if (!recordData.length) {
651        return;
652      } // dont do anything if there is no records
653      // upload data to Amazon Kinesis
654      if (kinesis) {
655        kinesis.putRecords({
656          Records: recordData,
657          //StreamName: 'audio-stats-pipeline' //Not working. giving error -- not authorised
658          StreamName: 'iap-stats-pipeline'
659        }, function(err, data) {
660          if (err) {
661            //console.error(err);
662          }
663          recordData = [];
664        });
665        // clear record data
666      } // if there is a kinesis
667    }, 10000); // set interval - 10 seconds WPB-7003
668    //can we change interval from 1000 ( 1 second ) to other seconds ?
669  });
670  //--------------------------------------------------------------
671
672//});
673
674}; //End 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.