PageSourceSearch

https://www.scientology-tampa.org/plugins/ouical.js?_=

js scientology-tampa.org collected 2026-09-25 01:25:36 UTC 13,278 bytes, 237 lines download raw bytes

1;(function(exports) {
2  var MS_IN_MINUTES = 60 * 1000;
3
4  var formatTime = function(date) {
5    return date.toISOString().replace(/-|:|\.\d+/g, '');
6  };
7
8  var calculateEndTime = function(event) {
9    return event.end ?
10      formatTime(event.end) :
11      formatTime(new Date(event.start.getTime() + (event.duration * MS_IN_MINUTES)));
12  };
13
14  var calendarGenerators = {
15    google: function(event) {
16      var startTime = formatTime(event.start);
17      var endTime = calculateEndTime(event);
18
19      var href = encodeURI([
20        'https://www.google.com/calendar/render',
21        '?action=TEMPLATE',
22        '&text=' + (event.title || ''),
23        '&dates=' + (startTime || ''),
24        '/' + (endTime || ''),
25        '&details=' + (event.description || ''),
26        '&location=' + (event.address.replace(/\n/, ' ') || ''),
27        '&sprop=&sprop=name:'
28      ].join(''));
29      return '<a class="icon-google" target="_blank" href="' +
30        href + '">Google Calendar</a>';
31    },
32
33    outlook365: function(event) {
34      var startTime = event.start.toISOString(); // Your time formatting logic
35      var endTime = event.end ?
36      event.end.toISOString() :
37      (new Date(event.start.getTime() + (event.duration * MS_IN_MINUTES))).toISOString(); // Your end time calculation logic
38    
39      var title = encodeURIComponent(event.title || '');
40      var description = encodeURIComponent(event.description || '');
41      var location = encodeURIComponent(event.address.replace(/\n/, ' ') || '');
42    
43      var uid = new Date().getTime(); // Generating a simple unique identifier based on current time
44    
45      // https://outlook.office.com/calendar/action/compose?path=%2Fcalendar%2Faction%2Fcompose&rru=addevent&startdt=2023-08-31T22:00:00Z&enddt=2023-09-01T01:00:00Z&subject=Claire%27s%20Event&location=&body=test&allday=false&uid=1693352456addeventcom
46      var href = [
47        'https://outlook.office.com/calendar/action/compose?',
48        'path=%2Fcalendar%2Faction%2Fcompose',
49        '&rru=addevent',
50        '&startdt=' + (startTime || ''),
51        '&enddt=' + (endTime || ''),
52        '&subject=' + title,
53        '&body=' + description,
54        '&location=' + location,
55        '&allday=false',
56        '&uid=' + uid
57      ].join('');
58    
59      return '<a class="icon-office-outlook" target="_blank" href="' +
60        href + '">Outlook Office 365 Calendar</a>';
61    },
62
63    outlookOnline: function(event) {
64      var startTime = formatTime(event.start); // Your time formatting logic
65      var endTime = calculateEndTime(event); // Your end time calculation logic
66    
67      var title = encodeURIComponent(event.title || '');
68      var description = encodeURIComponent(event.description || '');
69      var location = encodeURIComponent(event.address.replace(/\n/, ' ') || '');
70    
71      var href = [
72        'https://outlook.live.com/owa/',
73        '?path=/calendar/action/compose',
74        '&rru=addevent',
75        '&startdt=' + (startTime || ''),
76        '&enddt=' + (endTime || ''),
77        '&subject=' + title,
78        '&body=' + description,
79        '&location=' + location
80      ].join('');
81    
82      return '<a class="icon-office365" target="_blank" href="' +
83        href + '">Outlook.com</a>';
84    },
85
86    yahoo: function(event) {
87      var eventDuration = event.end ?
88        ((event.end.getTime() - event.start.getTime())/ MS_IN_MINUTES) :
89        event.duration;
90
91      // Yahoo dates are crazy, we need to convert the duration from minutes to hh:mm
92      var yahooHourDuration = eventDuration < 600 ?
93        '0' + Math.floor((eventDuration / 60)) :
94        Math.floor((eventDuration / 60)) + '';
95
96      var yahooMinuteDuration = eventDuration % 60 < 10 ?
97        '0' + eventDuration % 60 :
98        eventDuration % 60 + '';
99
100      var yahooEventDuration = yahooHourDuration + yahooMinuteDuration;
101
102      // Remove timezone from event time
103      var st = formatTime(new Date(event.start - (event.start.getTimezoneOffset() *
104                                                  MS_IN_MINUTES))) || '';
105
106      var href = encodeURI([
107        'http://calendar.yahoo.com/?v=60&view=d&type=20',
108        '&title=' + (event.title || ''),
109        '&st=' + st,
110        '&dur=' + (yahooEventDuration || ''),
111        '&desc=' + (event.description || ''),
112        '&in_loc=' + (event.address.replace(/\n/, ' ') || '')
113      ].join(''));
114
115      return '<a class="icon-yahoo" target="_blank" href="' +
116        href + '">Yahoo! Calendar</a>';
117    },
118
119    ics: function(event, eClass, calendarName) {
120      var startTime = formatTime(event.start);
121      var endTime = calculateEndTime(event);
122
123      var href = encodeURI(
124        'data:text/calendar;charset=utf8,' + [
125          'BEGIN:VCALENDAR',
126          'UID:' + (new Date().getTime()),
127          'VERSION:2.0',
128          'BEGIN:VEVENT',
129          'URL:' + document.URL,
130          'DTSTART:' + (startTime || ''),
131          'DTEND:' + (endTime || ''),
132          'SUMMARY:' + (event.title || ''),
133          'DESCRIPTION:' + (event.description || ''),
134          'LOCATION:' + (event.address.replace(/\n/, ' ') || ''),
135          'END:VEVENT',
136          'END:VCALENDAR'].join('\n'));
137
138      return '<a class="' + eClass + '" target="_blank" href="' +
139        href + '">' + calendarName + ' Calendar</a>';
140    },
141
142    ical: function(event) {
143      return this.ics(event, 'icon-ical', 'iCal');
144    },
145
146    outlook: function(event) {
147      return this.ics(event, 'icon-outlook', 'Outlook');
148    }
149  };
150
151  var generateCalendars = function(event) {
152    return {
153      google: calendarGenerators.google(event),
154      yahoo: calendarGenerators.yahoo(event),
155      ical: calendarGenerators.ical(event),
156      outlook: calendarGenerators.outlook(event),
157      office365: calendarGenerators.outlook365(event),
158      outlookOnline: calendarGenerators.outlookOnline(event)
159    };
160  };
161
162  // Create CSS
163  var addCSS = function() {
164    if (!document.getElementById('ouical-css')) {
165      document.getElementsByTagName('head')[0].appendChild(generateCSS());
166    }
167  };
168
169  var generateCSS = function() {
170    var styles = document.createElement('style');
171    styles.id = 'ouical-css';
172
173    styles.innerHTML = "#add-to-calendar-checkbox-label{cursor:pointer}.add-to-calendar-checkbox~a{display:none}
173.add-to-calendar-checkbox:checked~a{display:block;width:150px;margin-left:20px}input[type=checkbox].add-to-calendar-checkbox{position:absolute;top:-9999px;left:-9999px}.add-to-calendar-checkbox~a:before{width:16px;height:16px;display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAAAQCAYAAACIoli7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzJCRDU2NUE1MDIxMUUyOTY1Q0EwNTkxNEJDOUIwNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzJCRDU2NkE1MDIxMUUyOTY1Q0EwNTkxNEJDOUIwNCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzMkJENTYzQTUwMjExRTI5NjVDQTA1OTE0QkM5QjA0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzMkJENTY0QTUwMjExRTI5NjVDQTA1OTE0QkM5QjA0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1Gcb3QAACh1JREFUeNrEWAtw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);margin-right:.5em;content:' '}.icon-ical:before{background-position:-68px 0}.icon-outlook:before{}.icon-yahoo:before{background-position:-36px +4px}.icon-google:before{background-position:-52px 0}";
174
175    return styles;
176  };
177
178  // Make sure we have the necessary event data, such as start time and event duration
179  var validParams = function(params) {
180    return params.data !== undefined && params.data.start !== undefined &&
181      (params.data.end !== undefined || params.data.duration !== undefined);
182  };
183
184  var generateMarkup = function(calendars, clazz, calendarId) {
185    var result = document.createElement('div');
186
187    result.innerHTML = '<label for="checkbox-for-' +
188      calendarId + '" class="add-to-calendar-checkbox">+ Add to my Calendar</label>';
189    result.innerHTML += '<input name="add-to-calendar-checkbox" class="add-to-calendar-checkbox" id="checkbox-for-' + calendarId + '" type="checkbox">';
190
191    Object.keys(calendars).forEach(function(services) {
192      result.innerHTML += calendars[services];
193    });
194
195    result.className = 'add-to-calendar';
196    if (clazz !== undefined) {
197      result.className += (' ' + clazz);
198    }
199
200    addCSS();
201
202    result.id = calendarId;
203    return result;
204  };
205
206  var getClass = function(params) {
207    if (params.options && params.options.class) {
208      return params.options.class;
209    }
210  };
211
212  var getOrGenerateCalendarId = function(params) {
213    return params.options && params.options.id ?
214      params.options.id :
215      Math.floor(Math.random() * 1000000); // Generate a 6-digit random ID
216  };
217
218  exports.generateAllCalendars = function(params) {
219    if (!validParams(params)) {
220      console.log('Event details missing.');
221      return;
222    }
223
224    return generateCalendars(params.data);
225  };
226
227  exports.createCalendar = function(params) {
228    if (!validParams(params)) {
229      console.log('Event details missing.');
230      return;
231    }
232
233    return generateMarkup(generateCalendars(params.data),
234                          getClass(params),
235                          getOrGenerateCalendarId(params));
236  };
237})(this);

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.