PageSourceSearch

https://sorstu.ca/wp-content/themes/sorstu/js/calendar.js?ver=201505

js sorstu.ca collected 2026-10-02 06:56:45 UTC 8,943 bytes, 307 lines download raw bytes

1// Compare 2 arrays.
2jQuery.fn.compare = function (t) {
3    if (this.length !== t.length) {
4        return false;
5    }
6
7    let a = this.sort(),
8        b = t.sort();
9
10    for (let i = 0; t[i]; i++) {
11        if (a[i] !== b[i]) {
12            return false;
13        }
14    }
15
16    return true;
17};
18
19function selectFilterCategory(obj, catId) {
20    if (jQuery(obj).hasClass('calendar_filter_item_selected')) {
21        jQuery(obj).removeClass('calendar_filter_item_selected');
22
23        let index;
24        let i;
25
26        for (i = 0; i < selectedCategories.length; i++) {
27            if (catId === selectedCategories[i]) {
28                index = i;
29                break;
30            }
31        }
32
33        selectedCategories.splice(index, 1);
34
35        if (selectedCategories.length === 0) {
36            // Choose "all" option.
37            jQuery('#select-cat').removeClass('calendar_filter_item_selected');
38        }
39    } else {
40        jQuery('#select-cat').removeClass('calendar_filter_item_selected');
41        jQuery(obj).addClass('calendar_filter_item_selected');
42
43        let index = selectedCategories.length;
44        selectedCategories[index] = catId;
45    }
46
47    updateCalendar();
48}
49
50function selectFilterCategoryAll(obj) {
51    // Nothing selected.
52    if (!jQuery(obj).hasClass('calendar_filter_item_selected')) {
53        // Empty the list.
54        let selectedCategories = [];
55        jQuery('.calendar_filter_item_selected').removeClass('calendar_filter_item_selected');
56        jQuery(obj).addClass('calendar_filter_item_selected');
57    }
58
59    updateCalendar();
60}
61
62// Select cities from region
63/*function selectFilterCitiesFromRegion(region_id, region_class, b_update_event) {
64    jQuery("." + region_class).each(function () {
65        let obj = this;
66        let city_code = jQuery(this).attr("code");
67
68        selectFilterCity(obj, city_code, region_id, false);
69    })
70
71    updateFilterVenues(b_update_event);
72}*/
73
74function updateCalendar() {
75    let siteUrl = document.location.host;
76    let category = jQuery('#select-cat').val();
77    let subCategory = jQuery('#select-sub-category').val();
78
79    if (0 < subCategory) {
80        category = subCategory;
81    }
82
83    let city = jQuery('#select-city').val();
84    let venue = jQuery('#select-venue').val();
85    let year_month = jQuery('#select-monthyear').val();
86    let free_only = calendarFreeOnly;
87    let language = calendarLanguage;
88    let arrDate = [];
89    let dates = '';
90
91    jQuery('.date-selected', '.calendar').each(function () {
92        arrDate.push(jQuery(this).attr('date'));
93    });
94
95    if (arrDate.length) dates = arrDate.join(',');
96
97    jQuery('#calendar_events').html('<p><img src="' + templateDirectory + '/images/ajax-loader.gif" alt=""></p>');
98
99    jQuery.post(document.location.protocol + '//' + siteUrl + '/wp-admin/admin-ajax.php', {
100        action: 'update-calendar',
101        year_month: year_month,
102        category: category,
103        city: city,
104        venue: venue,
105        dates: dates,
106        free_only: free_only,
107        language: language
108    }, function (data) {
109        jQuery('#calendar_events').html(data);
110    }, 'text');
111}
112
113/**
114 * Update venues list when a city is selected or deselected.
115 *
116 * @param b_update_event
117 */
118function updateFilterVenues(b_update_event) {
119    let siteUrl = document.location.host;
120    let city = jQuery('#select-city').val();
121
122    jQuery.post(document.location.protocol + '//' + siteUrl + '/wp-admin/admin-ajax.php', {
123            action: 'calendar-filter-update-venue',
124            cities_code: city,
125        },
126
127        function (data) {
128            let select = jQuery('#select-venue');
129            select.html('');
130            select.append(jQuery('<option></option>').val('0').html('Toutes'));
131
132            jQuery.each(data, function (key, item) {
133                select.append(jQuery('<option></option>').val(item.id).html(item.name));
134            });
135
136            if (b_update_event) {
137                updateCalendar();
138            }
139        },
140        'json'
141    );
142}
143
144function updateFilterSubCategories(b_update_event, subcat = null) {
145    let siteUrl = document.location.host;
146    let category = jQuery('#select-cat').val();
147
148    if (window.location.href.indexOf("subcat") > -1) {
149        jQuery('#select-sub-category').val(0);
150    }
151
152    jQuery.ajax({
153        type: "post",
154        dataType: "json",
155        url: document.location.protocol + '//' + siteUrl + '/wp-admin/admin-ajax.php',
156        data: {action: "calendar-filter-update-sub-categories", category: category},
157        success: function (response) {
158            let select = jQuery('#select-sub-category');
159            let container = jQuery('.filter-sub-categories');
160            let count = 0;
161
162            if (response) {
163                count = response.length;
164            }
165
166            select.html('');
167            select.append(jQuery('<option></option>').val(0).html('Toutes'));
168            //select.val(0);
169
170            if (0 < count && '0' !== category) {
171                jQuery.each(response, function (key, item) {
172                    select.append(jQuery('<option></option>').val(item.id).html(item.name));
173                });
174
175                container.show();
176            } else {
177                container.hide();
178                select.val(0);
179            }
180        }
181    })
182}
183
184/**
185 * Change url to go directly to specific month.
186 *
187 * @param select
188 */
189function filterChangeMonth(select) {
190    let siteUrl = document.location.host;
191    let url = jQuery(select).val();
192    let city = jQuery('#select-city').val();
193    let venue = jQuery('#select-venue').val();
194    let category = jQuery('#select-cat').val();
195    let subcategory = jQuery('#select-sub-category').val();
196    let arrParam = [];
197    let params = '';
198    let pathName = document.location.pathname.split('/');
199    let baseUrl = document.location.protocol + '//' + siteUrl + '/' + (pathName[1] != null ? pathName[1] : '');
200
201    if (url !== '') {
202        if (city !== 0) arrParam.push('ville=' + city);
203        if (venue !== 0) arrParam.push('salle=' + venue);
204        if (category !== 0) arrParam.push('cat=' + category);
205        if (subcategory !== 0) arrParam.push('subcat=' + subcategory);
206
207        if (arrParam.length) {
208            params = '?' + arrParam.join('&');
209        }
210
211        window.location.href = baseUrl + '/' + url + '/' + params;
212    } else {
213        window.location.href = baseUrl;
214    }
215}
216
217jQuery(document).ready(function () {
218    if (window.location.href.indexOf('ville') || window.location.href.indexOf('salle') || window.location.href.indexOf('cat') || window.location.href.indexOf('subcat')) {
219        const urlParams = new URLSearchParams(window.location.search);
220
221        const subcat = urlParams.get('subcat');
222        const cat = urlParams.get('cat');
223        const city = urlParams.get('ville');
224        const venue = urlParams.get('salle');
225
226        if (0 < subcat) {
227            //cat = subcat;
228            jQuery('.filter-sub-categories').show();
229        }
230
231        if (null !== cat) {
232            jQuery('#select-cat').val(cat);
233        } else {
234            jQuery('#select-cat').val(0);
235        }
236
237        if (null !== subcat && 0 < subcat) {
238            jQuery('#select-sub-category').val(subcat);
239        } else {
240            jQuery('#select-sub-category').val(0);
241        }
242
243        if ( null !== city) {
244            jQuery('#select-city').val(city);
245        } else {
246            jQuery('#select-city').val(0);
247        }
248
249        if ( null !== venue) {
250            jQuery('#select-venue').val(venue);
251        } else {
252            jQuery('#select-venue').val(0);
253        }
254    }
255
256    jQuery('.buy_ticket').on('click', function () {
257        let url = this.href;
258        let eventId = jQuery(this).attr('event');
259
260        jQuery.ajax({
261            async: false,
262            type: 'POST',
263            url: baseUrl + '/wp-admin/admin-ajax.php',
264            data: {
265                action: 'log-click',
266                event_id: eventId,
267                url: url
268            },
269            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
270            cache: false
271        });
272
273        return true;
274    });
275
276    jQuery('.calendar .date').on('click', function () {
277        if (jQuery(this).hasClass('date-selected')) {
278            jQuery(this).removeClass('date-selected');
279        } else {
280            jQuery(this).addClass('date-selected');
281        }
282
283        updateCalendar();
284    });
285
286    jQuery('#select-venue').on('change', function () {
287        updateCalendar();
288    });
289
290    jQuery('#select-city').on('change', function () {
291        updateCalendar();
292        updateFilterVenues();
293    });
294
295    jQuery('#select-monthyear').on('change', function () {
296        filterChangeMonth(this);
297    });
298
299    jQuery('#select-cat').on('change', function (e) {
300        updateFilterSubCategories();
301        updateCalendar();
302    });
303
304    jQuery('#select-sub-category').on('change', function () {
305        updateCalendar();
306    });
307});

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.