PageSourceSearch

https://www.digitalmusicnews.com/wp-content/uploads/944/253/public/assets/js/549.js

js digitalmusicnews.com collected 2026-09-24 08:06:50 UTC 28,755 bytes, 732 lines download raw bytes

1/**
2 * Process ads with cache busting 'On'
3 */
4var advanced_ads_layer_cache_busting;
5if ( ! advanced_ads_layer_cache_busting ) {
6	advanced_ads_layer_cache_busting = {
7        doc_loaded: false,
8        bufferedAds: [],
9
10        flush: function() {
11            var _bufferedAds = this.bufferedAds;
12            this.bufferedAds = [];
13
14            for ( var i = 0; i < _bufferedAds.length; i++ ) {
15                this._process_item( jQuery( _bufferedAds[i] ) );
16
17            }
18
19        },
20
21        _process_item: function( banner ) {
22            var banner_id = banner.attr('id');
23
24            advads_items.conditions[banner_id] = advads_items.conditions[banner_id] || {};
25
26            // advads_layer_center_if_not_sticky ( banner )
27
28            if (banner.hasClass('advads-effect') ) {
29                advads_layer_gather_effects(banner_id);
30            }
31
32            if ( ! banner.hasClass( 'use-fancybox' ) ) {
33                advads_layer_gather_background( banner_id );
34            }
35
36            advads_layer_gather_auto_close( banner );
37
38            // display onload ad right away
39            if (banner.hasClass(advanced_ads_layer_settings.layer_class + '-onload')) {
40                advads_items.conditions[banner_id].scrolloffset = true;
41                advads_check_item_conditions(banner_id);
42            // exit popup (if the user leaves the page)
43            } else if (banner.hasClass(advanced_ads_layer_settings.layer_class + '-exit')) {
44                    ouibounce(banner[0], {
45                    // the modal will fire any time the page is reloaded, for the same user
46                    aggressive: true,
47                    // amount of time that firing is surpressed for
48                    timer: 0,
49                    callback: function() {
50                        // reset display to none after Ouibounce
51                        banner.css('display', 'none');
52                        advads_items.conditions[banner_id].scrolloffset = true;
53                        advads_check_item_conditions(banner_id);
54                    }
55                });
56            // display after delay of n seconds
57            } else if ( banner.hasClass( advanced_ads_layer_settings.layer_class + '-delay' ) ) {
58                var delay = ( parseInt( banner.attr( 'data-advads-layer-delay' ), 10 ) ) || 0;
59                setTimeout( function() {
60                    advads_items.conditions[banner_id].delay_expired = true;
61                    advads_check_item_conditions(banner_id);
62                }, delay );
63            // ad depends on scrolling
64            }  else {
65                // calculate scroll length (document height - window height)
66                var advads_scrollhalf = (jQuery(document).height() - jQuery(window).height()) / 2;
67
68                var scroll_handler = function ( event ) {
69                    if ( jQuery.inArray( banner_id, advads_items.showed ) !== -1 ) {
70                        //console.log( 'off scroll event' )
71                        jQuery( window ).off( 'scroll', scroll_handler );
72                        return;
73                    }
74
75                    // display scroll ads right after scrolling stopped
76                    if ( banner.hasClass( advanced_ads_layer_settings.layer_class + '-stop' ) ) {
77                        advads_items.conditions[banner_id].scrolloffset = true;
78                        advads_check_item_conditions( banner_id );
79                    }
80
81                    // display ads after half the page was scrolled
82                    if ( jQuery( document ).scrollTop() >= advads_scrollhalf) {
83                        if ( banner.hasClass( advanced_ads_layer_settings.layer_class + '-half' ) ) {
84                            advads_items.conditions[banner_id].scrolloffset = true;
85                            advads_check_item_conditions(banner_id);
86                        }
87                    }
88
89                    // display ads after custom scroll offset
90                    if ( banner.hasClass( advanced_ads_layer_settings.layer_class + '-offset' ) ) {
91                        var custom_offset = advads_extract_custom_offset_from_class( '#' + banner_id );
92                        if ( jQuery( document ).scrollTop() >= custom_offset ) {
93                            advads_items.conditions[banner_id].scrolloffset = true;
94                            advads_check_item_conditions( banner_id );
95                        }
96                    }
97                }
98
99
100                jQuery( window ).onEnd( 'scroll', scroll_handler, 100);
101            }
102
103        },
104
105        observe: function (event) {
106            if ( event.event === 'postscribe_done' && event.ref && event.ad ) {
107                var banner = jQuery( event.ref ).children( 'div' );
108                if ( ! banner.hasClass( advanced_ads_layer_settings.layer_class + '' ) ) {
109                    return;
110                }
111
112                if ( advanced_ads_layer_cache_busting.doc_loaded ) {
113                    advanced_ads_layer_cache_busting.bufferedAds.push( banner );
114                    advanced_ads_layer_cache_busting.flush();
115                }
116            }
117        },
118	}
119}
120
121// Advanced Ads Pro is enabled
122if ( typeof advanced_ads_pro === 'object' && advanced_ads_pro !== null ) {
123	// observe cache busting done event
124    advanced_ads_pro.postscribeObservers.add( advanced_ads_layer_cache_busting.observe );
125}
126
127/**
128 * Process ads with cache busting 'Off'
129 */
130var layers = function() {
131    advanced_ads_layer_cache_busting.doc_loaded = true;
132
133    jQuery('.' + advanced_ads_layer_settings.layer_class).each(function () {
134        advanced_ads_layer_cache_busting.bufferedAds.push(jQuery(this));
135    });
136
137    advanced_ads_layer_cache_busting.flush();
138};
139
140if (typeof advads !== 'undefined' && typeof advads.privacy.dispatch_event !== 'undefined') {
141    document.addEventListener('advanced_ads_privacy', function (event) {
142        if (
143            (event.detail.state === 'accepted' || event.detail.state === 'not_needed')
144            && window.advanced_ads_layer_settings.placements !== null
145        ) {
146            window.advanced_ads_layer_settings.placements.forEach(function (value) {
147                document.querySelectorAll('script[type="text/plain"][data-tcf="waiting-for-consent"][data-placement="' + value + '"]').forEach(advads.privacy.decode_ad);
148            });
149        }
150
151        layers();
152    });
153} else {
154    ( window.advanced_ads_ready || jQuery( document ).ready ).call( null, function() {
155        layers();
156    });
157}
158
159/**
160 * adjust position for centered layer banner if not added by the sticky plugin
161 * @param {string} $ad jQuery object (wrapped set)
162 */
163function advads_layer_center_if_not_sticky( $ad ) {
164	if ($ad.hasClass('is-sticky')) {
165		return;
166	}
167	/*
168	var left = ( jQuery( window ).width() - ad.width() ) / 2;
169	var top = ( jQuery( window ).height() - ad.height() ) / 2;
170	ad.css('left', left);
171	ad.css('top', top);
172	ad.css('position', 'fixed');
173	*/
174
175	var width = parseInt($ad.attr('data-width'), 10);
176	var height = parseInt($ad.attr('data-height'), 10);
177
178
179	var is_transform_supported = getSupportedTransform();
180
181	var transform_property = '';
182	if (!height) {
183		if (is_transform_supported) {
184			transform_property += 'translateY(50%) ';
185		} else {
186			jQuery($ad).css({'top': '0', 'bottom': 'auto'});
187		}
188	}
189	if (!width) {
190		if (is_transform_supported) {
191			transform_property += 'translateX(-50%) ';
192		} else {
193			jQuery($ad).css({'left': '0', 'right': 'auto'});
194		}
195
196	}
197	if (transform_property) {
198		set_ad_transform($ad, transform_property);
199	}
200}
201
202/**
203 * gather information about display effects and duration
204 * @param {string} id of the ad, without #
205 */
206function advads_layer_gather_effects(id) {
207    var banner = jQuery('#' + id);
208    // display effect duration
209    advads_items.effect_durations[id] = advads_extract_duration_from_class(banner);
210    // load display effects
211    if (banner.hasClass('advads-effect-fadein')) {
212        advads_items.display_effect_callbacks[id] = 'advads_display_effect_fadein';
213    };
214    if (banner.hasClass('advads-effect-show')) {
215        advads_items.display_effect_callbacks[id] = 'advads_display_effect_show';
216    };
217    if (banner.hasClass('advads-effect-slide')) {
218        advads_items.display_effect_callbacks[id] = 'advads_display_effect_slide';
219    };
220}
221
222/**
223 * gather information about background
224 * @param {string} id of the ad, without #
225 */
226function advads_layer_gather_background(id) {
227    var banner = jQuery('#' + id);
228    // add display callback to the ads with background
229    if (banner.hasClass('advads-has-background') && banner.is(':hidden')) {
230        if (!advads_items.display_callbacks[id] != 'undefined') {
231            advads_items.display_callbacks[id] = {};
232            var length = 0;
233        } else {
234            var length = advads_items.display_callbacks[id].length;
235        }
236
237        advads_items.display_callbacks[id][length] = 'advads_layer_display_background_callback';
238    }
239}
240
241/**
242 * Gather auto close info and schedule auto close.
243 *
244 * @param {obj} $banner A jQuery object representing the banner wrapper.
245 */
246function advads_layer_gather_auto_close( $banner ) {
247	var delay = parseInt( $banner.data( 'auto-close-delay'), 10 );
248	if ( ! delay ) { return; }
249	var banner_id = $banner.attr('id');
250	advads_items.display_callbacks[ banner_id ] = advads_items.display_callbacks[ banner_id ] || {};
251	advads_items.display_callbacks[ banner_id ].auto_close = function( banner_id ) {
252		setTimeout( function() {
253			advads_layer_close_item( banner_id );
254		}, delay );
255	}
256}
257
258/**
259 * check if background can be removed
260 *
261 * @param {string} id id of the ad, without #
262 * @returns {bool} true, if background can be removed
263 */
264function can_remove_background(item) {
265    advads_items.backgrounds[ item ] = false;
266    var remove = true;
267	jQuery.each( advads_items.backgrounds, function( i, val ) {
268		if ( val == true ) {
269			//if ( advads_items.conditions.hasOwnProperty(i) && advads_items.conditions[i].scrolloffset == true  ) {
270				remove = false;
271				//break the loop
272				return false;
273			//}
274		}
275	});
276	return remove;
277}
278
279/**
280 * check item conditions and display the ad if all conditions are true
281 *
282 * @param {string} id id of the ad, without #
283 * @returns {bool} true, if item can be displayed
284 */
285function advads_check_item_conditions(id) {
286    var item = jQuery('#' + id);
287    if (item.length == 0) {
288        return;
289    }
290
291    var display = true;
292    jQuery.each(advads_items.conditions[id], function (method, flag) {
293        if (flag === false) {
294            // display the banner
295            display = false;
296        }
297    });
298
299    if ( display ) {
300        advads_items.showed.push(id);
301
302		item.trigger( advanced_ads_layer_settings.layer_class + '-trigger' );
303
304        if ( item.hasClass('use-fancybox') ) {
305            fancybox_display (id);
306        } else {
307            var ad = jQuery('#' + id);
308
309			// responsive CSS as we don't have CSS file.
310			switch( ad.attr('data-position') ) {
311				case 'topcenter':
312				case 'topright':
313				case 'center':
314				case 'centerright':
315				case 'bottomright':
316				case 'bottomcenter':
317					if ( ! parseInt( ad.attr( 'data-width' ), 10 ) ) {
318						if ( jQuery( window ).width() > 768 ) {
319							ad.css( 'width', 'auto' );
320						}
321					}
322					break;
323			}
324
325			// TODO: Remove this block after verifying no issues in v2.1 or later.
326
327            /*var width = parseInt( ad.attr( 'data-width' ), 10 );
328            var height = parseInt( ad.attr( 'data-height' ), 10 );
329            var is_transform_supported = getSupportedTransform();
330
331            switch ( jQuery(ad).attr('data-position') ) {
332                case 'topcenter':
333                    if ( ! width ) {
334                        if ( is_transform_supported ) {
335                            set_ad_transform(ad, 'translateX(-50%)');
336                        } else {
337                            jQuery( ad ).css({ 'left':'0', 'right':'auto', 'top':'0', 'bottom':'auto' });
338                        }
339                    }
340                    break;
341                case 'centerleft':
342                    if ( ! height ) {
343                        if ( is_transform_supported ) {
344                            set_ad_transform(ad, 'translateY(50%)');
345                        } else {
346                            jQuery( ad ).css({ 'left':'0', 'right':'auto', 'top':'0', 'bottom':'auto' });
347                        }
348                    }
349                    break;
350                case 'center':
351                    var transform_property = '';
352                    if ( ! height ) {
353                        if ( is_transform_supported ) {
354                            transform_property += 'translateY(50%) ';
355                        } else {
356                            jQuery( ad ).css({ 'top':'0', 'bottom':'auto' });
357                        }
358                    }
359                    if ( ! width ) {
360                        if ( is_transform_supported ) {
361                            transform_property += 'translateX(-50%) ';
362                        } else {
363                            jQuery( ad ).css({ 'left':'0', 'right':'auto' });
364                        }
365
366                    }
367                    if (transform_property) {
368                        set_ad_transform(ad, transform_property);
369                    }
370                    break;
371                case 'centerright':
372                    if ( ! height ) {
373                        if ( is_transform_supported ) {
374                            set_ad_transform(ad, 'translateY(50%)');
375                        } else {
376                            jQuery( ad ).css({ 'left':'0', 'right':'auto', 'top':'0', 'bottom':'auto' });
377                        }
378
379                    }
380                    break;
381                case 'bottomcenter':
382                    if ( ! width ) {
383                        if ( is_transform_supported ) {
384                            set_ad_transform(ad, 'translateX(-50%)');
385                        } else {
386                            jQuery( ad ).css({ 'left':'0', 'right':'auto', 'top':'0', 'bottom':'auto' });
387                        }
388
389                    }
390                    break;
391            } */
392
393            advads_layer_call_display_callbacks( id );
394
395            if (advads_items.display_effect_callbacks[id] == undefined) {
396                ad.show();
397            } else {
398                var callback = window[advads_items.display_effect_callbacks[id]];
399                callback(id);
400            }
401        }
402    }
403}
404
405/**
406 * shows the ad using fancybox plugin
407 *
408 * @param {string} id id of the ad, without #
409 */
410function fancybox_display(id) {
411    var banner = jQuery('#' + id);
412
413    var settings = {
414        'speedIn'            : 0,
415        'speedOut'           : 0,
416        'showCloseButton'    : true,
417        'hideOnOverlayClick' : banner.hasClass( 'advads-background-click-close' ),
418        'centerOnScroll'      : true,
419        //'autoScale' : false,
420        //'autoDimensions' : false,
421        'margin' : 20,
422        'padding' : 10,
423        'onClosed': function() {
424            if ( typeof advads_items.close_functions[ id ] === 'function' ) {
425                advads_items.close_functions[ id ]();
426            }
427        },
428		// Once the content is displayed.
429		'onComplete': function() {
430			advads_layer_call_display_callbacks( id );
431		},
432    }
433
434    if (advads_items.display_effect_callbacks[id] == undefined) {
435        settings['transitionIn'] = 'none';
436    } else {
437        var callback = advads_items.display_effect_callbacks[id];
438        switch ( callback ) {
439            case 'advads_display_effect_fadein':
440                settings['transitionIn'] = 'fade';
441                break;
442            case 'advads_display_effect_show':
443                settings['transitionIn'] = 'elastic';
444                break;
445            default:
446                settings['transitionIn'] = 'none';
447        }
448    }
449
450    if ( ! banner.hasClass('advads-has-background') ) {
451        settings['overlayShow'] = false;
452    }
453
454    if ( ! banner.hasClass('advads-close') ) {
455        settings['showCloseButton'] = false;
456    }
457    // extract duration of the transitionIn effect
458    var speedIn = advads_extract_duration_from_class(banner);
459    settings['speedIn'] = ( speedIn ) ? speedIn : 0;
460
461    var position = jQuery(banner).attr('data-position');
462    // css for Fancybox
463    var output_css = '#fancybox-close { right: -15px; }';
464    output_css += '#fancybox-loading, #fancybox-loading div, #fancybox-overlay, #fancybox-wrap, #fancybox-wrap div {';
465    output_css += '-webkit-box-sizing: content-box !important; -moz-box-sizing: content-box !important; box-sizing: content-box !important; }';
466
467    switch ( position ) {
468        case 'topleft':
469            output_css += '#fancybox-wrap { position: fixed; bottom: auto !important; top: 0px !important; right: auto !important; left: 0px !important; }';
470            break;
471        case 'topcenter':
472            output_css += '#fancybox-wrap { position: fixed; bottom: auto !important; top: 0px !important; }';
473            break;
474        case 'topright':
475            output_css += '#fancybox-wrap { position: fixed; bottom: auto !important; top: 0px !important; right: 0px !important; left: auto !important; }';
476            break;
477        case 'centerleft':
478            output_css += '#fancybox-wrap { left: 0px !important; right: auto !important; }';
479            break;
480        case 'center':
481            break;
482        case 'centerright':
483            output_css += '#fancybox-wrap { right: 0px !important; left: auto !important; }';
484            break;
485        case 'bottomleft':
486            output_css += '#fancybox-wrap { position: fixed; bottom: 0px !important; top: auto !important; right: auto !important; left: 0px !important; }';
487            break;
488        case 'bottomcenter':
489            output_css += '#fancybox-wrap { position: fixed; bottom: 0px !important; top: auto !important; }';
490            break;
491        case 'bottomright':
492            output_css += '#fancybox-wrap { position: fixed; bottom: 0px !important; top: auto !important; right: 0px !important; left: auto !important; }';
493            break;
494    }
495
496
497    jQuery('#' + advanced_ads_layer_settings.layer_class + '-custom-css').html(output_css);
498
499    // show fancybox
500    if ( typeof jQuery.fancybox == 'function' ) {
501        banner.waitForImages( function() {
502            settings['content'] = banner.show();
503            jQuery.fancybox( settings );
504        });
505    }
506}
507
508/**
509 * Call display callbacks.
510 *
511 * @param {string} banner_id id of the banner, without #
512 */
513function advads_layer_call_display_callbacks( banner_id ) {
514	// iterate through all callback function and call them
515	advads_items.display_callbacks[ banner_id ] = advads_items.display_callbacks[ banner_id ] || {};
516	jQuery.each( advads_items.display_callbacks[ banner_id ], function ( key, func ) {
517		if ( typeof func === 'string' ) {
518			func = window[ func ];
519		}
520		func( banner_id );
521	});
522}
523
524/**
525 * return a custom offset extracted from a class name
526 * @param {str} field
527 * @returns {int} offset
528 */
529function advads_extract_custom_offset_from_class(field) {
530    var offset = 0;
531    var classes = jQuery(field).attr('class');
532    if (classes !== undefined) {
533        // create class array
534        classes = classes.split(/\s+/);
535        jQuery.each(classes, function (key, value) {
536            if (value === '')
537                return false;
538            // get information about the solution from a class
539            var pattern = new RegExp(advanced_ads_layer_settings.layer_class + '-offset-', 'gi');
540            if (value.match(pattern)) {
541                infos = value.split('-');
542                offset = parseInt(infos[3])
543                return false;
544            }
545        });
546    }
547
548    return offset;
549};
550
551/**
552 * return a duration extracted from a class name
553 * @param {str} field
554 * @returns {int} offset
555 */
556function advads_extract_duration_from_class(field) {
557    var duration = 0;
558    var classes = field.attr('class');
559    if (classes !== undefined) {
560        // create class array
561        classes = classes.split(/\s+/);
562        jQuery.each(classes, function (key, value) {
563            if (value === '')
564                return false;
565            // get information about the solution from a class
566            if (value.match(/advads-duration-/gi)) {
567                infos = value.split('-');
568                duration = parseInt(infos[2])
569                return false;
570            }
571        });
572    }
573
574    return duration;
575};
576
577/**
578 * callback function in case a layer ad is displayed with a background
579 * @param {type} ad object
580 */
581function advads_layer_display_background_callback(id) {
582    // display overlay in case it is attached to an ad still not visible
583    var banner = jQuery('#' + id);
584    // only display background if there is an unvisible ad with a background AND no background visible yet
585    if (banner.hasClass('advads-has-background') && banner.is(':hidden')) {
586    	//there is background for this ad
587    	advads_items.backgrounds[id] = true;
588    	if (jQuery('.advads-background').length === 0) {
589			var args = {
590				"class": "advads-background",
591				"style": "position: fixed; bottom: 0; right: 0; display: block; width: 100%; height: 100%; background: #000; z-index: 9998; opacity:.5;",
592			}
593			if ( banner.hasClass( 'advads-background-click-close' ) ) {
594				args.click = function() {
595					jQuery( this ).remove();
596					advads_layer_close_items();
597				}
598			}
599			jQuery( '<div/>', args ).appendTo( 'body' );
600   		}
601    }
602}
603
604/**
605 * callback for display effect fadeIn
606 * @param {obj} ad container
607 */
608function advads_display_effect_fadein(id) {
609    var banner = jQuery('#' + id);
610    var duration = parseInt(advads_items.effect_durations[id]);
611    banner.fadeIn(duration);
612}
613
614/**
615 * callback for display effect show
616 * @param {obj} ad container
617 */
618function advads_display_effect_show(id) {
619    var banner = jQuery('#' + id);
620    var duration = parseInt(advads_items.effect_durations[id]);
621    banner.show(duration);
622}
623
624/**
625 * callback for display effect slideDown
626 * @link http://api.jquery.com/slideDown/
627 * @param {obj} ad container
628 */
629function advads_display_effect_slide(id) {
630    var banner = jQuery('#' + id);
631    var duration = parseInt(advads_items.effect_durations[id]);
632    banner.slideDown(duration);
633}
634
635/**
636 * check, if css transform is supported by user's browser
637 *
638 * [http://stackoverflow.com/a/12625986]
639 */
640function getSupportedTransform() {
641    var prefixes = 'transform WebkitTransform MozTransform OTransform msTransform'.split(' ');
642    var div = document.createElement('div');
643    for(var i = 0; i < prefixes.length; i++) {
644        if(div && div.style[prefixes[i]] !== undefined) {
645            return prefixes[i];
646        }
647    }
648    return false;
649}
650
651/**
652 * set css transform property for the ad
653 * @param {string} jQuery object (wrapped set)
654 * @param {string} values of property
655 */
656function set_ad_transform( ad, transform_properties ) {
657    jQuery( ad ).css({
658        '-webkit-transform': transform_properties,
659        '-moz-transform': transform_properties,
660        'transform': transform_properties
661    });
662}
663
664/**
665 * Close item (when user clicks on the close button/background or automatically after n sec.).
666 *
667 * @param {string} item_id Id of the item.
668 */
669function advads_layer_close_item( item_id ) {
670	if ( typeof advads_items.close_functions[ item_id ] === 'function' ) {
671		advads_items.close_functions[ item_id ]();
672		advads_items.close_functions[ item_id ] = null;
673
674		// Close Fancybox window.
675		if ( jQuery.fancybox && typeof jQuery.fancybox.close === 'function' ) {
676			jQuery.fancybox.close();
677		}
678	}
679}
680
681/**
682 * Close all items.
683 */
684function advads_layer_close_items() {
685	for ( var item_id in advads_items.close_functions ) {
686		if ( advads_items.close_functions.hasOwnProperty( item_id ) ) {
687			advads_layer_close_item( item_id );
688		}
689	}
690}
691
692/**
693 * Close an item if it contains a GAM ad that did not fill the space.
694 */
695document.addEventListener( 'aagam_empty_slot', function ( ev ) {
696    const div = document.getElementById( ev.detail );
697    if ( ! div ) {
698        return;
699    }
700
701    const layer = div.closest( '.' + document.body.classList.value.split( 'aa-prefix-' )[1].split( ' ' )[0] + 'layer' );
702
703    if ( ! layer ) {
704        return;
705    }
706
707    if ( typeof advads_items.close_functions[layer.id] === 'function' ) {
708        advads_layer_close_item( layer.id );
709    } else {
710        let interval = setInterval( function () {
711            if ( typeof advads_items.close_functions[layer.id] === 'function' ) {
712                advads_layer_close_item( layer.id );
713                clearInterval( interval );
714            }
715        }, 750 );
716    }
717} );
718
719//https://github.com/tonai/jquery-onend
720!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.fn.onEnd=function(){var a,b=Array.prototype.slice.call(arguments),c=b.pop(),d=b.pop(),e=function(){var b=Array.prototype.slice.call(arguments);clearTimeout(a),a=setTimeout(function(){d.apply(this,b)}.bind(this),c)};e.guid=d.guid||(d.guid=jQuery.guid++),b.push(e),this.on.apply(this,b)}});
721
722/*!
723 * Ouibounce
724 * https://github.com/carlsednaoui/ouibounce
725 *
726 * Copyright (c) 2014 Carl Sednaoui
727 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php).
728 **/
729!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n(require,exports,module):e.ouibounce=n()}(this,function(e,n,o){return function(e,n){"use strict";function o(e,n){return"undefined"==typeof e?n:e}function i(e){var n=24*e*60*60*1e3,o=new Date;return o.setTime(o.getTime()+n),"; expires="+o.toUTCString()}function t(){s()||(L.addEventListener("mouseleave",u),L.addEventListener("mouseenter",r),L.addEventListener("keydown",c))}function u(e){e.clientY>k||(D=setTimeout(m,y))}function r(){D&&(clearTimeout(D),D=null)}
729function c(e){g||e.metaKey&&76===e.keyCode&&(g=!0,D=setTimeout(m,y))}function d(e,n){return a()[e]===n}function a(){for(var e=document.cookie.split("; "),n={},o=e.length-1;o>=0;o--){var i=e[o].split("=");n[i[0]]=i[1]}return n}function s(){return d(T,"true")&&!v}function m(){s()||(e&&(e.style.display="block"),E(),f())}function f(e){var n=e||{};"undefined"!=typeof n.cookieExpire&&(b=i(n.cookieExpire)),n.sitewide===!0&&(w=";path=/"),"undefined"!=typeof n.cookieDomain&&(x=";domain="+n.cookieDomain),"undefined"!=typeof n.cookieName&&(T=n.cookieName),document.cookie=T+"=true"+b+x+w,L.removeEventListener("mouseleave",u),L.removeEventListener("mouseenter",r),L.removeEventListener("keydown",c)}var l=n||{},v=l.aggressive||!1,k=o(l.sensitivity,20),p=o(l.timer,1e3),y=o(l.delay,0),E=l.callback||function(){},b=i(l.cookieExpire)||"",x=l.cookieDomain?";domain="+l.cookieDomain:"",T=l.cookieName?l.cookieName:"viewedOuibounceModal",w=l.sitewide===!0?";path=/":"",D=null,L=document.documentElement;setTimeout(t,p);var g=!1;return{fire:m,disable:f,isDisabled:s}}});
730
731/*! waitForImages jQuery Plugin 2015-06-02 */
732!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){var b="waitForImages";a.waitForImages={hasImageProperties:["backgroundImage","listStyleImage","borderImage","borderCornerImage","cursor"],hasImageAttributes:["srcset"]},a.expr[":"]["has-src"]=function(b){return a(b).is('img[src][src!=""]')},a.expr[":"].uncached=function(b){return a(b).is(":has-src")?!b.complete:!1},a.fn.waitForImages=function(){var c,d,e,f=0,g=0,h=a.Deferred();if(a.isPlainObject(arguments[0])?(e=arguments[0].waitForAll,d=arguments[0].each,c=arguments[0].finished):1===arguments.length&&"boolean"===a.type(arguments[0])?e=arguments[0]:(c=arguments[0],d=arguments[1],e=arguments[2]),c=c||a.noop,d=d||a.noop,e=!!e,!a.isFunction(c)||!a.isFunction(d))throw new TypeError("An invalid callback was supplied.");return this.each(function(){var i=a(this),j=[],k=a.waitForImages.hasImageProperties||[],l=a.waitForImages.hasImageAttributes||[],m=/url\(\s*(['"]?)(.*?)\1\s*\)/g;e?i.find("*").addBack().each(function(){var b=a(this);b.is("img:has-src")&&j.push({src:b.attr("src"),element:b[0]}),a.each(k,function(a,c){var d,e=b.css(c);if(!e)return!0;for(;d=m.exec(e);)j.push({src:d[2],element:b[0]})}),a.each(l,function(c,d){var e,f=b.attr(d);return f?(e=f.split(","),void a.each(e,function(c,d){d=a.trim(d).split(" ")[0],j.push({src:d,element:b[0]})})):!0})}):i.find("img:has-src").each(function(){j.push({src:this.src,element:this})}),f=j.length,g=0,0===f&&(c.call(i[0]),h.resolveWith(i[0])),a.each(j,function(e,j){var k=new Image,l="load."+b+" error."+b;a(k).one(l,function m(b){var e=[g,f,"load"==b.type];return g++,d.apply(j.element,e),h.notifyWith(j.element,e),a(this).off(l,m),g==f?(c.call(i[0]),h.resolveWith(i[0]),!1):void 0}),k.src=j.src})}),h.promise()}});

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.