{"id":1127,"date":"2021-12-15T23:33:13","date_gmt":"2021-12-15T23:33:13","guid":{"rendered":"https:\/\/creative-europe.lu\/calendrier\/"},"modified":"2022-02-27T22:32:11","modified_gmt":"2022-02-27T21:32:11","slug":"calendrier","status":"publish","type":"page","link":"https:\/\/creative-europe.lu\/fr\/calendrier\/","title":{"rendered":"Calendrier"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row full_width=\u00a0\u00bbstretch_row\u00a0\u00bb content_placement=\u00a0\u00bbmiddle\u00a0\u00bb parallax=\u00a0\u00bbcontent-moving-fade\u00a0\u00bb parallax_image=\u00a0\u00bb2885&Prime; el_class=\u00a0\u00bboverlay-gradient\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1645994845136{padding-top: 20% !important;}\u00a0\u00bb][vc_column css=\u00a0\u00bb.vc_custom_1638306692729{margin-top: 0px !important;}\u00a0\u00bb][vc_custom_heading source=\u00a0\u00bbpost_title\u00a0\u00bb font_container=\u00a0\u00bbtag:h4|text_align:left\u00a0\u00bb google_fonts=\u00a0\u00bbfont_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1638306932165{margin-bottom: 0px !important;padding-bottom: 0px !important;}\u00a0\u00bb][vc_row_inner][vc_column_inner width=\u00a0\u00bb1\/2&Prime;][vc_column_text css=\u00a0\u00bb.vc_custom_1645997521014{margin-top: 0px !important;padding-top: 0px !important;}\u00a0\u00bb el_class=\u00a0\u00bbheader-intro-text\u00a0\u00bb]Naviguez \u00e0 travers notre calendrier pour avoir un <strong>aper\u00e7u<\/strong> des <strong>\u00e9v\u00e9nements<\/strong> organis\u00e9s par les desks luxembourgeois ou d\u2019autres desks <em>Creative Europe<\/em>, la Commission europ\u00e9enne et son Agence ex\u00e9cutive Culture et Education, ou bien par les r\u00e9seaux et projets soutenus.[\/vc_column_text][\/vc_column_inner][vc_column_inner width=\u00a0\u00bb1\/2&Prime;][vc_column_text css=\u00a0\u00bb.vc_custom_1645997526539{margin-top: 0px !important;padding-top: 0px !important;}\u00a0\u00bb el_class=\u00a0\u00bbheader-intro-text\u00a0\u00bb]Le calendrier couvre les trois volets du programme\u00a0:<strong> Culture \u2013 MEDIA \u2013 Transsectoriel<\/strong>, tout en mettant en \u00e9vidence les <strong>appels ouverts<\/strong> et les <strong>dates<\/strong> <strong>limites<\/strong> \u00e0 respecter.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row][vc_column]    <div class=\"calendar-layout-wrapper\">\r\n        <div class=\"calendar-legend-block\">\r\n            <div class=\"calendar-left\">\r\n                <div><svg width=\"7\" height=\"7\" viewBox=\"0 0 7 7\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path class=\"ce_point\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.22377 6.45282C5.00406 6.45282 6.44798 5.0087 6.44798 3.22694C6.44798 1.44406 5.00406 0 3.22377 0C1.44337 0 0 1.44406 0 3.22694C0 5.0087 1.44337 6.45282 3.22377 6.45282Z\" fill=\"#1CCAFF\"\/>\n<\/svg>\n<span>one-day<\/span><\/div>\r\n                <div><svg width=\"24\" height=\"6\" viewBox=\"0 0 24 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect class=\"ce_line\" width=\"24\" height=\"6\" rx=\"3\" fill=\"#1CCAFF\"\/>\n<\/svg>\n<span>multiple-days<\/span><\/div>\r\n            <\/div>\r\n            <div class=\"calendar-right\">\r\n                <div class=\"calendar-media\"><svg width=\"24\" height=\"6\" viewBox=\"0 0 24 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect class=\"ce_line\" width=\"24\" height=\"6\" rx=\"3\" fill=\"#1CCAFF\"\/>\n<\/svg>\n                    <span>MEDIA<\/span><\/div>\r\n                <div class=\"calendar-culture\"><svg width=\"24\" height=\"6\" viewBox=\"0 0 24 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect class=\"ce_line\" width=\"24\" height=\"6\" rx=\"3\" fill=\"#1CCAFF\"\/>\n<\/svg>\n                    <span>CULTURE<\/span><\/div>\r\n                <div class=\"calendar-cross\"><svg width=\"24\" height=\"6\" viewBox=\"0 0 24 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect class=\"ce_line\" width=\"24\" height=\"6\" rx=\"3\" fill=\"#1CCAFF\"\/>\n<\/svg>\n                    <span>CROSS-SECTORAL<\/span><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"calendar-details-block\">\r\n            <div class=\"calendar-event-details-block\"><\/div>\r\n        <\/div>\r\n        <div class=\"calendar-section-wrapper\">\r\n            <div id='calendar' class=\"calendar-block\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        let eventList;\r\n        \/\/ the last date range of events that was fetched\r\n        \/\/ used to check whether fetching again is necessary\r\n        let eventRangeStart;\r\n        let eventRangeEnd;\r\n\r\n        document.addEventListener('DOMContentLoaded', function () {\r\n            let calendarEl = document.getElementById('calendar');\r\n\r\n            let calendar = new FullCalendar.Calendar(calendarEl, {\r\n                headerToolbar: {\r\n                    left: \"prev today next\",\r\n                    center: '',\r\n                    right: 'title'\r\n                },\r\n                buttonText: {\r\n                    \/\/Here I make the button show French date instead of a text.\r\n                    today: \"aujourd'hui\"\r\n                },\r\n                firstDay: 1,\r\n                locale: 'fr',\r\n                height: 'auto',\r\n                timeZone: 'local',\r\n                navLinks: false, \/\/ can click day\/week names to navigate views\r\n                dayMaxEvents: false,\r\n                events: function (fetchInfo, successCallback, failureCallback) {\r\n                    const start = moment(fetchInfo.startStr);\r\n                    const end = moment(fetchInfo.endStr).subtract(1, 'day'); \/\/ end is exclusive in fullcalendar\r\n\r\n                    \/\/ check if the dates are outside the previously fetched range\r\n                    if (eventRangeStart && eventRangeEnd\r\n                        && start.isBetween(eventRangeStart, eventRangeEnd, undefined, '[]')\r\n                        && end.isBetween(eventRangeStart, eventRangeEnd, undefined, '[]')) {\r\n                        return;\r\n                    }\r\n\r\n                    \/\/ fetch 6 months before and after\r\n                    start.subtract(6, 'months');\r\n                    end.add(6, 'months');\r\n                    eventRangeStart = start;\r\n                    eventRangeEnd = end;\r\n\r\n                    \/\/ actually fetch new data\r\n                    let promise = performCalendarEventsRequest(start.format('Y-M-D'), end.format('Y-M-D'));\r\n\r\n                    promise.success(function (data) {\r\n                        eventList = parseEvents(data.data);\r\n                        jQuery('.fc-day-today').addClass('clicked-day');\r\n                        var date = moment().format('YYYY-MM-DDT12:00:00');\r\n                        getEventsAndDisplay(date);\r\n                        var updatedEvents = updateEvents(parseEvents(data.data, true));\r\n                        successCallback(updatedEvents);\r\n                    });\r\n                },\r\n                displayEventTime: false,\r\n                eventDidMount: function (view, element) {\r\n                    setTimeout(() => {\r\n                        addTopLogicForLines();\r\n                    }, 10);\r\n                    \/\/ jQuery('.fc-daygrid-day-events').css('bottom','20px');\r\n                },\r\n                dayHeaderDidMount: function () {\r\n                    console.log(\"dayHeaderDidMount called\")\r\n                },\r\n                dayCellDidMount: function () {\r\n                    console.log(\"dayCellDidMount called\")\r\n                },\r\n                weekNumberDidMount: function () {\r\n                    console.log(\"weekNumberDidMount called\")\r\n                },\r\n                viewDidMount: function () {\r\n                    console.log(\"viewDidMount called\")\r\n                },\r\n                nowIndicatorDidMount: function () {\r\n                    console.log(\"nowIndicatorDidMount called\")\r\n                },\r\n                slotLaneDidMount: function () {\r\n                    console.log(\"slotLaneDidMount called\")\r\n                },\r\n                slotLabelDidMount: function () {\r\n                    console.log(\"slotLabelDidMount called\")\r\n                },\r\n                allDayDidMount: function () {\r\n                    console.log(\"allDayDidMount called\")\r\n                },\r\n                moreLinkDidMount: function () {\r\n                    console.log(\"moreLinkDidMount called\")\r\n                },\r\n                loading: function (isLoading) {\r\n                    console.log(\"isLoading :\", isLoading);\r\n                },\r\n                eventClick: function (info) {\r\n                    info.jsEvent.preventDefault(); \/\/ don't let the browser navigate\r\n                },\r\n                dateClick: function (info) {\r\n                    jQuery('.clicked-day').removeClass('clicked-day');\r\n                    \/\/ change the day's background color just for fun\r\n                    jQuery(info.dayEl).addClass('clicked-day');\r\n                    if (window.innerWidth > 1000) {\r\n                        jQuery('.calendar-details-block').show();\r\n                        var date = moment(info.dateStr).format('YYYY-MM-DDT12:00:00')\r\n                        getEventsAndDisplay(date);\r\n                    }\r\n                }\r\n            });\r\n            calendar.render();\r\n\r\n            function parseEvents(data, duplicateMultiCategoryEvents = false) {\r\n\r\n                let resultEvents = [];\r\n\r\n                data.forEach(obj => {\r\n                    let newObj = {};\r\n\r\n                    newObj.categories = obj.categories;\r\n                    newObj.className = 'single-day-event';\r\n                    newObj.readMore = obj.readMoreBtn;\r\n                    newObj.start = moment(obj.startdate.date).format('YYYY-MM-DD 12:00:00');\r\n                    newObj.startDateTime = moment(obj.startdate.date).format('YYYY-MM-DD HH:mm');\r\n                    newObj.title = obj.title;\r\n                    newObj.type = obj.type;\r\n                    newObj.url = obj.url;\r\n\r\n                    \/\/Handle EndDate\r\n                    if (obj.enddate !== null) {\r\n                        newObj.end = moment(obj.enddate.date).format('YYYY-MM-DD 19:00:00');\r\n                        newObj.endDateTime = moment(obj.enddate.date).format('YYYY-MM-DD HH:mm');\r\n\r\n                        \/\/ When End-Date is not on the same day = long-day-event\r\n                        if (!moment(newObj.end).isSame(newObj.start, 'day'))\r\n                            newObj.className = 'long-day-event';\r\n                    } else {\r\n                        newObj.end = moment(obj.startdate.date).format('YYYY-MM-DD 19:00:00');\r\n                        newObj.endDateTime = moment(obj.startdate.date).format('YYYY-MM-DD HH:mm');\r\n                    }\r\n\r\n                    \/\/If Event has multiple Categories clone the Event for each Category.\r\n                    \/\/Only use for Calendar\r\n                    if (duplicateMultiCategoryEvents && obj.categories.length > 1) {\r\n                        jQuery(obj.categories).each(function (key, value) {\r\n                            let changedData = {};\r\n                            changedData.icon = value.categoryIcon;\r\n                            changedData.backgroundColor = value.categoryColor;\r\n\r\n                            \/\/Assign otherwise Object will not be overridden\r\n                            resultEvents.push(Object.assign(changedData, newObj));\r\n\r\n                        });\r\n                    } else {\r\n                        if (obj.categories[0] !== undefined) {\r\n                            newObj.icon = obj.categories[0].categoryIcon;\r\n                            newObj.backgroundColor = obj.categories[0].categoryColor;\r\n                        }\r\n\r\n                        resultEvents.push(newObj);\r\n                    }\r\n                });\r\n\r\n                return resultEvents;\r\n            }\r\n\r\n            function addTopLogicForLines() {\r\n                jQuery('.fc-daygrid-event-harness.fc-daygrid-event-harness-abs').each(function (index, element) {\r\n                    var globalTrId = \"\";\r\n                    if (jQuery(element).hasClass('fc-daygrid-event-harness-abs') && !jQuery(element).hasClass('already-added-top')) {\r\n                        jQuery(element).addClass('already-added-top');\r\n                        jQuery(element).closest('tr').first().attr('data-id', index);\r\n                        var lastTrId = jQuery(element).closest('.fc-daygrid-day').closest('tr').data('id');\r\n                        var currentPx = jQuery(element)[0].style.top.split(\"px\")[0];\r\n                        var newPx = parseInt(currentPx) + 28;\r\n                        jQuery(element).css({top: newPx + 'px'});\r\n\r\n                    }\r\n                });\r\n            }\r\n\r\n            function updateEvents(responseEvents) {\r\n                var allEvents = [];\r\n\r\n                \/\/ Use lodash js and group by events to background color for now\r\n                var groupByEvents = _.groupBy(responseEvents, 'backgroundColor');\r\n                \/\/ Get all single day events first\r\n                jQuery.each(groupByEvents, function (i) {\r\n                    groupByEvents[i].forEach((element, index) => {\r\n                        var eventStartDate = moment(element.start).utc().format('YYYY-MM-DD');\r\n                        var eventEndDate = moment(element.end).utc().format('YYYY-MM-DD');\r\n                        if (eventStartDate === eventEndDate) {\r\n                            var sameDayEvent = element;\r\n                            sameDayEvent['start'] = eventStartDate;\r\n                            sameDayEvent['end'] = eventEndDate;\r\n                            allEvents.push(sameDayEvent);\r\n                            delete groupByEvents[i][index];\r\n                        }\r\n                    });\r\n                });\r\n                jQuery.each(groupByEvents, function (index) {\r\n                    groupByEvents[index] = _.values(removeEmpty(groupByEvents[index]));\r\n\/\/TODO Error below\r\n                    \/\/ Now try to merge events if dates is between other dates events\r\n                    for (var i = 0; i < groupByEvents[index].length; i++) {\r\n                        for (var j = i + 1; j < groupByEvents[index].length; j++) {\r\n                            if (isBetweenOrOverlap(groupByEvents[index][i].start, groupByEvents[index][i].end, groupByEvents[index][j].start, groupByEvents[index][j].end)) {\r\n                                groupByEvents[index][i].start = getLeastDate(groupByEvents[index][i].start, groupByEvents[index][j].start);\r\n                                groupByEvents[index][i].end = getMaxDate(groupByEvents[index][i].end, groupByEvents[index][j].end);\r\n                                groupByEvents[index].splice(j, 1);\r\n                                i = i - 1;\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n                    \/\/TODO Error Abov\r\n                    groupByEvents[index].forEach(element => {\r\n                        allEvents.push(element);\r\n                    });\r\n                });\r\n                allEvents.forEach((element, index) => {\r\n                    allEvents[index]['title'] = \"\";\r\n                });\r\n                return allEvents;\r\n            }\r\n\r\n            function removeEmpty(obj) {\r\n                return Object.keys(obj)\r\n                    .filter(function (k) {\r\n                        return obj[k] != null;\r\n                    })\r\n                    .reduce(function (acc, k) {\r\n                        acc[k] = typeof obj[k] === \"object\" ? removeEmpty(obj[k]) : obj[k];\r\n                        return acc;\r\n                    }, {});\r\n            }\r\n\r\n            function isBetweenOrOverlap(firstStartDate, firstEndDate, lastStartDate, lastEndDate) {\r\n                if (moment(firstStartDate).isBetween(moment(lastStartDate), moment(lastEndDate))\r\n                    || moment(firstEndDate).isBetween(moment(lastStartDate), moment(lastEndDate))\r\n                    || moment(lastStartDate).isBetween(moment(firstStartDate), moment(firstEndDate))\r\n                    || moment(lastEndDate).isBetween(moment(firstStartDate), moment(firstEndDate))\r\n                ) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n\r\n            function getLeastDate(firstStartDate, lastStartDate) {\r\n                var date1 = moment(firstStartDate, 'YYYY-MM-DD').valueOf();\r\n                var date2 = moment(lastStartDate, 'YYYY-MM-DD').valueOf();\r\n                if (date1 > date2) {\r\n                    return moment(lastStartDate).format('YYYY-MM-DD');\r\n                } else {\r\n                    return moment(firstStartDate).format('YYYY-MM-DD');\r\n                }\r\n\r\n            }\r\n\r\n            function getMaxDate(firstEndDate, lastEndDate) {\r\n                var date1 = moment(firstEndDate, 'YYYY-MM-DD').valueOf();\r\n                var date2 = moment(lastEndDate, 'YYYY-MM-DD').valueOf();\r\n                if (date1 > date2) {\r\n                    return moment(firstEndDate).format('YYYY-MM-DDT23:00:00');\r\n                } else {\r\n                    return moment(lastEndDate).format('YYYY-MM-DDT23:00:00');\r\n                }\r\n            }\r\n\r\n            function getEventsAndDisplay(clickedDate) {\r\n                var respons = [];\r\n                eventList.forEach(element => {\r\n                    if (moment(clickedDate).isBetween(moment(element.start).format('YYYY-MM-DDT00:00:00'), moment(element.end).format('YYYY-MM-DDT23:59:59'))) {\r\n                        respons.push(element);\r\n                    }\r\n                });\r\n                var html = \"\";\r\n                respons.forEach(element => {\r\n                    let categoryIcons = '';\r\n\r\n                    jQuery(element.categories).each(function (key, category) {\r\n                        categoryIcons += '<img decoding=\"async\" alt=\"CategoryIcon\" src=\"' + category.categoryIcon + '\">'\r\n                    });\r\n\r\n                    html += '<div class=\"calendar-event-list-block\">'\r\n                        + '<div class=\"flex-category\"><span class=\"active\" style=\"color: ' + element.backgroundColor + '\">' + element.type + '<\/span>'\r\n                        + categoryIcons + '<\/div>'\r\n                        + '<h5>' + moment(element.startDateTime).format('DD.MM.YYYY; hA') + ' - ' + moment(element.endDateTime).format('DD.MM.YYYY; hA') + '<\/h5>'\r\n                        + '<div><h6>' + element.title + '<\/h6><\/div>'\r\n                        + '<div class=\"outer-button\"><a class=\"coolBeans dark\" href=\"' + element.url + '\" target=\"_self\">' + element.readMore + '<\/a><\/div>'\r\n                        + '<\/div>';\r\n\r\n                });\r\n                jQuery('.calendar-event-details-block').html(html);\r\n            }\r\n\r\n            jQuery(window).on('resize', function () {\r\n                var win = jQuery(this); \/\/this = window\r\n                if (win.width() <= 1000) {\r\n                    jQuery('.calendar-details-block').hide();\r\n                } else {\r\n                    jQuery('.calendar-details-block').show();\r\n                }\r\n            });\r\n        });\r\n    <\/script>\r\n\t[\/vc_column][\/vc_row][vc_row css=\u00a0\u00bb.vc_custom_1645992947936{margin-top: 20px !important;padding-top: 20px !important;padding-bottom: 20px !important;}\u00a0\u00bb][vc_column][vc_icon type=\u00a0\u00bbmaterial\u00a0\u00bb icon_material=\u00a0\u00bbvc-material vc-material-arrow_downward\u00a0\u00bb color=\u00a0\u00bbcustom\u00a0\u00bb background_style=\u00a0\u00bbrounded-outline\u00a0\u00bb background_color=\u00a0\u00bbcustom\u00a0\u00bb align=\u00a0\u00bbcenter\u00a0\u00bb custom_color=\u00a0\u00bb#8795b0&Prime; custom_background_color=\u00a0\u00bb#8795b0&Prime; link=\u00a0\u00bburl:%23calendar-list\u00a0\u00bb][\/vc_column][\/vc_row][vc_row el_id=\u00a0\u00bbcalendar-list\u00a0\u00bb][vc_column][vc_empty_space height=\u00a0\u00bb25px\u00a0\u00bb]\r\n    <div class=\"filter-row\">\r\n        <div class=\"multi-data-switch\">\r\n            <a href=\"#\" data-action=\"prev\"><svg width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n<path class=\"core-arrow\" d=\"M0.652482 0L0 0.589744L5.67376 5.71795L6 6L6.32624 5.71795L12 0.589744L11.3475 0L6 4.83333L0.652482 0Z\" fill=\"#C2E7FF\"\/>\r\n<\/svg>\r\n<\/a>\r\n            <div class=\"cat-filter-text\" id=\"selected-month\"><\/div>\r\n            <label>\r\n                <select name=\"month\" id=\"sel-month\">\r\n\t                <option  value=01>January<\/option><option  value=02>February<\/option><option  value=03>March<\/option><option selected  value=04>April<\/option><option  value=05>May<\/option><option  value=06>June<\/option><option  value=07>July<\/option><option  value=08>August<\/option><option  value=09>September<\/option><option  value=10>October<\/option><option  value=11>November<\/option><option  value=12>December<\/option>                <\/select>\r\n            <\/label>\r\n            <a href=\"#\" data-action=\"next\"><svg width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n<path class=\"core-arrow\" d=\"M0.652482 0L0 0.589744L5.67376 5.71795L6 6L6.32624 5.71795L12 0.589744L11.3475 0L6 4.83333L0.652482 0Z\" fill=\"#C2E7FF\"\/>\r\n<\/svg>\r\n<\/a>\r\n        <\/div>\r\n        <div class=\"multi-data-switch\">\r\n            <a href=\"#\" data-action=\"prev\"><svg width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n<path class=\"core-arrow\" d=\"M0.652482 0L0 0.589744L5.67376 5.71795L6 6L6.32624 5.71795L12 0.589744L11.3475 0L6 4.83333L0.652482 0Z\" fill=\"#C2E7FF\"\/>\r\n<\/svg>\r\n<\/a>\r\n            <div class=\"cat-filter-text\" id=\"selected-year\"><\/div>\r\n            <label>\r\n                <select name=\"year\" id=\"sel-year\">\r\n\t                <option value=\"2023\">2023<\/option><option value=\"2024\">2024<\/option><option value=\"2025\">2025<\/option><option selected value=\"2026\">2026<\/option><option value=\"2027\">2027<\/option><option value=\"2028\">2028<\/option><option value=\"2029\">2029<\/option>                <\/select>\r\n            <\/label>\r\n            <a href=\"#\" data-action=\"next\"><svg width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n<path class=\"core-arrow\" d=\"M0.652482 0L0 0.589744L5.67376 5.71795L6 6L6.32624 5.71795L12 0.589744L11.3475 0L6 4.83333L0.652482 0Z\" fill=\"#C2E7FF\"\/>\r\n<\/svg>\r\n<\/a>\r\n        <\/div>\r\n\r\n        <div class=\"filterBarWrapper\" style=\"display: none\">\r\n            <div class=\"filterBar\">\r\n                <div class=\"active\" data-type=\"day\"><span>Day<\/span><\/div>\r\n                <div data-type=\"week\"><span>Week<\/span><\/div>\r\n                <div data-type=\"month\"><span>Month<\/span><\/div>\r\n            <\/div>\r\n            <div class=\"bs\"><span><\/span><\/div>\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n    <div>\r\n        <div class=\"cat-filter-element all cat-active\" data-catID=\"null\" onclick=\"queryWithFilter(this)\">\r\n            <span class=\"cat-filter-text\">tous<\/span>\r\n        <\/div>\r\n\t                <div class=\"cat-filter-element\" data-cat-id=\"68\" onclick=\"queryWithFilter(this)\">\r\n                <div class=\"cat-filter-text\" style=\"color: #1ccaff\">\r\n                    <span>MEDIA<\/span>\r\n                    <img alt=\"category-icon\" src=https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/11\/media-triangle.svg>\r\n                <\/div>\r\n            <\/div>\r\n\t                <div class=\"cat-filter-element\" data-cat-id=\"69\" onclick=\"queryWithFilter(this)\">\r\n                <div class=\"cat-filter-text\" style=\"color: #67c51d\">\r\n                    <span>Culture<\/span>\r\n                    <img alt=\"category-icon\" src=https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/11\/culture-circ.svg>\r\n                <\/div>\r\n            <\/div>\r\n\t                <div class=\"cat-filter-element\" data-cat-id=\"10\" onclick=\"queryWithFilter(this)\">\r\n                <div class=\"cat-filter-text\" style=\"color: #ffaa30\">\r\n                    <span>Trans-sectoriel<\/span>\r\n                    <img alt=\"category-icon\" src=https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/11\/cross-rectangle.svg>\r\n                <\/div>\r\n            <\/div>\r\n\t    \r\n    <\/div>\r\n\r\n    <div class=\"ajax-calendar-results\" style=\"min-height: 400px; margin-top: 50px\"><\/div>\r\n\r\n    <script>\r\n        \/\/Global Variables\r\n        let limit = 20; \/\/Infinite Scroll Load Per Request\r\n        let offset = 0; \/\/Starting Offset\r\n        let loadingInProgress = false;\r\n        let calendarComplete = false;\r\n        let selectedCat = undefined;\r\n        let selectedType = undefined;\r\n        let selectedYear = undefined;\r\n        let selectedMonth = undefined;\r\n        let timeout;\r\n\r\n        \/\/Global JQuery Objects\r\n        let $resultWrapper = jQuery('.ajax-calendar-results');\r\n        let $filterButtons = jQuery('.grid-category-filter-bar-ptg input');\r\n\r\n        function queryWithFilter(element) {\r\n\r\n            if (loadingInProgress) return;\r\n\r\n            \/\/Reset Timeout\r\n            clearTimeout(timeout);\r\n\r\n            \/\/ reset all filters?\r\n            if (jQuery(element).hasClass('reset')) {\r\n                element = jQuery('.cat-filter-element').first()[0];\r\n                jQuery('.toggle-checkbox').not(':checked').prop('checked', true);\r\n            }\r\n\r\n            if (jQuery(element).hasClass('cat-filter-element')) {\r\n                \/\/ Change Active Element\r\n                jQuery('.cat-filter-element').removeClass('cat-active');\r\n                jQuery(element).addClass('cat-active');\r\n\r\n            }\r\n\r\n            \/\/Wait Time until ajax Call\r\n            timeout = setTimeout(function () {\r\n                updateVariables();\r\n                resetGridAndInfiniteScroll();\r\n                loadCalendar();\r\n            }, 1000);\r\n\r\n        }\r\n\r\n        function resetGridAndInfiniteScroll() {\r\n            offset = 0;\r\n            calendarComplete = false;\r\n            $resultWrapper.html('');\r\n        }\r\n\r\n        function updateVariables() {\r\n            selectedYear = jQuery('#sel-year').val();\r\n            selectedMonth = jQuery('#sel-month').val();\r\n            selectedCat = jQuery('.cat-filter-element.cat-active').data('cat-id');\r\n            \/\/selectedType = jQuery('.filterBar > div').data('type'); TODO Wait for Logic check\r\n        }\r\n\r\n        function loadCalendar() {\r\n\r\n            if (calendarComplete) return;\r\n\r\n            if (!loadingInProgress) {\r\n\r\n                loadingInProgress = true;\r\n\r\n                \/\/Load News\r\n                let promise = performCalendarRequest($resultWrapper, limit, offset,\r\n                    selectedType, selectedCat, selectedYear, selectedMonth);\r\n\r\n                promise.success(function (data) {\r\n                    if (!data || offset + limit >= data.additionalData.total) {\r\n                        calendarComplete = true;\r\n                    } else {\r\n                        offset += limit;\r\n                    }\r\n\r\n                    loadingInProgress = false;\r\n                });\r\n            }\r\n        }\r\n\r\n        jQuery(document).ready(function () {\r\n\r\n            \/\/Switch Filter\r\n            let $filterbarButtons = jQuery('.filterBar > div');\r\n\r\n            $filterbarButtons.on('click', function (e) {\r\n                e.preventDefault();\r\n                $filterbarButtons.removeClass('active');\r\n                let left = jQuery(e.currentTarget).css('left');\r\n                jQuery('.bs').find('span').parent().css('left', left);\r\n                jQuery(e.currentTarget).addClass('active');\r\n\r\n            });\r\n\r\n            \/\/Arrow Button Filter\r\n            let $selectButtons = jQuery('.multi-data-switch select');\r\n            let $arrows = jQuery('.multi-data-switch a');\r\n\r\n            $selectButtons.each(function () {\r\n\r\n                \/\/Init Buttons with default Value\r\n                let value = jQuery(this).children('option:selected').text();\r\n                jQuery(this).parent().siblings('.cat-filter-text').text(value);\r\n\r\n                \/\/Add Change Handler\r\n                jQuery(this).on('change', function () {\r\n                    jQuery(this).parent().siblings('.cat-filter-text')\r\n                        .text(jQuery(this).children('option:selected').text());\r\n\r\n                    resetGridAndInfiniteScroll();\r\n                    queryWithFilter(this);\r\n                });\r\n            })\r\n\r\n            $arrows.on('click', function (e) {\r\n                e.preventDefault();\r\n                let action = this.getAttribute('data-action');\r\n                let $select = jQuery(this).siblings('label').find('select > option:selected');\r\n\r\n                $select.prop(\"selected\", false)\r\n\r\n                if (action === 'prev')\r\n                    $select.prev().prop(\"selected\", true).trigger('change');\r\n\r\n                if (action === 'next')\r\n                    $select.next().prop(\"selected\", true).trigger('change');\r\n            });\r\n\r\n            \/\/Initial Load\r\n            updateVariables();\r\n            loadCalendar();\r\n\r\n            \/\/Infinite Scroll Handling\r\n            jQuery(window).scroll(function () {\r\n                if ((jQuery(window).scrollTop() + jQuery(window).height()) >= $resultWrapper.height())\r\n                    loadCalendar();\r\n            });\r\n\r\n        });\r\n    <\/script>\r\n\r\n\t[\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row full_width=\u00a0\u00bbstretch_row\u00a0\u00bb content_placement=\u00a0\u00bbmiddle\u00a0\u00bb parallax=\u00a0\u00bbcontent-moving-fade\u00a0\u00bb parallax_image=\u00a0\u00bb2885&Prime; el_class=\u00a0\u00bboverlay-gradient\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1645994845136{padding-top: 20% !important;}\u00a0\u00bb][vc_column css=\u00a0\u00bb.vc_custom_1638306692729{margin-top: 0px !important;}\u00a0\u00bb][vc_custom_heading source=\u00a0\u00bbpost_title\u00a0\u00bb font_container=\u00a0\u00bbtag:h4|text_align:left\u00a0\u00bb google_fonts=\u00a0\u00bbfont_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1638306932165{margin-bottom: 0px !important;padding-bottom: 0px !important;}\u00a0\u00bb][vc_row_inner][vc_column_inner width=\u00a0\u00bb1\/2&Prime;][vc_column_text css=\u00a0\u00bb.vc_custom_1645997521014{margin-top: 0px !important;padding-top: 0px !important;}\u00a0\u00bb el_class=\u00a0\u00bbheader-intro-text\u00a0\u00bb]Naviguez \u00e0 travers notre calendrier pour avoir un aper\u00e7u des \u00e9v\u00e9nements organis\u00e9s par les desks luxembourgeois ou d\u2019autres desks Creative Europe, la Commission europ\u00e9enne et son Agence ex\u00e9cutive Culture [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-1127","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calendrier - Creative Europe<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/creative-europe.lu\/fr\/calendrier\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calendrier - Creative Europe\" \/>\n<meta property=\"og:description\" content=\"[vc_row full_width=\u00a0\u00bbstretch_row\u00a0\u00bb content_placement=\u00a0\u00bbmiddle\u00a0\u00bb parallax=\u00a0\u00bbcontent-moving-fade\u00a0\u00bb parallax_image=\u00a0\u00bb2885&Prime; el_class=\u00a0\u00bboverlay-gradient\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1645994845136{padding-top: 20% !important;}\u00a0\u00bb][vc_column css=\u00a0\u00bb.vc_custom_1638306692729{margin-top: 0px !important;}\u00a0\u00bb][vc_custom_heading source=\u00a0\u00bbpost_title\u00a0\u00bb font_container=\u00a0\u00bbtag:h4|text_align:left\u00a0\u00bb google_fonts=\u00a0\u00bbfont_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1638306932165{margin-bottom: 0px !important;padding-bottom: 0px !important;}\u00a0\u00bb][vc_row_inner][vc_column_inner width=\u00a0\u00bb1\/2&Prime;][vc_column_text css=\u00a0\u00bb.vc_custom_1645997521014{margin-top: 0px !important;padding-top: 0px !important;}\u00a0\u00bb el_class=\u00a0\u00bbheader-intro-text\u00a0\u00bb]Naviguez \u00e0 travers notre calendrier pour avoir un aper\u00e7u des \u00e9v\u00e9nements organis\u00e9s par les desks luxembourgeois ou d\u2019autres desks Creative Europe, la Commission europ\u00e9enne et son Agence ex\u00e9cutive Culture [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/creative-europe.lu\/fr\/calendrier\/\" \/>\n<meta property=\"og:site_name\" content=\"Creative Europe\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-27T21:32:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/12\/ce_desklux_blue_logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2476\" \/>\n\t<meta property=\"og:image:height\" content=\"527\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/creative-europe.lu\/fr\/calendrier\/\",\"url\":\"https:\/\/creative-europe.lu\/fr\/calendrier\/\",\"name\":\"Calendrier - Creative Europe\",\"isPartOf\":{\"@id\":\"https:\/\/creative-europe.lu\/fr\/#website\"},\"datePublished\":\"2021-12-15T23:33:13+00:00\",\"dateModified\":\"2022-02-27T21:32:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/creative-europe.lu\/fr\/calendrier\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/creative-europe.lu\/fr\/calendrier\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/creative-europe.lu\/fr\/calendrier\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/creative-europe.lu\/fr\/home\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calendrier\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/creative-europe.lu\/fr\/#website\",\"url\":\"https:\/\/creative-europe.lu\/fr\/\",\"name\":\"Creative Europe\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/creative-europe.lu\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/creative-europe.lu\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/creative-europe.lu\/fr\/#organization\",\"name\":\"Creative Europe | Desk Luxembourg\",\"url\":\"https:\/\/creative-europe.lu\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/creative-europe.lu\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/12\/ce_desklux_blue_logo.png\",\"contentUrl\":\"https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/12\/ce_desklux_blue_logo.png\",\"width\":2476,\"height\":527,\"caption\":\"Creative Europe | Desk Luxembourg\"},\"image\":{\"@id\":\"https:\/\/creative-europe.lu\/fr\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calendrier - Creative Europe","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/creative-europe.lu\/fr\/calendrier\/","og_locale":"fr_FR","og_type":"article","og_title":"Calendrier - Creative Europe","og_description":"[vc_row full_width=\u00a0\u00bbstretch_row\u00a0\u00bb content_placement=\u00a0\u00bbmiddle\u00a0\u00bb parallax=\u00a0\u00bbcontent-moving-fade\u00a0\u00bb parallax_image=\u00a0\u00bb2885&Prime; el_class=\u00a0\u00bboverlay-gradient\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1645994845136{padding-top: 20% !important;}\u00a0\u00bb][vc_column css=\u00a0\u00bb.vc_custom_1638306692729{margin-top: 0px !important;}\u00a0\u00bb][vc_custom_heading source=\u00a0\u00bbpost_title\u00a0\u00bb font_container=\u00a0\u00bbtag:h4|text_align:left\u00a0\u00bb google_fonts=\u00a0\u00bbfont_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal\u00a0\u00bb css=\u00a0\u00bb.vc_custom_1638306932165{margin-bottom: 0px !important;padding-bottom: 0px !important;}\u00a0\u00bb][vc_row_inner][vc_column_inner width=\u00a0\u00bb1\/2&Prime;][vc_column_text css=\u00a0\u00bb.vc_custom_1645997521014{margin-top: 0px !important;padding-top: 0px !important;}\u00a0\u00bb el_class=\u00a0\u00bbheader-intro-text\u00a0\u00bb]Naviguez \u00e0 travers notre calendrier pour avoir un aper\u00e7u des \u00e9v\u00e9nements organis\u00e9s par les desks luxembourgeois ou d\u2019autres desks Creative Europe, la Commission europ\u00e9enne et son Agence ex\u00e9cutive Culture [&hellip;]","og_url":"https:\/\/creative-europe.lu\/fr\/calendrier\/","og_site_name":"Creative Europe","article_modified_time":"2022-02-27T21:32:11+00:00","og_image":[{"width":2476,"height":527,"url":"https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/12\/ce_desklux_blue_logo.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/creative-europe.lu\/fr\/calendrier\/","url":"https:\/\/creative-europe.lu\/fr\/calendrier\/","name":"Calendrier - Creative Europe","isPartOf":{"@id":"https:\/\/creative-europe.lu\/fr\/#website"},"datePublished":"2021-12-15T23:33:13+00:00","dateModified":"2022-02-27T21:32:11+00:00","breadcrumb":{"@id":"https:\/\/creative-europe.lu\/fr\/calendrier\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/creative-europe.lu\/fr\/calendrier\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/creative-europe.lu\/fr\/calendrier\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/creative-europe.lu\/fr\/home\/"},{"@type":"ListItem","position":2,"name":"Calendrier"}]},{"@type":"WebSite","@id":"https:\/\/creative-europe.lu\/fr\/#website","url":"https:\/\/creative-europe.lu\/fr\/","name":"Creative Europe","description":"","publisher":{"@id":"https:\/\/creative-europe.lu\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/creative-europe.lu\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/creative-europe.lu\/fr\/#organization","name":"Creative Europe | Desk Luxembourg","url":"https:\/\/creative-europe.lu\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/creative-europe.lu\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/12\/ce_desklux_blue_logo.png","contentUrl":"https:\/\/creative-europe.lu\/wp-content\/uploads\/2021\/12\/ce_desklux_blue_logo.png","width":2476,"height":527,"caption":"Creative Europe | Desk Luxembourg"},"image":{"@id":"https:\/\/creative-europe.lu\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/pages\/1127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/comments?post=1127"}],"version-history":[{"count":3,"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/pages\/1127\/revisions"}],"predecessor-version":[{"id":2890,"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/pages\/1127\/revisions\/2890"}],"wp:attachment":[{"href":"https:\/\/creative-europe.lu\/fr\/wp-json\/wp\/v2\/media?parent=1127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}