PageSourceSearch

https://www.energytcm.cz/assets/js/packeta.js

js energytcm.cz collected 2026-10-07 20:05:11 UTC 10,874 bytes, 292 lines download raw bytes

1Packeta = window.Packeta || {};
2Packeta.Viewport = {
3    element: null,
4    originalValue: null,
5    set: function() {
6        if (!Packeta.Viewport.element) {
7            Packeta.Viewport.element = document.querySelector("meta[name=viewport]");
8            if (Packeta.Viewport.element) {
9                Packeta.Viewport.originalValue = Packeta.Viewport.element.getAttribute("content");
10            } else {
11                Packeta.Viewport.originalValue = 'user-scalable=yes';
12                Packeta.Viewport.element = document.createElement('meta');
13                Packeta.Viewport.element.setAttribute("name", "viewport");
14                (document.head || document.getElementsByTagName('head')[0]).appendChild(Packeta.Viewport.element);
15            }
16        }
17        Packeta.Viewport.element.setAttribute('content', 'width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes');
18    },
19    restore: function() {
20        if (Packeta.Viewport.originalValue !== null) {
21            Packeta.Viewport.element.setAttribute('content', Packeta.Viewport.originalValue);
22        }
23    }
24};
25
26Packeta.Util = {
27
28    makeRequest: function(method, url, data, callback) {
29        try {
30            var xhr = new XMLHttpRequest();
31            xhr.open(method, url);
32            xhr.timeout = 5000;
33
34            xhr.onload = function() {
35                if (this.status >= 200 && this.status < 300) {
36                    callback(xhr.response, false);
37                } else {
38                    callback({
39                        status: this.status,
40                        statusText: xhr.statusText
41                    }, true);
42                }
43            };
44
45            xhr.onerror = function() {
46                callback({
47                    status: this.status,
48                    statusText: xhr.statusText
49                }, true);
50            };
51
52            xhr.ontimeout = function() {
53                callback({
54                    status: this.status,
55                    statusText: xhr.statusText
56                }, true);
57            };
58
59            if (method === "POST" && data) {
60                xhr.send(data);
61            } else {
62                xhr.send();
63            }
64        } catch (error) {
65            callback({
66                error: "XMLHttpRequest error: " + error
67            }, true)
68        }
69    }
70};
71
72Packeta.Widget = {
73    baseUrl: 'https://widget.packeta.com/',
74    backupUrl: 'https://backup.widget.packeta.com/',
75    healthUrl: 'https://widget.packeta.com/v6/api/hcs/api/healthcheck',
76    errorUrl: 'https://error-page-service-widget-errors.prod.packeta-com.codenow.com/',
77    versions: {
78        backup: 'backup',
79        base: 'base',
80        error: 'error'
81    },
82    close: function() {},
83    initIframe: function(apiKey, callback, opts, inElement) {
84        Packeta.Widget.close();
85
86        if (!opts) {
87            opts = {};
88        }
89        if (!('version' in opts)) {
90            opts.version = 3;
91        }
92
93        opts.apiKey = apiKey;
94
95        var url = Packeta.Widget.baseUrl;
96
97        if (opts.currentVersion === Packeta.Widget.versions.backup) {	
98            url =  Packeta.Widget.backupUrl;
99        }
100
101        if (opts.currentVersion === Packeta.Widget.versions.error) {
102            url =  Packeta.Widget.errorUrl;
103        }
104
105        url = url + 'v6/#/?';
106
107        for (let param in opts) {
108            url += "&" + param + "=" + encodeURIComponent(opts[param]);
109        }
110
111        var inline = (typeof(inElement) != "undefined" && inElement !== null);
112        var wrapper;
113        if (inline) {
114            wrapper = inElement;
115        } else {
116            Packeta.Viewport.set();
117            wrapper = document.createElement("div");
118            wrapper.setAttribute("style", "z-index: 999999; position: fixed; -webkit-backface-visibility: hidden; left: 0; top: 0; width: 100%; height: 100%; background: " + (opts.overlayColor || "rgba(0, 0, 0, 0.3)") + "; ");
119            wrapper.addEventListener("click", function() {
120                Packeta.Widget.close();
121            });
122
123            // fix for some older browsers which fail to do 100% width of position:absolute inside position:fixed element
124            setTimeout(
125                function() {
126                    var rect = iframe.getBoundingClientRect();
127                    var width = ('width' in rect ? rect.width : rect.right - rect.left);
128                    if (Math.round(width) < window.innerWidth - 100) { // 10px = side padding sum, just as a safety measure
129                        iframe.style.width = window.innerWidth + "px";
130                        iframe.style.height = window.innerHeight + "px";
131                    }
132                },
133                0
134            );
135        }
136
137        // always support Escape key immediatelly after the widget is displayed, even for inline
138        wrapper.addEventListener("keyup", function(e) {
139            if (e.keyCode == 27) {
140                Packeta.Widget.close();
141            }
142        });
143
144        var iframe = document.createElement("iframe");
145        if (inline) {
146            iframe.setAttribute("style", "border: hidden; width: 100%; height: 100%; ");
147        } else {
148            iframe.setAttribute("style", "border: hidden; position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 10px 5px; box-sizing: border-box; ");
149        }
150        iframe.setAttribute('id', "packeta-widget");
151        iframe.setAttribute('sandbox', "allow-scripts allow-same-origin allow-popups");
152        iframe.setAttribute('allow', "geolocation");
153        iframe.setAttribute('allowfullscreen', "true");
154        iframe.setAttribute('src', url);
155
156        wrapper.appendChild(iframe);
157        if (!inline) {
158            document.body.appendChild(wrapper);
159        }
160
161        if (wrapper.getAttribute("tabindex") === null) {
162            wrapper.setAttribute("tabindex", "-1"); // make it focusable
163        }
164        wrapper.focus();
165
166        var receiver = function(e) {    
167            // check if this is message from the Packeta Widget
168            try {
169                var message = typeof e.data === "object" ? e.data : JSON.parse(e.data);
170                if (!message.packetaWidgetMessage) return;
171            } catch (err) {
172                return;
173            }
174            if (opts.layout && ['hd', 'ac', 'rs'].includes(opts.layout.toLocaleLowerCase())) {
175                Packeta.Widget.close(message);
176            } else if (opts.layout && ['cd', 'cdmap', 'cdreg'].includes(opts.layout.toLocaleLowerCase())) {
177                Packeta.Widget.close(message.delivery);
178            } else {
179                Packeta.Widget.close(message.packetaPoint);
180            }
181
182            
183        };
184        window.addEventListener('message', receiver);
185
186        Packeta.Widget.close = function(point) {
187            window.removeEventListener('message', receiver);
188            if (inline) {
189                try {
190                    iframe.parentNode.removeChild(iframe);
191                } catch (err) {
192                    // ignore
193                }
194            } else {
195                document.body.removeChild(wrapper);
196                Packeta.Viewport.restore();
197            }
198            callback(point || null);
199            Packeta.Widget.close = function() {};
200        };
201    },
202    pick: function(apiKey, callback, opts, inElement) {
203
204        if (!opts) {
205            opts = {};
206        }
207
208        opts.loader = 'library';
209        opts.referrer = window.location.origin;
210
211        const vendorsKey = Object.keys(opts)
212        .find(key => (key.toLowerCase() === "vendors"));
213
214        if (vendorsKey && typeof opts[vendorsKey] === 'object') {
215            try {
216                opts[vendorsKey] = opts[vendorsKey]
217                    .map(item => (
218                        `${item.country || ''},`
219                        + `${item.group || ''},`
220                        + `${item.carrierId || ''},`
221                        + `${item.currency || ''},`
222                        + `${(item.price || item.price === 0) ? item.price : ''},`
223                        + `${item.selected || ''}`))
224                    .join('|');
225            } catch (error) {
226                opts[vendorsKey] = '';
227            }
228        }
229
230        if (opts.layout && ['hd', 'ac', 'rs'].includes(opts.layout.toLocaleLowerCase())) {
231            Packeta.Widget.baseUrl = 'https://hd.widget.packeta.com/';
232            Packeta.Widget.backupUrl = 'https://backup.widget.packeta.com/';
233            Packeta.Widget.healthUrl = 'https://hd.widget.packeta.com/api/hcs/api/healthcheck';
234        } else if (opts.layout && ['cd', 'cdmap', 'cdreg'].includes(opts.layout.toLocaleLowerCase())) {
235            Packeta.Widget.baseUrl = 'https://cardelivery.widget.packeta.com/';
236            Packeta.Widget.backupUrl = 'https://backup.widget.packeta.com/';
237            Packeta.Widget.healthUrl = 'https://cardelivery.widget.packeta.com/v6/api/hcs/api/healthcheck';
238        } else {
239            Packeta.Widget.baseUrl = 'https://widget.packeta.com/';
240            Packeta.Widget.backupUrl = 'https://backup.widget.packeta.com/';
241            Packeta.Widget.healthUrl = 'https://widget.packeta.com/v6/api/hcs/api/healthcheck';
242        }
243
244        function runBase() {	
245            opts.currentVersion = Packeta.Widget.versions.base;	
246            Packeta.Widget.initIframe(apiKey, callback, opts, inElement);	
247        };
248
249        function runBA() {	
250            opts.currentVersion = Packeta.Widget.versions.backup;	
251            Packeta.Widget.initIframe(apiKey, callback, opts, inElement);	
252        }
253
254        function runError() {
255            opts.currentVersion = Packeta.Widget.versions.error;
256            Packeta.Widget.initIframe(apiKey, callback, opts, inElement);
257        }
258
259        Packeta.Util.makeRequest("GET", Packeta.Widget.healthUrl, null, function(data, error) {
260
261            if (!error) {
262
263                var result = data.toLocaleLowerCase() === "true";
264
265                console.log("Widget health check result: " + result);
266
267                if (result === true) {
268                    console.log("starting Widget");
269                    runBase();
270                } else if (Packeta.Widget.backupUrl !== opts.referrer) {
271                    console.log("starting backup environment");
272                    runBA();
273                } else {
274                    console.log("backup environment healthcheck failed");
275                    runError();
276                }
277
278            } else {
279                console.log("Widget health check result: " + JSON.stringify(data));
280                console.log("starting backup environment");
281                if (Packeta.Widget.backupUrl !== opts.referrer) {
282                    runBA();
283                } else {
284                    console.log("backup environment healthcheck failed");
285                    runError();
286                }
287            }
288        })
289
290
291    }
292};

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.