PageSourceSearch

https://sala-negra.com/wp-content/plugins/actua/assets/3rd-party/atc/atc.js?ver=0.3.4

js sala-negra.com collected 2026-10-03 22:11:41 UTC 11,170 bytes, 313 lines download raw bytes

1
2
3(function (w, d) {
4    var
5        atc_url = '//addtocalendar.com/atc/',
6        atc_version = '1.5';
7
8
9    if (!Array.indexOf) {
10        Array.prototype.indexOf = function (obj) {
11            for (var i = 0, l = this.length; i < l; i++) {
12                if (this[i] == obj) {
13                    return i
14                }
15            }
16            return -1
17        }
18    }
19
20    if (!Array.prototype.map) {
21        Array.prototype.map = function (f) {
22            var result = [];
23            for (var i = 0, l = this.length; i < l; i++) {
24                result.push(f(this[i]))
25            }
26            return result
27        }
28    }
29
30    var isArray = function (obj) {
31        return Object.prototype.toString.call(obj) === "[object Array]"
32    };
33
34    var isFunc = function (obj) {
35        return Object.prototype.toString.call(obj) === "[object Function]"
36    };
37
38    var ready = function (w, d) {
39        var inited = false,
40            loaded = false,
41            queue = [],
42            done, old;
43
44        function go() {
45            if (!inited) {
46                if (!d.body) return setTimeout(go, 13);
47                inited = true;
48                if (queue) {
49                    var j, k = 0;
50                    while (j = queue[k++]) j.call(null);
51                    queue = null
52                }
53            }
54        }
55
56        function check() {
57            if (loaded) return;
58            loaded = true;
59            if (d.readyState === "complete") return go();
60            if (d.addEventListener) {
61                d.addEventListener("DOMContentLoaded", done, false);
62                w.addEventListener("load", go, false)
63            } else {
64                if (d.attachEvent) {
65                    d.attachEvent("onreadystatechange", done);
66                    w.attachEvent("onload", go);
67                    var k = false;
68                    try {
69                        k = w.frameElement == null
70                    } catch (j) {
71                    }
72                    if (b.doScroll && k) ie()
73                } else {
74                    old = w.onload;
75                    w.onload = function (e) {
76                        old(e);
77                        go()
78                    }
79                }
80            }
81        }
82
83        if (d.addEventListener) {
84            done = function () {
85                d.removeEventListener("DOMContentLoaded", done, false);
86                go()
87            }
88        } else {
89            if (d.attachEvent) {
90                done = function () {
91                    if (d.readyState === "complete") {
92                        d.detachEvent("onreadystatechange", done);
93                        go()
94                    }
95                }
96            }
97        }
98
99        function ie() {
100            if (inited) return;
101            try {
102                b.doScroll("left")
103            } catch (j) {
104                setTimeout(ie, 1);
105                return
106            }
107            go()
108        }
109
110        return function (callback) {
111            check();
112            if (inited) {
113                callback.call(null)
114            } else {
115                queue.push(callback)
116            }
117        }
118    }(w, d);
119
120    if (w.addtocalendar && typeof w.addtocalendar.start == "function") return;
121    if (!w.addtocalendar) w.addtocalendar = {};
122
123    addtocalendar.languages = {
124        'ca': 'Afegeix al Calendari',
125        'en': 'Add to Calendar',
126        'es': 'Añadir al Calendario',
127        'fr': 'Ajouter au calendrier'
128    };
129
130    addtocalendar.calendar_urls = {}
131
132    addtocalendar.loadSettings = function (element) {
133        var settings = {
134            'language': 'auto',
135            'show-list-on': 'click',
136            'calendars': [
137                'iCalendar',
138                'Google Calendar',
139                'Outlook',
140                'Outlook Online',
141                'Yahoo! Calendar'
142            ],
143            'secure': 'auto',
144            'on-button-click': function () {
145            },
146            'on-calendar-click': function () {
147            }
148        };
149
150        for (var option in settings) {
151            var pname = 'data-' + option;
152            var eattr = element.getAttribute(pname);
153            if (eattr != null) {
154
155                if (isArray(settings[option])) {
156                    settings[option] = eattr.replace(/\s*,\s*/g, ',').replace(/^\s+|\s+$/g, '').split(',');
157                    continue;
158                }
159
160                if (isFunc(settings[option])) {
161                    var fn = window[eattr];
162                    if (isFunc(fn)) {
163                        settings[option] = fn;
164                    } else {
165                        settings[option] = eval('(function(mouseEvent){' + eattr + '})');
166                    }
167                    continue;
168                }
169
170                settings[option] = element.getAttribute(pname);
171            }
172        }
173
174        return settings;
175    };
176
177    addtocalendar.load = function () {
178
179        var calendarsUrl = {
180            'iCalendar': 'ical',
181            'Google Calendar': 'google',
182            'Outlook': 'outlook',
183            'Outlook Online': 'outlookonline',
184            'Yahoo! Calendar': 'yahoo'
185        };
186        var utz = (-(new Date()).getTimezoneOffset().toString());
187		
188		var languages = addtocalendar.languages;
189
190        var dom = document.getElementsByTagName('*');
191        for (var tagnum = 0; tagnum < dom.length; tagnum++) {
192            var tag_class = dom[tagnum].className;
193
194            if (tag_class.length && tag_class.split(" ").indexOf('addtocalendar') != -1) {
195
196                var settings = addtocalendar.loadSettings(dom[tagnum]);
197
198                var protocol = 'http:';
199                if (settings['secure'] == 'auto') {
200                    protocol = location.protocol == 'https:' ? 'https:' : 'http:';
201                } else if (settings['secure'] == 'true') {
202                    protocol = 'https:';
203                }
204
205                var tag_id = dom[tagnum].id;
206                var atc_button_title = languages['en'];
207                if (settings['language'] == 'auto') {
208                    var user_lang = "no_lang";
209                    if (typeof navigator.language === "string") {
210                        user_lang = navigator.language.substr(0, 2)
211                    } else if (typeof navigator.browserLanguage === "string") {
212                        user_lang = navigator.browserLanguage.substr(0, 2)
213                    }
214
215                    if (languages.hasOwnProperty(user_lang)) {
216                        atc_button_title = languages[user_lang];
217                    }
218                } else if (languages.hasOwnProperty(settings['language'])) {
219                    atc_button_title = languages[settings['language']];
220                }
221				
222                var url_paramteres = [
223                    'utz=' + utz,
224                    'uln=' + navigator.language,
225                    'vjs=' + atc_version
226                ];
227
228                var addtocalendar_div = dom[tagnum].getElementsByTagName('var');
229                var event_number = -1;
230                for (var varnum = 0; varnum < addtocalendar_div.length; varnum++) {
231                    var param_name = addtocalendar_div[varnum].className.replace("atc_", "").split(" ")[0];
232                    var param_value = addtocalendar_div[varnum].innerHTML;
233
234                    if (param_name == 'event') {
235                        event_number++;
236                        continue;
237                    }
238
239                    if (param_name == addtocalendar_div[varnum].className) {
240                        if (param_name == 'atc-body') {
241                            atc_button_title = param_value;
242                        }
243                        continue;
244                    }
245
246                    if (event_number == -1) {
247                        continue;
248                    }
249
250                    url_paramteres.push('e[' + event_number + '][' + param_name + ']' + '=' + encodeURIComponent(param_value));
251                }
252
253
254                var atcb_link_id_val = (tag_id == '' ? '' : (tag_id + '_link') );
255                var atcb_list = document.createElement('ul');
256                atcb_list.className = 'atcb-list';
257
258                var menu_links = '';
259                for (var cnum in settings['calendars']) {
260                    if (!calendarsUrl.hasOwnProperty(settings['calendars'][cnum])) {
261                        continue;
262                    }
263                    var cal_id = calendarsUrl[settings['calendars'][cnum]];
264                    var atcb_cal_link_id = (tag_id == '' ? '' : ('id="' + tag_id + '_' + cal_id + '_link"') );
265                    menu_links += '<li class="atcb-item '+cal_id+'"><a ' + atcb_cal_link_id + ' class="atcb-item-link" href="'
266                        + (cal_id == 'ical' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream ? 'webcal:' : protocol)
267                        + atc_url
268                        + cal_id + '?' + url_paramteres.join('&')
269                        + '" target="_blank">' + settings['calendars'][cnum] + '</a></li>';
270                }
271                atcb_list.innerHTML = menu_links;
272
273                var atcb_link;
274                if (dom[tagnum].querySelector('.atcb-link') == undefined) {
275                    atcb_link = document.createElement('a');
276                    atcb_link.className = 'atcb-link';
277                    atcb_link.innerHTML = atc_button_title;
278                    atcb_link.id = atcb_link_id_val;
279                    atcb_link.tabIndex = 1;
280
281                    dom[tagnum].appendChild(atcb_link);
282                    dom[tagnum].appendChild(atcb_list);
283                } else {
284                    atcb_link = dom[tagnum].querySelector('.atcb-link');
285                    atcb_link.parentNode.appendChild(atcb_list);
286                    atcb_link.tabIndex = 1;
287                    if (atcb_link.id == '') {
288                        atcb_link.id = atcb_link_id_val;
289                    }
290                }
291
292                if (atcb_link.addEventListener) {
293                    atcb_link.addEventListener('click', settings['on-button-click'], false);
294                } else {
295                    atcb_link.attachEvent('onclick', settings['on-button-click']);
296                }
297
298                var item_links = dom[tagnum].querySelectorAll('atcb-item-link');
299
300                for (var varnum = 0; varnum < item_links.length; varnum++) {
301                    var item_link = item_links[varnum];
302                    if (item_link.addEventListener) {
303                        item_link.addEventListener('click', settings['on-calendar-click'], false);
304                    }else{
305                        item_link.attachEvent('onclick', settings['on-calendar-click']);
306                    }
307
308                }
309            }
310        }
311    };
312    
313})(window, document);

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.