PageSourceSearch

https://igr-ev.de/wp-content/plugins/download-manager/assets/js/front.js?ver=6.4.2

js igr-ev.de collected 2026-09-24 10:15:38 UTC 43,573 bytes, 918 lines download raw bytes

1/**
2 * Version: 2.3.0
3 */
4var allps, pss;
5var wpdm_pass_target = '#pps_z';
6String.prototype.wpdm_shuffle = function () {
7    var a = this.split(""),
8        n = a.length;
9
10    for (var i = n - 1; i > 0; i--) {
11        var j = Math.floor(Math.random() * (i + 1));
12        var tmp = a[i];
13        a[i] = a[j];
14        a[j] = tmp;
15    }
16    return a.join("");
17}
18String.prototype.wpdm_hash = function () {
19    if (Array.prototype.reduce) {
20        return this.split("").reduce(function (a, b) {
21            a = ((a << 5) - a) + b.charCodeAt(0);
22            return a & a
23        }, 0);
24    }
25    var hash = 0;
26    if (this.length === 0) return hash;
27    for (var i = 0; i < this.length; i++) {
28        var character = this.charCodeAt(i);
29        hash = ((hash << 5) - hash) + character;
30        hash = hash & hash;
31    }
32    return hash;
33}
34
35var WPDM = {
36
37    init: function ($) {
38
39    },
40
41    copy: function ($id) {
42        var copyText = document.getElementById($id);
43        copyText.select();
44        copyText.setSelectionRange(0, 99999);
45        document.execCommand("copy");
46        WPDM.notify('<i class="fa fa-check-double"></i> Copied', 'success', 'top-center', 1000);
47    },
48
49    copyTxt: function (textToCopy) {
50        WPDM.notify('<i class="fa fa-check-double"></i> Copied', 'success', 'top-center', 1000);
51        // navigator clipboard api needs a secure context (https)
52        if (navigator.clipboard && window.isSecureContext) {
53            // navigator clipboard api method'
54            return navigator.clipboard.writeText(textToCopy);
55        } else {
56            // text area method
57            let textArea = document.createElement("textarea");
58            textArea.value = textToCopy;
59            // make the textarea out of viewport
60            textArea.style.position = "fixed";
61            textArea.style.left = "-999999px";
62            textArea.style.top = "-999999px";
63            document.body.appendChild(textArea);
64            textArea.focus();
65            textArea.select();
66            return new Promise((res, rej) => {
67                // here the magic happens
68                document.execCommand('copy') ? res() : rej();
69                textArea.remove();
70            });
71        }
72    },
73
74    beep: function () {
75        if (WPDM.audio == undefined)
76            var snd = new Audio("data:audio/wav;base64,//uQRAAAAWMSLwUIYAAsYkXgoQwAEaYLWfkWgAI0wWs/ItAAAGDgYtAgAyN+QWaAAihwMWm4G8QQRDiMcCBcH3Cc+CDv/7xA4Tvh9Rz/y8QADBwMWgQAZG/ILNAARQ4GLTcDeIIIhxGOBAuD7hOfBB3/94gcJ3w+o5/5eIAIAAAVwWgQAVQ2ORaIQwEMAJiDg95G4nQL7mQVWI6GwRcfsZAcsKkJvxgxEjzFUgfHoSQ9Qq7KNwqHwuB13MA4a1q/DmBrHgPcmjiGoh//EwC5nGPEmS4RcfkVKOhJf+WOgoxJclFz3kgn//dBA+ya1GhurNn8zb//9NNutNuhz31f////9vt///z+IdAEAAAK4LQIAKobHItEIYCGAExBwe8jcToF9zIKrEdDYIuP2MgOWFSE34wYiR5iqQPj0JIeoVdlG4VD4XA67mAcNa1fhzA1jwHuTRxDUQ//iYBczjHiTJcIuPyKlHQkv/LHQUYkuSi57yQT//uggfZNajQ3Vmz+Zt//+mm3Wm3Q576v////+32///5/EOgAAADVghQAAAAA//uQZAUAB1WI0PZugAAAAAoQwAAAEk3nRd2qAAAAACiDgAAAAAAABCqEEQRLCgwpBGMlJkIz8jKhGvj4k6jzRnqasNKIeoh5gI7BJaC1A1AoNBjJgbyApVS4IDlZgDU5WUAxEKDNmmALHzZp0Fkz1FMTmGFl1FMEyodIavcCAUHDWrKAIA4aa2oCgILEBupZgHvAhEBcZ6joQBxS76AgccrFlczBvKLC0QI2cBoCFvfTDAo7eoOQInqDPBtvrDEZBNYN5xwNwxQRfw8ZQ5wQVLvO8OYU+mHvFLlDh05Mdg7BT6YrRPpCBznMB2r//xKJjyyOh+cImr2/4doscwD6neZjuZR4AgAABYAAAABy1xcdQtxYBYYZdifkUDgzzXaXn98Z0oi9ILU5mBjFANmRwlVJ3/6jYDAmxaiDG3/6xjQQCCKkRb/6kg/wW+kSJ5//rLobkLSiKmqP/0ikJuDaSaSf/6JiLYLEYnW/+kXg1WRVJL/9EmQ1YZIsv/6Qzwy5qk7/+tEU0nkls3/zIUMPKNX/6yZLf+kFgAfgGyLFAUwY//uQZAUABcd5UiNPVXAAAApAAAAAE0VZQKw9ISAAACgAAAAAVQIygIElVrFkBS+Jhi+EAuu+lKAkYUEIsmEAEoMeDmCETMvfSHTGkF5RWH7kz/ESHWPAq/kcCRhqBtMdokPdM7vil7RG98A2sc7zO6ZvTdM7pmOUAZTnJW+NXxqmd41dqJ6mLTXxrPpnV8avaIf5SvL7pndPvPpndJR9Kuu8fePvuiuhorgWjp7Mf/PRjxcFCPDkW31srioCExivv9lcwKEaHsf/7ow2Fl1T/9RkXgEhYElAoCLFtMArxwivDJJ+bR1HTKJdlEoTELCIqgEwVGSQ+hIm0NbK8WXcTEI0UPoa2NbG4y2K00JEWbZavJXkYaqo9CRHS55FcZTjKEk3NKoCYUnSQ0rWxrZbFKbKIhOKPZe1cJKzZSaQrIyULHDZmV5K4xySsDRKWOruanGtjLJXFEmwaIbDLX0hIPBUQPVFVk
76QkDoUNfSoDgQGKPekoxeGzA4DUvnn4bxzcZrtJyipKfPNy5w+9lnXwgqsiyHNeSVpemw4bWb9psYeq//uQZBoABQt4yMVxYAIAAAkQoAAAHvYpL5m6AAgAACXDAAAAD59jblTirQe9upFsmZbpMudy7Lz1X1DYsxOOSWpfPqNX2WqktK0DMvuGwlbNj44TleLPQ+Gsfb+GOWOKJoIrWb3cIMeeON6lz2umTqMXV8Mj30yWPpjoSa9ujK8SyeJP5y5mOW1D6hvLepeveEAEDo0mgCRClOEgANv3B9a6fikgUSu/DmAMATrGx7nng5p5iimPNZsfQLYB2sDLIkzRKZOHGAaUyDcpFBSLG9MCQALgAIgQs2YunOszLSAyQYPVC2YdGGeHD2dTdJk1pAHGAWDjnkcLKFymS3RQZTInzySoBwMG0QueC3gMsCEYxUqlrcxK6k1LQQcsmyYeQPdC2YfuGPASCBkcVMQQqpVJshui1tkXQJQV0OXGAZMXSOEEBRirXbVRQW7ugq7IM7rPWSZyDlM3IuNEkxzCOJ0ny2ThNkyRai1b6ev//3dzNGzNb//4uAvHT5sURcZCFcuKLhOFs8mLAAEAt4UWAAIABAAAAAB4qbHo0tIjVkUU//uQZAwABfSFz3ZqQAAAAAngwAAAE1HjMp2qAAAAACZDgAAAD5UkTE1UgZEUExqYynN1qZvqIOREEFmBcJQkwdxiFtw0qEOkGYfRDifBui9MQg4QAHAqWtAWHoCxu1Yf4VfWLPIM2mHDFsbQEVGwyqQoQcwnfHeIkNt9YnkiaS1oizycqJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
77        else
78            var snd = new Audio(WPDM.audio);
79        snd.play();
80    },
81
82    hash: function (str) {
83        return str.wpdm_hash();
84    },
85
86    uniqueID: function (prefix) {
87        var uniq = Date.now() + "abcdefghijklmnopqrstuvwxyz_";
88        uniq = uniq.wpdm_shuffle();
89        uniq = uniq.substring(1, 10);
90        uniq = typeof prefix !== 'undefined' ? prefix + uniq : uniq;
91        return uniq;
92    },
93
94    fileTypeIcon: function (ext) {
95        //let colors = color.split('|');
96
97        return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" style="margin: 4px">
98                <defs>
99                    <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
100                        <stop stop-color="#269def" offset="0"/>
101                        <stop stop-color="#26bdef" offset="1"/>
102                    </linearGradient>
103                </defs>
104                <g>
105                    <rect fill="url(#gradient)" x="0" y="0" width="40" height="40" rx="3" ry="3"/>
106                    <text x="5" y="19" font-family="Arial, Helvetica, sans-serif" font-size="10px" letter-spacing="1" fill="#FFFFFF">
107                        <tspan>${ext}</tspan>
108                        <tspan x="6" y="28">_</tspan>
109                    </text>
110                </g>
111            </svg>`;
112    },
113
114    popupWindow: function (url, title, w, h, onclose) {
115        /* Fixes dual-screen position                         Most browsers      Firefox */
116        var dualScreenLeft = typeof window.screenLeft !== 'undefined' ? window.screenLeft : screen.left;
117        var dualScreenTop = typeof window.screenTop !== 'undefined' ? window.screenTop : screen.top;
118
119        var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
120        var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
121
122        var left = ((width / 2) - (w / 2)) + dualScreenLeft;
123        var top = ((height / 2) - (h / 2)) + dualScreenTop;
124        var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' 
124+ top + ', left=' + left);
125
126        /* Puts focus on the newWindow */
127        if (window.focus) {
128            newWindow.focus();
129        }
130        if (onclose !== undefined)
131            newWindow.onbeforeunload = function () {
132                onclose.call();
133            }
134        return false;
135    },
136
137    html: function (elment, html, _class, _id) {
138        _class = _class !== undefined ? _class : '';
139        _id = _id !== undefined ? _id : '';
140        return "<" + elment + " class='" + _class + "' id='" + _id + "'>" + html + "</" + elment + ">";
141    },
142
143    el: function (element, attrs, innerHTML) {
144        var el = document.createElement(element);
145        el = jQuery(el);
146        jQuery.each(attrs, function (name, val) {
147            el.attr(name, val);
148        })
149        if (typeof innerHTML !== 'undefined' && innerHTML !== '')
150            el.html(innerHTML);
151        return el[0].outerHTML;
152    },
153    card: function (header, body, footer, id, style) {
154        if (typeof id === 'undefined') id = 'card_' + WPDM.uniqueID();
155        if (typeof style === 'undefined') style = '';
156        header = header !== '' ? WPDM.el("div", {'class': 'card-header'}, header) : '';
157        body = WPDM.el("div", {'class': 'card-body'}, body);
158        footer = footer !== '' ? WPDM.el("div", {'class': 'card-footer'}, footer) : '';
159        return WPDM.el("div", {'class': 'card', id: id, style: style}, header + body + footer);
160    },
161    fa: function (icon) {
162        return WPDM.el("i", {'class': icon});
163    },
164    bootAlert: function (heading, content, width) {
165        let html, url = '';
166        let modal_id = '__bootModal_' + WPDM.uniqueID();
167        if (typeof content === 'object') {
168            url = content.url;
169            content = `<div id='${modal_id}_cont'><i class='fa fa-sun fa-spin'></i> Loading...</div>`;
170        }
171        if (!width) width = 400;
172        html = '<div class="w3eden" id="w3eden' + modal_id + '"><div id="' + modal_id + '" class="modal fade" tabindex="-1" role="dialog">\n' +
173            '  <div class="modal-dialog" style="width: ' + width + 'px" role="document">\n' +
174            '    <div class="modal-content" style="border-radius: 4px;overflow: hidden">\n' +
175            '      <div class="modal-header" style="padding: 12px 15px;background: rgba(0,0,0,0.02);line-height: 18px">\n' +
176            '        <h4 class="modal-title" style="font-size: 10pt;font-weight: 600;padding: 0;margin: 0;letter-spacing: 0.5px;line-height: 18px">' + heading + '</h4><button style="line-height: 18px;font-size: 10pt;background: transparent;outline: none" type="button" class="close" data-target="#' + modal_id + '" data-dismiss="modal"><i class="fa fa-times-circle"></i></button>\n' +
177            '      </div>\n' +
178            '      <div class="modal-body fetfont" style="line-height: 1.5;text-transform: unset;font-weight:400;letter-spacing:0.5px;font-size: 12px">\n' +
179            '        ' + content + '\n' +
180            '      </div>\n' +
181            '    </div>\n' +
182            '  </div>\n' +
183            '</div></div>';
184        jQuery('body').append(html);
185        jQuery("#" + modal_id).modal({show: true, backdrop: 'static'});
186
187        if (url !== '') {
188            url = url.indexOf('?') > 0 ? url + '&__mdid=' + modal_id : url + '?__mdid=' + modal_id;
189            jQuery("#" + modal_id + "_cont").load(url);
190        }
191
192        return jQuery("#" + modal_id);
193    },
194
195    /**
196     * Local push notification
197     * @param title
198     * @param message
199     * @param icon
200     * @param image
201     * @param url
202     */
203    pushNotify: function (title, message, icon, image, url) {
204        var type = 'info';
205        if (title.includes('rror') || message.includes('rror')) type = 'error';
206
207        if (!('Notification' in window) || !('ServiceWorkerRegistration' in window)) {
208            WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right');
209            return;
210        }
211
212        Notification.requestPermission(function (result) {
213            if (result === 'granted') {
214                console.log('Notification: ' + result);
215                try {
216                    var notification = new Notification(title, {
217                        body: message,
218                        icon: icon ? icon : 'https://cdn1.iconfinder.com/data/icons/hawcons/32/698558-icon-47-note-important-512.png',
219                        image: image ? image : ''
220                    });
221                    if (url) {
222                        notification.onclick = function (e) {
223                            e.preventDefault();
224                            window.open(url, '_blank');
225                        };
226                    }
227                } catch (err) {
228                    WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right');
229                    console.log('Notification API error: ' + err);
230                }
231            } else {
232                WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right');
233                console.log('Notification: ' + result);
234            }
235        });
236
237    },
238
239
240    /**
241     * Shows notification
242     * @param message
243     * @param type
244     * @param position
245     */
246    notify: function (message, type, position, autoclose) {
247        var $ = jQuery;
248        if (type === undefined || !type) type = 'info';
249        if (position === undefined || !position) position = 'top-right';
250        if (type === 'danger') type = 'error';
251        let notifycont = position.indexOf('#') >= 0 ? position : '#wpdm-notify-' + position;
252        if ($(notifycont).length == 0)
253            $('body').prepend("<div id='wpdm-notify-" + position + "'></div>");
254        var notif = $("<div class='wpdm-notify fetfont wpdm-notify-" + type + "' style='display: none'>" + message + "</div><div class='wpdm-clear'></div>");
255        $(notifycont).append(notif);
256        $(notif).fadeIn();
257        if (autoclose !== undefined) {
258            setTimeout(function () {
259
260                $(notif).animate({
261                    opacity: 0
262                }, 1000, function () {
263                    $(this).slideUp();
264                });
265
266            }, autoclose);
267        }
268        return $(notif);
269    },
270
271    /**
272     * Shows notification
273     * @param message
274     * @param type
275     * @param position
276     */
277    floatify: function (html, position) {
278        var $ = jQuery;
279        if (position === undefined || !position) position = 'top-right';
280        var floatifycont = '#wpdm-floatify-' + position;
281        if ($(floatifycont).length == 0)
282            $('body').prepend("<div class='w3eden' id='wpdm-floatify-" + position + "'></div>");
283        var floatify = $("<div class='wpdm-floatify fetfont' style='margin-right: -500px'>" + html + "</div>");
284        $(floatifycont).append(floatify);
285        $(floatify).animate({marginRight: '0px'});
286        return $(floatify);
287    },
288
289    blockUI: function (element, xhr) {
290        jQuery(element).addClass("blockui");
291        if (xhr)
292            xhr.addEventListener("load", function () {
293                jQuery(element).removeClass("blockui");
294            });
295    },
296
297    unblockUI: function (element) {
298        if (typeof element === 'undefined') element = '.blockui';
299        jQuery(element).removeClass("blockui");
300    },
301
302    overlay: function (element, html) {
303        var $ = jQuery;
304        var overlaycontent = $("<div class='wpdm-overlay-content' style='display: none'>" + html + "<div class='wpdm-overlay-close' style='cursor: pointer'><i class='far fa-times-circle'></i> close</div></div>");
305        $(element).addClass('wpdm-overlay').append(overlaycontent);
306        $(overlaycontent).fadeIn();
307        $('body').on('click', '.wpdm-overlay-close', function () {
308            $(overlaycontent).fadeOut(function () {
309                $(this).remove();
310            });
311        });
312        return $(overlaycontent);
313    },
314
315
316    confirm: function (heading, content, buttons, width) {
317        var html, $ = jQuery;
318        var modal_id = '__boot_popup_' + WPDM.uniqueID();
319        $("#w3eden__boot_popup").remove();
320        if (!width) width = 350;
321        var _buttons = '';
322        if (buttons) {
323            _buttons = '<div class="modal-footer text-center" style="padding: 8px 15px;justify-content: center;">\n';
324            $.each(buttons, function (i, button) {
325                var btnid = WPDM.uniqueID();
326                _buttons += "<button id='" + btnid + "' class='" + button.class + " btn-xs' style='font-size: 12px;padding: 4px 16px;border-radius: 4px'>" + button.label + "</button> ";
327                $('body').on('click', '#' + btnid, function () {
328                    button.callback.call($("#" + modal_id));
329                    return false;
330                });
331            });
332            _buttons += '</div>\n';
333        }
334
335        html = '<div class="w3eden" id="w3eden' + modal_id + '"><div id="' + modal_id + '" style="z-index: 9999999 !important;" class="modal fade" tabindex="-1" role="dialog">\n' +
336            '  <div class="modal-dialog wpdm-modal-confirm modal-dialog-centered" role="document" style="max-width: 100%;width: ' + width + 'px">\n' +
337            '    <div class="modal-content" style="border-radius: 6px;overflow: hidden">\n' +
338            '      <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' +
339            '        <h4 class="modal-title" style="font-size: 12pt;font-weight: 500;padding: 0;margin: 0;font-family:var(--wpdm-font), san-serif;letter-spacing: 0.5px">' + heading + '</h4>\n' +
340            '      </div>\n' +
341            '      <div class="modal-body text-center" style="font-family:var(--wpdm-font), san-serif;letter-spacing: 0.5px;font-size: 10pt;font-weight: 300;padding: 25px;line-height: 1.5">\n' +
342            '        ' + content + '\n' +
343            '      </div>\n' + _buttons +
344            '    </div>\n' +
345            '  </div>\n' +
346            '</div></div>';
347        $('body').append(html);
348        $("#" + modal_id).modal('show');
349        return $("#" + modal_id);
350    },
351    audioUI: function (audio) {
352        var $ = jQuery, song_length, song_length_m, song_length_s;
353
354        var player_html = '<div class="w3eden"><div style="display: none" class="wpdm-audio-player-ui" id="wpdm-audio-player-ui"><div class="card m-2"><div class="card-body text-center"><div class="mb-3 wpdm-audio-control-buttons d-block d-sm-none"><button class="btn btn-primary btn-play" id="wpdm-btn-play"><i class="fa fa-play"></i></button> <button class="btn btn-secondary btn-backward" id="wpdm-btn-backward"><i class="fa fa-backward"></i></button> <button class="btn btn-secondary btn-forward" id="wpdm-btn-forward"><i class="fa fa-forward"></i></button> <button class="btn btn-info btn-volumctrl" id="wpdm-btn-volumctrl"><i class="fa fa-volume-up"></i></button></div><div class="media"><div class="mr-3 wpdm-audio-control-buttons d-none d-sm-block"><button class="btn btn-primary btn-play" id="wpdm-btn-play"><i class="fa fa-play"></i></button> <button class="btn btn-secondary btn-backward" id="wpdm-btn-backward"><i class="fa fa-backward"></i></button> <button class="btn btn-secondary btn-forward" id="wpdm-btn-forward"><i class="fa fa-forward"></i></button></div><div class="media-body"><div class="position-relative"><div id="played">00:00</div><div id="mins">00:00</div></div><div class="progress"><div  id="wpdm-audio-progress" class="progress-bar bg-success" role="progressbar" style="width: 0%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div></div></div><div class="ml-3 wpdm-audio-control-buttons  d-none d-sm-block"> <button class="btn btn-info btn-volumctrl" id="wpdm-btn-volumctrl"><i class="fa fa-volume-up"></i></button> <div class="volumctrl"><input type="range" min="0" max="1" step="0.01" value="3" class="p-0" id="wpdm-audio-volume"></div></div></div></div></div></div></div>';
355
356        if (audio.duration !== Infinity) {
357            song_length = parseInt(audio.duration);
358            song_length_m = parseInt(song_length / 60);
359            song_length_s = song_length - (song_length_m * 60);
360            song_length_m = song_length_m > 9 ? song_length_m : "0" + song_length_m;
361            song_length_s = song_length_s > 9 ? song_length_s : "0" + song_length_s;
362        } else {
363            song_length_m = "--";
364            song_length_s = "--";
365            audio.addEventListener("durationchange", function (e) {
366                console.log(this.duration);
367                if (this.duration !== Infinity) {
368                    song_length = parseInt(this.duration);
369                    song_length_m = parseInt(song_length / 60);
370                    song_length_s = song_length - (song_length_m * 60);
371                    song_length_m = song_length_m > 9 ? song_length_m : "0" + song_length_m;
372                    song_length_s = song_length_s > 9 ? song_length_s : "0" + song_length_s;
373                    $('#mins').html(song_length_m + ":" + song_length_s);
374                    next(song_length);
375                }
376            }, false);
377        }
378
379        if ($('#wpdm-audio-player-ui').length === 0) {
380            $('body').append(player_html);
381            $("#wpdm-audio-player-ui").slideDown();
382            $('#mins').html(song_length_m + ":" + song_length_s);
383            $('body').on('click', '#wpdm-audio-player-ui .progress', function (e) {
384                let value = e.offsetX * 100 / this.clientWidth;
385                var played = parseInt(song_length * value / 100);
386                var played_m = parseInt(played / 60);
387                var played_s = played - (played_m * 60);
388                played_m = played_m > 9 ? played_m : "0" + played_m;
389                played_s = played_s > 9 ? played_s : "0" + played_s;
390                $('#played').html(played_m + ":" + played_s);
391                audio.currentTime = (song_length * value) / 100;
392                $(this).find('.progress-bar').css('width', value + "%");
393                //video.currentTime = duration * (value / 100);
394            });
395            $('body').on('click', '.btn-backward', function () {
396                let value = (parseInt($('#wpdm-audio-player-ui .progress-bar').css('width')) / parseInt($('#wpdm-audio-player-ui .progress').css('width'))) * 100 - 10;
397                if (value < 0) value = 0;
398                var played = parseInt(song_length * value / 100);
399                var played_m = parseInt(played / 60);
400                var played_s = played - (played_m * 60);
401                played_m = played_m > 9 ? played_m : "0" + played_m;
402                played_s = played_s > 9 ? played_s : "0" + played_s;
403                $('#played').html(played_m + ":" + played_s);
404                audio.currentTime = (song_length * value) / 100;
405                $('#wpdm-audio-player-ui .progress-bar').css('width', value + "%");
406            });
407            $('body').on('click', '.btn-forward', function () {
408                let value = (parseInt($('#wpdm-audio-player-ui .progress-bar').css('width')) / parseInt($('#wpdm-audio-player-ui .progress').css('width'))) * 100 + 10;
409                if (value > 100) value = 100;
410                var played = parseInt(song_length * value / 100);
411                var played_m = parseInt(played / 60);
412                var played_s = played - (played_m * 60);
413                played_m = played_m > 9 ? played_m : "0" + played_m;
414                played_s = played_s > 9 ? played_s : "0" + played_s;
415                $('#played').html(played_m + ":" + played_s);
416                audio.currentTime = (song_length * value) / 100;
417                $('#wpdm-audio-player-ui .progress-bar').css('width', value + "%");
418            });
419            $('body').on('click', '.btn-volumctrl', function () {
420                $(this).next('.volumctrl').toggle();
421            });
422            $('body').on('click', '.btn-play', function () {
423                if ($(this).find('.fa').hasClass('fa-play')) {
424                    $(this).find('.fa').addClass('fa-pause').removeClass('fa-play');
425                    $(this).data('state', 'playing');
426                    audio.play();
427                } else {
428                    $(this).find('.fa').addClass('fa-play').removeClass('fa-pause');
429                    $(this).data('state', 'paused');
430                    audio.pause();
431                }
432            });
433            $('body').on('change', '#wpdm-audio-volume', function () {
434                audio.volume = this.value;
435            });
436
437        }
438        $('#mins').html(song_length_m + ":" + song_length_s);
439        audio.addEventListener("play", function () {
440            $('.btn-play .fa').addClass('fa-pause').removeClass('fa-play');
441        });
442        audio.addEventListener("pause", function () {
443            $('.btn-play .fa').addClass('fa-play').removeClass('fa-pause');
444        });
445        audio.addEventListener("timeupdate", function (e) {
446            var song_length = parseInt(audio.duration);
447            var time_now = audio.currentTime;
448            var percent = (time_now / song_length) * 100;
449            if (percent > 100) percent = 100;
450            $('#wpdm-audio-progress').css('width', percent + "%");
451            var played = parseInt(time_now);
452            var played_m = parseInt(played / 60);
453            var played_s = played - (played_m * 60);
454            played_m = played_m > 9 ? played_m : "0" + played_m;
455            played_s = played_s > 9 ? played_s : "0" + played_s;
456            $('#played').html(played_m + ":" + played_s);
457        });
458
459
460    }
461
462};
463
464
465jQuery(function ($) {
466
467    var $body = $('body');
468
469    $body.on('click', '.wpdm-notify, .wpdm-floatify', function () {
470        $(this).animate({
471            opacity: 0
472        }, 1000, function () {
473            $(this).slideUp();
474        });
475    });
476
477    $body.on('click', '.dismis-on-click', function () {
478        $(this).slideUp();
479    });
480
481    $body.on('click', '.wpdm-download-link.wpdm-download-locked', function (e) {
482        e.preventDefault();
483        hideLockFrame();
484
485        var parentWindow = document.createElement("a");
486        parentWindow.href = document.referrer.toString();
487        var __sep = '?';
488        if (wpdm_url.home.indexOf('?') > 0) __sep = '&';
489        let extras = '';
490        if ($(this).data('file') !== undefined) extras += '__wpdmfl=' + $(this).data('file');
491        extras += '&REFERRER=' + encodeURI(location.href);
492        if (parentWindow.hostname === window.location.hostname || 1)
493            $(window.parent.document.body).append("<iframe id='wpdm-lock-frame' style='left:0;top:0;width: 100%;height: 100%;z-index: 999999999;position: fixed;background: rgba(255,255,255,0.4) url(" + wpdm_url.home + "wp-content/plugins/download-manager/assets/images/loader.svg) center center no-repeat;background-size: 80px 80px;border: 0;' src='" + wpdm_url.home + __sep + "__wpdmlo=" + $(this).data('package') + "&" + extras + "'></iframe>");
494        else
495            window.parent.postMessage({
496                'task': 'showiframe',
497                'iframe': "<iframe id='wpdm-lock-frame' style='left:0;top:0;width: 100%;height: 100%;z-index: 999999999;position: fixed;background: rgba(255,255,255,0.4) url(" + wpdm_url.home + "wp-content/plugins/download-manager/assets/images/loader.svg) center center no-repeat;background-size: 80px 80px;border: 0;' src='" + wpdm_url.home + __sep + "__wpdmlo=" + $(this).data('package') + __sep + "__wpdmfl=" +  + "'></iframe>"
498            }, "*");
499
500    });
501
502    $body.on('click', '.wpdm-download-link.download-on-click[data-downloadurl]', function (e) {
503        e.preventDefault();
504        if (this.target === '_blank')
505            window.open($(this).data('downloadurl'));
506        else
507            window.location.href = $(this).data('downloadurl');
508    });
509
510    $body.on('click', '.__wpdm_playvideo', function (e) {
511        e.preventDefault();
512        $('#__wpdm_videoplayer').children('source').attr('src', $(this).data('video'));
513        console.log('loading...');
514        var vid = document.getElementById("__wpdm_videoplayer");
515        vid.onloadeddata = function () {
516            console.log('loaded....');
517        };
518        $("#__wpdm_videoplayer").get(0).load();
519
520    });
521
522    $body.on('change', '.terms_checkbox', function (e) {
523        if ($(this).is(':checked'))
524            $('#wpdm-filelist-' + $(this).data('pid') + ' .btn.inddl, #xfilelist .btn.inddl').removeAttr('disabled');
525        else
526            $('#wpdm-filelist-' + $(this).data('pid') + ' .btn.inddl, #xfilelist .btn.inddl').attr('disabled', 'disabled');
527    });
528
529    $body.on('click', '.wpdm-social-lock', function (e) {
530
531        try {
532
533            if ($(this).data('url'))
534                _PopupCenter($(this).data('url'), 'Social Lock', 600, 400);
535
536        } catch (e) {
537        }
538
539    });
540
541    $body.on('click', '#wpdm-dashboard-sidebar a.list-group-item', function (e) {
542        location.href = this.href;
543    });
544
545    var $input_group_input = $('.input-group input');
546    $input_group_input.on('focus', function () {
547        $(this).parent('.input-group').find('.input-group-addon').addClass('input-group-addon-active');
548    });
549    $input_group_input.on('blur', function () {
550        $(this).parent().find('.input-group-addon').removeClass('input-group-addon-active');
551    });
552
553
554    $body.on('click', 'button.btn.inddl', function (e) {
555        e.preventDefault();
556        var tis = this;
557        if ($(this).data('dlurl') !== undefined) {
558            location.href = $(this).data('dlurl');
559            return;
560        }
561        $.post(wpdm_rest_url('validate-filepass'), {
562            wpdmfileid: $(tis).data('pid'),
563            wpdmfile: $(tis).data('file'),
564            actioninddlpvr: 1,
565            filepass: $($(tis).data('pass')).val()
566        }, function (res) {
567            if (res.success === true) {
568                var dlurl = res.downloadurl;
569                $(tis).data('dlurl', dlurl);
570                wpdm_boot_popup(wpdm_strings.pass_var, "<div style='padding: 50px;'>"+wpdm_strings.pass_var_q+"<br/><br/><a href='" + dlurl + "' class='btn btn-lg btn-success' target='_blank'>"+wpdm_strings.start_dl+"</a></div>",
571                    [{
572                        label: 'Close',
573                        class: 'btn btn-secondary',
574                        callback: function () {
575                            this.modal('hide');
576                            return false;
577                        }
578                    }]
579                );
580            } else {
581                alert(res.msg);
582            }
583        });
584    });
585
586    $body.on('click', '.wpdm-indir', function (e) {
587        e.preventDefault();
588        WPDM.blockUI('#xfilelist');
589        $('#xfilelist').load(location.href, {
590            action: 'wpdmfilelistcd',
591            pid: $(this).data('pid'),
592            cd: $(this).data('dir')
593        }, function (res) {
594            WPDM.unblockUI('#xfilelist');
595        });
596    });
597
598
599    $body.on('click', '.role-tabs a', function (e) {
600        $('.role-tabs a').removeClass('active');
601        $(this).addClass('active');
602    });
603
604
605    $body.on('click', '.btn-wpdm-a2f', function (e) {
606        var a2fbtn = $(this);
607        $.post(wpdm_url.ajax, {action: 'wpdm_addtofav', pid: $(this).data('package')}, function (res) {
608            if (a2fbtn.hasClass('btn-secondary'))
609                a2fbtn.removeClass('btn-secondary').addClass('btn-danger').html(a2fbtn.data('rlabel'));
610            else
611                a2fbtn.removeClass('btn-danger').addClass('btn-secondary').html(a2fbtn.data('alabel'));
612        });
613    });
614
615    $body.on('click', '.wpdm-btn-play', function (e) {
616        e.preventDefault();
617
618        if ($('#wpdm-audio-player').length === 0) {
619            var player = document.createElement('audio');
620            player.id = 'wpdm-audio-player';
621            player.controls = 'controls';
622            player.autoplay = 1;
623            player.type = 'audio/mpeg';
624            $('body').append(player);
625        }
626
627        player = $('#wpdm-audio-player');
628        var btn = $(this);
629
630        if (btn.data('state') === 'stop' || !btn.data('state')) {
631            player.css('display', 'none');
632            player.attr('src', $(this).data('song') + "&play=song.mp3");
633        }
634
635        if (btn.data('state') === 'playing') {
636            $(this).data('state', 'paused');
637            player.trigger('pause');
638            $(this).html("<i class='fa fa-play'></i>");
639            return false;
640        }
641
642        if (btn.data('state') === 'paused') {
643            $(this).data('state', 'playing');
644            player.trigger('play');
645            $('.wpdm-btn-play').html("<i class='fa fa-play'></i>");
646            $(this).html("<i class='fa fa-pause'></i>");
647            return false;
648        }
649
650
651        $('.wpdm-btn-play').data("state", "stop");
652        $('.wpdm-btn-play').html("<i class='fa fa-play'></i>");
653        btn.html("<i class='fas fa-sun  fa-spin'></i>");
654        player.unbind('loadedmetadata');
655        player.on('loadedmetadata', function () {
656            console.log("Playing " + this.src + ", for: " + this.duration + "seconds.");
657            btn.html("<i class='fa fa-pause'></i>");
658            btn.data('state', 'playing');
659            WPDM.audioUI(this);
660        });
661        document.getElementById('wpdm-audio-player').onended = function () {
662            btn.html("<i class='fa fa-redo'></i>");
663            btn.data('state', 'stop');
664        }
665    });
666
667    $('.wpdm_remove_empty').remove();
668
669    /* Uploading files */
670    var file_frame, dfield;
671
672    $body.on('click', '.wpdm-media-upload', function (event) {
673        event.preventDefault();
674        dfield = $($(this).attr('rel'));
675
676        /* If the media frame already exists, reopen it. */
677        if (file_frame) {
678            file_frame.open();
679            return;
680        }
681
682        /* Create the media frame. */
683        file_frame = wp.media.frames.file_frame = wp.media({
684            title: $(this).data('uploader_title'),
685            button: {
686                text: $(this).data('uploader_button_text')
687            },
688            multiple: false  /* Set to true to allow multiple files to be selected */
689        });
690
691        /* When an image is selected, run a callback. */
692        file_frame.on('select', function () {
693            /* We set multiple to false so only get one image from the uploader */
694            attachment = file_frame.state().get('selection').first().toJSON();
695            dfield.val(attachment.url);
696
697        });
698
699        /* Finally, open the modal */
700        file_frame.open();
701    });
702
703    $body.on('click', '.btn-image-selector', function (event) {
704        event.preventDefault();
705        dfield = $($(this).attr('rel'));
706        var dfield_h = $($(this).attr('rel') + '_hidden');
707
708        if (file_frame) {
709            file_frame.open();
710            return;
711        }
712
713        file_frame = wp.media.frames.file_frame = wp.media({
714            title: $(this).data('uploader_title'),
715            button: {
716                text: $(this).data('uploader_button_text')
717            },
718            multiple: false
719        });
720
721
722        file_frame.on('select', function () {
723
724            attachment = file_frame.state().get('selection').first().toJSON();
725            dfield.attr('src', attachment.url);
726            dfield_h.val(attachment.url);
727
728        });
729
730        file_frame.open();
731    });
732
733    $body.on('click', '.pagination.async a, .__wpdm_load_async', function (e) {
734        e.preventDefault();
735        var _cont = $(this).data('container');
736        $(_cont).addClass('blockui');
737        $.get(this.href, function (res) {
738            $(_cont).html($(res).find(_cont).html());
739            $(_cont).removeClass('blockui');
740        });
741    });
742
743    $body.on("keyup", '.wpdm-pack-search-file', function () {
744        var value = $(this).val().toLowerCase();
745        var filelist_item = $(this).data('filelist') + " tr";
746        $(filelist_item).filter(function () {
747            $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
748        });
749    });
750
751    $('.__wpdm_submit_async').on('submit', function (e) {
752        e.preventDefault();
753        var _cont = $(this).data('container');
754        $(_cont).addClass('blockui');
755        $(this).ajaxSubmit({
756            success: function (response) {
757                $(_cont).html($(response).find(_cont).html());
758                $(_cont).removeClass('blockui');
759            }
760        })
761    });
762
763
764    var unlocked = [];
765
766    $('.wpdm-filelist-area[data-termlock]').on('mouseover', function () {
767
768        try {
769            if (unlocked[$(this).data('packageid')] === 1) return;
770        } catch (e) {
771
772        }
773        $('#term-panel-' + $(this).data('packageid')).fadeIn('fast');
774    });
775
776    $('.terms_checkbox').on('click', function () {
777        if ($(this).is(':checked')) {
778            unlocked[$(this).data('pid')] = 1;
779            $('#term-panel-' + $(this).data('pid')).fadeOut('fast');
780            $('.download_footer_' + $(this).data('pid')).slideDown();
781        } else
782            $('.download_footer_' + $(this).data('pid')).slideUp();
783    });
784
785
786    $formcontrol = $('.input-wrapper input');
787    $formcontrol.on('focus', function () {
788        $('.input-wrapper').removeClass('input-focused');
789        $(this).parent('.input-wrapper').addClass('input-focused');
790    });
791    $formcontrol.on('change', function () {
792        $('.input-wrapper').removeClass('input-focused');
793        $(this).parent('.input-wrapper').addClass('input-focused');
794        if ($(this).val() !== '')
795            $(this).parent('.input-wrapper').addClass('input-withvalue');
796        else
797            $(this).parent('.input-wrapper').removeClass('input-withvalue');
798    });
799
800
801});
802
803
804function _PopupCenter(url, title, w, h) {
805    /* Fixes dual-screen position                         Most browsers      Firefox */
806    var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
807    var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
808
809    var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
810    var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
811
812    var left = ((width / 2) - (w / 2)) + dualScreenLeft;
813    var top = ((height / 2) - (h / 2)) + dualScreenTop;
814    var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' 
814+ top + ', left=' + left);
815
816    /* Puts focus on the newWindow */
817    if (window.focus) {
818        newWindow.focus();
819    }
820
821    return false;
822}
823
824function generatepass(id) {
825    wpdm_pass_target = '#' + id;
826    jQuery('#generatepass').modal('show');
827}
828
829function hideLockFrame() {
830    jQuery('#wpdm-lock-frame').remove();
831}
832
833function wpdm_bootModal(heading, content, width) {
834    var html;
835    if (!width) width = 400;
836    jQuery("#w3eden__bootModal").remove();
837    html = '<div class="w3eden" id="w3eden__bootModal"><div id="__bootModal" class="modal fade" tabindex="-1" role="dialog">\n' +
838        '  <div class="modal-dialog" style="width: ' + width + 'px" role="document">\n' +
839        '    <div class="modal-content" style="border-radius: 3px;overflow: hidden">\n' +
840        '      <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' +
841        '        <h4 class="modal-title" style="font-size: 9pt;font-weight: 500;padding: 0;margin: 0;letter-spacing: 0.5px">' + heading + '</h4>\n' +
842        '      </div>\n' +
843        '      <div class="modal-body fetfont" style="line-height: 1.5;text-transform: unset;font-weight:400;letter-spacing:0.5px;font-size: 12px">\n' +
844        '        ' + content + '\n' +
845        '      </div>\n' +
846        '      <div class="modal-footer" style="padding: 10px 15px">\n' +
847        '        <button type="button" class="btn btn-secondary btn-xs" data-dismiss="modal">Close</button>\n' +
848        '      </div>\n' +
849        '    </div>\n' +
850        '  </div>\n' +
851        '</div></div>';
852    jQuery('body').append(html);
853    jQuery("#__bootModal").modal('show');
854}
855
856function wpdm_boot_popup(heading, content, buttons) {
857    var html, $ = jQuery;
858    $("#w3eden__boot_popup").remove();
859    var _buttons = '';
860    if (buttons) {
861        _buttons = '<div class="modal-footer" style="padding: 8px 15px;">\n';
862        $.each(buttons, function (i, button) {
863            var id = 'btx_' + i;
864            _buttons += "<button id='" + id + "' class='" + button.class + " btn-xs' style='font-size: 10px;padding: 3px 20px;'>" + button.label + "</button> ";
865        });
866        _buttons += '</div>\n';
867    }
868
869    html = '<div class="w3eden" id="w3eden__boot_popup"><div id="__boot_popup" style="z-index: 9999999 !important;" class="modal fade" tabindex="-1" role="dialog">\n' +
870        '  <div class="modal-dialog" role="document" style="max-width: 100%;width: 350px">\n' +
871        '    <div class="modal-content" style="border-radius: 3px;overflow: hidden">\n' +
872        '      <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' +
873        '        <h4 class="modal-title" style="font-size: 9pt;font-weight: 500;padding: 0;margin: 0;letter-spacing: 0.5px">' + heading + '</h4>\n' +
874        '      </div>\n' +
875        '      <div class="modal-body text-center" style="letter-spacing: 0.5px;font-size: 10pt;font-weight: 300;padding: 25px;line-height: 1.5">\n' +
876        '        ' + content + '\n' +
877        '      </div>\n' + _buttons +
878        '    </div>\n' +
879        '  </div>\n' +
880        '</div></div>';
881    $('body').append(html);
882    $("#__boot_popup").modal('show');
883    $.each(buttons, function (i, button) {
884        var id = 'btx_' + i;
885        $('#' + id).unbind('click');
886        $('#' + id).bind('click', function () {
887            button.callback.call($("#__boot_popup"));
888            return false;
889        });
890    });
891    return $("#__boot_popup");
892}
893
894/**
895 * Open an url in iframe modal
896 * @param url
897 * @param closebutton
898 * @returns {boolean}
899 */
900function wpdm_iframe_modal(url, closebutton) {
901    var iframe, $ = jQuery;
902    if (url === 'close') {
903        $('#wpdm_iframe_modal').remove();
904        $('#ifcb').remove();
905        $('body').removeClass('wpdm-iframe-modal-open');
906        return false;
907    }
908    var closebutton_html = "";
909    if (closebutton !== undefined && closebutton === true)
910        closebutton_html = "<span id='ifcb' class='w3eden'><a href='#' onclick='return wpdm_iframe_modal(\"close\");' style='border-radius: 0;position: fixed;top: 0;right: 0;z-index: 9999999999 !important;width: 40px;line-height: 40px;padding: 0' class='btn btn-danger'><i class='fas fa-times'></i></a></span>";
911
912    iframe = '<iframe src="' + url + '" style="width: 100%;height: 100%;position: fixed;z-index: 999999999 !important;border: 0;left: 0;top: 0;right: 0;bottom: 0;background: rgba(0,0,0,0.2);display: none;" id="wpdm_iframe_modal"></iframe>' + closebutton_html;
913    $('body').append(iframe).addClass('wpdm-iframe-modal-open');
914    $('#wpdm_iframe_modal').fadeIn();
915
916}
917
918

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.